Transactions

使用 2-3 創建自定義腳本

  • February 11, 2020

我正在研究 P2SH,我想創建一個自定義腳本。我已經創建了一個 tx,但沒有 OP_CHECKMULITISIG,您可以在此連結中查看<https://tbtc.bitaps.com/c86e443bdb3ad4845b1670a63376daf785eae3932a1b6146a7138ea46d51d24a>。腳本很簡單,在 Scriptpubkey 中可以找到

OP_3 OP_EQUAL

在 ScriptSig 我把

OP_3

整個腳本是:

02000000014ad2516da48e13a746611b2a93e3ea85f7da7633a670165b84d43adb3b446ec8000000000453025387ffffffff029f0f0000000000001976a914261216d05727044e927c385aa9bd278754cdc8dc88ac0000000000000000136a11636f72736f626974636f696e2e636f6d0a00000000

現在,我想將 2-3 添加到簡單的腳本中。我的兌換腳本是:

53875221"$PB1"21"$PB2"21"$PB3"53AE

其中 $PB1 $PB2 $PB3 是壓縮的公鑰。

然後我嘗試簽署交易並在 ScriptSig 中添加 OP_3(將其長度增加 1 個字節)

原始交易數據

02000000014218ce881112706b0736419eef81220255d8dcc1412233a47091b770534f9b4700000000 6d4c6b538752210319ea83d5ab6d737133c6dad6a4f942a87d3f0e7b6ad4050d245c34103319a1c3210211ebc7feb791c8936c7a8d3661bbb54470ecf579fd008d279cda67fc3e7374c721023dfba960bd3b37e004e34cd7777b9b402fb95d145d2649c3adfd5a93411c2c3453ae Ffffffff025044042a010000001976a91475704b43283de0bdca419b898250e1916acc9df088ac0000000000000000136a11636f72736f626974636f696e2e636f6d0a00000000

scriptSig 中帶有 OP_3 的交易數據

02000000014218ce881112706b0736419eef81220255d8dcc1412233a47091b770534f9b4700000000 6e534c6b538752210319ea83d5ab6d737133c6dad6a4f942a87d3f0e7b6ad4050d245c34103319a1c3210211ebc7feb791c8936c7a8d3661bbb54470ecf579fd008d279cda67fc3e7374c721023dfba960bd3b37e004e34cd7777b9b402fb95d145d2649c3adfd5a93411c2c3453ae Ffffffff025044042a010000001976a91475704b43283de0bdca419b898250e1916acc9df088ac0000000000000000136a11636f72736f626974636f696e2e636f6d0a00000000

當我發送交易時,我收到此錯誤:

錯誤程式碼:-26 錯誤消息:強制腳本驗證標誌失敗(操作對目前堆棧大小無效)(程式碼 16)

您是如何嘗試簽署交易的?您的交易中沒有簽名,因此OP_CHECKMULTISIG失敗。

因為您使用的是自定義腳本,所以簽名軟體不太可能簽署您的交易,因為它們只能簽署標準模板。您沒有使用標準腳​​本模板(因為OP_3 OP_EQUAL),所以沒有創建簽名。要簽署此交易,您需要手動生成簽名(通過計算正確的 sighash 並對其進行簽名)並將它們手動插入到交易中。

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