OP_INTERNALKEY

BIP 349, OP_SUCCESS203, taproot internal key

A proposed tapscript opcode that pushes a taproot output's internal key onto the stack so scripts can reuse it directly.

OP_INTERNALKEY is a proposed tapscript opcode described in BIP 349. During a Taproot script-path spend, it would push the taproot output's internal key onto the stack in x-only form. A script could then refer to that key directly instead of hardcoding the same 32-byte value inside the leaf.

That matters because many taproot constructions already depend on the internal key. Reusing it inside script can save block space, keep key-path and script-path logic aligned, and make some constructions easier to update when the internal key changes. The BIP highlights aggregate-key policies, hash-locked scripts, and re-keyable covenant-style trees as concrete examples.

OP_INTERNALKEY remains a draft proposal. If activated, it would replace one of tapscript's reserved OP_SUCCESS opcodes in a soft fork, so older nodes would continue to treat the upgraded opcode space safely until they validate the new rule set.

References