Opcode je bajtový kód instrukce, nikoli soukromý klíč ani samostatná transakce. Úspěch utracení vyžaduje celý platný skriptový a transakční kontext, ne pouhou přítomnost názvu operace.
Script se dekóduje na instrukce a datové položky. OP_PUSHDATA určuje vložení bajtů; bajty uvnitř vložených dat se znovu neinterpretují jako další opcodes. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]
OP_DUP duplikuje vrchol zásobníku, OP_DROP jej odstraní. Chybějící argument může způsobit selhání; pořadí i kódování položek je součástí podmínky. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
OP_EQUAL porovná dvě položky a vloží výsledek. OP_EQUALVERIFY při nerovnosti selže a při rovnosti výsledek odstraní; žádná z těchto operací sama neověřuje vlastnictví klíče. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Core v29.0 — Opcode definitions]
OP_CHECKSIG ověřuje podpis vůči veřejnému klíči a zprávě odvozené z transakce. Legacy a SegWit v0 používají ECDSA, běžné 32bajtové klíče v Tapscriptu Schnorr; rozsah závazku určuje i sighash. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]
OP_IF a OP_ELSE vybírají větev podle zásobníku. Script nemá obecné smyčky; pravidla neprovedených větví přesto závisejí na druhu opcode a verzi skriptu. [Bitcoin Core v29.0 — Script interpreter] [BIP 342 — Validation of Taproot Scripts]
OP_CHECKLOCKTIMEVERIFY kontroluje absolutní zámek, OP_CHECKSEQUENCEVERIFY relativní podmínku příslušného vstupu. Samy nečekají, neodešlou platbu a nenahrazují podpisovou podmínku. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
Tapscript mění podpisová pravidla, přidává OP_CHECKSIGADD a při provedení odmítá OP_CHECKMULTISIG. Seznam instrukcí bez uvedení verze proto není úplným návodem k validaci. [BIP 342 — Validation of Taproot Scripts]
BIP 342 vyhrazuje OP_SUCCESSx pro budoucí rozšíření: jejich nalezení při dekódování Tapscriptu umožní úspěch podle těchto pravidel. Neznamená to, že návrh nové operace je už aktivován nebo bezpečně vynucuje zamýšlenou podmínku. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core — Segregated Witness benefits]
Síťová politika může odmítnout přeposlat transakci, kterou konsenzus připouští v bloku. Bitcoin Core v29.0 například standardně odrazuje použití OP_SUCCESSx; politika uzlu není nové konsenzuální pravidlo. [BIP 342 — Validation of Taproot Scripts] [Bitcoin Core v29.0 — Standard script flags]
Při čtení skriptu určete verzi, vstupní zásobník, zprávu podpisu a všechny cesty selhání. Ověřená syntaxe nebo hezký název opcode nezaručují správnou úschovu; záleží na celém použití. [Bitcoin Core v29.0 — Script interpreter] [Bitcoin Developer Guide — Transactions]
Pro nejúplnější obraz čtěte toto heslo společně s Bitcoin Script, CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Taproot.