Wie werden Konstruktorargumente ABI-codiert?

Ich versuche, einen ETH-Vertrag zu verifizieren, aber ich fülle das Etherscan-Formular aus und erhalte diese Nachricht:

" Fehler! Quellcode konnte nicht überprüft werden. Fehlende Konstruktorargumente für Funktion JL(uint256 initialSupply, string tokenName, string tokenSymbol) "

Mein Vertrag wurde mit https://remix.ethereum.org/ erstellt. Unter diesem Link finden Sie meinen intelligenten Vertragscode - JLC.json - JLC.sol https://gist.github.com/5067bbba4b0640e5679d85f8625c198e

Ich bin neu auf diesem Gebiet und teste nur, wie Smart Contracts funktionieren.

Ich hoffe auf eure Unterstützung Jungs.

Danke.

Antworten (4)

Sie können ein einfaches Online-Tool verwenden, um abi-codierte Konstruktorparameter zu erhalten https://abi.hashex.org . Fügen Sie einfach abi ein und geben Sie Parameterwerte ein. Abi-codierte Parameter würden automatisch berechnet.

Kopieren Sie dann einfach das Ergebnis und fügen Sie es in die Parametereingabe des etherscan.io-Konstruktors ein.

Hier ist ein Beispiel für die Verwendung dieses ToolsGeben Sie hier die Bildbeschreibung ein

Haben Sie eine Idee, wie das programmgesteuert mit web3 gemacht werden kann?
Dies könnte programmgesteuert mit dieser Bibliothek erfolgen: github.com/ethereumjs/ethereumjs-abi . Oder Sie können sich diese Methode ansehen: web3js.readthedocs.io/en/1.0/web3-utils.html#soliditysha3

Wenn Ihr Vertrag von einem anderen Vertrag erstellt wurde, haben die Transaktionsdetails möglicherweise keine einfache Möglichkeit, die Konstruktorargumente in ABI-codierter Form zu erhalten. In diesem Fall empfehle ich die Verwendung der web3 abi-Funktionen für diesen Zweck wie web3.eth.abi.encodeParameters.

Um Ihren Vertrag zu überprüfen, benötigen Sie nur die JLC.sol genau so, wie sie bereitgestellt wurde. Übrigens können Sie Ihren ABI-Code im Remix sehen, indem Sie auf die Schaltfläche "Kompilieren" > "Details" klicken

Ich versuche. Aber ich kann die Konstruktorargumente im ABI-Code nicht identifizieren. I have understood that constructor arguments should be something like this: 00000000000000000000000000000000000000000000000000000002540be400000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000044e4154410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e41544100000000000000000000000000000000000000000000000000000000

Sie können die Konstruktorargumente aus der Deployment-Transaktion abrufen . Zum Beispiel habe ich meinen Vertrag unter https://ropsten.etherscan.io/tx/0x3b0110386e5409a81548beed2020ab3d12f221357905802a2eaf5f7a9d594e52 bereitgestellt und die letzten 64 Zeichen der Eingabedaten haben die richtigen Konstruktorargumente (ABI-codiert).

Diese Regel ist in meinem Vertrag gültig, da der Konstruktor nur 1 Parameter benötigt: an address => function Asset(address _SCIssuers) => https://ropsten.etherscan.io/address/0xefb27d9eaa381e958319052dd274c9866f5abc8c#code