EVM için işlem kodları
Sayfanın son güncellenmesi: 11 Eylül 2025
Genel Bakış
Bu, wolflo/evm-opcodes (opens in a new tab) adresindeki EVM referans sayfasının güncellenmiş bir sürümüdür. Ayrıca Sarı Bülten (opens in a new tab), Jello Bülteni (opens in a new tab) ve geth (opens in a new tab) uygulamasından da yararlanılmıştır. Bunun erişilebilir bir referans olması amaçlanmıştır, ancak özellikle net değildir. Eğer doğruluktan emin olmak ve her kenar durumundan haberdar olmak istiyorsanız, Jello Kağıdı veya bir müşteri uygulaması kullanmanız tavsiye edilir.
İnteraktif bir referans mı arıyorsunuz? evm.codes (opens in a new tab) sitesine göz atın.
Dinamik gaz maliyetli işlemler için gas.md (opens in a new tab) dosyasına bakın.
💡 Hızlı ipucu: Tüm satırları görüntülemek için, masaüstünde yatay olarak kaydırmak üzere [shift] + scroll kullanın.
| Yığın | İsim | Gaz | Başlangıç Yığını | Sonuç Yığını | Bellek/Depolama | Notlar | |
|---|---|---|---|---|---|---|---|
| 00 | STOP | 0 | yürütmeyi durdur | ||||
| 01 | EKLE | 3 | a, b | a + b | (u)int256 toplama modülo 2**256 | ||
| 02 | MUL | 5 | a, b | a * b | (u)int256 çarpma modülo 2**256 | ||
| 03 | SUB | 3 | a, b | a - b | (u)int256 çıkarma modülo 2**256 | ||
| 04 | DIV | 5 | a, b | a // b | uint256 bölme | ||
| 05 | SDIV | 5 | a, b | a // b | int256 bölme | ||
| 06 | MOD | 5 | a, b | a % b | uint256 modülüs | ||
| 07 | SMOD | 5 | a, b | a % b | int256 modülüs | ||
| 08 | ADDMOD | 8 | a, b, N | (a + b) % N | (u)int256 toplama modülo N | ||
| 09 | MULMOD | 8 | a, b, N | (a * b) % N | (u)int256 çarpma modülo N | ||
| 0A | EXP | A1 (opens in a new tab) | a, b | a ** b | uint256 üs alma modülo 2**256 | ||
| 0B | SIGNEXTEND | 5 | b, x | SIGNEXTEND(x, b) | x'i (b+1) bayttan 32 bayta işaret genişlet (opens in a new tab) | ||
| 0C-0F | geçersiz | ||||||
| 10 | LT | 3 | a, b | a < b | uint256 küçüktür | ||
| 11 | GT | 3 | a, b | a > b | uint256 büyüktür | ||
| 12 | SLT | 3 | a, b | a < b | int256 küçüktür | ||
| 13 | SGT | 3 | a, b | a > b | int256 büyüktür | ||
| 14 | EQ | 3 | a, b | a == b | (u)int256 eşitlik | ||
| 15 | ISZERO | 3 | a | a == 0 | (u)int256 sıfır mı | ||
| 16 | AND | 3 | a, b | a && b | bitsel VE | ||
| 17 | OR | 3 | a, b | `a \ | \ | b` | |
| 18 | XOR | 3 | a, b | a ^ b | bitsel XOR | ||
| 19 | NOT | 3 | a | ~a | bitsel DEĞİL | ||
| 1A | BYTE | 3 | i, x | (x >> (248 - i * 8)) && 0xFF | (u)int256 x'in soldan i'inci baytı | ||
| 1B | SHL | 3 | shift, val | val << shift | sola kaydır | ||
| 1C | SHR | 3 | shift, val | val >> shift | mantıksal sağa kaydırma | ||
| 1D | SAR | 3 | shift, val | val >> shift | aritmetik sağa kaydırma | ||
| 1E-1F | geçersiz | ||||||
| 20 | KECCAK256 | A2 (opens in a new tab) | ost, len | keccak256(mem[ost:ost+len-1]) | keccak256 | ||
| 21-2F | geçersiz | ||||||
| 30 | ADDRESS | 2 | . | address(this) | yürütülen sözleşmenin adresi | ||
| 31 | BALANCE | A5 (opens in a new tab) | addr | addr.balance | bakiye, wei cinsinden | ||
| 32 | ORIGIN | 2 | . | tx.origin | işlemi başlatan adres | ||
| 33 | CALLER | 2 | . | msg.sender | msg göndericisinin adresi | ||
| 34 | CALLVALUE | 2 | . | msg.value | msg değeri, wei cinsinden | ||
| 35 | CALLDATALOAD | 3 | idx | msg.data[idx:idx+32] | idx dizinindeki msg verisinden kelime oku | ||
| 36 | CALLDATASIZE | 2 | . | len(msg.data) | msg verisinin uzunluğu, bayt cinsinden | ||
| 37 | CALLDATACOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | msg verisini kopyala | |
| 38 | CODESIZE | 2 | . | len(this.code) | yürütülen sözleşmenin kodunun uzunluğu, bayt cinsinden | ||
| 39 | CODECOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | yürütülen sözleşmenin bayt kodunu kopyala | |
| 3A | GASPRICE | 2 | . | tx.gasprice | işlemin gaz fiyatı, gaz birimi başına wei cinsinden ** (opens in a new tab) | ||
| 3B | EXTCODESIZE | A5 (opens in a new tab) | addr | len(addr.code) | adresteki kodun boyutu, bayt cinsinden | ||
| 3C | EXTCODECOPY | A4 (opens in a new tab) | addr, dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | addr adresinden kodu kopyala | |
| 3D | RETURNDATASIZE | 2 | . | size | son harici çağrıdan dönen verinin boyutu, bayt cinsinden | ||
| 3E | RETURNDATACOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | son harici çağrıdan dönen veriyi kopyala | |
| 3F | EXTCODEHASH | A5 (opens in a new tab) | addr | karma | karma = addr.exists ? keccak256(addr.code) : 0 | ||
| 40 | BLOCKHASH | 20 | blockNum | blockHash(blockNum) | |||
| 41 | COINBASE | 2 | . | block.coinbase | mevcut bloğu önerenin adresi | ||
| 42 | TIMESTAMP | 2 | . | block.timestamp | mevcut bloğun zaman damgası | ||
| 43 | NUMBER | 2 | . | block.number | mevcut bloğun numarası | ||
| 44 | PREVRANDAO | 2 | . | randomness beacon | rastgelelik işaretçisi | ||
| 45 | GASLIMIT | 2 | . | block.gaslimit | mevcut bloğun gaz limiti | ||
| 46 | CHAINID | 2 | . | chain_id | mevcut zincir kimliğini (opens in a new tab) yığına it | ||
| 47 | SELFBALANCE | 5 | . | address(this).balance | yürütülen sözleşmenin bakiyesi, wei cinsinden | ||
| 48 | BASEFEE | 2 | . | block.basefee | mevcut bloğun taban ücreti | ||
| 49 | BLOBHASH | 3 | idx | tx.blob_versioned_hashes[idx] | EIP-4844 (opens in a new tab) | ||
| 4A | BLOBBASEFEE | 2 | . | block.blobbasefee | mevcut bloğun blob taban ücreti (EIP-7516 (opens in a new tab)) | ||
| 4B-4F | geçersiz | ||||||
| 50 | POP | 2 | _anon | . | yığının tepesinden öğeyi kaldır ve at | ||
| 51 | MLOAD | 3* (opens in a new tab) | ost | mem[ost:ost+32] | ost ofsetindeki bellekten kelime oku | ||
| 52 | MSTORE | 3* (opens in a new tab) | ost, val | . | mem[ost:ost+32] := val | belleğe bir kelime yaz | |
| 53 | MSTORE8 | 3* (opens in a new tab) | ost, val | . | mem[ost] := val && 0xFF | belleğe tek bir bayt yaz | |
| 54 | SLOAD | A6 (opens in a new tab) | key | storage[key] | depolamadan kelime oku | ||
| 55 | SSTORE | A7 (opens in a new tab) | key, val | . | storage[key] := val | depolamaya kelime yaz | |
| 56 | JUMP | 8 | dst | . | $pc := dst pc'nin yalnızca dst geçerli bir atlama hedefiyse atandığını işaretle | ||
| 57 | JUMPI | 10 | dst, condition | . | $pc := condition ? dst : $pc + 1` | ||
| 58 | PC | 2 | . | $pc | program sayacı | ||
| 59 | MSIZE | 2 | . | len(mem) | mevcut yürütme bağlamındaki bellek boyutu, bayt cinsinden | ||
| 5A | GAS | 2 | . | gasRemaining | |||
| 5B | JUMPDEST | 1 | geçerli atlama hedefini işaretle | örneğin itme verilerinin içinde olmayan bir atlama hedefi gibi geçerli bir atlama hedefi | |||
| 5C | TLOAD | 100 | key | tstorage[key] | geçici depolamadan kelime oku (EIP-1153 (opens in a new tab)) | ||
| 5D | TSTORE | 100 | key, val | . | tstorage[key] := val | geçici depolamaya kelime yaz (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] | belleği bir alandan diğerine kopyala (EIP-5656 (opens in a new tab)) | |
| 5F | PUSH0 | 2 | . | uint8 | değişmez değer 0'ı yığına it | ||
| 60 | PUSH1 | 3 | . | uint8 | 1 baytlık değeri yığına it | ||
| 61 | PUSH2 | 3 | . | uint16 | 2 baytlık değeri yığına it | ||
| 62 | PUSH3 | 3 | . | uint24 | 3 baytlık değeri yığına it | ||
| 63 | PUSH4 | 3 | . | uint32 | 4 baytlık değeri yığına it | ||
| 64 | PUSH5 | 3 | . | uint40 | 5 baytlık değeri yığına it | ||
| 65 | PUSH6 | 3 | . | uint48 | 6 baytlık değeri yığına it | ||
| 66 | PUSH7 | 3 | . | uint56 | 7 baytlık değeri yığına it | ||
| 67 | PUSH8 | 3 | . | uint64 | 8 baytlık değeri yığına it | ||
| 68 | PUSH9 | 3 | . | uint72 | 9 baytlık değeri yığına it | ||
| 69 | PUSH10 | 3 | . | uint80 | 10 baytlık değeri yığına it | ||
| 6A | PUSH11 | 3 | . | uint88 | 11 baytlık değeri yığına it | ||
| 6B | PUSH12 | 3 | . | uint96 | 12 baytlık değeri yığına it | ||
| 6C | PUSH13 | 3 | . | uint104 | 13 baytlık değeri yığına it | ||
| 6D | PUSH14 | 3 | . | uint112 | 14 baytlık değeri yığına it | ||
| 6E | PUSH15 | 3 | . | uint120 | 15 baytlık değeri yığına it | ||
| 6F | PUSH16 | 3 | . | uint128 | 16 baytlık değeri yığına it | ||
| 70 | PUSH17 | 3 | . | uint136 | 17 baytlık değeri yığına it | ||
| 71 | PUSH18 | 3 | . | uint144 | 18 baytlık değeri yığına it | ||
| 72 | PUSH19 | 3 | . | uint152 | 19 baytlık değeri yığına it | ||
| 73 | PUSH20 | 3 | . | uint160 | 20 baytlık değeri yığına it | ||
| 74 | PUSH21 | 3 | . | uint168 | 21 baytlık değeri yığına it | ||
| 75 | PUSH22 | 3 | . | uint176 | 22 baytlık değeri yığına it | ||
| 76 | PUSH23 | 3 | . | uint184 | 23 baytlık değeri yığına it | ||
| 77 | PUSH24 | 3 | . | uint192 | 24 baytlık değeri yığına it | ||
| 78 | PUSH25 | 3 | . | uint200 | 25 baytlık değeri yığına it | ||
| 79 | PUSH26 | 3 | . | uint208 | 26 baytlık değeri yığına it | ||
| 7A | PUSH27 | 3 | . | uint216 | 27 baytlık değeri yığına it | ||
| 7B | PUSH28 | 3 | . | uint224 | 28 baytlık değeri yığına it | ||
| 7C | PUSH29 | 3 | . | uint232 | 29 baytlık değeri yığına it | ||
| 7D | PUSH30 | 3 | . | uint240 | 30 baytlık değeri yığına it | ||
| 7E | PUSH31 | 3 | . | uint248 | 31 baytlık değeri yığına it | ||
| 7F | PUSH32 | 3 | . | uint256 | 32 baytlık değeri yığına it | ||
| 80 | DUP1 | 3 | a | a, a | yığındaki 1'inci değeri kopyala | ||
| 81 | DUP2 | 3 | _, a | a, _, a | yığındaki 2'nci değeri kopyala | ||
| 82 | DUP3 | 3 | _, _, a | a, _, _, a | yığındaki 3'üncü değeri kopyala | ||
| 83 | DUP4 | 3 | _, _, _, a | a, _, _, _, a | yığındaki 4'üncü değeri kopyala | ||
| 84 | DUP5 | 3 | ..., a | a, ..., a | yığındaki 5'inci değeri kopyala | ||
| 85 | DUP6 | 3 | ..., a | a, ..., a | yığındaki 6'ncı değeri kopyala | ||
| 86 | DUP7 | 3 | ..., a | a, ..., a | yığındaki 7'nci değeri kopyala | ||
| 87 | DUP8 | 3 | ..., a | a, ..., a | yığındaki 8'inci değeri kopyala | ||
| 88 | DUP9 | 3 | ..., a | a, ..., a | yığındaki 9'uncu değeri kopyala | ||
| 89 | DUP10 | 3 | ..., a | a, ..., a | yığındaki 10'uncu değeri kopyala | ||
| 8A | DUP11 | 3 | ..., a | a, ..., a | yığındaki 11'inci değeri kopyala | ||
| 8B | DUP12 | 3 | ..., a | a, ..., a | yığındaki 12'nci değeri kopyala | ||
| 8C | DUP13 | 3 | ..., a | a, ..., a | yığındaki 13'üncü değeri kopyala | ||
| 8D | DUP14 | 3 | ..., a | a, ..., a | yığındaki 14'üncü değeri kopyala | ||
| 8E | DUP15 | 3 | ..., a | a, ..., a | yığındaki 15'inci değeri kopyala | ||
| 8F | DUP16 | 3 | ..., a | a, ..., a | yığındaki 16'ncı değeri kopyala | ||
| 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(memory[ost:ost+len-1]) | ||
| A1 | LOG1 | A8 (opens in a new tab) | ost, len, topic0 | . | LOG1(memory[ost:ost+len-1], topic0) | ||
| A2 | LOG2 | A8 (opens in a new tab) | ost, len, topic0, topic1 | . | LOG2(memory[ost:ost+len-1], topic0, topic1) | ||
| A3 | LOG3 | A8 (opens in a new tab) | ost, len, topic0, topic1, topic2 | . | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | ||
| A4 | LOG4 | A8 (opens in a new tab) | ost, len, topic0, topic1, topic2, topic3 | . | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | ||
| A5-EF | geçersiz | ||||||
| F0 | CREATE | A9 (opens in a new tab) | val, ost, len | addr | addr = keccak256(rlp([address(this), this.nonce])) | ||
| F1 | CALL | AA (opens in a new tab) | gas, addr, val, argOst, argLen, retOst, retLen | başarılı | mem[retOst:retOst+retLen-1] := returndata | ||
| F2 | CALLCODE | AA (opens in a new tab) | gas, addr, val, argOst, argLen, retOst, retLen | başarılı | mem[retOst:retOst+retLen-1] = returndata | DELEGATECALL ile aynı, ancak orijinal msg.sender ve msg.value'yu yaymaz | |
| F3 | RETURN | 0* (opens in a new tab) | ost, len | . | return mem[ost:ost+len-1] | ||
| F4 | DELEGATECALL | AA (opens in a new tab) | gas, addr, argOst, argLen, retOst, retLen | başarılı | mem[retOst:retOst+retLen-1] := returndata | ||
| F5 | CREATE2 | A9 (opens in a new tab) | val, ost, len, salt | addr | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | ||
| F6-F9 | geçersiz | ||||||
| FA | STATICCALL | AA (opens in a new tab) | gas, addr, argOst, argLen, retOst, retLen | başarılı | mem[retOst:retOst+retLen-1] := returndata | ||
| FB-FC | geçersiz | ||||||
| FD | REVERT | 0* (opens in a new tab) | ost, len | . | revert(mem[ost:ost+len-1]) | ||
| FE | INVALID | AF (opens in a new tab) | belirlenmiş geçersiz işlem kodu - EIP-141 (opens in a new tab) | ||||
| FF | SELFDESTRUCT | AB (opens in a new tab) | addr | . | tüm ETH'yi addr adresine gönderir; bir sözleşmenin oluşturulduğu aynı işlemde yürütülürse sözleşmeyi yok eder |