128 / 691OP

Bitcoin Script opcode

Opcode — инструкция Bitcoin Script. При проверке расходования она меняет стек или проверяет условие; смысл зависит также от версии скрипта.

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.

DOC · 001Bitcoin Core v29.0 — Script interpreterДокументация ↗DOC · 002Bitcoin Core v29.0 — Opcode definitionsДокументация ↗DOC · 003BIP 342 — Validation of Taproot ScriptsСпецификация ↗DOC · 004Bitcoin Developer Guide — TransactionsДокументация ↗DOC · 005Bitcoin Core v29.0 — Standard script flagsДокументация ↗DOC · 006Bitcoin Core — Segregated Witness benefitsДокументация ↗
Сначала источники · Не является инвестиционной рекомендацией