Wie verifiziere ich einen Vertrag mit Konstruktorargumenten?

Dies ist ein Vertrag, der ein Argument erfordert, um eingesetzt zu werden.

Der Vertragsname ist „Asset“. Der verwendete Compiler ist "Compiler 0.4.16+commit.d7661dd9.Emscripten.clang" und die Optimierung wurde deaktiviert.

Um es zu validieren, ist dies das verwendete Tool .

Andere Verträge ohne Konstruktorargumente wurden erfolgreich verifiziert, aber dieser beschwert sich wie folgt:

Error! Unable to verify source code
Missing Constructor Arguments for function Asset(address _SCIssuers)

Es scheint, dass der Validator eine ABI-codierte Information über Konstruktorargumente kennen muss, wie hier angegeben .

Ich habe versucht, die Methoden-ID + den ersten Parameter zu codieren, hatte aber einige Schwierigkeiten. Um den Vertrag bereitzustellen, den ich verwendet habe:

Create("0x22bc795b5b8154fe619724e7cb1f4b931cd39c11")

Der erste Parameter muss also 0x22bc795b5b8154fe619724e7cb1f4b931cd39c11 sein.

Das Problem besteht darin, die Konstruktormethoden-ID herauszufinden. Die für die Bereitstellung verwendete Online-IDE teilt mir diese Informationen nicht mit. Wie kann ich es finden?

Die Konstruktorfunktion ist übrigens diese:

// Constructor
function Asset(address _SCIssuers) {
    SCIssuers = _SCIssuers;
}

Irgendeine Hilfe? Danke!

Ref.:

Nun, ich habe versucht, 0000000000000000000000022bc795b5b8154fe619724e7cb1f4b931cd39c11 zu verwenden, und es hat funktioniert! ropsten.etherscan.io/address/… aber warum? warum all die führenden Nullen?
Dies liegt daran, dass alle Parameter auf 32 Bytes aufgefüllt werden sollten. Ich habe github.com/ethereumjs/ethereumjs-abi verwendet , um Parameter zu codieren.
Kannst du mir bitte helfen? Ähnliches Problem ethereum.stackexchange.com/questions/41015/…
Ich habe gerade eine Antwort geschickt

Antworten (1)

Sie müssen Konstruktorargumente korrekt ABI-codieren. Sie können dies ganz einfach mit dem Online-Tool https://abi.hashex.org tun . Fügen Sie einfach abi ein, um Konstruktorparametertypen automatisch zu analysieren, oder fügen Sie sie manuell hinzu.