Vertrag mit ABIEncoderV2 auf Etherscan kann nicht verifiziert werden

Gestern habe ich einen Vertrag mit Ropsten ( https://ropsten.etherscan.io/address/0x1fe59c223fa4e9781237f0f49a15ca598069cc30 ) bereitgestellt, der auf V2 des ABI-Encoders basiert. Daher enthält es eine Aussage

pragma experimental ABIEncoderV2;

Ich habe versucht, die Code-Verifizierung von Etherscan ( https://ropsten.etherscan.io/verifyContract2 ) mit einer abgeflachten Version meines Solidity-Codes, passender Compiler-Version, Optimierungs-Flag, Optimiererläufen usw. auszuführen. Das Ergebnis der Code-Verifizierung ist jedoch negativ.

Als ich im Juni auch Verträge mit demselben Pragma implementierte, erhielt ich eine Nachricht vom Etherscan-Helpdesk, dass sie ABIEncoderV2 nicht unterstützen. Dies trotz der Tatsache, dass die Kompilierung bei Remix nur eine Warnung ausgibt und Etherscan behauptet, Verträge zu unterstützen, die bei Remix kompilieren.

Also suche ich nach Alternativen. Kann jemand die Hypothese stützen, dass die fehlende Unterstützung für ABIEncoderV2 immer noch Probleme bei der Codeüberprüfung verursacht? Gibt es auch andere Alternativen für die Überprüfung des öffentlichen Codes von Smart Contracts?

Beifall,

Jens Ivar

etherchain.org ermöglicht es Ihnen auch, Verträge zu überprüfen. Vielleicht mal dort ausprobieren?
Ich wünschte, ich könnte, @MathematicalRain. Aber soweit ich das beurteilen kann, verfolgt etherchain.org nur das Mainnet.

Antworten (3)

Das Verifizieren des Quellcodes hat bei mir nicht funktioniert, als ich versuchte, den Quellcode in eine einzelne Datei zu reduzieren und auf etherscan.io hochzuladen. Ich denke, das liegt daran, dass pragma experimental ABIEncoderV2;ein Projekt mit mehreren Dateien nur auf einige Dateien angewendet wird, aber wenn Sie Dateien auf einzelne Dateien reduzieren, wird es auf den gesamten Quellcode angewendet.

Dieses Problem wurde durch Bereitstellen einer Binärdatei behoben, die durch Kompilieren einer vorab reduzierten Version erhalten wurde:

  1. Quellcode mit truffle-flatteneroder glättenetherlime flatten
  2. Smart Contract aus Flatfile kompilieren und bereitstellen (kann https://remix.ethereum.org verwenden )
  3. Überprüfen Sie den Quellcode von https://etherscan.io

Hast du versucht mit zu kompilieren 0.4.25? Danach konnte ich entfernen ABIEncoderV2und meine Überprüfungen begannen zu funktionieren.

Stellen Sie sicher, dass Sie die pragma experimental ABIEncoderV2;Zeile nach der Zeile mit der Solidity-Version einfügen. Aus irgendeinem Grund wird es anders kompiliert, wenn es vor der Versionsnummer steht.