Проблема с расходованием средств с адреса P2WSH: non-mandatory-script-verify-flag

Я пытался найти ответ здесь и на BTT, но пока безуспешно.

У меня возникают проблемы с созданием транзакции для расходов с P2WSH адреса , который я создал и на который отправил средства.

Я основал свой код на этом примере: https://github.com/petertodd/python-bitcoinlib/blob/master/examples/spend-p2wsh-txout.py

Мой код можно найти здесь: https://gist.github.com/i0x0ff/b29b2307b4e9ce316a4d6533464cf7a1 .

Адрес P2WSH со средствами :tb1qhxy36055wje22qkxn4mtjl4k9vykcnq7avgtu3smnw6xpdxmw0qqjvywtn

Я хочу отправить средства на:tb1qffmyyg5v9atg3zzvlafzzu22ht6cexj7xt8sx4yl0f6c3zktzqrq8hempj

При трансляции транзакции я получаю следующую ошибку:

{
  "code": -26,
  "message": "non-mandatory-script-verify-flag (Signature must be zero for failed CHECK(MULTI)SIG operation)",
}

Следует отметить, что я совершаю эту транзакцию в SIGNET и изменил код в python-bitcoinlib для поддержки SIGNET. Я намерен сделать PR после того, как разберусь с этой проблемой.

Если есть какая-либо дополнительная информация, которую я могу предоставить, чтобы облегчить кому-либо помощь, дайте мне знать, что еще было бы полезно. Я только начинаю разработку Биткойна, а также буду документировать свой процесс, находки и выводы.

Не могли бы вы поделиться необработанными байтами транзакции (в шестнадцатеричном формате), которые вы транслировали?
Конечно, это то, что я транслирую: 0100000000010179ebc0d716496a2803828657074196c073bf9be23a43604530deec6a7f6ef6660100000000ffffffff011c250000000000002200204a7642228c2f5688884cff5221714abaf58c9a5e32cf03549f7a75888acb10060247304402203fb1c7b9d5c93716968ef7e010923f123b816a6ff255ff401b3dbf090c69f430022044509913f254e107d32696cd930c6ff6a4968fc84ed7417cb80f100c9562bcc5012321029bed8c78bc0f557742303db2fb3c48e8b5025cf11cdf1cdea764805f234a443cac00000000Я транслирую с помощью: explorer.bc-2.jp/tx/push
Ваша подпись недействительна. Когда OP_CheckSigвыполняется, он помещается falseв стек, поэтому, вероятно, вы получаете это сообщение об ошибке.
Спасибо. Я пытаюсь прочитать код и сравниваю со своими заметками, но не могу понять, какие шаги я делаю неправильно, что приводит к недопустимой подписи. Будет продолжать копать.

Ответы (1)

Отвечаю всем, кто может с этим столкнуться. Мой связанный скрипт недействителен, я пытался потратить средства из txout, к которым у меня нет доступа.

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