मुख्य सामग्री पर जाएँ
Change page

EVM के लिए ओपकोड्स

पेज का अंतिम अपडेट: 11 सितंबर 2025

सारांश

यह wolflo/evm-opcodes (opens in a new tab) पर EVM संदर्भ पृष्ठ का एक अद्यतन संस्करण है। इसे Yellow Paper (opens in a new tab), Jello Paper (opens in a new tab), और geth (opens in a new tab) कार्यान्वयन से भी लिया गया है। यह एक सुलभ संदर्भ होने का इरादा है, लेकिन यह विशेष रूप से कठोर नहीं है। यदि आप शुद्धता के बारे में निश्चित होना चाहते हैं और हर किनारे के मामले से अवगत होना चाहते हैं, तो जेलो पेपर या क्लाइंट कार्यान्वयन का उपयोग करना उचित है।

एक इंटरैक्टिव संदर्भ खोज रहे हैं? evm.codes (opens in a new tab) देखें।

गतिशील गैस लागत वाले संचालन के लिए, gas.md (opens in a new tab) देखें।

💡 त्वरित टिप: पूरी लाइनें देखने के लिए, डेस्कटॉप पर क्षैतिज रूप से स्क्रॉल करने के लिए [shift] + scroll का उपयोग करें।

स्टैकनामगैसप्रारंभिक स्टैकपरिणामी स्टैकMem / स्टोरेजनोट्स
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)x को (b+1) बाइट से 32 बाइट तक साइन एक्सटेंड (opens in a new tab) करें
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, 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)addrहैशहैश = 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.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स्टैक पर पहले मान का क्लोन बनाएँ
81DUP23_, aa, _, aस्टैक पर दूसरे मान का क्लोन बनाएँ
82DUP33_, _, aa, _, _, aस्टैक पर तीसरे मान का क्लोन बनाएँ
83DUP43_, _, _, aa, _, _, _, aस्टैक पर चौथे मान का क्लोन बनाएँ
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.addr पर सभी ETH भेजता है; यदि उसी लेनदेन में निष्पादित किया जाता है जिसमें एक अनुबंध बनाया गया था, तो यह अनुबंध को नष्ट कर देता है

क्या यह लेख सहायक था?