Definition
OP_SUCCESS opcodes are Tapscript's built-in upgrade hooks, defined in BIP 342 as part of the Taproot soft fork. A range of previously unused or disabled opcode numbers — 80, 98, 126–129, 131–134, 137–138, 141–142, 149–153, and 187–254 — are renamed OP_SUCCESS80 through OP_SUCCESS254. If a Tapscript contains any of them, validation succeeds unconditionally, even if later bytes would otherwise fail to decode.
How they enable upgrades
Because an OP_SUCCESS opcode short-circuits all subsequent script rules, a future soft fork can redefine any of these numbers to do something meaningful — with full read and write access to the stack — without breaking older nodes, which simply treat the script as valid. This is a cleaner mechanism than the legacy OP_NOP-based approach: the same byte can carry a multi-byte opcode, an entirely new instruction, or even a different scripting language introduced behind a chosen OP_SUCCESS prefix.
A safety caveat for spenders
Because an unupgraded OP_SUCCESS makes a script pass for free, anyone constructing a Tapscript leaf must avoid these opcodes unless intentional — an accidental OP_SUCCESS in a spending condition would let the output be claimed without satisfying the intended logic.
OP_SUCCESS is one half of Tapscript's forward-compatibility story; the other is the resource accounting handled by the sigop budget. It works in the same execution environment as the redefined OP_CHECKSIG and the new OP_CHECKSIGADD.
In Simple Terms
OP_SUCCESS opcodes are Tapscript’s built-in upgrade hooks, defined in BIP 342 as part of the Taproot soft fork. A range of previously unused or disabled…
