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

EVM के लिए ऑपकोड

अवलोकन

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

क्या आप एक इंटरैक्टिव संदर्भ की तलाश में हैं? 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, 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वह पता जिसने लेन-देन (tx) उत्पन्न किया
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लेन-देन (tx) का गैस मूल्य, प्रति यूनिट गैस 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वर्तमान चेन आईडी (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 एक वैध jumpdest हो
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स्टैक पर 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 को भेजता है; यदि उसी लेन-देन में निष्पादित किया जाता है जिसमें अनुबंध बनाया गया था, तो यह अनुबंध को नष्ट कर देता है