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Документація ↗
Спочатку джерела · Не інвестиційна порада