00 |
STOP |
0 |
|
Halts execution |
01 |
ADD |
3 |
a + b |
Addition operation |
02 |
MUL |
5 |
a * b |
Multiplication operation |
03 |
SUB |
3 |
a - b |
Subtraction operation |
04 |
DIV |
5 |
a // b |
Integer division operation |
05 |
SDIV |
5 |
a // b |
Signed integer division operation (truncated) |
06 |
MOD |
5 |
a % b |
Modulo remainder operation |
07 |
SMOD |
5 |
a % b |
Signed modulo remainder operation |
08 |
ADDMOD |
8 |
(a + b) % N |
Modulo addition operation |
09 |
MULMOD |
8 |
(a * b) % N |
Modulo multiplication operation |
0A |
EXP |
10 |
a ** exponent |
Exponential operation |
0B |
SIGNEXTEND |
5 |
y |
Extend length of two’s complement signed integer |
10 |
LT |
3 |
a < b |
Less-than comparison |
11 |
GT |
3 |
a > b |
Greater-than comparison |
12 |
SLT |
3 |
a < b |
Signed less-than comparison |
13 |
SGT |
3 |
a > b |
Signed greater-than comparison |
14 |
EQ |
3 |
a == b |
Equality comparison |
15 |
ISZERO |
3 |
a == 0 |
Simple not operator |
16 |
AND |
3 |
a & b |
Bitwise AND operation |
17 |
OR |
3 |
a \ |
b |
Bitwise OR operation |
18 |
XOR |
3 |
a ^ b |
Bitwise XOR operation |
19 |
NOT |
3 |
~a |
Bitwise NOT operation |
1A |
BYTE |
3 |
y |
Retrieve single byte from word |
1B |
SHL |
3 |
value << shift |
Left shift operation |
1C |
SHR |
3 |
value >> shift |
Logical right shift operation |
1D |
SAR |
3 |
value >> shift |
Arithmetic (signed) right shift operation |
20 |
SHA3 |
30 |
hash |
Compute Keccak-256 hash |
30 |
ADDRESS |
2 |
address |
Get address of currently executing account |
31 |
BALANCE |
100 |
balance |
Get balance of the given account |
32 |
ORIGIN |
2 |
address |
Get execution origination address |
33 |
CALLER |
2 |
address |
Get caller address |
34 |
CALLVALUE |
2 |
value |
Get deposited value by the instruction/transaction responsible for this execution |
35 |
CALLDATALOAD |
3 |
data[i] |
Get input data of current environment |
36 |
CALLDATASIZE |
2 |
size |
Get size of input data in current environment |
37 |
CALLDATACOPY |
3 |
|
Copy input data in current environment to memory |
38 |
CODESIZE |
2 |
size |
Get size of code running in current environment |
39 |
CODECOPY |
3 |
|
Copy code running in current environment to memory |
3A |
GASPRICE |
2 |
price |
Get price of gas in current environment |
3B |
EXTCODESIZE |
100 |
size |
Get size of an account’s code |
3C |
EXTCODECOPY |
100 |
|
Copy an account’s code to memory |
3D |
RETURNDATASIZE |
2 |
size |
Get size of output data from the previous call from the current environment |
3E |
RETURNDATACOPY |
3 |
|
Copy output data from the previous call to memory |
3F |
EXTCODEHASH |
100 |
hash |
Get hash of an account’s code |
40 |
BLOCKHASH |
20 |
hash |
Get the hash of one of the 256 most recent complete blocks |
41 |
COINBASE |
2 |
address |
Get the block’s beneficiary address |
42 |
TIMESTAMP |
2 |
timestamp |
Get the block’s timestamp |
43 |
NUMBER |
2 |
blockNumber |
Get the block’s number |
44 |
DIFFICULTY |
2 |
difficulty |
Get the block’s difficulty |
45 |
GASLIMIT |
2 |
gasLimit |
Get the block’s gas limit |
46 |
CHAINID |
2 |
chainId |
Get the chain ID |
47 |
SELFBALANCE |
5 |
balance |
Get balance of currently executing account |
48 |
BASEFEE |
2 |
baseFee |
Get the base fee |
50 |
POP |
2 |
|
Remove item from stack |
51 |
MLOAD |
3 |
value |
Load word from memory |
52 |
MSTORE |
3 |
|
Save word to memory |
53 |
MSTORE8 |
3 |
|
Save byte to memory |
54 |
SLOAD |
100 |
value |
Load word from storage |
55 |
SSTORE |
100 |
|
Save word to storage |
56 |
JUMP |
8 |
|
Alter the program counter |
57 |
JUMPI |
10 |
|
Conditionally alter the program counter |
58 |
PC |
2 |
counter |
Get the value of the program counter prior to the increment corresponding to this instruction |
59 |
MSIZE |
2 |
size |
Get the size of active memory in bytes |
5A |
GAS |
2 |
gas |
Get the amount of available gas, including the corresponding reduction for the cost of this instruction |
5B |
JUMPDEST |
1 |
|
Mark a valid destination for jumps |
60 |
PUSH1 |
3 |
value |
Place 1 byte item on stack |
61 |
PUSH2 |
3 |
value |
Place 2 byte item on stack |
62 |
PUSH3 |
3 |
value |
Place 3 byte item on stack |
63 |
PUSH4 |
3 |
value |
Place 4 byte item on stack |
64 |
PUSH5 |
3 |
value |
Place 5 byte item on stack |
65 |
PUSH6 |
3 |
value |
Place 6 byte item on stack |
66 |
PUSH7 |
3 |
value |
Place 7 byte item on stack |
67 |
PUSH8 |
3 |
value |
Place 8 byte item on stack |
68 |
PUSH9 |
3 |
value |
Place 9 byte item on stack |
69 |
PUSH10 |
3 |
value |
Place 10 byte item on stack |
6A |
PUSH11 |
3 |
value |
Place 11 byte item on stack |
6B |
PUSH12 |
3 |
value |
Place 12 byte item on stack |
6C |
PUSH13 |
3 |
value |
Place 13 byte item on stack |
6D |
PUSH14 |
3 |
value |
Place 14 byte item on stack |
6E |
PUSH15 |
3 |
value |
Place 15 byte item on stack |
6F |
PUSH16 |
3 |
value |
Place 16 byte item on stack |
70 |
PUSH17 |
3 |
value |
Place 17 byte item on stack |
71 |
PUSH18 |
3 |
value |
Place 18 byte item on stack |
72 |
PUSH19 |
3 |
value |
Place 19 byte item on stack |
73 |
PUSH20 |
3 |
value |
Place 20 byte item on stack |
74 |
PUSH21 |
3 |
value |
Place 21 byte item on stack |
75 |
PUSH22 |
3 |
value |
Place 22 byte item on stack |
76 |
PUSH23 |
3 |
value |
Place 23 byte item on stack |
77 |
PUSH24 |
3 |
value |
Place 24 byte item on stack |
78 |
PUSH25 |
3 |
value |
Place 25 byte item on stack |
79 |
PUSH26 |
3 |
value |
Place 26 byte item on stack |
7A |
PUSH27 |
3 |
value |
Place 27 byte item on stack |
7B |
PUSH28 |
3 |
value |
Place 28 byte item on stack |
7C |
PUSH29 |
3 |
value |
Place 29 byte item on stack |
7D |
PUSH30 |
3 |
value |
Place 30 byte item on stack |
7E |
PUSH31 |
3 |
value |
Place 31 byte item on stack |
7F |
PUSH32 |
3 |
value |
Place 32 byte (full word) item on stack |
80 |
DUP1 |
3 |
valuevalue |
Duplicate 1st stack item |
81 |
DUP2 |
3 |
bab |
Duplicate 2nd stack item |
82 |
DUP3 |
3 |
cabc |
Duplicate 3rd stack item |
83 |
DUP4 |
3 |
value...value |
Duplicate 4th stack item |
84 |
DUP5 |
3 |
value...value |
Duplicate 5th stack item |
85 |
DUP6 |
3 |
value...value |
Duplicate 6th stack item |
86 |
DUP7 |
3 |
value...value |
Duplicate 7th stack item |
87 |
DUP8 |
3 |
value...value |
Duplicate 8th stack item |
88 |
DUP9 |
3 |
value...value |
Duplicate 9th stack item |
89 |
DUP10 |
3 |
value...value |
Duplicate 10th stack item |
8A |
DUP11 |
3 |
value...value |
Duplicate 11th stack item |
8B |
DUP12 |
3 |
value...value |
Duplicate 12th stack item |
8C |
DUP13 |
3 |
value...value |
Duplicate 13th stack item |
8D |
DUP14 |
3 |
value...value |
Duplicate 14th stack item |
8E |
DUP15 |
3 |
value...value |
Duplicate 15th stack item |
8F |
DUP16 |
3 |
value...value |
Duplicate 16th stack item |
90 |
SWAP1 |
3 |
ba |
Exchange 1st and 2nd stack items |
91 |
SWAP2 |
3 |
cba |
Exchange 1st and 3rd stack items |
92 |
SWAP3 |
3 |
b...a |
Exchange 1st and 4th stack items |
93 |
SWAP4 |
3 |
b...a |
Exchange 1st and 5th stack items |
94 |
SWAP5 |
3 |
b...a |
Exchange 1st and 6th stack items |
95 |
SWAP6 |
3 |
b...a |
Exchange 1st and 7th stack items |
96 |
SWAP7 |
3 |
b...a |
Exchange 1st and 8th stack items |
97 |
SWAP8 |
3 |
b...a |
Exchange 1st and 9th stack items |
98 |
SWAP9 |
3 |
b...a |
Exchange 1st and 10th stack items |
99 |
SWAP10 |
3 |
b...a |
Exchange 1st and 11th stack items |
9A |
SWAP11 |
3 |
b...a |
Exchange 1st and 12th stack items |
9B |
SWAP12 |
3 |
b...a |
Exchange 1st and 13th stack items |
9C |
SWAP13 |
3 |
b...a |
Exchange 1st and 14th stack items |
9D |
SWAP14 |
3 |
b...a |
Exchange 1st and 15th stack items |
9E |
SWAP15 |
3 |
b...a |
Exchange 1st and 16th stack items |
9F |
SWAP16 |
3 |
b...a |
Exchange 1st and 17th stack items |
A0 |
LOG0 |
375 |
|
Append log record with no topics |
A1 |
LOG1 |
750 |
|
Append log record with one topic |
A2 |
LOG2 |
1125 |
|
Append log record with two topics |
A3 |
LOG3 |
1500 |
|
Append log record with three topics |
A4 |
LOG4 |
1875 |
|
Append log record with four topics |
F0 |
CREATE |
32000 |
address |
Create a new account with associated code |
F1 |
CALL |
100 |
success |
Message-call into an account |
F2 |
CALLCODE |
100 |
success |
Message-call into this account with alternative account’s code |
F3 |
RETURN |
0 |
|
Halt execution returning output data |
F4 |
DELEGATECALL |
100 |
success |
Message-call into this account with an alternative account’s code, but persisting the current values for sender and value |
F5 |
CREATE2 |
32000 |
address |
Create a new account with associated code at a predictable address |
FA |
STATICCALL |
100 |
success |
Static message-call into an account |
FD |
REVERT |
0 |
|
Halt execution reverting state changes but returning data and remaining gas |
FE |
INVALID |
NaN |
|
Designated invalid instruction |
FF |
SELFDESTRUCT |
5000 |
|
Halt execution and register account for later deletion |