Попытка отправить скрытую копию с помощью биткойн-qt, но получаю «16: обязательное-скрипт-подтверждение-флаг-ошибка» - ошибка

Я пытаюсь использовать метод из этой ссылки на Reddit , чтобы отправить необработанную транзакцию в сеть bcc, но продолжаю получать сообщение об ошибке: «16: сбой обязательного сценария-проверки-флага (скрипт оценивается без ошибок, но завершается с ошибкой). false/пустой верхний элемент стека) (код -26)"

Есть ли что-то отличное от этого метода при отправке транзакции в сеть bcc? Все работает нормально, пока я не попытаюсь выполнить 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)

Ответы (3)

Поскольку я уверен, что другие столкнутся с той же проблемой, решение состоит в том, что BCC требует, чтобы вы вводили тег суммы при подписании транзакции. Вы должны ввести полную сумму, указанную в команде listunspent-command, иначе вы не сможете отправить транзакцию.

У меня была такая же ошибка, но, возможно, другая проблема. См.: Попытка необработанной транзакции BCC/BCH с ошибкой CHECK(MULTI)SIG. Что не так?

Важно, чтобы хэш, используемый для подписи, был основан на тех же данных, которые фактически отправляются + сигскрипт. Любое различие приведет к другой подписи. Также для подписи необходимо использовать количество минусов и некоторые отличия по сравнению с BTC, такие как И-сложение сигхэша, используемого с 0x40 и Bip143SignatureHash.

Беглый обзор ваших шагов говорит мне, что вы делаете это правильно. Но входы, которые вы пытаетесь потратить, уже потрачены (Testnet/ https ://www.blocktrail.com/tBTC/tx/0cb0c97c206bf2229fac8800fe05410d23bbc5afe2b243ff921ef2065b210b34 ).

Ошибка, с которой вы столкнулись, не очень точна, но в конечном итоге будет означать, что вы пытаетесь потратить и уже потратили монету.

Попробуйте выполнить regtest (вашу собственную локальную сеть биткойнов), запустив Bitcoin-Core в -regtestрежиме. Там вы можете получить монеты для игры, позвонив generate 101(мойте 100 блоков == получите доступный баланс 50 BTC) в своей консоли (или с помощью RPC).

Эти входные данные являются просто примером из ссылки на Reddit, а не моей реальной транзакцией. Я не хотел рисковать раскрытием какой-либо информации о закрытом ключе, который я использовал, поэтому я просто показал шаги с примером транзакции. Тогда надо попробовать с регтестом. Может ли ошибка быть связана с тем, что я импортировал адрес, с которого пытаюсь отправить только для просмотра? Или это не имело бы значения?
Итак, я скачал биткойн abc и запустил его в режиме -regtest. Выполнил все шаги по созданию транзакции и ее отправке и получил ту же ошибку после sendrawtransaction: 16: required-script-verify-flag-failed (подпись должна быть нулевой для неудачной операции CHECK(MULTI)SIG) (код -26) . Что мне не хватает?