Fehler: Benötigtes Gas übersteigt das Limit oder Transaktion bei Chrome-Extension schlägt immer fehl

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 ...

Es ist wahrscheinlich ein Problem mit Ihrem Code, das zu einem dauerhaft fehlgeschlagenen tx führt. Teilen Sie den Vertragscode und die Transaktionsparameter.
Ich habe Ihren Vertrag ohne Ameisenänderung erfolgreich für Ropsten bereitgestellt.

Antworten (2)

Deinem Code fehlt die constructor()Funktion, siehe hier .

Es verwendet die alte Syntax 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!