Bitcoin-Core

嘗試使用 bitcoin-qt 發送密件抄送但得到“16:強制腳本驗證標誌失敗” - 錯誤

  • December 21, 2017

我正在嘗試使用此 reddit 連結中的方法將原始交易發送到密件抄送網路,但不斷收到錯誤消息:“16:強制腳本驗證標誌失敗(腳本評估沒有錯誤但完成了假/空頂部堆棧元素)(程式碼-26)“

向密件抄送網路發送交易時,該方法有什麼不同嗎?一切正常,直到我嘗試執行 sendrawtransaction。

引用上面的連結,這些是我正在做的步驟:

創建原始交易:

createrawtransaction '[{"txid":"0cb0c97c206bf2229fac8800fe05410d23bbc5afe2b243ff921ef2065b210b34","vout":1,"scriptPubKey":"76a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac"}]' '{"mtRWdkBpAyz8pUoCYobABvnEe1xFPqvkJN":0.36972432}'

結果:

0100000001340b215b06f21e92ff43b2e2afc5bb230d4105fe0088ac9f22f26b207cc9b00c0100000000ffffffff0280969800000000001976a9148d9222948aff2a22c6c0fe7a05f7edd3c1b0ab9f88ac10919b01000000001976a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac00000000

然後簽署原始交易:

signrawtransaction '0100000001340b215b06f21e92ff43b2e2afc5bb230d4105fe0088ac9f22f26b207cc9b00c0100000000ffffffff0280969800000000001976a9148d9222948aff2a22c6c0fe7a05f7edd3c1b0ab9f88ac10919b01000000001976a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac00000000' '[{"txid":"0cb0c97c206bf2229fac8800fe05410d23bbc5afe2b243ff921ef2065b210b34","vout":1,"scriptPubKey":"76a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac"}]' '["cUhHXQLPaNSPNh2rRiWSarn5jEoJ26HvrAYjLCfxnDsAYZenTthe"]'

結果:

{ "hex" : "0100000001340b215b06f21e92ff43b2e2afc5bb230d4105fe0088ac9f22f26b207cc9b00c010000006a47304402200d3f8a6430f952199d7f4550328ae980f9926b13f7c78f8a5640ecd445aa20bf022074a7e1ec5d27d83da6bb19a8fe9ef9757e40fa86a9b1437c27031be015d82db40121032effa843ad1052540de3ae323a165101bc2e980c76b69bdc69444e3ef599054effffffff0280969800000000001976a9148d9222948aff2a22c6c0fe7a05f7edd3c1b0ab9f88ac10919b01000000001976a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac00000000", "complete" : true }

然後發送交易:

sendrawtransaction '0100000001340b215b06f21e92ff43b2e2afc5bb230d4105fe0088ac9f22f26b207cc9b00c010000006a47304402200d3f8a6430f952199d7f4550328ae980f9926b13f7c78f8a5640ecd445aa20bf022074a7e1ec5d27d83da6bb19a8fe9ef9757e40fa86a9b1437c27031be015d82db40121032effa843ad1052540de3ae323a165101bc2e980c76b69bdc69444e3ef599054effffffff0280969800000000001976a9148d9222948aff2a22c6c0fe7a05f7edd3c1b0ab9f88ac10919b01000000001976a9144e03fd2b3eff32ee90d29524eb6f058719f3b50f88ac00000000'

結果:

16: mandatory-script-verify-flag-failed (Script evaluated without error but finished with a false/empty top stack element) (code -26)

由於我確信其他人會遇到同樣的問題,因此解決方案是 BCC 要求您在簽署交易時輸入金額標籤。但是,您必須輸入 listunspent-command 上顯示的全部金額,否則您將無法發送交易。

我有同樣的錯誤,但可能是不同的問題。請參閱: 嘗試使用失敗的 CHECK(MULTI)SIG 的 rawtransaction BCC/BCH。怎麼了?

重要的是,用於簽名的雜湊基於實際發送的相同數據 + sigscript。任何差異都會導致不同的簽名。同樣對於簽名,需要使用 outpoints 的數量以及與 BTC 相比的一些差異,例如 AND’ing 與 0x40 和 Bip143SignatureHash 一起使用的 sighash。

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