Я играл с необработанными транзакциями и подписанными транзакциями и заметил, что ошибка «Ошибка обязательного флага проверки сценария» возникает в двух вариантах.
Теперь кажется, что ошибка номер один выдается всякий раз, когда я пытаюсь отправить транзакцию с неправильным TXID или номером индекса. Вторая ошибка может появиться, когда я указываю неправильную подпись.
Но разве обе ошибки не просто вариант сбоя при выполнении OP_EQUALVERIFY? На каком этапе оценки возникает каждая ошибка и что мы можем из этого сделать?
Я буду очень признателен за любой указатель, который у вас может быть. Я действительно изо всех сил пытаюсь здесь различать два.
Но разве обе ошибки не просто вариант сбоя при выполнении OP_EQUALVERIFY? На каком этапе оценки возникает каждая ошибка и что мы можем из этого сделать?
Нет, это разные ошибки. Здесь должны соблюдаться два правила:
OP_CHECKSIG
не сразу выдает ошибку. Он возвращает 0, что приводит к сбою сценария.)Есть и другие ошибки скрипта. См. этот список: https://github.com/bitcoin/bitcoin/blob/master/src/script/script_error.cpp
Я столкнулся с той же проблемой, когда создавал необработанную транзакцию. Я получил сообщение: обязательная-скрипт-проверка-флаг-ошибка
(Script failed an OP_EQUALVERIFY operation)
Я понимаю, что проблема в том, что я подписываю ошибочным ключом, который не связан с UTXO. Мне пришлось сделать резервную копию ключа, привязанного к адресу UTXO, с помощью dumpprivkey и подписать его.