Я играю с 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
Вам нужно удовлетворить (с помощью ) 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 . Также обратите внимание, что это скрипт segwit, поэтому он будет искать подпись и публичный ключ в данных свидетеля: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#p2wpkh
Рагхав Суд
OP_DUP OP_HASH160 <hash> OP_EQUAL OP_CHECKSIG
? Ваш пример только проверяет соответствие открытого ключа, но не проверяет подпись.Дж.Бачук
P2SH
пример, а не файлP2PKH
.Рагхав Суд
Эндрю
Дж.Бачук
03e8546cfe53ca9014f6a352bc2e5c1f7cec1f5b344c73d4db3ed3b8f075d5c9ef
, который не соответствует правильному значению дляOP_EQUAL
проверки. Вам нужны этиredeemScript
хэши дляf45d94733d430261962932e0c847075195916a04
Эндрю
Дж.Бачук
redeemScript
она предоставляется вscriptSig
:0014e17bbad678e82f8188099a351170c3e0efd4011b
Эндрю
Дж.Бачук
Эндрю
Эндрю