Transactions

支付腳本雜湊地址交易不被礦工接受

  • March 1, 2021

我已經修復了我的初始交易,並且能夠將硬幣發送到 p2sh 地址

現在我想花費這些硬幣,但是當我嘗試廣播我的交易時,網站(blockcypher)接受它,然後礦工不接受它或拒絕(blockstream):

sendrawtransaction RPC 錯誤:{“code”:-26,“message”:“non-mandatory-script-verify-flag (執行後在堆棧上留下的額外項目)”}

我想我已經為 2 個多重簽名中的 2 個(OP_0、sig1、sig2、redeemscript)製作了正確的 ScriptSig,所以我不確定我的錯誤:

OP_0 3045022100e91708339615eb38326a5c513b5dcc040bf59a1b97faef2c1f59a7b16426519a02200a4ca9d8c9f05ec824c70d1564ae2952650bc0ddc8bce92f081dd7d29d33d7ea01 3045022100ca0e751242a6d33ab2e895a9b1d9e5dce18426f2d11e69009e794ebc1004ba1a0220022a95a3f335fd84b380d6482948c24817a9f021f0dea75689eccf59e1540ae901 2d5214a175b609a7c37011420585f1fcf392fdda9a025414b1e9f0fa01914ff497607f99bf90dbd8a41bd8bb52ae

這是我的完整交易:

0100000001f51f20dce174d1a894151bdbdf397317b97ec342c4068a6b96d95babb34baa7400000000c200483045022100e91708339615eb38326a5c513b5dcc040bf59a1b97faef2c1f59a7b16426519a02200a4ca9d8c9f05ec824c70d1564ae2952650bc0ddc8bce92f081dd7d29d33d7ea01483045022100ca0e751242a6d33ab2e895a9b1d9e5dce18426f2d11e69009e794ebc1004ba1a0220022a95a3f335fd84b380d6482948c24817a9f021f0dea75689eccf59e1540ae9012e2d5214a175b609a7c37011420585f1fcf392fdda9a025414b1e9f0fa01914ff497607f99bf90dbd8a41bd8bb52aeffffffff01401f0000000000001976a914a175b609a7c37011420585f1fcf392fdda9a025488ac00000000

以及我用來創建它的程式碼:

<https://pastebin.com/c0EvKjPH>

您的兌換腳本具有附加到它的腳本的長度 ( 2d),這會導致堆棧執行以堆棧中的兌換腳本作為數據結束,而不是將其解釋為另一個腳本。

該腳本解釋2d為好像您打算將數據放入堆棧中,長度為 45 個字節,而不是實際將您的兌換腳本解釋為腳本。因此,您的兌換腳本必須以520x2d 開頭,而不是腳本的長度。

從兌換腳本中刪除2dtx 後,再次對 tx 進行簽名,因為這個額外的字節也會更改整個 tx 以進行簽名。

此外,如果您使用該兌換腳本來計算您的 p2sh 地址,您可能會將錢匯到錯誤的地址。

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