Push value onto stack shows operators for pushing values onto the stack.
Symbol | Value (hex) | Description |
---|---|---|
OP_0 or OP_FALSE |
0x00 |
An empty array is pushed onto the stack |
1-75 |
0x01-0x4b |
Push the next N bytes onto the stack, where N is 1 to 75 bytes |
OP_PUSHDATA1 |
0x4c |
The next script byte contains N, push the following N bytes onto the stack |
OP_PUSHDATA2 |
0x4d |
The next two script bytes contain N, push the following N bytes onto the stack |
OP_PUSHDATA4 |
0x4e |
The next four script bytes contain N, push the following N bytes onto the stack |
OP_1NEGATE |
0x4f |
Push the value "–1" onto the stack |
OP_RESERVED |
0x50 |
Halt - Invalid transaction unless found in an unexecuted OP_IF clause |
OP_1 or OP_TRUE |
0x51 |
Push the value "1" onto the stack |
OP_2 to OP_16 |
0x52 to 0x60 |
For OP_N, push the value "N" onto the stack. E.g., OP_2 pushes "2" |
Conditional flow control shows conditional flow control operators.
Symbol | Value (hex) | Description |
---|---|---|
OP_NOP |
0x61 |
Do nothing |
OP_VER |
0x62 |
Halt - Invalid transaction unless found in an unexecuted OP_IF clause |
OP_IF |
0x63 |
Execute the statements following if top of stack is not 0 |
OP_NOTIF |
0x64 |
Execute the statements following if top of stack is 0 |
OP_VERIF |
0x65 |
Halt - Invalid transaction |
OP_VERNOTIF |
0x66 |
Halt - Invalid transaction |
OP_ELSE |
0x67 |
Execute only if the previous statements were not executed |
OP_ENDIF |
0x68 |
End the OP_IF, OP_NOTIF, OP_ELSE block |
OP_VERIFY |
0x69 |
Check the top of the stack, halt and invalidate transaction if not TRUE |
OP_RETURN |
0x6a |
Halt and invalidate transaction |
Stack operations shows operators used to manipulate the stack.
Symbol | Value (hex) | Description |
---|---|---|
OP_TOALTSTACK |
0x6b |
Pop top item from stack and push to alternative stack |
OP_FROMALTSTACK |
0x6c |
Pop top item from alternative stack and push to stack |
OP_2DROP |
0x6d |
Pop top two stack items |
OP_2DUP |
0x6e |
Duplicate top two stack items |
OP_3DUP |
0x6f |
Duplicate top three stack items |
OP_2OVER |
0x70 |
Copy the third and fourth items in the stack to the top |
OP_2ROT |
0x71 |
Move the fifth and sixth items in the stack to the top |
OP_2SWAP |
0x72 |
Swap the two top pairs of items in the stack |
OP_IFDUP |
0x73 |
Duplicate the top item in the stack if it is not 0 |
OP_DEPTH |
0x74 |
Count the items on the stack and push the resulting count |
OP_DROP |
0x75 |
Pop the top item in the stack |
OP_DUP |
0x76 |
Duplicate the top item in the stack |
OP_NIP |
0x77 |
Pop the second item in the stack |
OP_OVER |
0x78 |
Copy the second item in the stack and push it onto the top |
OP_PICK |
0x79 |
Pop value N from top, then copy the Nth item to the top of the stack |
OP_ROLL |
0x7a |
Pop value N from top, then move the Nth item to the top of the stack |
OP_ROT |
0x7b |
Rotate the top three items in the stack |
OP_SWAP |
0x7c |
Swap the top three items in the stack |
OP_TUCK |
0x7d |
Copy the top item and insert it between the top and second item. |
String splice operations shows string operators.
Symbol | Value (hex) | Description |
---|---|---|
OP_CAT |
0x7e |
Disabled (concatenates top two items) |
OP_SUBSTR |
0x7f |
Disabled (returns substring) |
OP_LEFT |
0x80 |
Disabled (returns left substring) |
OP_RIGHT |
0x81 |
Disabled (returns right substring) |
OP_SIZE |
0x82 |
Calculate string length of top item and push the result |
Binary arithmetic and conditionals shows binary arithmetic and boolean logic operators.
Symbol | Value (hex) | Description |
---|---|---|
OP_INVERT |
0x83 |
Disabled (Flip the bits of the top item) |
OP_AND |
0x84 |
Disabled (Boolean AND of two top items) |
OP_OR |
0x85 |
Disabled (Boolean OR of two top items) |
OP_XOR |
0x86 |
Disabled (Boolean XOR of two top items) |
OP_EQUAL |
0x87 |
Push TRUE (1) if top two items are exactly equal, push FALSE (0) otherwise |
OP_EQUALVERIFY |
0x88 |
Same as OP_EQUAL, but run OP_VERIFY after to halt if not TRUE |
OP_RESERVED1 |
0x89 |
Halt - Invalid transaction unless found in an unexecuted OP_IF clause |
OP_RESERVED2 |
0x8a |
Halt - Invalid transaction unless found in an unexecuted OP_IF clause |
Numeric operators shows numeric (arithmetic) operators.
Symbol | Value (hex) | Description |
---|---|---|
OP_1ADD |
0x8b |
Add 1 to the top item |
OP_1SUB |
0x8c |
Subtract 1 from the top item |
OP_2MUL |
0x8d |
Disabled (multiply top item by 2) |
OP_2DIV |
0x8e |
Disabled (divide top item by 2) |
OP_NEGATE |
0x8f |
Flip the sign of top item |
OP_ABS |
0x90 |
Change the sign of the top item to positive |
OP_NOT |
0x91 |
If top item is 0 or 1 Boolean flip it, otherwise return 0 |
OP_0NOTEQUAL |
0x92 |
If top item is 0 return 0, otherwise return 1 |
OP_ADD |
0x93 |
Pop top two items, add them and push result |
OP_SUB |
0x94 |
Pop top two items, subtract first from second, push result |
OP_MUL |
0x95 |
Disabled (multiply top two items) |
OP_DIV |
0x96 |
Disabled (divide second item by first item) |
OP_MOD |
0x97 |
Disabled (remainder divide second item by first item) |
OP_LSHIFT |
0x98 |
Disabled (shift second item left by first item number of bits) |
OP_RSHIFT |
0x99 |
Disabled (shift second item right by first item number of bits) |
OP_BOOLAND |
0x9a |
Boolean AND of top two items |
OP_BOOLOR |
0x9b |
Boolean OR of top two items |
OP_NUMEQUAL |
0x9c |
Return TRUE if top two items are equal numbers |
OP_NUMEQUALVERIFY |
0x9d |
Same as NUMEQUAL, then OP_VERIFY to halt if not TRUE |
OP_NUMNOTEQUAL |
0x9e |
Return TRUE if top two items are not equal numbers |
OP_LESSTHAN |
0x9f |
Return TRUE if second item is less than top item |
OP_GREATERTHAN |
0xa0 |
Return TRUE if second item is greater than top item |
OP_LESSTHANOREQUAL |
0xa1 |
Return TRUE if second item is less than or equal to top item |
OP_GREATERTHANOREQUAL |
0xa2 |
Return TRUE if second item is great than or equal to top item |
OP_MIN |
0xa3 |
Return the smaller of the two top items |
OP_MAX |
0xa4 |
Return the larger of the two top items |
OP_WITHIN |
0xa5 |
Return TRUE if the third item is between the second item (or equal) and first item |
Cryptographic and hashing operations shows cryptographic function operators.
Symbol | Value (hex) | Description |
---|---|---|
OP_RIPEMD160 |
0xa6 |
Return RIPEMD160 hash of top item |
OP_SHA1 |
0xa7 |
Return SHA1 hash of top item |
OP_SHA256 |
0xa8 |
Return SHA256 hash of top item |
OP_HASH160 |
0xa9 |
Return RIPEMD160(SHA256(x)) hash of top item |
OP_HASH256 |
0xaa |
Return SHA256(SHA256(x)) hash of top item |
OP_CODESEPARATOR |
0xab |
Mark the beginning of signature-checked data |
OP_CHECKSIG |
0xac |
Pop a public key and signature and validate the signature for the transaction’s hashed data, return TRUE if matching |
OP_CHECKSIGVERIFY |
0xad |
Same as CHECKSIG, then OP_VERIFY to halt if not TRUE |
OP_CHECKMULTISIG |
0xae |
Run CHECKSIG for each pair of signature and public key provided. All must match. Bug in implementation pops an extra value, prefix with OP_NOP as workaround |
OP_CHECKMULTISIGVERIFY |
0xaf |
Same as CHECKMULTISIG, then OP_VERIFY to halt if not TRUE |
Non-operators shows nonoperator symbols
Symbol | Value (hex) | Description |
---|---|---|
OP_NOP1-OP_NOP10 |
0xb0-0xb9 |
Does nothing, ignored |
Reserved OP codes for internal use by the parser shows operator codes reserved for use by the internal script parser.
Symbol | Value (hex) | Description |
---|---|---|
OP_SMALLDATA |
0xf9 |
Represents small data field |
OP_SMALLINTEGER |
0xfa |
Represents small integer data field |
OP_PUBKEYS |
0xfb |
Represents public key fields |
OP_PUBKEYHASH |
0xfd |
Represents a public key hash field |
OP_PUBKEY |
0xfe |
Represents a public key field |
OP_INVALIDOPCODE |
0xff |
Represents any OP code not currently assigned |