§ 06

§ 06 · Script

Opcodes

Every byte value, and what it does on Pearl

An opcode is one byte of a script that tells the machine what to do: push some data, add two numbers, check a signature. A script is a row of them.

Every byte value from 0 to 255 means something, even if that something is “fail”. This page lists them all as Pearl’s engine treats them. The table is generated from this site’s opcode library, which mirrors Pearl’s opcode.go at v1.5.2.

Try it

Write a script with any of the opcodes below and step through it.

Script runner

Step through a tapscript and watch the stack

Script · 5 steps

  1. 7065
  2. 61726c
  3. OP_CAT
  4. 706561726c
  5. OP_EQUAL

Ready. The witness items are already on the stack; press Step.

Stack · top first

  1. empty

Teaching subset Push, stack, arithmetic, comparison, hashing, OP_CAT and the signature opcodes, run the way tapscript runs them. Signatures are mocked: “signs” is a stand-in, not a real BIP-340 check. Real scripts run inside a Taproot or P2MR spend.

Runs in your browser · nothing is sent src/lib/script.ts · hash.ts

How do the 256 bytes break down?

Push data or numbers
96
0x00–0x60, except 0x50 (OP_RESERVED)
Work everywhere
57
stack, flow, arithmetic, hashing, locks
Tapscript only
5
CHECKSIG, CHECKSIGVERIFY, CHECKSIGADD, CAT, CHECKXMSSSIG
Disabled
16
invalid even in a branch that never runs
Fail when run
82
reserved, NOP slots, unassigned bytes
OP_SUCCESS
0
Bitcoin tapscript has dozens

Since every spendable Pearl output is Taproot or P2MR, every script that runs is a tapscript leaf. So in practice “tapscript only” just means “works”.

Which opcodes are special on Pearl?

  • OP_CAT (7e) works. It joins the top two items. Following BIP-347, the result may be at most 520 bytes. Pearl also charges ⌈length ÷ 64⌉ from the signature budget for it. In Bitcoin it has been disabled since 2010, and in Bitcoin’s tapscript 7e is an OP_SUCCESS.
  • OP_CHECKXMSSSIG (de) is new. It checks a post-quantum XMSS signature split into five 468-byte items, and costs 1,000 from the budget. Its own page.
  • OP_CHECKSIG (ac), OP_CHECKSIGVERIFY (ad), OP_CHECKSIGADD (ba) check 64- or 65-byte Schnorr signatures against 32-byte keys, in tapscript only. An empty signature pushes false; a wrong non-empty signature fails the script. A non-empty key of any other length fails too, where Bitcoin’s tapscript treats it as an unknown key type and lets the check pass.
  • OP_CHECKMULTISIG (ae, af) always fails. Use OP_CHECKSIGADD for multisig, as the real 2-of-2 on the Script page does.
  • OP_NOP1, OP_NOP4–OP_NOP10 (b0, b3–b9) fail with “reserved for soft-fork upgrades”. In Bitcoin they do nothing.
  • Unassigned bytes (bb–dd, df–f9, fc) fail when executed. In Bitcoin’s tapscript each is an OP_SUCCESS that makes the whole script valid.
  • OP_CHECKLOCKTIMEVERIFY (b1) and OP_CHECKSEQUENCEVERIFY (b2) work as in BIP-65 and BIP-112, from block 1.

What do the probes show?

These one-line scripts were run as P2MR leaves through Pearl’s own consensus engine:

Leaf script Pearl v1.5.2 Bitcoin tapscript
51 (OP_1) pass valid
7e 05 "pearl" 87 with witness “pe”, “arl” pass: OP_CAT really joins them valid only because 0x7e is OP_SUCCESS126
51 bb fail: invalid opcode OP_UNKNOWN187 valid (OP_SUCCESS)
00 bb fail, same valid (OP_SUCCESS wins even after false)
de alone fail: stack too small for OP_CHECKXMSSSIG valid (0xde is OP_SUCCESS222)
b3 51 (OP_NOP4, OP_1) fail: reserved for soft-fork upgrades valid
51 under leaf version c2 fail: unsupported leaf version valid
33-byte key, then ac fail: unsupported public key length 33 valid (unknown key type)
00 00 00 ae fail: CHECKMULTISIG disabled invalid

How does Script write numbers?

Arithmetic opcodes read stack items as script numbers: little-endian, as short as possible, with the top bit of the last byte as the sign. Zero is the empty item.

Number Script number Pushed as
0 (empty) 00 (OP_0)
1 01 51 (OP_1)
16 10 60 (OP_16)
17 11 01 11
−1 81 4f (OP_1NEGATE)
127 7f 01 7f
128 80 00 02 80 00 (an extra byte, so the sign bit stays clear)
−128 80 80 02 80 80
130,825 09 ff 01 03 09 ff 01

The last row is a real one: it’s how block 130,825’s coinbase states its height. Tapscript insists on the shortest push, so 51 is the only valid way to push 1.

What limits apply?

  • The signature budget. Each input gets 50 plus the size of its witness in bytes. A signature check costs 50, OP_CHECKXMSSSIG 1,000, and OP_CAT ⌈length ÷ 64⌉. Pearl has no other sigops limit: none per block, none per transaction.
  • Stack items are at most 520 bytes, and at most 1,000 items may be on the stack.
  • Pushes must be minimal: a value that fits in OP_1–OP_16 must use them, and a 5-byte item uses 05, not OP_PUSHDATA1 05.
  • OP_IF / OP_NOTIF accept only an empty item or exactly 01 as their condition.
  • No opcode-count limit and no 10,000-byte script limit inside tapscript, as in BIP-342.

The full table

Every named opcode. The push range and the unassigned bytes are summarized in the last rows; the complete 256-row table is below it.

ByteNameOn PearlWhat it does
00OP_0 (OP_FALSE)PushPushes an empty byte array (read as 0 / false).
4cOP_PUSHDATA1PushThe next byte says how many bytes to push (up to 255).
4dOP_PUSHDATA2PushThe next 2 bytes (little-endian) say how many bytes to push.
4eOP_PUSHDATA4PushThe next 4 bytes (little-endian) say how many bytes to push.
4fOP_1NEGATEPushPushes the number -1.
50OP_RESERVEDFails if runReserved: the script fails if it is executed. Pearl: In Bitcoin tapscript 0x50 is OP_SUCCESS80; Pearl has no OP_SUCCESS opcodes.
51OP_1 (OP_TRUE)PushPushes the number 1. Also the witness-version byte of a Taproot output (5120…).
52OP_2PushPushes the number 2. Also the witness-version byte of a P2MR output (5220…).
61OP_NOPWorksDoes nothing.
62OP_VERFails if runReserved: the script fails if it is executed. Pearl: OP_SUCCESS98 in Bitcoin tapscript; a failure in Pearl.
63OP_IFWorksRuns the following code only if the top stack item is true (must be exactly empty or 0x01 in tapscript).
64OP_NOTIFWorksRuns the following code only if the top stack item is false.
65OP_VERIFDisabledAlways illegal, even in a branch that is not executed.
66OP_VERNOTIFDisabledAlways illegal, even in a branch that is not executed.
67OP_ELSEWorksSwitches to the other branch of an OP_IF / OP_NOTIF.
68OP_ENDIFWorksEnds an OP_IF / OP_NOTIF block.
69OP_VERIFYWorksFails the script unless the top item is true; removes it.
6aOP_RETURNWorksEnds the script as failed. An output script starting with OP_RETURN is a provably unspendable data carrier. Pearl: Any script starting with 0x6a is a valid output in Pearl, with no size cap besides the tx limit (policy: 1 per tx).
6bOP_TOALTSTACKWorksMoves the top item to the alt stack.
6cOP_FROMALTSTACKWorksMoves the top alt-stack item back to the main stack.
6dOP_2DROPWorksRemoves the top two items.
6eOP_2DUPWorksDuplicates the top two items.
6fOP_3DUPWorksDuplicates the top three items.
70OP_2OVERWorksCopies the pair of items two spaces back to the top.
71OP_2ROTWorksMoves the fifth and sixth items to the top.
72OP_2SWAPWorksSwaps the top two pairs of items.
73OP_IFDUPWorksDuplicates the top item if it is not zero.
74OP_DEPTHWorksPushes the number of stack items.
75OP_DROPWorksRemoves the top item.
76OP_DUPWorksDuplicates the top item.
77OP_NIPWorksRemoves the second-to-top item.
78OP_OVERWorksCopies the second-to-top item to the top.
79OP_PICKWorksCopies the item n back to the top.
7aOP_ROLLWorksMoves the item n back to the top.
7bOP_ROTWorksRotates the top three items to the left.
7cOP_SWAPWorksSwaps the top two items.
7dOP_TUCKWorksCopies the top item below the second item.
7eOP_CATTapscript onlyConcatenates the top two items (result at most 520 bytes). Pearl: Enabled in Pearl tapscript (BIP-347 semantics) and charges ceil(len/64) from the sigops budget. Disabled in Bitcoin (OP_SUCCESS126 in its tapscript).
7fOP_SUBSTRDisabledDisabled: its mere presence makes the script invalid.
80OP_LEFTDisabledDisabled: its mere presence makes the script invalid.
81OP_RIGHTDisabledDisabled: its mere presence makes the script invalid.
82OP_SIZEWorksPushes the byte length of the top item.
83OP_INVERTDisabledDisabled: its mere presence makes the script invalid.
84OP_ANDDisabledDisabled: its mere presence makes the script invalid.
85OP_ORDisabledDisabled: its mere presence makes the script invalid.
86OP_XORDisabledDisabled: its mere presence makes the script invalid.
87OP_EQUALWorksPushes true if the top two items are byte-for-byte equal.
88OP_EQUALVERIFYWorksOP_EQUAL then OP_VERIFY.
89OP_RESERVED1Fails if runReserved: the script fails if it is executed.
8aOP_RESERVED2Fails if runReserved: the script fails if it is executed.
8bOP_1ADDWorksAdds 1 to the top number.
8cOP_1SUBWorksSubtracts 1 from the top number.
8dOP_2MULDisabledDisabled: its mere presence makes the script invalid.
8eOP_2DIVDisabledDisabled: its mere presence makes the script invalid.
8fOP_NEGATEWorksFlips the sign of the top number.
90OP_ABSWorksReplaces the top number with its absolute value.
91OP_NOTWorksTurns 0 into 1 and anything else into 0.
92OP_0NOTEQUALWorksTurns 0 into 0 and anything else into 1.
93OP_ADDWorksAdds the top two numbers.
94OP_SUBWorksSubtracts the top number from the second.
95OP_MULDisabledDisabled: its mere presence makes the script invalid.
96OP_DIVDisabledDisabled: its mere presence makes the script invalid.
97OP_MODDisabledDisabled: its mere presence makes the script invalid.
98OP_LSHIFTDisabledDisabled: its mere presence makes the script invalid.
99OP_RSHIFTDisabledDisabled: its mere presence makes the script invalid.
9aOP_BOOLANDWorksPushes 1 if both top numbers are non-zero.
9bOP_BOOLORWorksPushes 1 if either top number is non-zero.
9cOP_NUMEQUALWorksPushes 1 if the top two numbers are equal.
9dOP_NUMEQUALVERIFYWorksOP_NUMEQUAL then OP_VERIFY.
9eOP_NUMNOTEQUALWorksPushes 1 if the top two numbers differ.
9fOP_LESSTHANWorksPushes 1 if the second number is less than the top.
a0OP_GREATERTHANWorksPushes 1 if the second number is greater than the top.
a1OP_LESSTHANOREQUALWorksPushes 1 if the second number is ≤ the top.
a2OP_GREATERTHANOREQUALWorksPushes 1 if the second number is ≥ the top.
a3OP_MINWorksKeeps the smaller of the top two numbers.
a4OP_MAXWorksKeeps the larger of the top two numbers.
a5OP_WITHINWorksPushes 1 if x is within [min, max).
a6OP_RIPEMD160WorksReplaces the top item with its RIPEMD-160 hash.
a7OP_SHA1WorksReplaces the top item with its SHA-1 hash.
a8OP_SHA256WorksReplaces the top item with its SHA-256 hash.
a9OP_HASH160WorksReplaces the top item with RIPEMD160(SHA256(x)). Pearl: Still available, but no Pearl address uses HASH160.
aaOP_HASH256WorksReplaces the top item with SHA256(SHA256(x)).
abOP_CODESEPARATORWorksRecords its position, which signatures then commit to (BIP-342 codesep_pos).
acOP_CHECKSIGTapscript onlyChecks a Schnorr signature against a 32-byte x-only key; empty signature pushes false. Pearl: Tapscript only: Pearl removed legacy ECDSA checks. Unknown key sizes fail instead of succeeding.
adOP_CHECKSIGVERIFYTapscript onlyOP_CHECKSIG then OP_VERIFY. Pearl: Tapscript only.
aeOP_CHECKMULTISIGFails if runAlways fails in Pearl (use OP_CHECKSIGADD instead). Pearl: Legacy multisig is gone; same as Bitcoin tapscript.
afOP_CHECKMULTISIGVERIFYFails if runAlways fails in Pearl.
b0OP_NOP1Fails if runReserved for upgrades: fails when executed. Pearl: A harmless no-op in Bitcoin; a failure in Pearl.
b1OP_CHECKLOCKTIMEVERIFY (OP_NOP2, OP_CLTV)WorksFails unless the transaction locktime has reached the given height/time (BIP-65).
b2OP_CHECKSEQUENCEVERIFY (OP_NOP3, OP_CSV)WorksFails unless the input has aged by the given relative lock (BIP-112, needs tx version ≥ 2).
b3OP_NOP4Fails if runReserved for upgrades: fails when executed. Pearl: A no-op in Bitcoin; a failure in Pearl.
b4OP_NOP5Fails if runReserved for upgrades: fails when executed. Pearl: A no-op in Bitcoin; a failure in Pearl.
b5OP_NOP6Fails if runReserved for upgrades: fails when executed. Pearl: A no-op in Bitcoin; a failure in Pearl.
b6OP_NOP7Fails if runReserved for upgrades: fails when executed. Pearl: A no-op in Bitcoin; a failure in Pearl.
b7OP_NOP8Fails if runReserved for upgrades: fails when executed. Pearl: A no-op in Bitcoin; a failure in Pearl.
b8OP_NOP9Fails if runReserved for upgrades: fails when executed. Pearl: A no-op in Bitcoin; a failure in Pearl.
b9OP_NOP10Fails if runReserved for upgrades: fails when executed. Pearl: A no-op in Bitcoin; a failure in Pearl.
baOP_CHECKSIGADDTapscript onlyChecks a signature and adds 1 to a counter if it is valid: the building block of k-of-n multisig (BIP-342).
deOP_CHECKXMSSSIGTapscript onlyChecks a post-quantum XMSS signature: stack [sig1…sig5 (468 B each), 64-byte pubkey] → [true]; an invalid signature fails the script. Pearl: Pearl-only. Costs 1000 from the sigops budget. In Bitcoin 0xde is OP_SUCCESS222.
faOP_SMALLINTEGERFails if runInternal template name, not a real opcode: fails when executed.
fbOP_PUBKEYSFails if runInternal template name, not a real opcode: fails when executed.
fdOP_PUBKEYHASHFails if runInternal template name, not a real opcode: fails when executed.
feOP_PUBKEYFails if runInternal template name, not a real opcode: fails when executed.
ffOP_INVALIDOPCODEFails if runInvalid opcode: fails when executed.
01–4bOP_PUSHBYTES_1 … _75PushPush the next 1 to 75 bytes. 20 (32 bytes) pushes x-only keys; 40 (64 bytes) pushes XMSS public keys.
53–60OP_3 … OP_16PushPush the numbers 3 to 16. As output versions they would mean witness v3–16, which Pearl rejects.
bb–dd, df–f9, fcOP_UNKNOWN…Fails if runUnassigned. Pearl: fails; in Bitcoin’s tapscript each is an OP_SUCCESS.
All 256 byte values
ByteNameOn PearlWhat it does
00OP_0PushPushes an empty byte array (read as 0 / false).
01OP_DATA_1PushPushes the next 1 byte onto the stack.
02OP_DATA_2PushPushes the next 2 bytes onto the stack.
03OP_DATA_3PushPushes the next 3 bytes onto the stack.
04OP_DATA_4PushPushes the next 4 bytes onto the stack.
05OP_DATA_5PushPushes the next 5 bytes onto the stack.
06OP_DATA_6PushPushes the next 6 bytes onto the stack.
07OP_DATA_7PushPushes the next 7 bytes onto the stack.
08OP_DATA_8PushPushes the next 8 bytes onto the stack.
09OP_DATA_9PushPushes the next 9 bytes onto the stack.
0aOP_DATA_10PushPushes the next 10 bytes onto the stack.
0bOP_DATA_11PushPushes the next 11 bytes onto the stack.
0cOP_DATA_12PushPushes the next 12 bytes onto the stack.
0dOP_DATA_13PushPushes the next 13 bytes onto the stack.
0eOP_DATA_14PushPushes the next 14 bytes onto the stack.
0fOP_DATA_15PushPushes the next 15 bytes onto the stack.
10OP_DATA_16PushPushes the next 16 bytes onto the stack.
11OP_DATA_17PushPushes the next 17 bytes onto the stack.
12OP_DATA_18PushPushes the next 18 bytes onto the stack.
13OP_DATA_19PushPushes the next 19 bytes onto the stack.
14OP_DATA_20PushPushes the next 20 bytes onto the stack.
15OP_DATA_21PushPushes the next 21 bytes onto the stack.
16OP_DATA_22PushPushes the next 22 bytes onto the stack.
17OP_DATA_23PushPushes the next 23 bytes onto the stack.
18OP_DATA_24PushPushes the next 24 bytes onto the stack.
19OP_DATA_25PushPushes the next 25 bytes onto the stack.
1aOP_DATA_26PushPushes the next 26 bytes onto the stack.
1bOP_DATA_27PushPushes the next 27 bytes onto the stack.
1cOP_DATA_28PushPushes the next 28 bytes onto the stack.
1dOP_DATA_29PushPushes the next 29 bytes onto the stack.
1eOP_DATA_30PushPushes the next 30 bytes onto the stack.
1fOP_DATA_31PushPushes the next 31 bytes onto the stack.
20OP_DATA_32PushPushes the next 32 bytes onto the stack.
21OP_DATA_33PushPushes the next 33 bytes onto the stack.
22OP_DATA_34PushPushes the next 34 bytes onto the stack.
23OP_DATA_35PushPushes the next 35 bytes onto the stack.
24OP_DATA_36PushPushes the next 36 bytes onto the stack.
25OP_DATA_37PushPushes the next 37 bytes onto the stack.
26OP_DATA_38PushPushes the next 38 bytes onto the stack.
27OP_DATA_39PushPushes the next 39 bytes onto the stack.
28OP_DATA_40PushPushes the next 40 bytes onto the stack.
29OP_DATA_41PushPushes the next 41 bytes onto the stack.
2aOP_DATA_42PushPushes the next 42 bytes onto the stack.
2bOP_DATA_43PushPushes the next 43 bytes onto the stack.
2cOP_DATA_44PushPushes the next 44 bytes onto the stack.
2dOP_DATA_45PushPushes the next 45 bytes onto the stack.
2eOP_DATA_46PushPushes the next 46 bytes onto the stack.
2fOP_DATA_47PushPushes the next 47 bytes onto the stack.
30OP_DATA_48PushPushes the next 48 bytes onto the stack.
31OP_DATA_49PushPushes the next 49 bytes onto the stack.
32OP_DATA_50PushPushes the next 50 bytes onto the stack.
33OP_DATA_51PushPushes the next 51 bytes onto the stack.
34OP_DATA_52PushPushes the next 52 bytes onto the stack.
35OP_DATA_53PushPushes the next 53 bytes onto the stack.
36OP_DATA_54PushPushes the next 54 bytes onto the stack.
37OP_DATA_55PushPushes the next 55 bytes onto the stack.
38OP_DATA_56PushPushes the next 56 bytes onto the stack.
39OP_DATA_57PushPushes the next 57 bytes onto the stack.
3aOP_DATA_58PushPushes the next 58 bytes onto the stack.
3bOP_DATA_59PushPushes the next 59 bytes onto the stack.
3cOP_DATA_60PushPushes the next 60 bytes onto the stack.
3dOP_DATA_61PushPushes the next 61 bytes onto the stack.
3eOP_DATA_62PushPushes the next 62 bytes onto the stack.
3fOP_DATA_63PushPushes the next 63 bytes onto the stack.
40OP_DATA_64PushPushes the next 64 bytes onto the stack.
41OP_DATA_65PushPushes the next 65 bytes onto the stack.
42OP_DATA_66PushPushes the next 66 bytes onto the stack.
43OP_DATA_67PushPushes the next 67 bytes onto the stack.
44OP_DATA_68PushPushes the next 68 bytes onto the stack.
45OP_DATA_69PushPushes the next 69 bytes onto the stack.
46OP_DATA_70PushPushes the next 70 bytes onto the stack.
47OP_DATA_71PushPushes the next 71 bytes onto the stack.
48OP_DATA_72PushPushes the next 72 bytes onto the stack.
49OP_DATA_73PushPushes the next 73 bytes onto the stack.
4aOP_DATA_74PushPushes the next 74 bytes onto the stack.
4bOP_DATA_75PushPushes the next 75 bytes onto the stack.
4cOP_PUSHDATA1PushThe next byte says how many bytes to push (up to 255).
4dOP_PUSHDATA2PushThe next 2 bytes (little-endian) say how many bytes to push.
4eOP_PUSHDATA4PushThe next 4 bytes (little-endian) say how many bytes to push.
4fOP_1NEGATEPushPushes the number -1.
50OP_RESERVEDFails if runReserved: the script fails if it is executed.
51OP_1PushPushes the number 1. Also the witness-version byte of a Taproot output (5120…).
52OP_2PushPushes the number 2. Also the witness-version byte of a P2MR output (5220…).
53OP_3PushPushes the number 3.
54OP_4PushPushes the number 4.
55OP_5PushPushes the number 5.
56OP_6PushPushes the number 6.
57OP_7PushPushes the number 7.
58OP_8PushPushes the number 8.
59OP_9PushPushes the number 9.
5aOP_10PushPushes the number 10.
5bOP_11PushPushes the number 11.
5cOP_12PushPushes the number 12.
5dOP_13PushPushes the number 13.
5eOP_14PushPushes the number 14.
5fOP_15PushPushes the number 15.
60OP_16PushPushes the number 16.
61OP_NOPWorksDoes nothing.
62OP_VERFails if runReserved: the script fails if it is executed.
63OP_IFWorksRuns the following code only if the top stack item is true (must be exactly empty or 0x01 in tapscript).
64OP_NOTIFWorksRuns the following code only if the top stack item is false.
65OP_VERIFDisabledAlways illegal, even in a branch that is not executed.
66OP_VERNOTIFDisabledAlways illegal, even in a branch that is not executed.
67OP_ELSEWorksSwitches to the other branch of an OP_IF / OP_NOTIF.
68OP_ENDIFWorksEnds an OP_IF / OP_NOTIF block.
69OP_VERIFYWorksFails the script unless the top item is true; removes it.
6aOP_RETURNWorksEnds the script as failed. An output script starting with OP_RETURN is a provably unspendable data carrier.
6bOP_TOALTSTACKWorksMoves the top item to the alt stack.
6cOP_FROMALTSTACKWorksMoves the top alt-stack item back to the main stack.
6dOP_2DROPWorksRemoves the top two items.
6eOP_2DUPWorksDuplicates the top two items.
6fOP_3DUPWorksDuplicates the top three items.
70OP_2OVERWorksCopies the pair of items two spaces back to the top.
71OP_2ROTWorksMoves the fifth and sixth items to the top.
72OP_2SWAPWorksSwaps the top two pairs of items.
73OP_IFDUPWorksDuplicates the top item if it is not zero.
74OP_DEPTHWorksPushes the number of stack items.
75OP_DROPWorksRemoves the top item.
76OP_DUPWorksDuplicates the top item.
77OP_NIPWorksRemoves the second-to-top item.
78OP_OVERWorksCopies the second-to-top item to the top.
79OP_PICKWorksCopies the item n back to the top.
7aOP_ROLLWorksMoves the item n back to the top.
7bOP_ROTWorksRotates the top three items to the left.
7cOP_SWAPWorksSwaps the top two items.
7dOP_TUCKWorksCopies the top item below the second item.
7eOP_CATTapscript onlyConcatenates the top two items (result at most 520 bytes).
7fOP_SUBSTRDisabledDisabled: its mere presence makes the script invalid.
80OP_LEFTDisabledDisabled: its mere presence makes the script invalid.
81OP_RIGHTDisabledDisabled: its mere presence makes the script invalid.
82OP_SIZEWorksPushes the byte length of the top item.
83OP_INVERTDisabledDisabled: its mere presence makes the script invalid.
84OP_ANDDisabledDisabled: its mere presence makes the script invalid.
85OP_ORDisabledDisabled: its mere presence makes the script invalid.
86OP_XORDisabledDisabled: its mere presence makes the script invalid.
87OP_EQUALWorksPushes true if the top two items are byte-for-byte equal.
88OP_EQUALVERIFYWorksOP_EQUAL then OP_VERIFY.
89OP_RESERVED1Fails if runReserved: the script fails if it is executed.
8aOP_RESERVED2Fails if runReserved: the script fails if it is executed.
8bOP_1ADDWorksAdds 1 to the top number.
8cOP_1SUBWorksSubtracts 1 from the top number.
8dOP_2MULDisabledDisabled: its mere presence makes the script invalid.
8eOP_2DIVDisabledDisabled: its mere presence makes the script invalid.
8fOP_NEGATEWorksFlips the sign of the top number.
90OP_ABSWorksReplaces the top number with its absolute value.
91OP_NOTWorksTurns 0 into 1 and anything else into 0.
92OP_0NOTEQUALWorksTurns 0 into 0 and anything else into 1.
93OP_ADDWorksAdds the top two numbers.
94OP_SUBWorksSubtracts the top number from the second.
95OP_MULDisabledDisabled: its mere presence makes the script invalid.
96OP_DIVDisabledDisabled: its mere presence makes the script invalid.
97OP_MODDisabledDisabled: its mere presence makes the script invalid.
98OP_LSHIFTDisabledDisabled: its mere presence makes the script invalid.
99OP_RSHIFTDisabledDisabled: its mere presence makes the script invalid.
9aOP_BOOLANDWorksPushes 1 if both top numbers are non-zero.
9bOP_BOOLORWorksPushes 1 if either top number is non-zero.
9cOP_NUMEQUALWorksPushes 1 if the top two numbers are equal.
9dOP_NUMEQUALVERIFYWorksOP_NUMEQUAL then OP_VERIFY.
9eOP_NUMNOTEQUALWorksPushes 1 if the top two numbers differ.
9fOP_LESSTHANWorksPushes 1 if the second number is less than the top.
a0OP_GREATERTHANWorksPushes 1 if the second number is greater than the top.
a1OP_LESSTHANOREQUALWorksPushes 1 if the second number is ≤ the top.
a2OP_GREATERTHANOREQUALWorksPushes 1 if the second number is ≥ the top.
a3OP_MINWorksKeeps the smaller of the top two numbers.
a4OP_MAXWorksKeeps the larger of the top two numbers.
a5OP_WITHINWorksPushes 1 if x is within [min, max).
a6OP_RIPEMD160WorksReplaces the top item with its RIPEMD-160 hash.
a7OP_SHA1WorksReplaces the top item with its SHA-1 hash.
a8OP_SHA256WorksReplaces the top item with its SHA-256 hash.
a9OP_HASH160WorksReplaces the top item with RIPEMD160(SHA256(x)).
aaOP_HASH256WorksReplaces the top item with SHA256(SHA256(x)).
abOP_CODESEPARATORWorksRecords its position, which signatures then commit to (BIP-342 codesep_pos).
acOP_CHECKSIGTapscript onlyChecks a Schnorr signature against a 32-byte x-only key; empty signature pushes false.
adOP_CHECKSIGVERIFYTapscript onlyOP_CHECKSIG then OP_VERIFY.
aeOP_CHECKMULTISIGFails if runAlways fails in Pearl (use OP_CHECKSIGADD instead).
afOP_CHECKMULTISIGVERIFYFails if runAlways fails in Pearl.
b0OP_NOP1Fails if runReserved for upgrades: fails when executed.
b1OP_CHECKLOCKTIMEVERIFYWorksFails unless the transaction locktime has reached the given height/time (BIP-65).
b2OP_CHECKSEQUENCEVERIFYWorksFails unless the input has aged by the given relative lock (BIP-112, needs tx version ≥ 2).
b3OP_NOP4Fails if runReserved for upgrades: fails when executed.
b4OP_NOP5Fails if runReserved for upgrades: fails when executed.
b5OP_NOP6Fails if runReserved for upgrades: fails when executed.
b6OP_NOP7Fails if runReserved for upgrades: fails when executed.
b7OP_NOP8Fails if runReserved for upgrades: fails when executed.
b8OP_NOP9Fails if runReserved for upgrades: fails when executed.
b9OP_NOP10Fails if runReserved for upgrades: fails when executed.
baOP_CHECKSIGADDTapscript onlyChecks a signature and adds 1 to a counter if it is valid: the building block of k-of-n multisig (BIP-342).
bbOP_UNKNOWN187Fails if runUndefined opcode: the script fails if it is executed.
bcOP_UNKNOWN188Fails if runUndefined opcode: the script fails if it is executed.
bdOP_UNKNOWN189Fails if runUndefined opcode: the script fails if it is executed.
beOP_UNKNOWN190Fails if runUndefined opcode: the script fails if it is executed.
bfOP_UNKNOWN191Fails if runUndefined opcode: the script fails if it is executed.
c0OP_UNKNOWN192Fails if runUndefined opcode: the script fails if it is executed.
c1OP_UNKNOWN193Fails if runUndefined opcode: the script fails if it is executed.
c2OP_UNKNOWN194Fails if runUndefined opcode: the script fails if it is executed.
c3OP_UNKNOWN195Fails if runUndefined opcode: the script fails if it is executed.
c4OP_UNKNOWN196Fails if runUndefined opcode: the script fails if it is executed.
c5OP_UNKNOWN197Fails if runUndefined opcode: the script fails if it is executed.
c6OP_UNKNOWN198Fails if runUndefined opcode: the script fails if it is executed.
c7OP_UNKNOWN199Fails if runUndefined opcode: the script fails if it is executed.
c8OP_UNKNOWN200Fails if runUndefined opcode: the script fails if it is executed.
c9OP_UNKNOWN201Fails if runUndefined opcode: the script fails if it is executed.
caOP_UNKNOWN202Fails if runUndefined opcode: the script fails if it is executed.
cbOP_UNKNOWN203Fails if runUndefined opcode: the script fails if it is executed.
ccOP_UNKNOWN204Fails if runUndefined opcode: the script fails if it is executed.
cdOP_UNKNOWN205Fails if runUndefined opcode: the script fails if it is executed.
ceOP_UNKNOWN206Fails if runUndefined opcode: the script fails if it is executed.
cfOP_UNKNOWN207Fails if runUndefined opcode: the script fails if it is executed.
d0OP_UNKNOWN208Fails if runUndefined opcode: the script fails if it is executed.
d1OP_UNKNOWN209Fails if runUndefined opcode: the script fails if it is executed.
d2OP_UNKNOWN210Fails if runUndefined opcode: the script fails if it is executed.
d3OP_UNKNOWN211Fails if runUndefined opcode: the script fails if it is executed.
d4OP_UNKNOWN212Fails if runUndefined opcode: the script fails if it is executed.
d5OP_UNKNOWN213Fails if runUndefined opcode: the script fails if it is executed.
d6OP_UNKNOWN214Fails if runUndefined opcode: the script fails if it is executed.
d7OP_UNKNOWN215Fails if runUndefined opcode: the script fails if it is executed.
d8OP_UNKNOWN216Fails if runUndefined opcode: the script fails if it is executed.
d9OP_UNKNOWN217Fails if runUndefined opcode: the script fails if it is executed.
daOP_UNKNOWN218Fails if runUndefined opcode: the script fails if it is executed.
dbOP_UNKNOWN219Fails if runUndefined opcode: the script fails if it is executed.
dcOP_UNKNOWN220Fails if runUndefined opcode: the script fails if it is executed.
ddOP_UNKNOWN221Fails if runUndefined opcode: the script fails if it is executed.
deOP_CHECKXMSSSIGTapscript onlyChecks a post-quantum XMSS signature: stack [sig1…sig5 (468 B each), 64-byte pubkey] → [true]; an invalid signature fails the script.
dfOP_UNKNOWN223Fails if runUndefined opcode: the script fails if it is executed.
e0OP_UNKNOWN224Fails if runUndefined opcode: the script fails if it is executed.
e1OP_UNKNOWN225Fails if runUndefined opcode: the script fails if it is executed.
e2OP_UNKNOWN226Fails if runUndefined opcode: the script fails if it is executed.
e3OP_UNKNOWN227Fails if runUndefined opcode: the script fails if it is executed.
e4OP_UNKNOWN228Fails if runUndefined opcode: the script fails if it is executed.
e5OP_UNKNOWN229Fails if runUndefined opcode: the script fails if it is executed.
e6OP_UNKNOWN230Fails if runUndefined opcode: the script fails if it is executed.
e7OP_UNKNOWN231Fails if runUndefined opcode: the script fails if it is executed.
e8OP_UNKNOWN232Fails if runUndefined opcode: the script fails if it is executed.
e9OP_UNKNOWN233Fails if runUndefined opcode: the script fails if it is executed.
eaOP_UNKNOWN234Fails if runUndefined opcode: the script fails if it is executed.
ebOP_UNKNOWN235Fails if runUndefined opcode: the script fails if it is executed.
ecOP_UNKNOWN236Fails if runUndefined opcode: the script fails if it is executed.
edOP_UNKNOWN237Fails if runUndefined opcode: the script fails if it is executed.
eeOP_UNKNOWN238Fails if runUndefined opcode: the script fails if it is executed.
efOP_UNKNOWN239Fails if runUndefined opcode: the script fails if it is executed.
f0OP_UNKNOWN240Fails if runUndefined opcode: the script fails if it is executed.
f1OP_UNKNOWN241Fails if runUndefined opcode: the script fails if it is executed.
f2OP_UNKNOWN242Fails if runUndefined opcode: the script fails if it is executed.
f3OP_UNKNOWN243Fails if runUndefined opcode: the script fails if it is executed.
f4OP_UNKNOWN244Fails if runUndefined opcode: the script fails if it is executed.
f5OP_UNKNOWN245Fails if runUndefined opcode: the script fails if it is executed.
f6OP_UNKNOWN246Fails if runUndefined opcode: the script fails if it is executed.
f7OP_UNKNOWN247Fails if runUndefined opcode: the script fails if it is executed.
f8OP_UNKNOWN248Fails if runUndefined opcode: the script fails if it is executed.
f9OP_UNKNOWN249Fails if runUndefined opcode: the script fails if it is executed.
faOP_SMALLINTEGERFails if runInternal template name, not a real opcode: fails when executed.
fbOP_PUBKEYSFails if runInternal template name, not a real opcode: fails when executed.
fcOP_UNKNOWN252Fails if runUndefined opcode: the script fails if it is executed.
fdOP_PUBKEYHASHFails if runInternal template name, not a real opcode: fails when executed.
feOP_PUBKEYFails if runInternal template name, not a real opcode: fails when executed.
ffOP_INVALIDOPCODEFails if runInvalid opcode: fails when executed.

The codex

Suggested

Up and down arrows move through the results, Enter opens one, Escape closes. Anywhere on the site, slash or Command K opens this search, and the square brackets [ and ] go to the previous and next page.