Script
帶有在 btcdeb 中執行正常的腳本的非強制腳本驗證標誌(未知錯誤)
在學習了很多關於腳本的知識(並在測試網上與他們一起玩)之後,我製作了一個更長的腳本。
$ btc decodescript 7455886f94935688789352885279935b88946e935b88945187 { "asm": "OP_DEPTH 5 OP_EQUALVERIFY OP_3DUP OP_SUB OP_ADD 6 OP_EQUALVERIFY OP_OVER OP_ADD 2 OP_EQUALVERIFY 2 OP_PICK OP_ADD 11 OP_EQUALVERIFY OP_SUB OP_2DUP OP_ADD 11 OP_EQUALVERIFY OP_SUB 1 OP_EQUAL", ... "segwit": { ... "address": "tb1q2c0uglp5tg2dhnr3ejuwppalp9urdfu4cxnl2sc495vlzmjy2ggs2wk7ry", ... } }
該腳本的解決方案是
6
9
4
2
0
.但是,當從 p2wsh 地址兌換 1000 sat 時,它給了我錯誤:
$ bitcoin-cli -testnet sendrawtransaction 010000000001019f084303418f25b5a77f36b95f293b052e9d885d98020be3f66fb223939bbbe00000000000ffffffff018c030000000000001600140f4eb1382443259e6d295d8ddf1ade059e4b1f8c0601060109010401020100197455886f94935688789352885279935b88946e935b8894518700000000 error code: -26 error message: non-mandatory-script-verify-flag (unknown error)
我在比特幣 se 上搜尋了一下,我能找到的唯一有用的東西是一個抱怨的文章
OP_PICK
。有人知道如何解決這個問題嗎?PS:我真的不在乎 1000 次測試,但我只是想解決這個問題以從中學習 :)
此錯誤是由與解鎖 P2WSH 問題相同的問題(最小編碼)引起的。Andrew Chow 給我的解決方案在這裡也對我有用。
我是那個問另一個問題的人。在我的情況下,問題是操作留下了一個不干淨的堆棧,這在技術上是可以的,因為堆棧不是空的。但如果我是正確的,它是一個非標準的交易,不會被節點中繼。
就我而言,我必須以一個元素結束,而不是 0。這在我的腳本中是不可能的。