Opcodes za EVM
Ukurasa ulihaririwa mwisho: 11 Septemba 2025
Muhtasari
Hili ni toleo lililosasishwa la ukurasa wa marejeleo wa EVM katika wolflo/evm-opcodes (opens in a new tab). Pia imetolewa kutoka kwa Karatasi ya Njano (opens in a new tab), Karatasi ya Jello (opens in a new tab), na utekelezaji wa geth (opens in a new tab). Hii imekusudiwa kuwa rejeleo linalofikika, lakini sio kali hasa. Ikiwa unataka kuwa na uhakika wa usahihi na kufahamu kila kisa cha pembeni, kutumia Karatasi ya Jello au utekelezaji wa mteja kunashauriwa.
Unatafuta rejeleo shirikishi? Angalia evm.codes (opens in a new tab).
Kwa operesheni zenye gharama za gesi zinazobadilika, tazama gas.md (opens in a new tab).
💡 Dokezo la haraka: Ili kuona mistari yote, tumia [shift] + sogeza ili kusogeza mlalo kwenye kompyuta ya mezani.
| Rafu | Jina | Gesi | Rafu ya Awali | Rafu ya Matokeo | Mem / Ghala | Maelezo | |
|---|---|---|---|---|---|---|---|
| 00 | STOP | 0 | sitisha utekelezaji | ||||
| 01 | ADD | 3 | a, b | a + b | kujumlisha kwa (u)int256 modulo 2**256 | ||
| 02 | MUL | 5 | a, b | a * b | kuzidisha kwa (u)int256 modulo 2**256 | ||
| 03 | SUB | 3 | a, b | a - b | kutoa kwa (u)int256 modulo 2**256 | ||
| 04 | DIV | 5 | a, b | a // b | kugawanya kwa uint256 | ||
| 05 | SDIV | 5 | a, b | a // b | kugawanya kwa int256 | ||
| 06 | MOD | 5 | a, b | a % b | modulo ya uint256 | ||
| 07 | SMOD | 5 | a, b | a % b | modulo ya int256 | ||
| 08 | ADDMOD | 8 | a, b, N | (a + b) % N | kujumlisha kwa (u)int256 modulo N | ||
| 09 | MULMOD | 8 | a, b, N | (a * b) % N | kuzidisha kwa (u)int256 modulo N | ||
| 0A | EXP | A1 (opens in a new tab) | a, b | a ** b | kipeo cha uint256 modulo 2**256 | ||
| 0B | SIGNEXTEND | 5 | b, x | SIGNEXTEND(x, b) | panua ishara (opens in a new tab) x kutoka baiti (b+1) hadi baiti 32 | ||
| 0C-0F | sio halali | ||||||
| 10 | LT | 3 | a, b | a < b | uint256 chini ya | ||
| 11 | GT | 3 | a, b | a > b | uint256 kubwa kuliko | ||
| 12 | SLT | 3 | a, b | a < b | int256 chini ya | ||
| 13 | SGT | 3 | a, b | a > b | int256 kubwa kuliko | ||
| 14 | EQ | 3 | a, b | a == b | usawa wa (u)int256 | ||
| 15 | ISZERO | 3 | a | a == 0 | (u)int256 ni sifuri | ||
| 16 | AND | 3 | a, b | a && b | bitwise AND | ||
| 17 | OR | 3 | a, b | `a \ | \ | b` | |
| 18 | XOR | 3 | a, b | a ^ b | bitwise XOR | ||
| 19 | NOT | 3 | a | ~a | bitwise NOT | ||
| 1A | BYTE | 3 | i, x | (x >> (248 - i * 8)) && 0xFF | baiti ya i ya (u)int256 x, kutoka kushoto | ||
| 1B | SHL | 3 | shift, val | val << shift | sogeza kushoto | ||
| 1C | SHR | 3 | shift, val | val >> shift | sogeza kulia kimantiki | ||
| 1D | SAR | 3 | shift, val | val >> shift | sogeza kulia kihesabu | ||
| 1E-1F | sio halali | ||||||
| 20 | KECCAK256 | A2 (opens in a new tab) | ost, len | keccak256(mem[ost:ost+len-1]) | keccak256 | ||
| 21-2F | sio halali | ||||||
| 30 | ADDRESS | 2 | . | anwani(this) | anwani ya mkataba unaotekelezwa | ||
| 31 | BALANCE | A5 (opens in a new tab) | addr | addr.salio | salio, katika wei | ||
| 32 | ORIGIN | 2 | . | tx.origin | anwani iliyoanzisha tx | ||
| 33 | CALLER | 2 | . | msg.sender | anwani ya mtumaji wa msg | ||
| 34 | CALLVALUE | 2 | . | msg.value | thamani ya msg, katika wei | ||
| 35 | CALLDATALOAD | 3 | idx | msg.data[idx:idx+32] | soma neno kutoka data ya msg kwenye faharasa idx | ||
| 36 | CALLDATASIZE | 2 | . | len(msg.data) | urefu wa data ya msg, katika baiti | ||
| 37 | CALLDATACOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | nakili data ya msg | |
| 38 | CODESIZE | 2 | . | len(this.msimbo) | urefu wa msimbo wa mkataba unaotekelezwa, katika baiti | ||
| 39 | CODECOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := this.msimbo[ost:ost+len-1] | nakili bytecode ya mkataba unaotekelezwa | |
| 3A | GASPRICE | 2 | . | tx.gasprice | bei ya gesi ya tx, katika wei kwa kila kitengo cha gesi ** (opens in a new tab) | ||
| 3B | EXTCODESIZE | A5 (opens in a new tab) | addr | len(addr.msimbo) | ukubwa wa msimbo katika anwani, katika baiti | ||
| 3C | EXTCODECOPY | A4 (opens in a new tab) | addr, dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := addr.msimbo[ost:ost+len-1] | nakili msimbo kutoka addr | |
| 3D | RETURNDATASIZE | 2 | . | ukubwa | ukubwa wa data iliyorejeshwa kutoka wito wa mwisho wa nje, katika baiti | ||
| 3E | RETURNDATACOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | nakili data iliyorejeshwa kutoka wito wa mwisho wa nje | |
| 3F | EXTCODEHASH | A5 (opens in a new tab) | addr | hashi | hashi = addr.exists ? keccak256(addr.msimbo) : 0 | ||
| 40 | BLOCKHASH | 20 | blockNum | blockHash(blockNum) | |||
| 41 | COINBASE | 2 | . | block.coinbase | anwani ya mpendekezaji wa bloku ya sasa | ||
| 42 | TIMESTAMP | 2 | . | block.timestamp | mhuri wa muda wa bloku ya sasa | ||
| 43 | NUMBER | 2 | . | block.number | nambari ya bloku ya sasa | ||
| 44 | PREVRANDAO | 2 | . | randomness beacon | randomness beacon | ||
| 45 | GASLIMIT | 2 | . | block.gaslimit | kikomo cha gesi cha bloku ya sasa | ||
| 46 | CHAINID | 2 | . | chain_id | sukuma id ya mnyororo (opens in a new tab) ya sasa kwenye rafu | ||
| 47 | SELFBALANCE | 5 | . | anwani(this).salio | salio la mkataba unaotekelezwa, katika wei | ||
| 48 | BASEFEE | 2 | . | block.basefee | ada ya msingi ya bloku ya sasa | ||
| 49 | BLOBHASH | 3 | idx | tx.blob_versioned_hashes[idx] | EIP-4844 (opens in a new tab) | ||
| 4A | BLOBBASEFEE | 2 | . | block.blobbasefee | ada ya msingi ya blob ya bloku ya sasa (EIP-7516 (opens in a new tab)) | ||
| 4B-4F | sio halali | ||||||
| 50 | POP | 2 | _anon | . | ondoa kipengee kutoka juu ya rafu na uitupe | ||
| 51 | MLOAD | 3* (opens in a new tab) | ost | mem[ost:ost+32] | soma neno kutoka kwenye kumbukumbu kwa offset ost | ||
| 52 | MSTORE | 3* (opens in a new tab) | ost, val | . | mem[ost:ost+32] := val | andika neno kwenye kumbukumbu | |
| 53 | MSTORE8 | 3* (opens in a new tab) | ost, val | . | mem[ost] := val && 0xFF | andika baiti moja kwenye kumbukumbu | |
| 54 | SLOAD | A6 (opens in a new tab) | ufunguo | ghala[ufunguo] | soma neno kutoka kwenye ghala | ||
| 55 | SSTORE | A7 (opens in a new tab) | ufunguo, val | . | ghala[ufunguo] := val | andika neno kwenye ghala | |
| 56 | JUMP | 8 | dst | . | $pc := dst weka alama kuwa pc inapewa tu ikiwa dst ni jumpdest halali | ||
| 57 | JUMPI | 10 | dst, sharti | . | $pc := sharti ? dst : $pc + 1 | ||
| 58 | PC | 2 | . | $pc | kihesabu cha programu | ||
| 59 | MSIZE | 2 | . | len(mem) | ukubwa wa kumbukumbu katika muktadha wa sasa wa utekelezaji, katika baiti | ||
| 5A | GAS | 2 | . | gesiIliyobaki | |||
| 5B | JUMPDEST | 1 | weka alama ya eneo halali la kuruka | eneo halali la kuruka kwa mfano eneo la kuruka sio ndani ya data ya kusukuma | |||
| 5C | TLOAD | 100 | ufunguo | tstorage[ufunguo] | soma neno kutoka kwenye ghala la muda (EIP-1153 (opens in a new tab)) | ||
| 5D | TSTORE | 100 | ufunguo, val | . | tstorage[ufunguo] := val | andika neno kwenye ghala la muda (EIP-1153 (opens in a new tab)) | |
| 5E | MCOPY | 3+3*words+A0 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst] := mem[ost:ost+len] | nakili kumbukumbu kutoka eneo moja hadi jingine (EIP-5656 (opens in a new tab)) | |
| 5F | PUSH0 | 2 | . | uint8 | sukuma thamani ya kudumu 0 kwenye rafu | ||
| 60 | PUSH1 | 3 | . | uint8 | sukuma thamani ya baiti-1 kwenye rafu | ||
| 61 | PUSH2 | 3 | . | uint16 | sukuma thamani ya baiti-2 kwenye rafu | ||
| 62 | PUSH3 | 3 | . | uint24 | sukuma thamani ya baiti-3 kwenye rafu | ||
| 63 | PUSH4 | 3 | . | uint32 | sukuma thamani ya baiti-4 kwenye rafu | ||
| 64 | PUSH5 | 3 | . | uint40 | sukuma thamani ya baiti-5 kwenye rafu | ||
| 65 | PUSH6 | 3 | . | uint48 | sukuma thamani ya baiti-6 kwenye rafu | ||
| 66 | PUSH7 | 3 | . | uint56 | sukuma thamani ya baiti-7 kwenye rafu | ||
| 67 | PUSH8 | 3 | . | uint64 | sukuma thamani ya baiti-8 kwenye rafu | ||
| 68 | PUSH9 | 3 | . | uint72 | sukuma thamani ya baiti-9 kwenye rafu | ||
| 69 | PUSH10 | 3 | . | uint80 | sukuma thamani ya baiti-10 kwenye rafu | ||
| 6A | PUSH11 | 3 | . | uint88 | sukuma thamani ya baiti-11 kwenye rafu | ||
| 6B | PUSH12 | 3 | . | uint96 | sukuma thamani ya baiti-12 kwenye rafu | ||
| 6C | PUSH13 | 3 | . | uint104 | sukuma thamani ya baiti-13 kwenye rafu | ||
| 6D | PUSH14 | 3 | . | uint112 | sukuma thamani ya baiti-14 kwenye rafu | ||
| 6E | PUSH15 | 3 | . | uint120 | sukuma thamani ya baiti-15 kwenye rafu | ||
| 6F | PUSH16 | 3 | . | uint128 | sukuma thamani ya baiti-16 kwenye rafu | ||
| 70 | PUSH17 | 3 | . | uint136 | sukuma thamani ya baiti-17 kwenye rafu | ||
| 71 | PUSH18 | 3 | . | uint144 | sukuma thamani ya baiti-18 kwenye rafu | ||
| 72 | PUSH19 | 3 | . | uint152 | sukuma thamani ya baiti-19 kwenye rafu | ||
| 73 | PUSH20 | 3 | . | uint160 | sukuma thamani ya baiti-20 kwenye rafu | ||
| 74 | PUSH21 | 3 | . | uint168 | sukuma thamani ya baiti-21 kwenye rafu | ||
| 75 | PUSH22 | 3 | . | uint176 | sukuma thamani ya baiti-22 kwenye rafu | ||
| 76 | PUSH23 | 3 | . | uint184 | sukuma thamani ya baiti-23 kwenye rafu | ||
| 77 | PUSH24 | 3 | . | uint192 | sukuma thamani ya baiti-24 kwenye rafu | ||
| 78 | PUSH25 | 3 | . | uint200 | sukuma thamani ya baiti-25 kwenye rafu | ||
| 79 | PUSH26 | 3 | . | uint208 | sukuma thamani ya baiti-26 kwenye rafu | ||
| 7A | PUSH27 | 3 | . | uint216 | sukuma thamani ya baiti-27 kwenye rafu | ||
| 7B | PUSH28 | 3 | . | uint224 | sukuma thamani ya baiti-28 kwenye rafu | ||
| 7C | PUSH29 | 3 | . | uint232 | sukuma thamani ya baiti-29 kwenye rafu | ||
| 7D | PUSH30 | 3 | . | uint240 | sukuma thamani ya baiti-30 kwenye rafu | ||
| 7E | PUSH31 | 3 | . | uint248 | sukuma thamani ya baiti-31 kwenye rafu | ||
| 7F | PUSH32 | 3 | . | uint256 | sukuma thamani ya baiti-32 kwenye rafu | ||
| 80 | DUP1 | 3 | a | a, a | nakili thamani ya 1 kwenye rafu | ||
| 81 | DUP2 | 3 | _, a | a, _, a | nakili thamani ya 2 kwenye rafu | ||
| 82 | DUP3 | 3 | _, _, a | a, _, _, a | nakili thamani ya 3 kwenye rafu | ||
| 83 | DUP4 | 3 | _, _, _, a | a, _, _, _, a | nakili thamani ya 4 kwenye rafu | ||
| 84 | DUP5 | 3 | ..., a | a, ..., a | nakili thamani ya 5 kwenye rafu | ||
| 85 | DUP6 | 3 | ..., a | a, ..., a | nakili thamani ya 6 kwenye rafu | ||
| 86 | DUP7 | 3 | ..., a | a, ..., a | nakili thamani ya 7 kwenye rafu | ||
| 87 | DUP8 | 3 | ..., a | a, ..., a | nakili thamani ya 8 kwenye rafu | ||
| 88 | DUP9 | 3 | ..., a | a, ..., a | nakili thamani ya 9 kwenye rafu | ||
| 89 | DUP10 | 3 | ..., a | a, ..., a | nakili thamani ya 10 kwenye rafu | ||
| 8A | DUP11 | 3 | ..., a | a, ..., a | nakili thamani ya 11 kwenye rafu | ||
| 8B | DUP12 | 3 | ..., a | a, ..., a | nakili thamani ya 12 kwenye rafu | ||
| 8C | DUP13 | 3 | ..., a | a, ..., a | nakili thamani ya 13 kwenye rafu | ||
| 8D | DUP14 | 3 | ..., a | a, ..., a | nakili thamani ya 14 kwenye rafu | ||
| 8E | DUP15 | 3 | ..., a | a, ..., a | nakili thamani ya 15 kwenye rafu | ||
| 8F | DUP16 | 3 | ..., a | a, ..., a | nakili thamani ya 16 kwenye rafu | ||
| 90 | SWAP1 | 3 | a, b | b, a | |||
| 91 | SWAP2 | 3 | a, _, b | b, _, a | |||
| 92 | SWAP3 | 3 | a, _, _, b | b, _, _, a | |||
| 93 | SWAP4 | 3 | a, _, _, _, b | b, _, _, _, a | |||
| 94 | SWAP5 | 3 | a, ..., b | b, ..., a | |||
| 95 | SWAP6 | 3 | a, ..., b | b, ..., a | |||
| 96 | SWAP7 | 3 | a, ..., b | b, ..., a | |||
| 97 | SWAP8 | 3 | a, ..., b | b, ..., a | |||
| 98 | SWAP9 | 3 | a, ..., b | b, ..., a | |||
| 99 | SWAP10 | 3 | a, ..., b | b, ..., a | |||
| 9A | SWAP11 | 3 | a, ..., b | b, ..., a | |||
| 9B | SWAP12 | 3 | a, ..., b | b, ..., a | |||
| 9C | SWAP13 | 3 | a, ..., b | b, ..., a | |||
| 9D | SWAP14 | 3 | a, ..., b | b, ..., a | |||
| 9E | SWAP15 | 3 | a, ..., b | b, ..., a | |||
| 9F | SWAP16 | 3 | a, ..., b | b, ..., a | |||
| A0 | LOG0 | A8 (opens in a new tab) | ost, len | . | LOG0(kumbukumbu[ost:ost+len-1]) | ||
| A1 | LOG1 | A8 (opens in a new tab) | ost, len, topic0 | . | LOG1(kumbukumbu[ost:ost+len-1], topic0) | ||
| A2 | LOG2 | A8 (opens in a new tab) | ost, len, topic0, topic1 | . | LOG2(kumbukumbu[ost:ost+len-1], topic0, topic1) | ||
| A3 | LOG3 | A8 (opens in a new tab) | ost, len, topic0, topic1, topic2 | . | LOG3(kumbukumbu[ost:ost+len-1], topic0, topic1, topic2) | ||
| A4 | LOG4 | A8 (opens in a new tab) | ost, len, topic0, topic1, topic2, topic3 | . | LOG4(kumbukumbu[ost:ost+len-1], topic0, topic1, topic2, topic3) | ||
| A5-EF | sio halali | ||||||
| F0 | CREATE | A9 (opens in a new tab) | val, ost, len | addr | anwani = keccak256(rlp([anwani(this), this.nonce])) | ||
| F1 | CALL | AA (opens in a new tab) | gesi, addr, val, argOst, argLen, retOst, retLen | mafanikio | mem[retOst:retOst+retLen-1] := returndata | ||
| F2 | CALLCODE | AA (opens in a new tab) | gesi, addr, val, argOst, argLen, retOst, retLen | mafanikio | mem[retOst:retOst+retLen-1] = returndata | sawa na DELEGATECALL, lakini haisambazi msg.sender na msg.value asili | |
| F3 | RETURN | 0* (opens in a new tab) | ost, len | . | rejesha mem[ost:ost+len-1] | ||
| F4 | DELEGATECALL | AA (opens in a new tab) | gesi, addr, argOst, argLen, retOst, retLen | mafanikio | mem[retOst:retOst+retLen-1] := returndata | ||
| F5 | CREATE2 | A9 (opens in a new tab) | val, ost, len, salt | addr | anwani = keccak256(0xff ++ anwani(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | ||
| F6-F9 | sio halali | ||||||
| FA | STATICCALL | AA (opens in a new tab) | gesi, addr, argOst, argLen, retOst, retLen | mafanikio | mem[retOst:retOst+retLen-1] := returndata | ||
| FB-FC | sio halali | ||||||
| FD | REVERT | 0* (opens in a new tab) | ost, len | . | rejesha(mem[ost:ost+len-1]) | ||
| FE | INVALID | AF (opens in a new tab) | opcode batili iliyoteuliwa - EIP-141 (opens in a new tab) | ||||
| FF | SELFDESTRUCT | AB (opens in a new tab) | addr | . | hutuma ETH zote kwa addr; ikiwa itatekelezwa katika muamala sawa na ule mkataba ulipoundwa, inaharibu mkataba |