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

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

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

ఇంటరాక్టివ్ రిఫరెన్స్ కోసం చూస్తున్నారా? evm.codes (కొత్త ట్యాబ్‌లో తెరవబడుతుంది) ని చూడండి.

డైనమిక్ గ్యాస్ ఖర్చులతో కూడిన ఆపరేషన్ల కోసం, gas.md (కొత్త ట్యాబ్‌లో తెరవబడుతుంది) చూడండి.

💡 త్వరిత చిట్కా: మొత్తం పంక్తులను వీక్షించడానికి, డెస్క్‌టాప్‌లో అడ్డంగా స్క్రోల్ చేయడానికి [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 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)a, ba ** buint256 ఘాతాంకం మాడ్యులో 2**256
0BSIGNEXTEND5b, xSIGNEXTEND(x, b)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 ఈజ్‌జీరో
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 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, lenkeccak256(mem[ost:ost+len-1])keccak256
21-2Fచెల్లనిది
30ADDRESS2.address(this)ఎగ్జిక్యూట్ అవుతున్న కాంట్రాక్ట్ యొక్క చిరునామా
31BALANCEA5 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)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 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)dstOst, ost, len.mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1]msg డేటాను కాపీ చేస్తుంది
38CODESIZE2.len(this.code)ఎగ్జిక్యూట్ అవుతున్న కాంట్రాక్ట్ కోడ్ పొడవు, బైట్‌లలో
39CODECOPYA3 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)dstOst, ost, len.mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1]
3AGASPRICE2.tx.gaspriceలావాదేవీ యొక్క గ్యాస్ ధర, యూనిట్ గ్యాస్‌కు Wei లో ** (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)
3BEXTCODESIZEA5 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)addrlen(addr.code)addr వద్ద కోడ్ పరిమాణం, బైట్‌లలో
3CEXTCODECOPYA4 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)addr, dstOst, ost, len.mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1]addr నుండి కోడ్‌ను కాపీ చేస్తుంది
3DRETURNDATASIZE2.sizeచివరి బాహ్య కాల్ నుండి తిరిగి వచ్చిన డేటా పరిమాణం, బైట్‌లలో
3ERETURNDATACOPYA3 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)dstOst, ost, len.mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1]చివరి బాహ్య కాల్ నుండి తిరిగి వచ్చిన డేటాను కాపీ చేస్తుంది
3FEXTCODEHASHA5 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)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 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది) ని స్టాక్‌పైకి పుష్ చేస్తుంది
47SELFBALANCE5.address(this).balanceఎగ్జిక్యూట్ అవుతున్న కాంట్రాక్ట్ యొక్క బ్యాలెన్స్, Wei లో
48BASEFEE2.block.basefeeప్రస్తుత బ్లాక్ యొక్క ప్రాథమిక రుసుము
49BLOBHASH3idxtx.blob_versioned_hashes[idx]EIP-4844 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)
4ABLOBBASEFEE2.block.blobbasefeeప్రస్తుత బ్లాక్ యొక్క బ్లాబ్ ప్రాథమిక రుసుము (EIP-7516 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది))
4B-4Fచెల్లనిది
50POP2_anon.స్టాక్ పైభాగం నుండి అంశాన్ని తీసివేసి, దానిని విస్మరిస్తుంది
51MLOAD3* (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ostmem[ost:ost+32]ost ఆఫ్‌సెట్ వద్ద మెమరీ నుండి పదాన్ని చదువుతుంది
52MSTORE3* (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, val.mem[ost:ost+32] := valమెమరీకి ఒక పదాన్ని వ్రాస్తుంది
53MSTORE83* (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, val.mem[ost] := val && 0xFFమెమరీకి ఒకే బైట్‌ను వ్రాస్తుంది
54SLOADA6 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)keystorage[key]స్టోరేజ్ నుండి పదాన్ని చదువుతుంది
55SSTOREA7 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)key, val.storage[key] := valస్టోరేజ్‌కి పదాన్ని వ్రాస్తుంది
56JUMP8dst.$pc := dst dst చెల్లుబాటు అయ్యే జంప్‌డెస్ట్ అయితే మాత్రమే pc కేటాయించబడుతుందని గుర్తు చేస్తుంది
57JUMPI10dst, condition.$pc := condition ? dst : $pc + 1
58PC2.$pcప్రోగ్రామ్ కౌంటర్
59MSIZE2.len(mem)ప్రస్తుత ఎగ్జిక్యూషన్ కాంటెక్స్ట్‌లో మెమరీ పరిమాణం, బైట్‌లలో
5AGAS2.gasRemaining
5BJUMPDEST1mark valid jump destinationచెల్లుబాటు అయ్యే జంప్ గమ్యస్థానం, ఉదాహరణకు పుష్ డేటా లోపల లేని జంప్ గమ్యస్థానం
5CTLOAD100keytstorage[key]ట్రాన్సియెంట్ స్టోరేజ్ నుండి పదాన్ని చదువుతుంది (EIP-1153 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది))
5DTSTORE100key, val.tstorage[key] := valట్రాన్సియెంట్ స్టోరేజ్‌కి పదాన్ని వ్రాస్తుంది (EIP-1153 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది))
5EMCOPY3+3*words+A0 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)dstOst, ost, len.mem[dstOst] := mem[ost:ost+len]మెమరీని ఒక ప్రాంతం నుండి మరొక ప్రాంతానికి కాపీ చేస్తుంది (EIP-5656 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది))
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 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, len.LOG0(memory[ost:ost+len-1])
A1LOG1A8 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, len, topic0.LOG1(memory[ost:ost+len-1], topic0)
A2LOG2A8 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, len, topic0, topic1.LOG2(memory[ost:ost+len-1], topic0, topic1)
A3LOG3A8 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, len, topic0, topic1, topic2.LOG3(memory[ost:ost+len-1], topic0, topic1, topic2)
A4LOG4A8 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, len, topic0, topic1, topic2, topic3.LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3)
A5-EFచెల్లనిది
F0CREATEA9 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)val, ost, lenaddraddr = keccak256(rlp([address(this), this.nonce]))
F1CALLAA (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F2CALLCODEAA (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] = returndataDELEGATECALL వలె ఉంటుంది, కానీ అసలు msg.sender మరియు msg.value ని ప్రచారం చేయదు
F3RETURN0* (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, len.return mem[ost:ost+len-1]
F4DELEGATECALLAA (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F5CREATE2A9 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)val, ost, len, saltaddraddr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:]
F6-F9చెల్లనిది
FASTATICCALLAA (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
FB-FCచెల్లనిది
FDREVERT0* (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ost, len.revert(mem[ost:ost+len-1])
FEINVALIDAF (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)నిర్దేశించబడిన చెల్లని ఆప్‌కోడ్ - EIP-141 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)
FFSELFDESTRUCTAB (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)addr.మొత్తం ETH ని addr కి పంపుతుంది; కాంట్రాక్ట్ సృష్టించబడిన అదే లావాదేవీలో ఎగ్జిక్యూట్ చేయబడితే అది కాంట్రాక్ట్‌ను నాశనం చేస్తుంది