Unterschiedliches RedeemScript für denselben scriptPubKey?

Die meisten Transaktionsausgaben an P2SH-Adressen haben den folgenden scriptPubKey:

HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL

Soweit ich weiß, muss diese Transaktion nicht unterzeichnet werden. Ist es wahr?

Der Benutzer muss nur ein RedeemScript bereitstellen, dessen HASH160 gleich f45d94733d430261962932e0c847075195916a04 ist.

Also, wenn wir das wissen:

HASH160(data1) = hash1
HASH160(data2) = hash2

und der Benutzer erstellt mit den scriptPubKeys zwei Transaktionsausgaben an P2SH-Adressen:

HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL

dann ist das scriptPubKey für beide Transaktionsausgaben gleich, aber warum ist das resolveScript immer anders?

HASH160(data1) = hash1
HASH160(data2) = hash1
....
????
Können Sie ein Beispiel für zwei verschiedene Einlöseskripte mit demselben Hash geben?

Antworten (1)

Eine P2SHTransaktion wird alles ausführen, was redeemScriptSie angeben, wobei es sich um eine Standardtransaktion handeln muss:

Transaktionen, die diese Pay-to-Script-Outpoints einlösen, gelten nur dann als Standard, wenn das serialisierte Skript – auch als RedeemScript bezeichnet – selbst einer der anderen Standard-Transaktionstypen ist. Siehe BIP16

Diese Standardtransaktionen, wie z. B. a, P2PKHerfordern eine Signatur, sodass, selbst wenn Sie das Recht angeben redeemScript, das gesamte tx ungültig wird, wenn es nicht erfolgreich ausgeführt wird.

Nur um anzumerken, dass Bitcoin Core 0.10.0 und höher nicht mehr erfordern, dass das RedeemScript einer der Standard-Transaktionstypen ist. Siehe github.com/bitcoin/bitcoin/pull/4365 .