ప్రధాన కంటెంట్‌కు దాటవేయి
Change page

EVM కోసం ఆప్‌కోడ్‌లు

అవలోకనం

ఇది wolflo/evm-opcodes (opens in a new tab) వద్ద ఉన్న EVM రిఫరెన్స్ పేజీ యొక్క నవీకరించబడిన వెర్షన్. అలాగే ఎల్లో పేపర్ (opens in a new tab), జెల్లో పేపర్ (opens in a new tab) మరియు గో ఇథీరియం (గెత్) (opens in a new tab) ఇంప్లిమెంటేషన్ నుండి కూడా తీసుకోబడింది. ఇది సులభంగా అర్థమయ్యే రిఫరెన్స్‌గా ఉద్దేశించబడింది, కానీ ఇది మరీ అంత కచ్చితమైనది కాదు. మీరు కచ్చితత్వం గురించి నిర్ధారించుకోవాలనుకుంటే మరియు ప్రతి ఎడ్జ్ కేసు గురించి తెలుసుకోవాలనుకుంటే, జెల్లో పేపర్ లేదా క్లయింట్ ఇంప్లిమెంటేషన్‌ను ఉపయోగించడం మంచిది.

ఇంటరాక్టివ్ రిఫరెన్స్ కోసం చూస్తున్నారా? evm.codes (opens in a new tab)ని చూడండి.

డైనమిక్ గ్యాస్ ఖర్చులతో కూడిన ఆపరేషన్ల కోసం, gas.md (opens in a new tab)ని చూడండి.

💡 త్వరిత చిట్కా: మొత్తం లైన్‌లను వీక్షించడానికి, డెస్క్‌టాప్‌లో అడ్డంగా స్క్రోల్ చేయడానికి [shift] + scrollని ఉపయోగించండి.

స్టాక్పేరుగ్యాస్ప్రారంభ స్టాక్ఫలిత స్టాక్మెమరీ / స్టోరేజ్గమనికలు
00STOP0అమలును నిలిపివేస్తుంది
01ADD3a, ba + b(u)int256 కూడిక మాడ్యులో 2**256
02MUL5a, ba * b(u)int256 గుణకారం మాడ్యులో 2**256
03SUB3a, ba - b(u)int256 తీసివేత మాడ్యులో 2**256
04DIV5a, ba // buint256 భాగహారం
05SDIV5a, ba // bint256 భాగహారం
06MOD5a, ba % buint256 మాడ్యులస్
07SMOD5a, ba % bint256 మాడ్యులస్
08ADDMOD8a, b, N(a + b) % N(u)int256 కూడిక మాడ్యులో N
09MULMOD8a, b, N(a * b) % N(u)int256 గుణకారం మాడ్యులో N
0AEXPA1 (opens in a new tab)a, ba ** buint256 ఘాతాంకం మాడ్యులో 2**256
0BSIGNEXTEND5b, xSIGNEXTEND(x, b)సైన్ ఎక్స్‌టెండ్ (opens in a new tab) x (b+1) బైట్‌ల నుండి 32 బైట్‌లకు
0C-0Fచెల్లనిది
10LT3a, ba < buint256 కంటే తక్కువ
11GT3a, ba > buint256 కంటే ఎక్కువ
12SLT3a, ba < bint256 కంటే తక్కువ
13SGT3a, ba > bint256 కంటే ఎక్కువ
14EQ3a, ba == b(u)int256 సమానత్వం
15ISZERO3aa == 0(u)int256 iszero
16AND3a, ba && bబిట్‌వైజ్ AND
17OR3a, ba || bబిట్‌వైజ్ OR
18XOR3a, ba ^ bబిట్‌వైజ్ XOR
19NOT3a~aబిట్‌వైజ్ NOT
1ABYTE3i, x(x >> (248 - i * 8)) && 0xFFఎడమ వైపు నుండి (u)int256 x యొక్క iవ బైట్
1BSHL3shift, valval << shiftఎడమకు షిఫ్ట్ చేయండి
1CSHR3shift, valval >> shiftలాజికల్ షిఫ్ట్ రైట్
1DSAR3shift, valval >> shiftఅరిథ్‌మెటిక్ షిఫ్ట్ రైట్
1E-1Fచెల్లనిది
20KECCAK256A2 (opens in a new tab)ost, lenkeccak256(mem[ost:ost+len-1])keccak256
21-2Fచెల్లనిది
30ADDRESS2.address(this)అమలవుతున్న కాంట్రాక్ట్ యొక్క చిరునామా
31BALANCEA5 (opens in a new tab)addraddr.balanceబ్యాలెన్స్, Wei లో
32ORIGIN2.tx.originలావాదేవీని ప్రారంభించిన చిరునామా
33CALLER2.msg.sendermsg పంపినవారి చిరునామా
34CALLVALUE2.msg.valuemsg విలువ, Wei లో
35CALLDATALOAD3idxmsg.data[idx:idx+32]సూచిక idx వద్ద msg డేటా నుండి పదాన్ని చదవండి
36CALLDATASIZE2.len(msg.data)msg డేటా పొడవు, బైట్‌లలో
37CALLDATACOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1]msg డేటాను కాపీ చేయండి
38CODESIZE2.len(this.code)అమలవుతున్న కాంట్రాక్ట్ కోడ్ పొడవు, బైట్‌లలో
39CODECOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1]
3AGASPRICE2.tx.gaspriceలావాదేవీ యొక్క గ్యాస్ ధర, యూనిట్ గ్యాస్‌కు Wei లో ** (opens in a new tab)
3BEXTCODESIZEA5 (opens in a new tab)addrlen(addr.code)addr వద్ద కోడ్ పరిమాణం, బైట్‌లలో
3CEXTCODECOPYA4 (opens in a new tab)addr, dstOst, ost, len.mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1]addr నుండి కోడ్‌ను కాపీ చేయండి
3DRETURNDATASIZE2.sizeచివరి బాహ్య కాల్ నుండి తిరిగి వచ్చిన డేటా పరిమాణం, బైట్‌లలో
3ERETURNDATACOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1]చివరి బాహ్య కాల్ నుండి తిరిగి వచ్చిన డేటాను కాపీ చేయండి
3FEXTCODEHASHA5 (opens in a new tab)addrhashhash = addr.exists ? keccak256(addr.code) : 0
40BLOCKHASH20blockNumblockHash(blockNum)
41COINBASE2.block.coinbaseప్రస్తుత బ్లాక్ యొక్క ప్రతిపాదకుడు చిరునామా
42TIMESTAMP2.block.timestampప్రస్తుత బ్లాక్ యొక్క టైమ్‌స్టాంప్
43NUMBER2.block.numberప్రస్తుత బ్లాక్ సంఖ్య
44PREVRANDAO2.randomness beaconయాదృచ్ఛికత బీకాన్
45GASLIMIT2.block.gaslimitప్రస్తుత బ్లాక్ యొక్క గ్యాస్ పరిమితి
46CHAINID2.chain_idప్రస్తుత చైన్ id (opens in a new tab)ని స్టాక్‌పైకి పుష్ చేయండి
47SELFBALANCE5.address(this).balanceఅమలవుతున్న కాంట్రాక్ట్ యొక్క బ్యాలెన్స్, Wei లో
48BASEFEE2.block.basefeeప్రస్తుత బ్లాక్ యొక్క ప్రాథమిక రుసుము
49BLOBHASH3idxtx.blob_versioned_hashes[idx]EIP-4844 (opens in a new tab)
4ABLOBBASEFEE2.block.blobbasefeeప్రస్తుత బ్లాక్ యొక్క బ్లాబ్ ప్రాథమిక రుసుము (EIP-7516 (opens in a new tab))
4B-4Fచెల్లనిది
50POP2_anon.స్టాక్ పైభాగం నుండి అంశాన్ని తీసివేసి, దాన్ని విస్మరించండి
51MLOAD3* (opens in a new tab)ostmem[ost:ost+32]ఆఫ్‌సెట్ ost వద్ద మెమరీ నుండి పదాన్ని చదవండి
52MSTORE3* (opens in a new tab)ost, val.mem[ost:ost+32] := valమెమరీకి ఒక పదాన్ని రాయండి
53MSTORE83* (opens in a new tab)ost, val.mem[ost] := val && 0xFFమెమరీకి ఒకే బైట్‌ను రాయండి
54SLOADA6 (opens in a new tab)keystorage[key]స్టోరేజ్ నుండి పదాన్ని చదవండి
55SSTOREA7 (opens in a new tab)key, val.storage[key] := valస్టోరేజ్‌కి పదాన్ని రాయండి
56JUMP8dst.dst చెల్లుబాటు అయ్యే jumpdest అయితే మాత్రమే pc కేటాయించబడుతుందని $pc := dst సూచిస్తుంది
57JUMPI10dst, condition.$pc := condition ? dst : $pc + 1
58PC2.$pcప్రోగ్రామ్ కౌంటర్
59MSIZE2.len(mem)ప్రస్తుత అమలు సందర్భంలో మెమరీ పరిమాణం, బైట్‌లలో
5AGAS2.gasRemaining
5BJUMPDEST1చెల్లుబాటు అయ్యే జంప్ గమ్యాన్ని గుర్తించండిచెల్లుబాటు అయ్యే జంప్ గమ్యం, ఉదాహరణకు పుష్ డేటా లోపల లేని జంప్ గమ్యం
5CTLOAD100keytstorage[key]ట్రాన్సియెంట్ స్టోరేజ్ నుండి పదాన్ని చదవండి (EIP-1153 (opens in a new tab))
5DTSTORE100key, val.tstorage[key] := valట్రాన్సియెంట్ స్టోరేజ్‌కి పదాన్ని రాయండి (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]మెమరీని ఒక ప్రాంతం నుండి మరొక ప్రాంతానికి కాపీ చేయండి (EIP-5656 (opens in a new tab))
5FPUSH02.uint8స్థిర విలువ 0ని స్టాక్‌పైకి పుష్ చేయండి
60PUSH13.uint81-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
61PUSH23.uint162-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
62PUSH33.uint243-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
63PUSH43.uint324-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
64PUSH53.uint405-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
65PUSH63.uint486-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
66PUSH73.uint567-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
67PUSH83.uint648-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
68PUSH93.uint729-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
69PUSH103.uint8010-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
6APUSH113.uint8811-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
6BPUSH123.uint9612-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
6CPUSH133.uint10413-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
6DPUSH143.uint11214-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
6EPUSH153.uint12015-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
6FPUSH163.uint12816-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
70PUSH173.uint13617-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
71PUSH183.uint14418-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
72PUSH193.uint15219-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
73PUSH203.uint16020-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
74PUSH213.uint16821-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
75PUSH223.uint17622-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
76PUSH233.uint18423-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
77PUSH243.uint19224-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
78PUSH253.uint20025-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
79PUSH263.uint20826-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
7APUSH273.uint21627-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
7BPUSH283.uint22428-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
7CPUSH293.uint23229-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
7DPUSH303.uint24030-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
7EPUSH313.uint24831-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
7FPUSH323.uint25632-బైట్ విలువను స్టాక్‌పైకి పుష్ చేయండి
80DUP13aa, aస్టాక్‌లోని 1వ విలువను క్లోన్ చేయండి
81DUP23_, aa, _, aస్టాక్‌లోని 2వ విలువను క్లోన్ చేయండి
82DUP33_, _, aa, _, _, aస్టాక్‌లోని 3వ విలువను క్లోన్ చేయండి
83DUP43_, _, _, aa, _, _, _, aస్టాక్‌లోని 4వ విలువను క్లోన్ చేయండి
84DUP53..., aa, ..., aస్టాక్‌లోని 5వ విలువను క్లోన్ చేయండి
85DUP63..., aa, ..., aస్టాక్‌లోని 6వ విలువను క్లోన్ చేయండి
86DUP73..., aa, ..., aస్టాక్‌లోని 7వ విలువను క్లోన్ చేయండి
87DUP83..., aa, ..., aస్టాక్‌లోని 8వ విలువను క్లోన్ చేయండి
88DUP93..., aa, ..., aస్టాక్‌లోని 9వ విలువను క్లోన్ చేయండి
89DUP103..., aa, ..., aస్టాక్‌లోని 10వ విలువను క్లోన్ చేయండి
8ADUP113..., aa, ..., aస్టాక్‌లోని 11వ విలువను క్లోన్ చేయండి
8BDUP123..., aa, ..., aస్టాక్‌లోని 12వ విలువను క్లోన్ చేయండి
8CDUP133..., aa, ..., aస్టాక్‌లోని 13వ విలువను క్లోన్ చేయండి
8DDUP143..., aa, ..., aస్టాక్‌లోని 14వ విలువను క్లోన్ చేయండి
8EDUP153..., aa, ..., aస్టాక్‌లోని 15వ విలువను క్లోన్ చేయండి
8FDUP163..., aa, ..., aస్టాక్‌లోని 16వ విలువను క్లోన్ చేయండి
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-EFచెల్లనిది
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] = returndataDELEGATECALL వలె ఉంటుంది, కానీ అసలు msg.sender మరియు msg.value ని ప్రచారం చేయదు
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-F9చెల్లనిది
FASTATICCALLAA (opens in a new tab)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
FB-FCచెల్లనిది
FDREVERT0* (opens in a new tab)ost, len.revert(mem[ost:ost+len-1])
FEINVALIDAF (opens in a new tab)నిర్దేశించబడిన చెల్లని ఆప్‌కోడ్ - EIP-141 (opens in a new tab)
FFSELFDESTRUCTAB (opens in a new tab)addr.అన్ని ETH లను addr కి పంపుతుంది; కాంట్రాక్ట్ సృష్టించబడిన అదే లావాదేవీలో అమలు చేయబడితే అది కాంట్రాక్ట్‌ను నాశనం చేస్తుంది