Müssen Sie die Vertrags-ABI und -Adresse veröffentlichen, damit andere mit dem Vertrag interagieren können?

Angenommen, Sie schreiben einen Vertrag, mit dem andere interagieren sollen. Mein Verständnis ist, dass Sie, wenn Sie möchten, dass andere mit Ihrem Vertrag interagieren, die ABI und Adresse des Vertrags angeben müssen. Ist das richtig?

Wenn ja, würden Sie dann die ABI und die Adresse des Vertrags an einer bestimmten Stelle veröffentlichen, damit die Leute damit interagieren können? Würden Sie den Code veröffentlichen, damit die Leute den Vertrag zusammenstellen und das ABI erhalten können?

ODER , ist es möglich, mit einem Vertrag zu interagieren, indem man nur dessen Adresse/Hash kennt.

aber warum einige andere Verträge. Wir können interagieren, nur indem wir ihren ABI nicht kennen? zum Beispiel Würfelvertrag, bei dem wir einfach Äther an ihren Vertrag senden könnten?

Antworten (1)

Ja, damit Personen mit Ihrem Vertrag interagieren, sollten Sie die ABI und die Adresse des Vertrags veröffentlichen.

Um vertrauenswürdiger zu sein, würden Sie auch Ihren Vertragsquellcode (und die verwendete Compilerversion und die verwendeten Compiler-Flags) veröffentlichen, damit die Leute selbst überprüfen können, ob das, was an der Adresse bereitgestellt wird, mit dem Quellcode übereinstimmt. Durch die Bereitstellung des von Ihnen verwendeten Quellcodes und der verwendeten Compiler-Version können die Benutzer die ABI auch selbst generieren.

Wenn Sie die ABI (oder den Quellcode und die Compiler-Details) nicht bereitstellen, können die Leute nicht einfach mit Ihrem Vertrag interagieren: Sie müssten Ihren Vertrag aus dem Bytecode zurückentwickeln, um herauszufinden, was Ihre Funktion ist Namen und Parameter sind.

Wie überprüfen Sie, ob ein Vertrag tatsächlich mit einem bestimmten Quellcode erstellt wurde? Die ABI enthält meines Wissens nur die Methoden, deren Ein- und Ausgänge und die definierten Events. Also selbst wenn der ABI passt, könnte es immer noch Änderungen geben, was die Methoden tatsächlich tun, oder? Gibt es eine Möglichkeit zu überprüfen, was in den Methoden passiert?
@Max: Sie haben Recht, die ABI ist begrenzt, aber mit dem Quellcode können Sie sie kompilieren und mit der Blockchain vergleichen, wie in ethereum.stackexchange.com/questions/195/…