Я изучаю P2SH и хочу создать собственный скрипт. Я уже создал один tx, но без OP_CHECKMULITISIG, как вы можете проверить по этой ссылке https://tbtc.bitaps.com/c86e443bdb3ad4845b1670a63376daf785eae3932a1b6146a7138ea46d51d24a . Скрипт очень простой, в Scriptpubkey можно найти
OP_3 OP_EQUAL
И в ScriptSig я поставил
OP_3
Весь скрипт такой:
02000000014ad2516da48e13a746611b2a93e3ea85f7da7633a670165b84d43adb3b446ec8000000000453025387ffffffff029f0f0000000000001976a914261216d05727044e927c385aa9bd278754cdc8dc88ac0000000000000000136a11636f72736f626974636f696e2e636f6d0a00000000
Теперь я хочу добавить 2-3 в простой скрипт. Мой сценарий выкупа:
53875221"$PB1"21"$PB2"21"$PB3"53AE
где $PB1 $PB2 $PB3 — сжатые открытые ключи.
Потом пытаюсь подписать транзакцию и добавляю OP_3 в ScriptSig (увеличиваю его длину на 1 байт)
Исходные данные транзакции
02000000014218ce881112706b0736419eef81220255d8dcc1412233a47091b770534f9b4700000000 6d4c6b538752210319ea83d5ab6d737133c6dad6a4f942a87d3f0e7b6ad4050d245c34103319a1c3210211ebc7feb791c8936c7a8d3661bbb54470ecf579fd008d279cda67fc3e7374c721023dfba960bd3b37e004e34cd7777b9b402fb95d145d2649c3adfd5a93411c2c3453ae ffffffff025044042a010000001976a91475704b43283de0bdca419b898250e1916acc9df088ac0000000000000000136a11636f72736f626974636f696e2e636f6d0a00000000
Данные транзакции с OP_3 в scriptSig
02000000014218ce881112706b0736419eef81220255d8dcc1412233a47091b770534f9b4700000000 6e534c6b538752210319ea83d5ab6d737133c6dad6a4f942a87d3f0e7b6ad4050d245c34103319a1c3210211ebc7feb791c8936c7a8d3661bbb54470ecf579fd008d279cda67fc3e7374c721023dfba960bd3b37e004e34cd7777b9b402fb95d145d2649c3adfd5a93411c2c3453ae ffffffff025044042a010000001976a91475704b43283de0bdca419b898250e1916acc9df088ac0000000000000000136a11636f72736f626974636f696e2e636f6d0a00000000
Когда я отправляю транзакцию, я получаю эту ошибку:
код ошибки: -26 сообщение об ошибке: сбой обязательного сценария-проверки-флага (операция недействительна с текущим размером стека) (код 16)
Как вы пытались подписать транзакцию? В вашей транзакции нет подписей, поэтому OP_CHECKMULTISIG
происходит сбой.
Поскольку вы используете собственный сценарий, программы для подписи вряд ли смогут подписать вашу транзакцию, поскольку они могут подписывать только стандартные шаблоны. Вы не используете стандартный шаблон сценария (из-за OP_3 OP_EQUAL
), поэтому подписи не создаются. Чтобы подписать эту транзакцию, вам нужно будет создать подписи вручную (вычислив правильный сигхэш и подписав его) и вставить их в транзакцию вручную.
обезьянаПользователь
createrawtransaction
лайкомbitcoin-cli createrawtransaction '[{"txid":"'$TXID'","vout":'$VOUT',"scriptPubKey":"'$SCRIPTPUBKEY'","redeemScript":"'$REDEEM'"}]' '[{"'$ADDR_MITT'":'$AMOUNT'}'
и пытаюсь подписатьbitcoin-cli signrawtransactionwithkey $TX_DATA '["'$PK1'","'$PK2'"]' '[{"txid":"'$TXID'","vout":'$VOUT',"scriptPubKey":"'$SCRIPTPUBKEY'","redeemScript":"'$REDEEM'"}]'
Эндрю Чоу
обезьянаПользователь
Эндрю Чоу