Ruka hadi kwenye maudhui makuu
Change page

Misimbo ya operesheni kwa ajili ya EVM

Muhtasari

Hili ni toleo lililosasishwa la ukurasa wa marejeleo wa EVM katika wolflo/evm-opcodes (opens in a new tab). Pia imetolewa kutoka kwenye Waraka wa Manjano (opens in a new tab), Jello Paper (opens in a new tab), na utekelezaji wa geth (opens in a new tab). Hii inakusudiwa kuwa marejeleo yanayofikika kwa urahisi, lakini si thabiti sana. Ikiwa unataka kuwa na uhakika wa usahihi na kufahamu kila hali ya kipekee, inashauriwa kutumia Jello Paper au utekelezaji wa mteja.

Unatafuta marejeleo 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 kutazama mistari mizima, tumia [shift] + scroll kusogeza kwa mlalo kwenye kompyuta ya mezani.

StakiJinaGesiStaki ya AwaliStaki InayotokanaKumbukumbu / HifadhiVidokezo
00STOP0simamisha utekelezaji
01ADD3a, ba + b(u)int256 jumlisha modulo 2**256
02MUL5a, ba * b(u)int256 zidisha modulo 2**256
03SUB3a, ba - b(u)int256 toa modulo 2**256
04DIV5a, ba // buint256 gawanya
05SDIV5a, ba // bint256 gawanya
06MOD5a, ba % buint256 moduli
07SMOD5a, ba % bint256 moduli
08ADDMOD8a, b, N(a + b) % N(u)int256 jumlisha modulo N
09MULMOD8a, b, N(a * b) % N(u)int256 zidisha modulo N
0AEXPA1 (opens in a new tab)a, ba ** buint256 kipeo modulo 2**256
0BSIGNEXTEND5b, xSIGNEXTEND(x, b)ongeza ishara (opens in a new tab) x kutoka baiti (b+1) hadi baiti 32
0C-0Fbatili
10LT3a, ba < buint256 ndogo-kuliko
11GT3a, ba > buint256 kubwa-kuliko
12SLT3a, ba < bint256 ndogo-kuliko
13SGT3a, ba > bint256 kubwa-kuliko
14EQ3a, ba == b(u)int256 usawa
15ISZERO3aa == 0(u)int256 nisifuri
16AND3a, ba && bAND ya kibiti
17OR3a, ba || bOR ya kibiti
18XOR3a, ba ^ bXOR ya kibiti
19NOT3a~aNOT ya kibiti
1ABYTE3i, x(x >> (248 - i * 8)) && 0xFFbaiti ya i ya (u)int256 x, kutoka kushoto
1BSHL3shift, valval << shiftsogeza kushoto
1CSHR3shift, valval >> shiftsogeza kimantiki kulia
1DSAR3shift, valval >> shiftsogeza kihesabu kulia
1E-1Fbatili
20KECCAK256A2 (opens in a new tab)ost, lenkeccak256(mem[ost:ost+len-1])keccak256
21-2Fbatili
30ADDRESS2.address(this)anwani ya mkataba unaotekelezwa
31BALANCEA5 (opens in a new tab)addraddr.balancesalio, katika Wei
32ORIGIN2.tx.originanwani iliyoanzisha muamala
33CALLER2.msg.senderanwani ya mtumaji wa ujumbe
34CALLVALUE2.msg.valuethamani ya ujumbe, katika Wei
35CALLDATALOAD3idxmsg.data[idx:idx+32]soma neno kutoka kwenye data ya ujumbe kwenye faharisi idx
36CALLDATASIZE2.len(msg.data)urefu wa data ya ujumbe, katika baiti
37CALLDATACOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1]nakili data ya ujumbe
38CODESIZE2.len(this.code)urefu wa msimbo wa mkataba unaotekelezwa, katika baiti
39CODECOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1]
3AGASPRICE2.tx.gaspricebei ya gesi ya muamala, katika Wei kwa kila uniti ya gesi ** (opens in a new tab)
3BEXTCODESIZEA5 (opens in a new tab)addrlen(addr.code)ukubwa wa msimbo kwenye anwani, katika baiti
3CEXTCODECOPYA4 (opens in a new tab)addr, dstOst, ost, len.mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1]nakili msimbo kutoka addr
3DRETURNDATASIZE2.sizeukubwa wa data iliyorudishwa kutoka kwenye wito wa nje wa mwisho, katika baiti
3ERETURNDATACOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1]nakili data iliyorudishwa kutoka kwenye wito wa nje wa mwisho
3FEXTCODEHASHA5 (opens in a new tab)addrhashhash = addr.exists ? keccak256(addr.code) : 0
40BLOCKHASH20blockNumblockHash(blockNum)
41COINBASE2.block.coinbaseanwani ya mpendekezaji wa kitalu cha sasa
42TIMESTAMP2.block.timestampmhuri wa muda wa kitalu cha sasa
43NUMBER2.block.numbernambari ya kitalu cha sasa
44PREVRANDAO2.randomness beaconkinara cha unasibu
45GASLIMIT2.block.gaslimitkikomo cha gesi cha kitalu cha sasa
46CHAINID2.chain_idsukuma kitambulisho cha mnyororo (opens in a new tab) cha sasa kwenye staki
47SELFBALANCE5.address(this).balancesalio la mkataba unaotekelezwa, katika Wei
48BASEFEE2.block.basefeeada ya msingi ya kitalu cha sasa
49BLOBHASH3idxtx.blob_versioned_hashes[idx]EIP-4844 (opens in a new tab)
4ABLOBBASEFEE2.block.blobbasefeeada ya msingi ya blobu ya kitalu cha sasa (EIP-7516 (opens in a new tab))
4B-4Fbatili
50POP2_anon.ondoa kipengee kutoka juu ya staki na ukitupe
51MLOAD3* (opens in a new tab)ostmem[ost:ost+32]soma neno kutoka kwenye kumbukumbu kwenye ofseti ost
52MSTORE3* (opens in a new tab)ost, val.mem[ost:ost+32] := valandika neno kwenye kumbukumbu
53MSTORE83* (opens in a new tab)ost, val.mem[ost] := val && 0xFFandika baiti moja kwenye kumbukumbu
54SLOADA6 (opens in a new tab)keystorage[key]soma neno kutoka kwenye hifadhi
55SSTOREA7 (opens in a new tab)key, val.storage[key] := valandika neno kwenye hifadhi
56JUMP8dst.$pc := dst weka alama kwamba pc inapewa thamani tu ikiwa dst ni jumpdest halali
57JUMPI10dst, condition.$pc := condition ? dst : $pc + 1
58PC2.$pckihesabu programu
59MSIZE2.len(mem)ukubwa wa kumbukumbu katika muktadha wa utekelezaji wa sasa, katika baiti
5AGAS2.gasRemaining
5BJUMPDEST1weka alama ya kikomo halali cha kurukakikomo halali cha kuruka kwa mfano kikomo cha kuruka ambacho hakiko ndani ya data ya kusukuma
5CTLOAD100keytstorage[key]soma neno kutoka kwenye hifadhi ya muda (EIP-1153 (opens in a new tab))
5DTSTORE100key, val.tstorage[key] := valandika neno kwenye hifadhi ya muda (EIP-1153 (opens in a new tab))
5EMCOPY3+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))
5FPUSH02.uint8sukuma thamani isiyobadilika ya 0 kwenye staki
60PUSH13.uint8sukuma thamani ya baiti 1 kwenye staki
61PUSH23.uint16sukuma thamani ya baiti 2 kwenye staki
62PUSH33.uint24sukuma thamani ya baiti 3 kwenye staki
63PUSH43.uint32sukuma thamani ya baiti 4 kwenye staki
64PUSH53.uint40sukuma thamani ya baiti 5 kwenye staki
65PUSH63.uint48sukuma thamani ya baiti 6 kwenye staki
66PUSH73.uint56sukuma thamani ya baiti 7 kwenye staki
67PUSH83.uint64sukuma thamani ya baiti 8 kwenye staki
68PUSH93.uint72sukuma thamani ya baiti 9 kwenye staki
69PUSH103.uint80sukuma thamani ya baiti 10 kwenye staki
6APUSH113.uint88sukuma thamani ya baiti 11 kwenye staki
6BPUSH123.uint96sukuma thamani ya baiti 12 kwenye staki
6CPUSH133.uint104sukuma thamani ya baiti 13 kwenye staki
6DPUSH143.uint112sukuma thamani ya baiti 14 kwenye staki
6EPUSH153.uint120sukuma thamani ya baiti 15 kwenye staki
6FPUSH163.uint128sukuma thamani ya baiti 16 kwenye staki
70PUSH173.uint136sukuma thamani ya baiti 17 kwenye staki
71PUSH183.uint144sukuma thamani ya baiti 18 kwenye staki
72PUSH193.uint152sukuma thamani ya baiti 19 kwenye staki
73PUSH203.uint160sukuma thamani ya baiti 20 kwenye staki
74PUSH213.uint168sukuma thamani ya baiti 21 kwenye staki
75PUSH223.uint176sukuma thamani ya baiti 22 kwenye staki
76PUSH233.uint184sukuma thamani ya baiti 23 kwenye staki
77PUSH243.uint192sukuma thamani ya baiti 24 kwenye staki
78PUSH253.uint200sukuma thamani ya baiti 25 kwenye staki
79PUSH263.uint208sukuma thamani ya baiti 26 kwenye staki
7APUSH273.uint216sukuma thamani ya baiti 27 kwenye staki
7BPUSH283.uint224sukuma thamani ya baiti 28 kwenye staki
7CPUSH293.uint232sukuma thamani ya baiti 29 kwenye staki
7DPUSH303.uint240sukuma thamani ya baiti 30 kwenye staki
7EPUSH313.uint248sukuma thamani ya baiti 31 kwenye staki
7FPUSH323.uint256sukuma thamani ya baiti 32 kwenye staki
80DUP13aa, anakili thamani ya 1 kwenye staki
81DUP23_, aa, _, anakili thamani ya 2 kwenye staki
82DUP33_, _, aa, _, _, anakili thamani ya 3 kwenye staki
83DUP43_, _, _, aa, _, _, _, anakili thamani ya 4 kwenye staki
84DUP53..., aa, ..., anakili thamani ya 5 kwenye staki
85DUP63..., aa, ..., anakili thamani ya 6 kwenye staki
86DUP73..., aa, ..., anakili thamani ya 7 kwenye staki
87DUP83..., aa, ..., anakili thamani ya 8 kwenye staki
88DUP93..., aa, ..., anakili thamani ya 9 kwenye staki
89DUP103..., aa, ..., anakili thamani ya 10 kwenye staki
8ADUP113..., aa, ..., anakili thamani ya 11 kwenye staki
8BDUP123..., aa, ..., anakili thamani ya 12 kwenye staki
8CDUP133..., aa, ..., anakili thamani ya 13 kwenye staki
8DDUP143..., aa, ..., anakili thamani ya 14 kwenye staki
8EDUP153..., aa, ..., anakili thamani ya 15 kwenye staki
8FDUP163..., aa, ..., anakili thamani ya 16 kwenye staki
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 (opens in a new tab)ost, len.LOG0(memory[ost:ost+len-1])
A1LOG1A8 (opens in a new tab)ost, len, topic0.LOG1(memory[ost:ost+len-1], topic0)
A2LOG2A8 (opens in a new tab)ost, len, topic0, topic1.LOG2(memory[ost:ost+len-1], topic0, topic1)
A3LOG3A8 (opens in a new tab)ost, len, topic0, topic1, topic2.LOG3(memory[ost:ost+len-1], topic0, topic1, topic2)
A4LOG4A8 (opens in a new tab)ost, len, topic0, topic1, topic2, topic3.LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3)
A5-EFbatili
F0CREATEA9 (opens in a new tab)val, ost, lenaddraddr = keccak256(rlp([address(this), this.nonce]))
F1CALLAA (opens in a new tab)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F2CALLCODEAA (opens in a new tab)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] = returndatasawa na DELEGATECALL, lakini haisambazi msg.sender na msg.value ya awali
F3RETURN0* (opens in a new tab)ost, len.return mem[ost:ost+len-1]
F4DELEGATECALLAA (opens in a new tab)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F5CREATE2A9 (opens in a new tab)val, ost, len, saltaddraddr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:]
F6-F9batili
FASTATICCALLAA (opens in a new tab)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
FB-FCbatili
FDREVERT0* (opens in a new tab)ost, len.revert(mem[ost:ost+len-1])
FEINVALIDAF (opens in a new tab)msimbo wa operesheni batili ulioteuliwa - EIP-141 (opens in a new tab)
FFSELFDESTRUCTAB (opens in a new tab)addr.hutuma ETH zote kwa addr; ikitekelezwa katika muamala sawa na ule ambao mkataba uliundwa inaharibu mkataba