Ich kann meinen Vertrag auf der Rinkeby-Etherscan-Website nicht überprüfen

Ich erhalte die folgende Fehlermeldung, wenn ich mich auf der RINKEBY-Etherscan-Site verifiziere:

Error! Unable to verify source code
Exception #1 Occured: ERROR|The Contract solidity compilation has 
  exceeded the maximum timeout/memory limit that we can safely process. 
  Automated source code verification is unavailable for this source code.

Mein Vertrag ist klein genug, um erfolgreich bereitgestellt zu werden, aber anscheinend dauert die Kompilierung zu lange, um von Etherscan überprüft zu werden. Welche Möglichkeiten habe ich? Ist der Rinkeby Etherscan-Verifizierer eingeschränkter oder werde ich dieses Problem auch im Mainnet haben? (das wäre viel problematischer)

BEARBEITEN: Ich habe den neuen Etherscan Beta 2.0-Compiler ausprobiert und er hat genau das gleiche Problem.

Haben Sie sich erfolgreich in anderen Netzwerken verifiziert und können Sie den Vertragscode (entweder hier oder als Zusammenfassung) posten?
Haben Sie versucht, die optimizationOption noim Bestätigungsformular auf zu setzen?

Antworten (4)

Es ist schwer, etwas zu sagen, ohne den Code zu sehen, den Sie zu kompilieren versucht haben. Da Sie bereits den Compiler 2. Beta-Version ausprobiert haben, als Vorschlag; Compiler verbringen manchmal Zeit damit, Kommentare usw. während der Kompilierzeit zu entfernen, wie hier erklärt .

Sind Kommentare in bereitgestellten Verträgen enthalten und erhöhen sie das Bereitstellungsgas?

Nein, alles was nicht zur Ausführung benötigt wird, wird beim Kompilieren entfernt. Dazu gehören unter anderem Kommentare, Variablennamen und Typnamen.

Obwohl der Code klein ist, kann die Kompilierung bei vielen Kommentaren einige Zeit in Anspruch nehmen. Das Entfernen vor der Kompilierung kann einige Zeit sparen.

BEARBEITEN : Das Setzen des Optimierungsflags auf nein könnte auch funktionieren.

Der Compiler hatte eine Zeitüberschreitung, und die Online-Dokumentation deutete darauf hin, dass Trüffel die Kompilierung optimiert – trotzdem habe ich "Nein" für die optimierte Option ausgewählt und keine Bibliotheksadressen eingegeben, um festzustellen, dass es in weniger als 30 Sekunden erfolgreich kompiliert wurde!

Wenn Sie sich die Etherscan- Verifizierungsseite ansehen ,

ANMERKUNGEN
1. Um Verträge zu überprüfen, die Konstruktorargumente akzeptieren, geben Sie bitte die ABI-codierten Argumente in das letzte Feld unten ein.
2. Wenn es zu Debugging-Zwecken bei Browser Solidity korrekt kompiliert wird, sollte es auch hier korrekt kompiliert werden.
3. Bei Verträgen, die „Importe“ verwenden, muss der Code in einer Datei verkettet werden, da wir „Importe“ in separaten Dateien nicht unterstützen. Sie können versuchen, den Blockcat Solidity-Flattener
4 zu verwenden. Für jeden kompilierten Kontrakt gibt es eine Zeitüberschreitung von bis zu 30 Sekunden. Wenn Ihr Vertrag länger dauert, können wir dies nicht überprüfen.

Gemäß Punkt 4 gibt es eine 30-Sekunden-Grenze für die Kompilierung.

Und basierend auf dem Folgenden haben Sie möglicherweise mehr Glück mit der Betaversion des Compilers 2.0 .

Tipp: Sehen Sie sich den neuen Beta-Quellcode-Vertragsverifizierer an, der die Option „Ausführen“ zum Verifizieren von Truffle-Verträgen unterstützt. Wenn Ihr Vertrag Bibliotheken verwendet und die Überprüfung fehlschlägt, können Sie auch versuchen, den Beta-Quellcode-Verifizierer zu verwenden.

Andernfalls könnte die Antwort auf diese Frage von Interesse sein.

Ich habe den 2.0-Compiler ausprobiert :/
Sind Sie bereit, Ihren Code zu teilen, damit wir ihn untersuchen können?

Es scheint, dass Etherscan unterschiedliche Hardware zur Überprüfung von Verträgen für Kovan und Ropsten hat. Ich schaffe es, in Ropsten zu überprüfen, bin aber in Kovan mit demselben Vertrag gescheitert.