無法使用非標準兌換腳本 (OP_CSV) 花費輸入
我正在玩 OP_CHECKSEQUENCEVERIFY。
這是我要花費的交易:
<https://tchain.btc.com/e79d469698915aa6724288ae3a4141a31706d081f39fb7fd0b956a73a9044b22>
其中有以下兌換腳本:
2 OP_CHECKSEQUENCEVERIFY f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
但是當我廣播它時出現錯誤(在兩個塊確認之後):
mandatory-script-verify-flag-failed (Non-canonical DER signature) (code 16)
如果我:
- 只需指定
2 CHECKLOCKTIMEVERIFY
(可以花任何人)- 使用標準交易
HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
但沒有一個與它們的組合。這是一個簽名的交易:
0200000001224b04a9736a950bfdb79ff381d00617a341413aae884272a65a919896469de7000000006b4830450221008801d7f0e402724b090133ec01a817e993675a44a871f1a3afc0dba730e24ea4022044097be610bece524e90a743fa9d060cd194079105e6f6d150265a1164e722c3012103e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef020000000120a107000000000017a914f45d94733d430261962932e0c847075195916a048700000000
有人可以解釋我做錯了什麼嗎?
PS 使用以下兌換腳本(添加了 OP_DROP)
<https://tchain.btc.com/022d42355ac90e63f2667208112cf22471397dd2812645b5571da2d212596932>
2 OP_CHECKSEQUENCEVERIFY OP_DROP f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
我有另一個錯誤
(Script evaluated without error but finished with a false/empty top stack element) (code 16)
[更新]:
<https://tchain.btc.com/46894d9dd5e20147826523b1a3ac8e8c5c64603338430d04bd6f5846af2bb9b4>
3 OP_CHECKSEQUENCEVERIFY OP_DROP OP_HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
然後嘗試廣播此 tx:
0200000001b4b92baf46586fbd040d43383360645c8c8eaca3b12365824701e2d59d4d8946000000006a47304402205649f715d2553cc4a66dd36a61b3c1b187d19f585bd40427d795c600373a45ab02203325ef44a3aae191ed3f2a90efe382d7992712c03f249f8dd61d8a30997806dc012103e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef0300000001e00f97000000000017a914f45d94733d430261962932e0c847075195916a048700000000
我有
error code: -26 error message: mandatory-script-verify-flag-failed (Script evaluated without error but finished with a false/empty top stack element) (code 16)
這是一個私鑰
cUB1iazKDHngknjpTHUfKtH9zNRvHn1aBMPJbK2s913zUegjkeNn
有人可以花嗎?
您必須提供一個
scriptSig
,當執行scriptPubKey
結果在堆棧上為真(或任何非零項)時(並通過所有驗證操作)。
scriptPubKey
您需要滿足(使用 a )scriptSig
是:2 OP_CHECKSEQUENCEVERIFY f45d94733d430261962932e0c847075195916a04 OP_CHECKSIG
(注意這不是
redeemScript
)主要問題是:
OP_CHECKSIG
正在尋找一個公鑰,但您提供了一個腳本雜湊:f45d94733d430261962932e0c847075195916a04
。這永遠不會得到滿足,所以這個交易輸出是不可花費的。如果您想像
redeemScript
以前一樣使用,您可能需要以下內容scriptPubKey
:
2 OP_CHECKSEQUENCEVERIFY OP_DROP HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL
請注意,
OP_DROP
因為OP_CHECKSEQUENCEVERIFY
2 留在堆棧上。為了花費這個,您必須提供任何簽名以及
redeemScript
其雜湊等於f45d94733d430261962932e0c847075195916a04
。更新:
redeemScript
還是錯的。而不是03e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef
,嘗試0014e17bbad678e82f8188099a351170c3e0efd4011b
。這是P2WPKH
您之前在<https://tchain.btc.com/46894d9dd5e20147826523b1a3ac8e8c5c64603338430d04bd6f5846af2bb9b4>中使用的腳本。另請注意,這是一個隔離見證腳本,因此它將在見證數據中查找簽名和公鑰:https ://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#p2wpkh