支付腳本雜湊地址交易不被礦工接受
我已經修復了我的初始交易,並且能夠將硬幣發送到 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 個字節,而不是實際將您的兌換腳本解釋為腳本。因此,您的兌換腳本必須以52
0x2d 開頭,而不是腳本的長度。從兌換腳本中刪除
2d
tx 後,再次對 tx 進行簽名,因為這個額外的字節也會更改整個 tx 以進行簽名。此外,如果您使用該兌換腳本來計算您的 p2sh 地址,您可能會將錢匯到錯誤的地址。