मुख्य आशयावर जा
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 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 (नवीन टॅबमध्ये उघडते)ost, lenkeccak256(mem[ost:ost+len-1])keccak256
21-2Fअवैध
30ADDRESS2.address(this)अंमलबजावणी करणाऱ्या कॉन्ट्रॅक्टचा पत्ता
31BALANCEA5 (नवीन टॅबमध्ये उघडते)addraddr.balanceशिल्लक, Wei मध्ये
32ORIGIN2.tx.originव्यवहार (tx) सुरू करणारा पत्ता
33CALLER2.msg.sendermsg पाठवणाऱ्याचा पत्ता
34CALLVALUE2.msg.valuemsg मूल्य, Wei मध्ये
35CALLDATALOAD3idxmsg.data[idx:idx+32]idx निर्देशांकावर msg डेटामधून शब्द (word) वाचा
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व्यवहाराची (tx) गॅसची किंमत, प्रति युनिट गॅस 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सध्याचा चेन आयडी (नवीन टॅबमध्ये उघडते) स्टॅकवर पुश करा
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 ऑफसेटवर मेमरीमधून शब्द (word) वाचा
52MSTORE3* (नवीन टॅबमध्ये उघडते)ost, val.mem[ost:ost+32] := valमेमरीमध्ये शब्द (word) लिहा
53MSTORE83* (नवीन टॅबमध्ये उघडते)ost, val.mem[ost] := val && 0xFFमेमरीमध्ये एकच बाइट लिहा
54SLOADA6 (नवीन टॅबमध्ये उघडते)keystorage[key]स्टोरेजमधून शब्द (word) वाचा
55SSTOREA7 (नवीन टॅबमध्ये उघडते)key, val.storage[key] := valस्टोरेजमध्ये शब्द (word) लिहा
56JUMP8dst.$pc := dst चिन्हांकित करा की pc केवळ तेव्हाच नियुक्त केला जातो जेव्हा dst एक वैध jumpdest असतो
57JUMPI10dst, condition.$pc := condition ? dst : $pc + 1
58PC2.$pcप्रोग्राम काउंटर
59MSIZE2.len(mem)सध्याच्या अंमलबजावणी संदर्भात मेमरीचा आकार, बाइट्समध्ये
5AGAS2.gasRemaining
5BJUMPDEST1वैध जंप डेस्टिनेशन चिन्हांकित कराएक वैध जंप डेस्टिनेशन उदाहरणार्थ पुश डेटाच्या आत नसलेले जंप डेस्टिनेशन
5CTLOAD100keytstorage[key]ट्रान्झिएंट स्टोरेजमधून शब्द (word) वाचा (EIP-1153 (नवीन टॅबमध्ये उघडते))
5DTSTORE100key, val.tstorage[key] := valट्रान्झिएंट स्टोरेजमध्ये शब्द (word) लिहा (EIP-1153 (नवीन टॅबमध्ये उघडते))
5EMCOPY3+3*words+A0 (नवीन टॅबमध्ये उघडते)dstOst, ost, len.mem[dstOst] := mem[ost:ost+len]एका क्षेत्रातून दुसऱ्या क्षेत्रात मेमरी कॉपी करा (EIP-5656 (नवीन टॅबमध्ये उघडते))
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 (नवीन टॅबमध्ये उघडते)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 ला पाठवते; जर कॉन्ट्रॅक्ट तयार केल्याच्या त्याच व्यवहारात अंमलात आणले गेले तर ते कॉन्ट्रॅक्ट नष्ट करते