Ana içeriğe atla
Change page

EVM için İşlem Kodları

Genel Bakış

Bu, wolflo/evm-opcodes (yeni sekmede açılır) adresindeki EVM referans sayfasının güncellenmiş bir sürümüdür. Ayrıca Sarı Bülten (yeni sekmede açılır), Jello Paper (yeni sekmede açılır) ve geth (yeni sekmede açılır) uygulamasından da yararlanılmıştır. Bunun erişilebilir bir referans olması amaçlanmıştır, ancak özellikle titiz bir çalışma değildir. Doğruluktan emin olmak ve her uç durumun farkında olmak istiyorsanız, Jello Paper veya bir istemci uygulaması kullanmanız tavsiye edilir.

Etkileşimli bir referans mı arıyorsunuz? evm.codes (yeni sekmede açılır) adresine göz atın.

Dinamik gaz maliyetlerine sahip işlemler için gas.md (yeni sekmede açılır) dosyasına bakın.

💡 Hızlı ipucu: Tüm satırları görüntülemek için masaüstünde yatay kaydırma yapmak üzere [shift] + scroll kullanın.

YığınİsimGazBaşlangıç YığınıSonuç YığınıBellek / DepolamaNotlar
00STOP0yürütmeyi durdur
01ADD3a, ba + b(u)int256 toplama mod 2**256
02MUL5a, ba * b(u)int256 çarpma mod 2**256
03SUB3a, ba - b(u)int256 çıkarma mod 2**256
04DIV5a, ba // buint256 bölme
05SDIV5a, ba // bint256 bölme
06MOD5a, ba % buint256 mod
07SMOD5a, ba % bint256 mod
08ADDMOD8a, b, N(a + b) % N(u)int256 toplama mod N
09MULMOD8a, b, N(a * b) % N(u)int256 çarpma mod N
0AEXPA1 (yeni sekmede açılır)a, ba ** buint256 üs alma mod 2**256
0BSIGNEXTEND5b, xSIGNEXTEND(x, b)x değerini (b+1) bayttan 32 bayta işaret uzatma (yeni sekmede açılır)
0C-0Fgeçersiz
10LT3a, ba < buint256 küçüktür
11GT3a, ba > buint256 büyüktür
12SLT3a, ba < bint256 küçüktür
13SGT3a, ba > bint256 büyüktür
14EQ3a, ba == b(u)int256 eşitlik
15ISZERO3aa == 0(u)int256 sıfırdır
16AND3a, ba && bbitsel AND
17OR3a, ba || bbitsel OR
18XOR3a, ba ^ bbitsel XOR
19NOT3a~abitsel NOT
1ABYTE3i, x(x >> (248 - i * 8)) && 0xFFsoldan (u)int256 x değerinin i. baytı
1BSHL3shift, valval << shiftsola kaydır
1CSHR3shift, valval >> shiftmantıksal sağa kaydır
1DSAR3shift, valval >> shiftaritmetik sağa kaydır
1E-1Fgeçersiz
20KECCAK256A2 (yeni sekmede açılır)ost, lenkeccak256(mem[ost:ost+len-1])keccak256
21-2Fgeçersiz
30ADDRESS2.address(this)yürütülen sözleşmenin adresi
31BALANCEA5 (yeni sekmede açılır)addraddr.balancewei cinsinden bakiye
32ORIGIN2.tx.originişlemi başlatan adres
33CALLER2.msg.sendermsg göndericisinin adresi
34CALLVALUE2.msg.valuewei cinsinden msg değeri
35CALLDATALOAD3idxmsg.data[idx:idx+32]idx endeksindeki msg verisinden kelime oku
36CALLDATASIZE2.len(msg.data)bayt cinsinden msg verisinin uzunluğu
37CALLDATACOPYA3 (yeni sekmede açılır)dstOst, ost, len.mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1]msg verisini kopyala
38CODESIZE2.len(this.code)bayt cinsinden yürütülen sözleşmenin kodunun uzunluğu
39CODECOPYA3 (yeni sekmede açılır)dstOst, ost, len.mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1]
3AGASPRICE2.tx.gaspriceişlemin gas fiyatı, birim gaz başına wei cinsinden ** (yeni sekmede açılır)
3BEXTCODESIZEA5 (yeni sekmede açılır)addrlen(addr.code)bayt cinsinden addr'deki kodun boyutu
3CEXTCODECOPYA4 (yeni sekmede açılır)addr, dstOst, ost, len.mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1]addr'den kodu kopyala
3DRETURNDATASIZE2.sizebayt cinsinden son harici çağrıdan dönen verinin boyutu
3ERETURNDATACOPYA3 (yeni sekmede açılır)dstOst, ost, len.mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1]son harici çağrıdan dönen veriyi kopyala
3FEXTCODEHASHA5 (yeni sekmede açılır)addrhashhash = addr.exists ? keccak256(addr.code) : 0
40BLOCKHASH20blockNumblockHash(blockNum)
41COINBASE2.block.coinbasemevcut bloğun teklif edicisinin adresi
42TIMESTAMP2.block.timestampmevcut bloğun zaman damgası
43NUMBER2.block.numbermevcut bloğun numarası
44PREVRANDAO2.randomness beaconrastgelelik işaretçisi
45GASLIMIT2.block.gaslimitmevcut bloğun gaz limiti
46CHAINID2.chain_idmevcut zincir kimliğini (yeni sekmede açılır) yığına it
47SELFBALANCE5.address(this).balancewei cinsinden yürütülen sözleşmenin bakiyesi
48BASEFEE2.block.basefeemevcut bloğun taban ücreti
49BLOBHASH3idxtx.blob_versioned_hashes[idx]EIP-4844 (yeni sekmede açılır)
4ABLOBBASEFEE2.block.blobbasefeemevcut bloğun blob taban ücreti (EIP-7516 (yeni sekmede açılır))
4B-4Fgeçersiz
50POP2_anon.öğeyi yığının en üstünden kaldır ve at
51MLOAD3* (yeni sekmede açılır)ostmem[ost:ost+32]ost ofsetindeki bellekten kelime oku
52MSTORE3* (yeni sekmede açılır)ost, val.mem[ost:ost+32] := valbelleğe bir kelime yaz
53MSTORE83* (yeni sekmede açılır)ost, val.mem[ost] := val && 0xFFbelleğe tek bir bayt yaz
54SLOADA6 (yeni sekmede açılır)keystorage[key]depolamadan kelime oku
55SSTOREA7 (yeni sekmede açılır)key, val.storage[key] := valdepolamaya kelime yaz
56JUMP8dst.$pc := dst pc'nin yalnızca dst geçerli bir jumpdest ise atandığını işaretle
57JUMPI10dst, condition.$pc := condition ? dst : $pc + 1
58PC2.$pcprogram sayacı
59MSIZE2.len(mem)bayt cinsinden mevcut yürütme bağlamındaki belleğin boyutu
5AGAS2.gasRemaining
5BJUMPDEST1geçerli atlama hedefini işaretlegeçerli bir atlama hedefi, örneğin push verisinin içinde olmayan bir atlama hedefi
5CTLOAD100keytstorage[key]geçici depolamadan kelime oku (EIP-1153 (yeni sekmede açılır))
5DTSTORE100key, val.tstorage[key] := valgeçici depolamaya kelime yaz (EIP-1153 (yeni sekmede açılır))
5EMCOPY3+3*words+A0 (yeni sekmede açılır)dstOst, ost, len.mem[dstOst] := mem[ost:ost+len]belleği bir alandan diğerine kopyala (EIP-5656 (yeni sekmede açılır))
5FPUSH02.uint80 sabit değerini yığına it
60PUSH13.uint81 baytlık değeri yığına it
61PUSH23.uint162 baytlık değeri yığına it
62PUSH33.uint243 baytlık değeri yığına it
63PUSH43.uint324 baytlık değeri yığına it
64PUSH53.uint405 baytlık değeri yığına it
65PUSH63.uint486 baytlık değeri yığına it
66PUSH73.uint567 baytlık değeri yığına it
67PUSH83.uint648 baytlık değeri yığına it
68PUSH93.uint729 baytlık değeri yığına it
69PUSH103.uint8010 baytlık değeri yığına it
6APUSH113.uint8811 baytlık değeri yığına it
6BPUSH123.uint9612 baytlık değeri yığına it
6CPUSH133.uint10413 baytlık değeri yığına it
6DPUSH143.uint11214 baytlık değeri yığına it
6EPUSH153.uint12015 baytlık değeri yığına it
6FPUSH163.uint12816 baytlık değeri yığına it
70PUSH173.uint13617 baytlık değeri yığına it
71PUSH183.uint14418 baytlık değeri yığına it
72PUSH193.uint15219 baytlık değeri yığına it
73PUSH203.uint16020 baytlık değeri yığına it
74PUSH213.uint16821 baytlık değeri yığına it
75PUSH223.uint17622 baytlık değeri yığına it
76PUSH233.uint18423 baytlık değeri yığına it
77PUSH243.uint19224 baytlık değeri yığına it
78PUSH253.uint20025 baytlık değeri yığına it
79PUSH263.uint20826 baytlık değeri yığına it
7APUSH273.uint21627 baytlık değeri yığına it
7BPUSH283.uint22428 baytlık değeri yığına it
7CPUSH293.uint23229 baytlık değeri yığına it
7DPUSH303.uint24030 baytlık değeri yığına it
7EPUSH313.uint24831 baytlık değeri yığına it
7FPUSH323.uint25632 baytlık değeri yığına it
80DUP13aa, ayığındaki 1. değeri kopyala
81DUP23_, aa, _, ayığındaki 2. değeri kopyala
82DUP33_, _, aa, _, _, ayığındaki 3. değeri kopyala
83DUP43_, _, _, aa, _, _, _, ayığındaki 4. değeri kopyala
84DUP53..., aa, ..., ayığındaki 5. değeri kopyala
85DUP63..., aa, ..., ayığındaki 6. değeri kopyala
86DUP73..., aa, ..., ayığındaki 7. değeri kopyala
87DUP83..., aa, ..., ayığındaki 8. değeri kopyala
88DUP93..., aa, ..., ayığındaki 9. değeri kopyala
89DUP103..., aa, ..., ayığındaki 10. değeri kopyala
8ADUP113..., aa, ..., ayığındaki 11. değeri kopyala
8BDUP123..., aa, ..., ayığındaki 12. değeri kopyala
8CDUP133..., aa, ..., ayığındaki 13. değeri kopyala
8DDUP143..., aa, ..., ayığındaki 14. değeri kopyala
8EDUP153..., aa, ..., ayığındaki 15. değeri kopyala
8FDUP163..., aa, ..., ayığındaki 16. değeri kopyala
90SWAP13a, bb, a
91SWAP23a, _, bb, _, a
92SWAP33a, _, _, bb, _, _, a
93SWAP43a, _, _, _, bb, _, _, _, a
94SWAP53a, ..., bb, ..., a
95SWAP63a, ..., bb, ..., a
96SWAP73a, ..., bb, ..., a
97SWAP83a, ..., bb, ..., a
98SWAP93a, ..., bb, ..., a
99SWAP103a, ..., bb, ..., a
9ASWAP113a, ..., bb, ..., a
9BSWAP123a, ..., bb, ..., a
9CSWAP133a, ..., bb, ..., a
9DSWAP143a, ..., bb, ..., a
9ESWAP153a, ..., bb, ..., a
9FSWAP163a, ..., bb, ..., a
A0LOG0A8 (yeni sekmede açılır)ost, len.LOG0(memory[ost:ost+len-1])
A1LOG1A8 (yeni sekmede açılır)ost, len, topic0.LOG1(memory[ost:ost+len-1], topic0)
A2LOG2A8 (yeni sekmede açılır)ost, len, topic0, topic1.LOG2(memory[ost:ost+len-1], topic0, topic1)
A3LOG3A8 (yeni sekmede açılır)ost, len, topic0, topic1, topic2.LOG3(memory[ost:ost+len-1], topic0, topic1, topic2)
A4LOG4A8 (yeni sekmede açılır)ost, len, topic0, topic1, topic2, topic3.LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3)
A5-EFgeçersiz
F0CREATEA9 (yeni sekmede açılır)val, ost, lenaddraddr = keccak256(rlp([address(this), this.nonce]))
F1CALLAA (yeni sekmede açılır)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F2CALLCODEAA (yeni sekmede açılır)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] = returndataDELEGATECALL ile aynı, ancak orijinal msg.sender ve msg.value değerlerini iletmez
F3RETURN0* (yeni sekmede açılır)ost, len.mem[ost:ost+len-1] döndür
F4DELEGATECALLAA (yeni sekmede açılır)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F5CREATE2A9 (yeni sekmede açılır)val, ost, len, saltaddraddr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:]
F6-F9geçersiz
FASTATICCALLAA (yeni sekmede açılır)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
FB-FCgeçersiz
FDREVERT0* (yeni sekmede açılır)ost, len.revert(mem[ost:ost+len-1])
FEINVALIDAF (yeni sekmede açılır)belirlenmiş geçersiz işlem kodu - EIP-141 (yeni sekmede açılır)
FFSELFDESTRUCTAB (yeni sekmede açılır)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