Ich versuche, die Bedeutung von scriptCode
im Zusammenhang mit der Ausgabe eines P2SH (P2WPKH) UTXO zu verstehen.
Ich habe bereits die folgende Antwort auf eine ähnliche Frage gelesen, aber sie behebt mein Missverständnis nicht vollständig.
Nachdem wir BIP141 für P2WPKH gelesen haben, das in BIP16 P2SH verschachtelt ist, wird uns gesagt, dass die Struktur wie folgt ist:
witness: <signature> <pubkey>
scriptSig: <0 <20-byte-key-hash>>
(0x160014{20-byte-key-hash})
scriptPubKey: HASH160 <20-byte-script-hash> EQUAL
(0xA914{20-byte-script-hash}87)
Mir ist aufgefallen, dass scriptCode
der Hash für jede Eingabe signiert wird. Kann jemand erklären, warum 1976a91479091972186c449eb1ded22b78e40d009bdf008988ac
( dup hash160 [79091972186c449eb1ded22b78e40d009bdf0089] equalverify checksig
) als Skriptcode (nach meinem Verständnis das scriptPubKey- oder Sperrskript) für ein p2sh(p2wpkh)
UTXO verwendet wird? Dieses Skript entspricht einem p2pkh
scriptPubKey (das ist hier sicherlich aus dem Zusammenhang gerissen)?
Ich verstehe die Reihenfolge der Ausführung als:
witness <signature> <pubkey>
und scriptSig <0 <20-byte-key-hash-compressed-pub-key>>
werden auf den Stapel geschoben.HASH160 <20-byte-script-hash> EQUAL
mit dem Argument „redemountScript ( )“ ausgeführt <0 <20-byte-key-hash-compressed-pub-key>>
, was schließlich zur Ausführung von CHECKSIG führt.Warum sollte man ein einfügen, scriptCode
das einem Skript entspricht, das scheinbar aus dem Kontext gerissen ist und nicht verwendet wird?
Warum ist Folgendes wahr?
For P2WPKH witness program, the scriptCode is 0x1976a914{20-byte-pubkey-hash}88ac.
Es wird wie in dieser Javascript-Bibliothek referenziert prevOutScript
: https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/src/transaction.js#L396
Der, auf den Sie sich beziehen, ist Seufzen. 1976a91479091972186c449eb1ded22b78e40d009bdf008988ac (dup hash160 [79091972186c449eb1ded22b78e40d009bdf0089] equalverify checksig
Es gibt keinen guten Grund, as in Segwit zu verwenden, scriptCode
sondern die Anzahl der Änderungen zu begrenzen, die SegWit am ursprünglichen Seufzen vornimmt. Beim Entwerfen von SegWit wurden nur beabsichtigte Änderungen vorgenommen. Die Hash-Struktur bleibt gleich und enthält dieselben Daten. Die Sighash-Flags haben immer noch den gleichen Effekt. Das einzige, was sich in BIP-143 ändert, ist, dass einige Daten unter vorberechneten Hashes organisiert sind und die Eingabemengen darin einfließen.
0x1976a914{20-byte-pubkey-hash}88ac
(gemäß bip143)0x1976a914{20-byte-pubkey-hash}88ac
. Nur dass für beide gezeigten Transaktionen unterschiedliche öffentliche Schlüssel verwendet wurden.
Ugam Kamat
Malone
1976a91479091972186c449eb1ded22b78e40d009bdf008988ac
wenn es eindeutig nicht verwendet wird? Es ist nicht intuitiv, soweit ich weiß, dass das Skript nur für ein p2pkh-Sperrskript PubKey relevant ist ...