Wie finde ich die Voraussetzungen für die Ausgabe eines Ausgabeskripts heraus?

Wie finden Sie die Voraussetzungen heraus, um ein Ausgabeskript auszugeben?

Entschlüsseln Sie den Hash?

Die Frage ist nicht sehr präzise, ​​vielleicht ein paar Hintergrundinfos hier: bitcoin.stackexchange.com/questions/69062/… , und sicher in Andreas Buch „Mastering Bitcoin“.

Antworten (1)

Ich gehe davon aus, dass Sie hier von P2SH-Adressen sprechen, da dies wirklich das einzige Mal ist, dass dies von Bedeutung ist.

Bei Standard-P2SH-Adressen können Sie die Ausgabenanforderungen nicht finden, indem Sie einfach auf die Adresse schauen. Schauen wir uns als Beispiel 3DzSVk4veMCkNbNT9CdETeE26uWxmNbBnD aus einem aktuellen Block an.

Das Ausgabeskript dieser Adresse ist a91486ed17bfa7bd80cf87cf7e80abd9289079b78c5b87. Dies allein beläuft sich einfach auf HASH160 PUSHDATA(20)[86ed17bfa7bd80cf87cf7e80abd9289079b78c5b] EQUAL. Dies bedeutet, dass Sie zum Ausgeben des tx einige Eingaben bereitstellen müssen, die nach dem Durchlaufen von HASH160 gleich sind 86ed17bfa7bd80cf87cf7e80abd9289079b78c5b.

Dies ist das allgemeine Format für jedes P2SH-Ausgabeskript. Um tatsächlich zu wissen, um was für ein Skript es sich handelt, benötigen Sie das Einlöseskript, das sich in Ihrer Brieftasche befindet. Wenn es sich bei der Adresse nicht um Ihre eigene handelt, wird das Einlösungsskript angezeigt, wenn eine Ausgabe an diese Adresse zum ersten Mal ausgegeben wird.

Wenn wir uns diesen TX für die obige Adresse ansehen, finden wir das Einlöseskript als 5221038934160de8ad1dd529329f5bf51e3086cc0f6d19e10fb4120385f23d871c0c1d21021659435e23e3891d39ec2b0266b3c14a68cb4e45adb8543f31508310c98722d952ae(den letzten Push im Skript für die Eingabe).

Wenn Sie das obige Redeemscript über den decodescriptBefehl ausführen, erhalten wir Folgendes:

2 038934160de8ad1dd529329f5bf51e3086cc0f6d19e10fb4120385f23d871c0c1d 021659435e23e3891d39ec2b0266b3c14a68cb4e45adb8543f31508310c98722d9 2 OP_CHECKMULTISIG

Dadurch wird das Skript als 2of2-Multisig identifiziert.

Dies hätte sehr einfach jede andere Form von Skript sein können, z. B. 2of3 Multisig oder überhaupt kein Multisig. Es könnte sogar eine Segwit-Adresse sein, die in eine p2sh-Adresse eingeschlossen ist. Anhand der Adresse können Sie jedoch nicht die Art des Skripts bestimmen. Sie müssen über das Einlösungsskript verfügen, um die Ausgabenanforderungen zu bestimmen.