Solidity-Vertragscode auf etherscan.io kann nicht verifiziert werden

Ich weiß, diese Frage wurde schon oft gestellt. Ich habe viele Antworten gelesen, aber nichts scheint für mich zu funktionieren. Ich habe zuerst versucht, den Quellcode eines viel größeren, komplexeren Vertrags zu verifizieren, aber es hat nicht funktioniert, also habe ich einen sehr einfachen winzigen Vertrag in Solidity geschrieben:

pragma solidity ^0.4.17;

contract SimpleTest
{
    string public blablabla;
    function SimpleTest() public
    {
        blablabla = "Hello world!";
    }
}

Wie Sie sehen können, verwende ich keine Konstruktorargumente, Importanweisungen oder Bibliotheken. Ich habe es mit Solidity 0.4.17 aus Parity heraus kompiliert und bereitgestellt. Optimierung wurde aktiviert. Ich habe keinen der Nightly-Builds verwendet.

Transaktion zur Vertragserstellung:

https://etherscan.io/tx/0x2d8615c8bfc548a210781443c872737d890f6c4a5aa373c3d6d20bbaac941b8d

Der betreffende Vertrag:

https://etherscan.io/address/0x5a8b57a6cf17a196e000eca4481257d5d3025636

Link zur Bestätigungsseite:

https://etherscan.io/verifyContract?a=0x5a8b57a6cf17a196e000eca4481257d5d3025636

Die Fehlermeldung, die ich von etherscan.io bekomme, lautet:

Es tut uns leid! Der kompilierte Vertrags-ByteCode für „SimpleTest“ stimmt NICHT mit dem Vertragserstellungscode für [0x5a8b57a6cf17a196e000eca4481257d5d3025636] überein.

Vertragsname(n) gefunden: 'SimpleTest'

Vertrag kann zu diesem Zeitpunkt nicht bestätigt werden.

Ich habe die Bytecodes ein wenig analysiert und folgendes festgestellt:

  • Die Eingabedaten der Vertragserstellungstransaktion entsprechen genau dem Bytecode, den ich von Parity erhalten habe.

  • Der Bytecode, den der etherscan.io-Verifizierer erzeugt, ähnelt dem Bytecode von Parity und damit auch den Eingabedaten der Vertragserstellungstransaktion.

  • Der Bytecode auf der Vertragsseite auf etherscan.io ist viel kürzer als die anderen Bytecodes.

  • Alle Bytecodes enthalten 2 große Strings von 00 Bytes, mit Ausnahme des Bytecodes auf der Vertragsseite von etherscan.io, er enthält nur 1 großen String von 00 Bytes.

Ich habe wirklich keine Ahnung, was hier los ist. Kann jemand helfen?

Es ist kürzlich jemandem passiert ethereum.stackexchange.com/questions/27122/… , es kann ein Problem mit dem Etherescan-Dienst sein.
OK, das ist nicht wirklich eine Antwort. Es ist im Grunde "keine Parität verwenden". Ich kann den Fehler aber bestätigen.

Antworten (1)

Ich konnte meinen Vertrag mit aktivierter Optimierung beim Kompilieren aus Remix verifizieren:

https://ethereum.github.io/browser-solidity/

Aus irgendeinem Grund erzeugt es einen anderen Bytecode als Parity, selbst wenn Sie dieselbe Compilerversion und dieselbe Optimierungseinstellung auswählen.