Я использую Remix, Metamask, ROPSTEN и не могу развернуть какой-либо контракт... всегда получаю одно и то же сообщение... раньше оно работало... больше не работает... бывает на разных машинах, бывает с Chrome или Firefox ...похоже, это связано с процедурой оценки...
ОЦЕНКА ГАЗА НЕ ПРОШЛА
Произошла ошибка оценки газа со следующим сообщением (см. ниже). Выполнение транзакции, скорее всего, завершится ошибкой. Вы хотите принудительно отправить? Ошибка: требуемый газ превышает норму или всегда завершается сбоем транзакции в chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:1723632 в chrome-
Дайте мне знать, если у вас есть аналогичная настройка, и она работает... или какие-либо известные проблемы...
Спасибо !
Вот код:
pragma solidity ^0.4.20;
contract Ballot {
struct Voter {
uint weight;
bool voted;
uint8 vote;
address delegate;
}
struct Proposal {
uint voteCount;
}
address chairperson;
mapping(address => Voter) voters;
Proposal[] proposals;
/// Create a new ballot with $(_numProposals) different proposals.
function Ballot(uint8 _numProposals) public {
chairperson = msg.sender;
voters[chairperson].weight = 1;
proposals.length = 3;
}
/// Give $(toVoter) the right to vote on this ballot.
/// May only be called by $(chairperson).
function giveRightToVote(address toVoter) public {
if (msg.sender != chairperson || voters[toVoter].voted) return;
voters[toVoter].weight = 1;
}
/// Delegate your vote to the voter $(to).
function delegate(address to) public {
Voter storage sender = voters[msg.sender]; // assigns reference
if (sender.voted) return;
while (voters[to].delegate != address(0) && voters[to].delegate != msg.sender)
to = voters[to].delegate;
if (to == msg.sender) return;
sender.voted = true;
sender.delegate = to;
Voter storage delegateTo = voters[to];
if (delegateTo.voted)
proposals[delegateTo.vote].voteCount += sender.weight;
else
delegateTo.weight += sender.weight;
}
/// Give a single vote to proposal $(toProposal).
function vote(uint8 toProposal) public {
Voter storage sender = voters[msg.sender];
if (sender.voted || toProposal >= proposals.length) return;
sender.voted = true;
sender.vote = toProposal;
proposals[toProposal].voteCount += sender.weight;
}
function winningProposal() public constant returns (uint8 _winningProposal) {
uint256 winningVoteCount = 0;
for (uint8 prop = 0; prop < proposals.length; prop++)
if (proposals[prop].voteCount > winningVoteCount) {
winningVoteCount = proposals[prop].voteCount;
_winningProposal = prop;
}
}
}
Лимит газа: 3000000 Стоимость: 1 эфир
Посмотрите, сможете ли вы развернуть это в ROPSTEN...
В вашем коде отсутствует constructor()
функция, см. здесь .
function Ballot()
, но даже в этом случае это не должно приводить к сбою.ваш код отлично работает на моей машине.
1) Я предполагаю, что у компиляции Remix есть некоторые проблемы, создание нового файла Solidity с тем же кодом и его повторное развертывание может помочь. 2) также попробуйте перезагрузить Chrome (вкладка Remix) 3) в противном случае переустановите Metamask.
Надеюсь, поможет!
Рагхав Суд
Исмаэль