Opcode — байт инструкции, а не закрытый ключ или отдельная транзакция. Успешное расходование требует полного корректного контекста скрипта и транзакции, а не просто имени операции.
Script декодируется в инструкции и данные. OP_PUSHDATA задаёт помещение байтов; байты внутри помещённых данных не интерпретируются повторно как opcodes. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]
OP_DUP копирует вершину стека, OP_DROP удаляет её. Отсутствующий аргумент может вызвать отказ; порядок и кодирование элементов входят в условие. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
OP_EQUAL сравнивает два элемента и помещает результат. OP_EQUALVERIFY отказывает при неравенстве и удаляет результат при равенстве; ни одна операция сама не проверяет контроль ключа. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]
OP_CHECKSIG проверяет подпись относительно открытого ключа и сообщения из транзакции. Legacy и SegWit v0 используют ECDSA, обычные 32-байтовые ключи Tapscript — Schnorr. Область обязательства также задаёт sighash. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]
OP_IF и OP_ELSE выбирают ветвь по стеку. Script не имеет общих циклов; правила невыполненных ветвей всё равно зависят от opcode и версии скрипта. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]
OP_CHECKLOCKTIMEVERIFY проверяет абсолютную блокировку, OP_CHECKSEQUENCEVERIFY — относительное условие данного входа. Они не ждут, не отправляют платёж и не заменяют условие подписи. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
Tapscript меняет правила подписи, добавляет OP_CHECKSIGADD и отвергает OP_CHECKMULTISIG при выполнении. Список инструкций без версии не является полным руководством проверки. [BIP 342 — Validation of Taproot Scripts]
BIP 342 резервирует OP_SUCCESSx для расширений: их обнаружение при декодировании Tapscript позволяет успех по этим правилам. Это не активирует предложенную операцию и не гарантирует надёжное выполнение задуманного условия. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core — Segregated Witness benefits]
Сетевая политика может отказаться передавать транзакцию, разрешённую консенсусом в блоке. Bitcoin Core v29.0 по умолчанию препятствует использованию OP_SUCCESSx; политика узла не новое правило консенсуса. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core v29.0 — Standard script flags]
Читая скрипт, определите версию, начальный стек, сообщение подписи и все пути отказа. Верный синтаксис или красивое имя opcode не гарантируют правильное хранение; важно всё применение. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
Для полной картины прочитайте эту статью вместе с Bitcoin Script, CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Taproot.