In einer Standard-P2PKH-Konfiguration sehen die Skripte so aus:
Pubkey script: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
Signature script: <sig> <pubkey>
Beim Einlösen von P2PKH-Ausgaben wird OP_DUP ausgeführt, da der Pubkey zweimal verwendet wird, einmal im Hash und dann zur Überprüfung der Hash-Übereinstimmung und dann erneut zur Überprüfung der Signatur. Hier scheint es also, als würde OP_HASH160 das oberste Stapelelement verbrauchen und es durch das HASH160() von dem ersetzen, was dort war.
Bei P2SH-Transaktionen sehen die Skripte so aus:
Pubkey script: OP_HASH160 <Hash160(redeemScript)> OP_EQUAL
Signature script: <sig> [sig] [sig...] <redeemScript>
Beim Einlösen von P2SH-Ausgängen gibt es kein OP_DUP. Bedeutet dies nicht, dass das RedeemScript von OP_HASH160 verbraucht wird? Wie kann das RedeemScript ausgeführt werden, wenn es vom OP_HASH160 konsumiert wurde? Ich glaube, ich vermisse hier etwas.
Ja, OP_HASH160 verbraucht das oberste Stapelelement und ersetzt es durch seinen Hash.
Wie funktioniert also P2SH, wenn das Skript nach der Ausführung von HASH160 verbraucht wird?
So werden P2SH-Transaktionen verarbeitet:
Funktioniert dieses Ausgabeskript:
Wenn ja, ist dies P2SH. (Quelle)
Nick Odell
Morsecoder
Morsecoder
Nick Odell
Would it be possible to build in such an opcode, like OP_SCRIPT_DATA
Sicher, aber die vorhandenen Push-Thing-on-Stack-Befehle machen den Trick gut.Nick Odell