Fehler! Contract ByteCode und ABI können nicht generiert werden

Probleme bei der Überprüfung meines Token-Vertrags auf etherscan.io.

Folgende Fehler werden empfangen: Hinweis: Vertrag wurde während Txn# erstellt. Ergebnis: Stimmt nicht mit dem Bytecode für die Eingabeerstellung überein, der an dieser Adresse gefunden wurde

Fehler! Contract ByteCode und ABI können nicht generiert werden

Aus irgendeinem Grund gibt mir das Ende meiner Eingabedaten keinen funktionierenden Bytecode, den ich dort verwenden kann, wo andere dies tun. Hier ist die Transaktion, die den Vertrag abgeschlossen hat: 0x776159bbc0f6e624e92a812ee98c1674e67a2ea3

Compiler-Warnung(en):

myc:1:1: ParserError: Pragma, Importdirektive oder Vertrags-/Schnittstellen-/Bibliotheksdefinition erwartet. [ ^ Jede Hilfe ist willkommen, ich stecke seit einigen Tagen an diesem Punkt fest und bin völlig ahnungslos.

Beifall!

pragma solidity ^0.4.0;
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 = _numProposals;
    }

    /// 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;
            }
    }
}

Antworten (3)

Hinzufügen zur @Harshad-Antwort.

Diese Dinge sollten Sie überprüfen:

(1) Compiler-Version wie @Harshad sagt.

(2) Die Optimierung ist aktiviert oder nicht. Wenn Sie Remix verwenden, finden Sie dies im Kompilierungsabschnitt.

(3) Wenn Sie Bibliotheken verwenden (was Ihrem Code nicht so scheint, aber nur zur doppelten Bestätigung), dann sollten Sie diese Bibliotheken ebenfalls eingeben.

(4) Schließlich muss der Solidity-Code genau der Code sein, den Sie zum Kompilieren verwendet haben;)

Viel Glück!

Versuche dies.

Überprüfen Sie Ihre Compiler-Version im Schritt "Verifizieren und veröffentlichen", ob es sich um die richtige Compiler-Version handelt.

Sie können es überprüfen, indem Sie Folgendes ausführen:

Trüffel-Version

Quelle

In meinem Fall war die Ausgabe [Version]:

Trüffel v4.1.8 (Kern: 4.1.8)

Solidität v0.4.23 ( solc-js)

Die Compiler-Version, die ich aus der Liste ausgewählt habe, war also:

v0.4.23+commit.124ca40d

Wenn Sie keinen Trüffel haben oder sich dessen nicht bewusst sind, können Sie auf diesen Link verweisen .

Hoffe das hilft jemandem!

Bitte sehen Sie sich den Contract-Name .json im Ordner build/contracts an und finden Sie Pragma Solidity im Dateiinhalt. Das zeigt Ihnen die richtige Kompilierversion. Wenn Sie die kompilierte Version erhalten, überprüfen Sie bitte, ob die kompilierte Version der Veröffentlichungsseite dieser entspricht.Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Ich hoffe aufrichtig, dass dies für Sie hilfreich sein würde.