प्रमुख मजकुराकडे जा
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 शून्य आहे
16AND3a, ba && bबिटवाईज AND
17OR3a, b`a \\b`
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.origintx सुरू करणारा पत्ता
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.gaspricetx ची गॅस किंमत, प्रति युनिट गॅस 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)addrhashहॅश = 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सध्याचा चेन आयडी (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.$pc := dst हे चिन्हांकित करते की 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.uint8स्टॅकवर 1-बाइट मूल्य पुश करतो
61PUSH23.uint16स्टॅकवर 2-बाइट मूल्य पुश करतो
62PUSH33.uint24स्टॅकवर 3-बाइट मूल्य पुश करतो
63PUSH43.uint32स्टॅकवर 4-बाइट मूल्य पुश करतो
64PUSH53.uint40स्टॅकवर 5-बाइट मूल्य पुश करतो
65PUSH63.uint48स्टॅकवर 6-बाइट मूल्य पुश करतो
66PUSH73.uint56स्टॅकवर 7-बाइट मूल्य पुश करतो
67PUSH83.uint64स्टॅकवर 8-बाइट मूल्य पुश करतो
68PUSH93.uint72स्टॅकवर 9-बाइट मूल्य पुश करतो
69PUSH103.uint80स्टॅकवर 10-बाइट मूल्य पुश करतो
6APUSH113.uint88स्टॅकवर 11-बाइट मूल्य पुश करतो
6BPUSH123.uint96स्टॅकवर 12-बाइट मूल्य पुश करतो
6CPUSH133.uint104स्टॅकवर 13-बाइट मूल्य पुश करतो
6DPUSH143.uint112स्टॅकवर 14-बाइट मूल्य पुश करतो
6EPUSH153.uint120स्टॅकवर 15-बाइट मूल्य पुश करतो
6FPUSH163.uint128स्टॅकवर 16-बाइट मूल्य पुश करतो
70PUSH173.uint136स्टॅकवर 17-बाइट मूल्य पुश करतो
71PUSH183.uint144स्टॅकवर 18-बाइट मूल्य पुश करतो
72PUSH193.uint152स्टॅकवर 19-बाइट मूल्य पुश करतो
73PUSH203.uint160स्टॅकवर 20-बाइट मूल्य पुश करतो
74PUSH213.uint168स्टॅकवर 21-बाइट मूल्य पुश करतो
75PUSH223.uint176स्टॅकवर 22-बाइट मूल्य पुश करतो
76PUSH233.uint184स्टॅकवर 23-बाइट मूल्य पुश करतो
77PUSH243.uint192स्टॅकवर 24-बाइट मूल्य पुश करतो
78PUSH253.uint200स्टॅकवर 25-बाइट मूल्य पुश करतो
79PUSH263.uint208स्टॅकवर 26-बाइट मूल्य पुश करतो
7APUSH273.uint216स्टॅकवर 27-बाइट मूल्य पुश करतो
7BPUSH283.uint224स्टॅकवर 28-बाइट मूल्य पुश करतो
7CPUSH293.uint232स्टॅकवर 29-बाइट मूल्य पुश करतो
7DPUSH303.uint240स्टॅकवर 30-बाइट मूल्य पुश करतो
7EPUSH313.uint248स्टॅकवर 31-बाइट मूल्य पुश करतो
7FPUSH323.uint256स्टॅकवर 32-बाइट मूल्य पुश करतो
80DUP13aa, aस्टॅकवरील पहिल्या मूल्याची प्रतिकृती करतो
81DUP23_, aa, _, aस्टॅकवरील दुसऱ्या मूल्याची प्रतिकृती करतो
82DUP33_, _, aa, _, _, aस्टॅकवरील तिसऱ्या मूल्याची प्रतिकृती करतो
83DUP43_, _, _, aa, _, _, _, aस्टॅकवरील चौथ्या मूल्याची प्रतिकृती करतो
84DUP53..., aa, ..., aस्टॅकवरील पाचव्या मूल्याची प्रतिकृती करतो
85DUP63..., aa, ..., aस्टॅकवरील सहाव्या मूल्याची प्रतिकृती करतो
86DUP73..., aa, ..., aस्टॅकवरील सातव्या मूल्याची प्रतिकृती करतो
87DUP83..., aa, ..., aस्टॅकवरील आठव्या मूल्याची प्रतिकृती करतो
88DUP93..., aa, ..., aस्टॅकवरील नवव्या मूल्याची प्रतिकृती करतो
89DUP103..., aa, ..., aस्टॅकवरील दहाव्या मूल्याची प्रतिकृती करतो
8ADUP113..., aa, ..., aस्टॅकवरील अकराव्या मूल्याची प्रतिकृती करतो
8BDUP123..., aa, ..., aस्टॅकवरील बाराव्या मूल्याची प्रतिकृती करतो
8CDUP133..., aa, ..., aस्टॅकवरील तेराव्या मूल्याची प्रतिकृती करतो
8DDUP143..., aa, ..., aस्टॅकवरील चौदाव्या मूल्याची प्रतिकृती करतो
8EDUP153..., aa, ..., aस्टॅकवरील पंधराव्या मूल्याची प्रतिकृती करतो
8FDUP163..., aa, ..., aस्टॅकवरील सोळाव्या मूल्याची प्रतिकृती करतो
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 ला पाठवते; जर करार तयार केलेल्या त्याच व्यवहारात कार्यान्वित केले तर ते करार नष्ट करते

हा लेख उपयुक्त होता का?