Ich möchte einen Vertragscode auf Etherscan überprüfen, weiß aber nicht, wie ich die Argumente im ABI-codierten Format erhalten kann. Ich habe den Quellcode und die Schnittstelle in JSON. Gibt es ein Tool, das ich verwenden kann, oder eine einfache Möglichkeit, JSON in das ABI-Format zu bringen?
Hinweis: Ich habe nur den "Deploy Contract" von Ethereum Wallet (Mist) verwendet, keinen ausgefallenen Compiler oder ähnliches.
Der Quellcode: https://gist.github.com/crutor0x/45cd845349345190458df7f7412654e8
JSON-ABI: https://gist.github.com/crutor0x/dd97e9593ffb696bfb583481dccb86d9
Vertragsadresse: 0x3c75226555fc496168d48b88df83b95f16771f37
Die Seite „Verify Contract“ fragt nach „Constructor Arguments ABI-encoded“.
In Ihrem Fall hat der Konstruktor keine Parameter, daher können Sie dieses Feld leer lassen.
Im allgemeinen Fall, wenn Ihr Konstruktor Parameter hat, können Sie wie folgt vorgehen:
Sie können ethereumjs-abi verwenden , um die Parameter für Transaktionsaufrufe zu codieren/decodieren.
Nehmen wir an, Ihr Konstruktor ist MyToken(address _to, uint256 _value, bool _enabled)
. Die Parametertypen sind ["Adresse", "uint256", "bool"].
Wenn Sie den Vertrag MyToken("0x1234567812345678", 0x314159268, true) erstellt haben. Dann sind die Parameterwerte ["0x1234567812345678", "0x314159268", true].
Dann können Sie die Werte mit codieren rawEncode(parameterTypes, parameterValues)
.
var abi = require('ethereumjs-abi')
var parameterTypes = ["address", "uint256", "bool"];
var parameterValues = ["0x1234567812345678", "0x314159268", true];
var encoded = abi.rawEncode(parameterTypes, parameterValues);
console.log(encoded.toString('hex'));
Bei der Ausführung wird es ausgegeben
000000000000000000000000000000000000000000000000123456781234567800000000000000000000000000000000000000000000000000000003141592680000000000000000000000000000000000000000000000000000000000000001
Falls Sie ein einfaches Online-Tool zum Codieren von Parametern verwenden möchten, können Sie https://abi.hashex.org verwenden
Sie können abi eingeben, um Parametertypen automatisch zu analysieren, oder sie einfach manuell eingeben. In Funktionstyp sollte der Selektorkonstruktor ausgewählt werden.
Hier ist ein Beispiel für die Verwendung dieses Dienstes. Unten befinden sich abi-codierte Parameter, die Sie in das Parameterfeld des etherscan.io-Konstruktors eingeben.
Die Seite https://abi.hashex.org funktioniert bei mir nicht und beschwert sich immer "Geben Sie das richtige JSON ein".
Sie können diese Seite ausprobieren .
Neun Catto-Regeln
Ismael
Neun Catto-Regeln
npm cache verify
, bekomme aber immer wieder den gleichen Fehler. Und der Pfad auf Win zu node.js ist korrekt eingestellt.Ismael
npm init -y
, fügen Sie ethereumjs-abi hinzunpm i --save ethereumjs-abi
, speichern Sie den Code als index.js und führen Sie dann ausnpm index.js
. Es zeigt die gleiche Ausgabe. Ich würde vorschlagen, es auf einem anderen Computer oder in einer virtuellen Maschine zu versuchen. Aber das ist außerhalb des Rahmens dieses Forums, fragen Sie besser im Javascript-Bereich von Stackoverflow.Neun Catto-Regeln
node index.js
Bohu
Bohu
methodid
Pinank Lakhani
Ismael