BCH opcode reference
139 entries covering all 256 byte values, current to the May 2026 upgrade. Including the ones Bitcoin Core is still debating.
Oldest check
push
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0x00 | OP_0 | ∅ → 0 | original | same |
| 0x01–0x4b | OP_PUSHBYTES_N | ∅ → data | original | same |
| 0x4c | OP_PUSHDATA1 | ∅ → data | original | same |
| 0x4d | OP_PUSHDATA2 | ∅ → data | original | same |
| 0x4e | OP_PUSHDATA4 | ∅ → data | original | same |
| 0x4f | OP_1NEGATE | ∅ → -1 | original | same |
| 0x51 | OP_1 | ∅ → 1 | original | same |
| 0x52 | OP_2 | ∅ → 2 | original | same |
| 0x53 | OP_3 | ∅ → 3 | original | same |
| 0x54 | OP_4 | ∅ → 4 | original | same |
| 0x55 | OP_5 | ∅ → 5 | original | same |
| 0x56 | OP_6 | ∅ → 6 | original | same |
| 0x57 | OP_7 | ∅ → 7 | original | same |
| 0x58 | OP_8 | ∅ → 8 | original | same |
| 0x59 | OP_9 | ∅ → 9 | original | same |
| 0x5a | OP_10 | ∅ → 10 | original | same |
| 0x5b | OP_11 | ∅ → 11 | original | same |
| 0x5c | OP_12 | ∅ → 12 | original | same |
| 0x5d | OP_13 | ∅ → 13 | original | same |
| 0x5e | OP_14 | ∅ → 14 | original | same |
| 0x5f | OP_15 | ∅ → 15 | original | same |
| 0x60 | OP_16 | ∅ → 16 | original | same |
reserved
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0x50 | OP_RESERVED reserved | ∅ → (fails) | original | same |
| 0x62 | OP_VER reserved | ∅ → (fails) | original | same |
| 0xb0 | OP_NOP1 nop | ∅ → ∅ | original | same |
| 0xb3 | OP_NOP4 nop | ∅ → ∅ | original | proposed-for-btc |
| 0xb4 | OP_NOP5 nop | ∅ → ∅ | original | same |
| 0xb5 | OP_NOP6 nop | ∅ → ∅ | original | same |
| 0xb6 | OP_NOP7 nop | ∅ → ∅ | original | same |
| 0xb7 | OP_NOP8 nop | ∅ → ∅ | original | same |
| 0xb8 | OP_NOP9 nop | ∅ → ∅ | original | same |
| 0xb9 | OP_NOP10 nop | ∅ → ∅ | original | same |
| 0xbd | OP_UNKNOWN189 reserved | ∅ → (fails) | Never assigned | not-in-btc |
| 0xbe | OP_UNKNOWN190 reserved | ∅ → (fails) | Never assigned | not-in-btc |
| 0xbf | OP_UNKNOWN191 reserved | ∅ → (fails) | Never assigned | not-in-btc |
| 0xd4–0xff | OP_UNKNOWN212–255 reserved | ∅ → (fails) | Never assigned | not-in-btc |
control
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0x61 | OP_NOP | ∅ → ∅ | original | same |
| 0x63 | OP_IF | cond → ∅ | original | different |
| 0x64 | OP_NOTIF | cond → ∅ | original | different |
| 0x65 | OP_BEGIN | ∅ → ∅ | 2026-05-upgrade | not-in-btc |
| 0x66 | OP_UNTIL | cond → ∅ | 2026-05-upgrade | not-in-btc |
| 0x67 | OP_ELSE | ∅ → ∅ | original | same |
| 0x68 | OP_ENDIF | ∅ → ∅ | original | same |
| 0x69 | OP_VERIFY | x → ∅ | original | same |
| 0x6a | OP_RETURN | ∅ → (fails) | original | same |
stack
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0x6b | OP_TOALTSTACK | x → ∅ | original | same |
| 0x6c | OP_FROMALTSTACK | ∅ → x | original | same |
| 0x6d | OP_2DROP | a b → ∅ | original | same |
| 0x6e | OP_2DUP | a b → a b a b | original | same |
| 0x6f | OP_3DUP | a b c → a b c a b c | original | same |
| 0x70 | OP_2OVER | a b c d → a b c d a b | original | same |
| 0x71 | OP_2ROT | a b c d e f → c d e f a b | original | same |
| 0x72 | OP_2SWAP | a b c d → c d a b | original | same |
| 0x73 | OP_IFDUP | x → x | x x | original | same |
| 0x74 | OP_DEPTH | ∅ → n | original | same |
| 0x75 | OP_DROP | x → ∅ | original | same |
| 0x76 | OP_DUP | x → x x | original | same |
| 0x77 | OP_NIP | a b → b | original | same |
| 0x78 | OP_OVER | a b → a b a | original | same |
| 0x79 | OP_PICK | … x … n → … x … x | original | same |
| 0x7a | OP_ROLL | … x … n → … … x | original | same |
| 0x7b | OP_ROT | a b c → b c a | original | same |
| 0x7c | OP_SWAP | a b → b a | original | same |
| 0x7d | OP_TUCK | a b → b a b | original | same |
splice
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0x7e | OP_CAT | a b → a‖b | 2018-05-upgrade | proposed-for-btc |
| 0x7f | OP_SPLIT | x n → x[0..n) x[n..) | 2018-05-upgrade | not-in-btc |
| 0x80 | OP_NUM2BIN | n size → bin | 2018-05-upgrade | not-in-btc |
| 0x81 | OP_BIN2NUM | bin → n | 2018-05-upgrade | not-in-btc |
| 0x82 | OP_SIZE | x → x len | original | same |
| 0xbc | OP_REVERSEBYTES | x → reverse(x) | 2020-05-upgrade | not-in-btc |
bitwise
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0x83 | OP_INVERT | x → ~x | 2026-05-upgrade | disabled-in-btc |
| 0x84 | OP_AND | a b → a&b | 2018-05-upgrade | disabled-in-btc |
| 0x85 | OP_OR | a b → a|b | 2018-05-upgrade | disabled-in-btc |
| 0x86 | OP_XOR | a b → a^b | 2018-05-upgrade | disabled-in-btc |
| 0x87 | OP_EQUAL | a b → a==b | original | same |
| 0x88 | OP_EQUALVERIFY | a b → ∅ | original | same |
| 0x98 | OP_LSHIFTBIN | bin bits → bin<<bits | 2026-05-upgrade | disabled-in-btc |
| 0x99 | OP_RSHIFTBIN | bin bits → bin>>bits | 2026-05-upgrade | disabled-in-btc |
function
arithmetic
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0x8b | OP_1ADD | a → a+1 | original | same |
| 0x8c | OP_1SUB | a → a-1 | original | same |
| 0x8d | OP_LSHIFTNUM | a bits → a×2^bits | 2026-05-upgrade | disabled-in-btc |
| 0x8e | OP_RSHIFTNUM | a bits → floor(a/2^bits) | 2026-05-upgrade | disabled-in-btc |
| 0x8f | OP_NEGATE | a → -a | original | same |
| 0x90 | OP_ABS | a → |a| | original | same |
| 0x91 | OP_NOT | a → a==0 | original | same |
| 0x92 | OP_0NOTEQUAL | a → a!=0 | original | same |
| 0x93 | OP_ADD | a b → a+b | original | same |
| 0x94 | OP_SUB | a b → a-b | original | same |
| 0x95 | OP_MUL | a b → a×b | 2022-05-upgrade | disabled-in-btc |
| 0x96 | OP_DIV | a b → a/b | 2018-05-upgrade | disabled-in-btc |
| 0x97 | OP_MOD | a b → a%b | 2018-05-upgrade | disabled-in-btc |
| 0x9a | OP_BOOLAND | a b → a&&b | original | same |
| 0x9b | OP_BOOLOR | a b → a||b | original | same |
| 0x9c | OP_NUMEQUAL | a b → a==b | original | same |
| 0x9d | OP_NUMEQUALVERIFY | a b → ∅ | original | same |
| 0x9e | OP_NUMNOTEQUAL | a b → a!=b | original | same |
| 0x9f | OP_LESSTHAN | a b → a<b | original | same |
| 0xa0 | OP_GREATERTHAN | a b → a>b | original | same |
| 0xa1 | OP_LESSTHANOREQUAL | a b → a<=b | original | same |
| 0xa2 | OP_GREATERTHANOREQUAL | a b → a>=b | original | same |
| 0xa3 | OP_MIN | a b → min(a,b) | original | same |
| 0xa4 | OP_MAX | a b → max(a,b) | original | same |
| 0xa5 | OP_WITHIN | x min max → min<=x<max | original | same |
crypto
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0xa6 | OP_RIPEMD160 | x → hash(x) | original | same |
| 0xa7 | OP_SHA1 | x → hash(x) | original | same |
| 0xa8 | OP_SHA256 | x → hash(x) | original | same |
| 0xa9 | OP_HASH160 | x → hash(x) | original | same |
| 0xaa | OP_HASH256 | x → hash(x) | original | same |
| 0xab | OP_CODESEPARATOR | ∅ → ∅ | original | same |
| 0xac | OP_CHECKSIG | sig pubkey → ok | original | different |
| 0xad | OP_CHECKSIGVERIFY | sig pubkey → ∅ | original | different |
| 0xae | OP_CHECKMULTISIG | dummy sig… m pubkey… n → ok | original | different |
| 0xaf | OP_CHECKMULTISIGVERIFY | dummy sig… m pubkey… n → ∅ | original | different |
| 0xba | OP_CHECKDATASIG | sig msg pubkey → ok | 2018-11-upgrade | not-in-btc |
| 0xbb | OP_CHECKDATASIGVERIFY | sig msg pubkey → ∅ | 2018-11-upgrade | not-in-btc |
locktime
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0xb1 | OP_CHECKLOCKTIMEVERIFY | t → t | BIP-65 soft fork (2015), inherited at the 2017 split | same |
| 0xb2 | OP_CHECKSEQUENCEVERIFY | n → n | BIP-112 soft fork (2016), inherited at the 2017 split | same |
introspection
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0xc0 | OP_INPUTINDEX | ∅ → i | 2022-05-upgrade | not-in-btc |
| 0xc1 | OP_ACTIVEBYTECODE | ∅ → bytecode | 2022-05-upgrade | not-in-btc |
| 0xc2 | OP_TXVERSION | ∅ → version | 2022-05-upgrade | not-in-btc |
| 0xc3 | OP_TXINPUTCOUNT | ∅ → count | 2022-05-upgrade | not-in-btc |
| 0xc4 | OP_TXOUTPUTCOUNT | ∅ → count | 2022-05-upgrade | not-in-btc |
| 0xc5 | OP_TXLOCKTIME | ∅ → locktime | 2022-05-upgrade | not-in-btc |
| 0xc6 | OP_UTXOVALUE | i → sats | 2022-05-upgrade | not-in-btc |
| 0xc7 | OP_UTXOBYTECODE | i → bytecode | 2022-05-upgrade | not-in-btc |
| 0xc8 | OP_OUTPOINTTXHASH | i → txhash | 2022-05-upgrade | not-in-btc |
| 0xc9 | OP_OUTPOINTINDEX | i → n | 2022-05-upgrade | not-in-btc |
| 0xca | OP_INPUTBYTECODE | i → bytecode | 2022-05-upgrade | not-in-btc |
| 0xcb | OP_INPUTSEQUENCENUMBER | i → seq | 2022-05-upgrade | not-in-btc |
| 0xcc | OP_OUTPUTVALUE | i → sats | 2022-05-upgrade | not-in-btc |
| 0xcd | OP_OUTPUTBYTECODE | i → bytecode | 2022-05-upgrade | not-in-btc |
token
| Hex | Opcode | Stack | Since | In BTC |
|---|---|---|---|---|
| 0xce | OP_UTXOTOKENCATEGORY | i → category[+cap] | 0 | 2023-05-cashtokens | not-in-btc |
| 0xcf | OP_UTXOTOKENCOMMITMENT | i → commitment | 0 | 2023-05-cashtokens | not-in-btc |
| 0xd0 | OP_UTXOTOKENAMOUNT | i → amount | 2023-05-cashtokens | not-in-btc |
| 0xd1 | OP_OUTPUTTOKENCATEGORY | i → category[+cap] | 0 | 2023-05-cashtokens | not-in-btc |
| 0xd2 | OP_OUTPUTTOKENCOMMITMENT | i → commitment | 0 | 2023-05-cashtokens | not-in-btc |
| 0xd3 | OP_OUTPUTTOKENAMOUNT | i → amount | 2023-05-cashtokens | not-in-btc |