मुख्य आशयावर जा
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) अंमलबजावणीमधून घेतलेले आहे. हा एक सुलभ संदर्भ असावा असा उद्देश आहे, परंतु तो अत्यंत सखोल नाही. जर तुम्हाला अचूकतेची खात्री हवी असेल आणि प्रत्येक एज केसची माहिती हवी असेल, तर जेलो पेपर किंवा क्लायंट अंमलबजावणी वापरण्याचा सल्ला दिला जातो.

संवादात्मक संदर्भ शोधत आहात? evm.codes (opens in a new tab) तपासा.

डायनॅमिक गॅस खर्चासह ऑपरेशन्ससाठी, gas.md (opens in a new tab) पहा.

💡 एक छोटी टिप: संपूर्ण ओळी पाहण्यासाठी, डेस्कटॉपवर क्षैतिज स्क्रोल करण्यासाठी [shift] + scroll वापरा.

StackNameGasInitial StackResulting StackMem / StorageNotes
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सध्याचा चेन आयडी (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स्टॅकवरील 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 ला पाठवते; जर कॉन्ट्रॅक्ट तयार केल्याच्या त्याच व्यवहारात अंमलात आणले गेले तर ते कॉन्ट्रॅक्ट नष्ट करते