Ich verwende Remix, Metamask, ROPSTEN und kann keinen Vertrag bereitstellen ... bekomme immer die gleiche Meldung ... es hat früher funktioniert ... funktioniert nicht mehr ... passiert auf verschiedenen Computern, passiert mit Chrome oder Firefox ...scheint mit der Schätzroutine zusammenzuhängen...
GASSCHÄTZUNG FEHLGESCHLAGEN
Fehlerhafte Gasschätzung mit folgender Meldung (siehe unten). Die Ausführung der Transaktion wird wahrscheinlich fehlschlagen. Möchten Sie das Senden erzwingen? Fehler: Benötigtes Gas überschreitet die Freigrenze oder Transaktion schlägt immer fehl bei chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:1723632 bei chrome-
Lassen Sie mich wissen, ob Sie eine ähnliche Einstellung haben und es funktioniert ... oder bekannte Probleme ...
Danke !
Hier ist der Code:
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;
}
}
}
Gaslimit: 3000000 Wert: 1 Ether
Sehen Sie, ob Sie dies bei ROPSTEN bereitstellen können ...
Deinem Code fehlt die constructor()
Funktion, siehe hier .
function Ballot()
, aber selbst in diesem Fall sollte dies keinen Fehler verursachen.Ihr Code funktioniert gut auf meinem Rechner.
1) Ich denke, die Remix-Kompilierung hat ein Problem, das Erstellen einer neuen Solidity-Datei mit demselben Code und das erneute Bereitstellen könnte hilfreich sein. 2) Versuchen Sie auch, Chrome neu zu laden (Remix-Registerkarte) 3) andernfalls installieren Sie Metamask neu.
ich hoffe es hilft!
Raghav Sood
Ismael