Transactions

比特幣 scriptSig 與兩個交易來解鎖 scriptPubKey

  • November 9, 2020

例如,由 OP SUB < 100 > OP EQUAL 組成的 scriptPubKey 的比特幣腳本,用於鎖定交易的輸出。OP SUB 彈出棧頂的兩個元素,減去它們,然後推回結果。< X > 將值 X 壓入堆棧。

此外,以下是一個由 < 200 >< 100 > 組成的 scriptSig 腳本,該腳本用作解鎖腳本以消耗該輸出。

在這種情況下,scriptSig 會成功解鎖 scriptPubKey 從而允許交易花錢嗎?由於比特幣如何組合腳本以及它如何執行它們,例如在執行的每個步驟中堆棧的內容是什麼?

您不能將純腳本放在 scriptPubKey 中,因此它被認為是非標準的,不會被中繼/探勘。您需要散列您的自定義腳本,將腳本散列放入 P2SH 輸出中,並在稍後使用時顯示該腳本(在 scriptSig 中)。

這是一個分步展示:

OP_SUB &lt; 100 &gt; OP_EQUAL
  1. 將您的腳本轉換為十六進製表示:

一種。OP_SUB 編碼為 0x94(十六進制)

0x94

灣。100(dec) 被編碼為 0x6400(小端)加上一字節長度前綴

0x94 026400

C。OP_EQUAL 編碼為 0x87(十六進制)

0x94026400 87

  1. 散列你的腳本以獲得腳本散列:

RIPEMD160(SHA256(0x9402640087)) = 0xa038dd58be8e9c3bd9f26fe585dcdfe85d70ac4d

  1. 您的 P2SH scriptPubKey 是:

OP_HASH160 a038dd58be8e9c3bd9f26fe585dcdfe85d70ac4d OP_EQUAL

為了花費/解鎖此輸出,您的 scriptSig 應該是:

< 200 > < 100 > < OP SUB < 100 > OP 相等 >

十六進制:

0x02C800026400059402640087

請注意,像 OP_ADD 和 OP_SUB 這樣的算術運算只能接受 32 位整數,因此如果遇到任何超過 4 個字節的輸入,腳本必須中止並失敗。

請隨時在此處了解有關 P2SH 的更多資訊

引用自:https://bitcoin.stackexchange.com/questions/99920