EVM साठी ऑपकोड्स
विहंगावलोकन
ही wolflo/evm-opcodes (नवीन टॅबमध्ये उघडते) वरील EVM संदर्भ पृष्ठाची अद्ययावत आवृत्ती आहे. तसेच येलो पेपर (नवीन टॅबमध्ये उघडते), Jello Paper (नवीन टॅबमध्ये उघडते), आणि geth (नवीन टॅबमध्ये उघडते) अंमलबजावणीमधून घेतलेले आहे. हा एक सुलभ संदर्भ असावा असा उद्देश आहे, परंतु तो अत्यंत सखोल नाही. जर तुम्हाला अचूकतेची खात्री हवी असेल आणि प्रत्येक एज केसची माहिती हवी असेल, तर Jello Paper किंवा क्लायंट अंमलबजावणी वापरण्याचा सल्ला दिला जातो.
परस्परसंवादी संदर्भ शोधत आहात? evm.codes (नवीन टॅबमध्ये उघडते) तपासा.
डायनॅमिक गॅस खर्चासह ऑपरेशन्ससाठी, gas.md (नवीन टॅबमध्ये उघडते) पहा.
💡 त्वरित टिप: संपूर्ण ओळी पाहण्यासाठी, डेस्कटॉपवर क्षैतिज स्क्रोल करण्यासाठी [shift] + scroll वापरा.
| स्टॅक | नाव | गॅस | प्रारंभिक स्टॅक | परिणामी स्टॅक | मेमरी / स्टोरेज | टिपा |
|---|---|---|---|---|---|---|
| 00 | STOP | 0 | अंमलबजावणी थांबवा | |||
| 01 | ADD | 3 | a, b | a + b | (u)int256 बेरीज मॉड्युलो 2**256 | |
| 02 | MUL | 5 | a, b | a * b | (u)int256 गुणाकार मॉड्युलो 2**256 | |
| 03 | SUB | 3 | a, b | a - b | (u)int256 वजाबाकी मॉड्युलो 2**256 | |
| 04 | DIV | 5 | a, b | a // b | uint256 भागाकार | |
| 05 | SDIV | 5 | a, b | a // b | int256 भागाकार | |
| 06 | MOD | 5 | a, b | a % b | uint256 मॉड्युलस | |
| 07 | SMOD | 5 | a, b | a % b | int256 मॉड्युलस | |
| 08 | ADDMOD | 8 | a, b, N | (a + b) % N | (u)int256 बेरीज मॉड्युलो N | |
| 09 | MULMOD | 8 | a, b, N | (a * b) % N | (u)int256 गुणाकार मॉड्युलो N | |
| 0A | EXP | A1 (नवीन टॅबमध्ये उघडते) | a, b | a ** b | uint256 घातांक मॉड्युलो 2**256 | |
| 0B | SIGNEXTEND | 5 | b, x | SIGNEXTEND(x, b) | x ला (b+1) बाइट्सवरून 32 बाइट्सपर्यंत साइन एक्सटेंड (नवीन टॅबमध्ये उघडते) करा | |
| 0C-0F | अवैध | |||||
| 10 | LT | 3 | a, b | a < b | uint256 पेक्षा कमी | |
| 11 | GT | 3 | a, b | a > b | uint256 पेक्षा जास्त | |
| 12 | SLT | 3 | a, b | a < b | int256 पेक्षा कमी | |
| 13 | SGT | 3 | a, b | a > b | int256 पेक्षा जास्त | |
| 14 | EQ | 3 | a, b | a == b | (u)int256 समानता | |
| 15 | ISZERO | 3 | a | a == 0 | (u)int256 iszero | |
| 16 | AND | 3 | a, b | a && b | बिटवाइज AND | |
| 17 | OR | 3 | a, b | a || b | बिटवाइज OR | |
| 18 | XOR | 3 | a, b | a ^ b | बिटवाइज XOR | |
| 19 | NOT | 3 | a | ~a | बिटवाइज NOT | |
| 1A | BYTE | 3 | i, x | (x >> (248 - i * 8)) && 0xFF | (u)int256 x चा i वा बाइट, डावीकडून | |
| 1B | SHL | 3 | shift, val | val << shift | शिफ्ट लेफ्ट | |
| 1C | SHR | 3 | shift, val | val >> shift | लॉजिकल शिफ्ट राईट | |
| 1D | SAR | 3 | shift, val | val >> shift | अरिथमॅटिक शिफ्ट राईट | |
| 1E-1F | अवैध | |||||
| 20 | KECCAK256 | A2 (नवीन टॅबमध्ये उघडते) | ost, len | keccak256(mem[ost:ost+len-1]) | keccak256 | |
| 21-2F | अवैध | |||||
| 30 | ADDRESS | 2 | . | address(this) | अंमलबजावणी करणाऱ्या कॉन्ट्रॅक्टचा पत्ता | |
| 31 | BALANCE | A5 (नवीन टॅबमध्ये उघडते) | addr | addr.balance | शिल्लक, Wei मध्ये | |
| 32 | ORIGIN | 2 | . | tx.origin | व्यवहार (tx) सुरू करणारा पत्ता | |
| 33 | CALLER | 2 | . | msg.sender | msg पाठवणाऱ्याचा पत्ता | |
| 34 | CALLVALUE | 2 | . | msg.value | msg मूल्य, Wei मध्ये | |
| 35 | CALLDATALOAD | 3 | idx | msg.data[idx:idx+32] | idx निर्देशांकावर msg डेटामधून शब्द (word) वाचा | |
| 36 | CALLDATASIZE | 2 | . | len(msg.data) | msg डेटाची लांबी, बाइट्समध्ये | |
| 37 | CALLDATACOPY | A3 (नवीन टॅबमध्ये उघडते) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | msg डेटा कॉपी करा |
| 38 | CODESIZE | 2 | . | len(this.code) | अंमलबजावणी करणाऱ्या कॉन्ट्रॅक्टच्या कोडची लांबी, बाइट्समध्ये | |
| 39 | CODECOPY | A3 (नवीन टॅबमध्ये उघडते) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | |
| 3A | GASPRICE | 2 | . | tx.gasprice | व्यवहाराची (tx) गॅसची किंमत, प्रति युनिट गॅस Wei मध्ये ** (नवीन टॅबमध्ये उघडते) | |
| 3B | EXTCODESIZE | A5 (नवीन टॅबमध्ये उघडते) | addr | len(addr.code) | addr वरील कोडचा आकार, बाइट्समध्ये | |
| 3C | EXTCODECOPY | A4 (नवीन टॅबमध्ये उघडते) | addr, dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | addr वरून कोड कॉपी करा |
| 3D | RETURNDATASIZE | 2 | . | size | शेवटच्या बाह्य कॉलमधून परत आलेल्या डेटाचा आकार, बाइट्समध्ये | |
| 3E | RETURNDATACOPY | A3 (नवीन टॅबमध्ये उघडते) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | शेवटच्या बाह्य कॉलमधून परत आलेला डेटा कॉपी करा |
| 3F | EXTCODEHASH | A5 (नवीन टॅबमध्ये उघडते) | addr | hash | hash = addr.exists ? keccak256(addr.code) : 0 | |
| 40 | BLOCKHASH | 20 | blockNum | blockHash(blockNum) | ||
| 41 | COINBASE | 2 | . | block.coinbase | सध्याच्या ब्लॉकच्या प्रस्तावकाचा पत्ता | |
| 42 | TIMESTAMP | 2 | . | block.timestamp | सध्याच्या ब्लॉकचा टाइमस्टॅम्प | |
| 43 | NUMBER | 2 | . | block.number | सध्याच्या ब्लॉकचा क्रमांक | |
| 44 | PREVRANDAO | 2 | . | randomness beacon | यादृच्छिकता बीकन | |
| 45 | GASLIMIT | 2 | . | block.gaslimit | सध्याच्या ब्लॉकची गॅस मर्यादा | |
| 46 | CHAINID | 2 | . | chain_id | सध्याचा चेन आयडी (नवीन टॅबमध्ये उघडते) स्टॅकवर पुश करा | |
| 47 | SELFBALANCE | 5 | . | address(this).balance | अंमलबजावणी करणाऱ्या कॉन्ट्रॅक्टची शिल्लक, Wei मध्ये | |
| 48 | BASEFEE | 2 | . | block.basefee | सध्याच्या ब्लॉकचे पायाभूत शुल्क | |
| 49 | BLOBHASH | 3 | idx | tx.blob_versioned_hashes[idx] | EIP-4844 (नवीन टॅबमध्ये उघडते) | |
| 4A | BLOBBASEFEE | 2 | . | block.blobbasefee | सध्याच्या ब्लॉकचे ब्लॉब पायाभूत शुल्क (EIP-7516 (नवीन टॅबमध्ये उघडते)) | |
| 4B-4F | अवैध | |||||
| 50 | POP | 2 | _anon | . | स्टॅकच्या वरून आयटम काढा आणि तो टाकून द्या | |
| 51 | MLOAD | 3* (नवीन टॅबमध्ये उघडते) | ost | mem[ost:ost+32] | ost ऑफसेटवर मेमरीमधून शब्द (word) वाचा | |
| 52 | MSTORE | 3* (नवीन टॅबमध्ये उघडते) | ost, val | . | mem[ost:ost+32] := val | मेमरीमध्ये शब्द (word) लिहा |
| 53 | MSTORE8 | 3* (नवीन टॅबमध्ये उघडते) | ost, val | . | mem[ost] := val && 0xFF | मेमरीमध्ये एकच बाइट लिहा |
| 54 | SLOAD | A6 (नवीन टॅबमध्ये उघडते) | key | storage[key] | स्टोरेजमधून शब्द (word) वाचा | |
| 55 | SSTORE | A7 (नवीन टॅबमध्ये उघडते) | key, val | . | storage[key] := val | स्टोरेजमध्ये शब्द (word) लिहा |
| 56 | JUMP | 8 | dst | . | $pc := dst चिन्हांकित करा की pc केवळ तेव्हाच नियुक्त केला जातो जेव्हा dst एक वैध jumpdest असतो | |
| 57 | JUMPI | 10 | dst, condition | . | $pc := condition ? dst : $pc + 1 | |
| 58 | PC | 2 | . | $pc | प्रोग्राम काउंटर | |
| 59 | MSIZE | 2 | . | len(mem) | सध्याच्या अंमलबजावणी संदर्भात मेमरीचा आकार, बाइट्समध्ये | |
| 5A | GAS | 2 | . | gasRemaining | ||
| 5B | JUMPDEST | 1 | वैध जंप डेस्टिनेशन चिन्हांकित करा | एक वैध जंप डेस्टिनेशन उदाहरणार्थ पुश डेटाच्या आत नसलेले जंप डेस्टिनेशन | ||
| 5C | TLOAD | 100 | key | tstorage[key] | ट्रान्झिएंट स्टोरेजमधून शब्द (word) वाचा (EIP-1153 (नवीन टॅबमध्ये उघडते)) | |
| 5D | TSTORE | 100 | key, val | . | tstorage[key] := val | ट्रान्झिएंट स्टोरेजमध्ये शब्द (word) लिहा (EIP-1153 (नवीन टॅबमध्ये उघडते)) |
| 5E | MCOPY | 3+3*words+A0 (नवीन टॅबमध्ये उघडते) | dstOst, ost, len | . | mem[dstOst] := mem[ost:ost+len] | एका क्षेत्रातून दुसऱ्या क्षेत्रात मेमरी कॉपी करा (EIP-5656 (नवीन टॅबमध्ये उघडते)) |
| 5F | PUSH0 | 2 | . | uint8 | स्टॅकवर 0 हे स्थिर मूल्य पुश करा | |
| 60 | PUSH1 | 3 | . | uint8 | स्टॅकवर 1-बाइट मूल्य पुश करा | |
| 61 | PUSH2 | 3 | . | uint16 | स्टॅकवर 2-बाइट मूल्य पुश करा | |
| 62 | PUSH3 | 3 | . | uint24 | स्टॅकवर 3-बाइट मूल्य पुश करा | |
| 63 | PUSH4 | 3 | . | uint32 | स्टॅकवर 4-बाइट मूल्य पुश करा | |
| 64 | PUSH5 | 3 | . | uint40 | स्टॅकवर 5-बाइट मूल्य पुश करा | |
| 65 | PUSH6 | 3 | . | uint48 | स्टॅकवर 6-बाइट मूल्य पुश करा | |
| 66 | PUSH7 | 3 | . | uint56 | स्टॅकवर 7-बाइट मूल्य पुश करा | |
| 67 | PUSH8 | 3 | . | uint64 | स्टॅकवर 8-बाइट मूल्य पुश करा | |
| 68 | PUSH9 | 3 | . | uint72 | स्टॅकवर 9-बाइट मूल्य पुश करा | |
| 69 | PUSH10 | 3 | . | uint80 | स्टॅकवर 10-बाइट मूल्य पुश करा | |
| 6A | PUSH11 | 3 | . | uint88 | स्टॅकवर 11-बाइट मूल्य पुश करा | |
| 6B | PUSH12 | 3 | . | uint96 | स्टॅकवर 12-बाइट मूल्य पुश करा | |
| 6C | PUSH13 | 3 | . | uint104 | स्टॅकवर 13-बाइट मूल्य पुश करा | |
| 6D | PUSH14 | 3 | . | uint112 | स्टॅकवर 14-बाइट मूल्य पुश करा | |
| 6E | PUSH15 | 3 | . | uint120 | स्टॅकवर 15-बाइट मूल्य पुश करा | |
| 6F | PUSH16 | 3 | . | uint128 | स्टॅकवर 16-बाइट मूल्य पुश करा | |
| 70 | PUSH17 | 3 | . | uint136 | स्टॅकवर 17-बाइट मूल्य पुश करा | |
| 71 | PUSH18 | 3 | . | uint144 | स्टॅकवर 18-बाइट मूल्य पुश करा | |
| 72 | PUSH19 | 3 | . | uint152 | स्टॅकवर 19-बाइट मूल्य पुश करा | |
| 73 | PUSH20 | 3 | . | uint160 | स्टॅकवर 20-बाइट मूल्य पुश करा | |
| 74 | PUSH21 | 3 | . | uint168 | स्टॅकवर 21-बाइट मूल्य पुश करा | |
| 75 | PUSH22 | 3 | . | uint176 | स्टॅकवर 22-बाइट मूल्य पुश करा | |
| 76 | PUSH23 | 3 | . | uint184 | स्टॅकवर 23-बाइट मूल्य पुश करा | |
| 77 | PUSH24 | 3 | . | uint192 | स्टॅकवर 24-बाइट मूल्य पुश करा | |
| 78 | PUSH25 | 3 | . | uint200 | स्टॅकवर 25-बाइट मूल्य पुश करा | |
| 79 | PUSH26 | 3 | . | uint208 | स्टॅकवर 26-बाइट मूल्य पुश करा | |
| 7A | PUSH27 | 3 | . | uint216 | स्टॅकवर 27-बाइट मूल्य पुश करा | |
| 7B | PUSH28 | 3 | . | uint224 | स्टॅकवर 28-बाइट मूल्य पुश करा | |
| 7C | PUSH29 | 3 | . | uint232 | स्टॅकवर 29-बाइट मूल्य पुश करा | |
| 7D | PUSH30 | 3 | . | uint240 | स्टॅकवर 30-बाइट मूल्य पुश करा | |
| 7E | PUSH31 | 3 | . | uint248 | स्टॅकवर 31-बाइट मूल्य पुश करा | |
| 7F | PUSH32 | 3 | . | uint256 | स्टॅकवर 32-बाइट मूल्य पुश करा | |
| 80 | DUP1 | 3 | a | a, a | स्टॅकवरील 1 ले मूल्य क्लोन करा | |
| 81 | DUP2 | 3 | _, a | a, _, a | स्टॅकवरील 2 रे मूल्य क्लोन करा | |
| 82 | DUP3 | 3 | _, _, a | a, _, _, a | स्टॅकवरील 3 रे मूल्य क्लोन करा | |
| 83 | DUP4 | 3 | _, _, _, a | a, _, _, _, a | स्टॅकवरील 4 थे मूल्य क्लोन करा | |
| 84 | DUP5 | 3 | ..., a | a, ..., a | स्टॅकवरील 5 वे मूल्य क्लोन करा | |
| 85 | DUP6 | 3 | ..., a | a, ..., a | स्टॅकवरील 6 वे मूल्य क्लोन करा | |
| 86 | DUP7 | 3 | ..., a | a, ..., a | स्टॅकवरील 7 वे मूल्य क्लोन करा | |
| 87 | DUP8 | 3 | ..., a | a, ..., a | स्टॅकवरील 8 वे मूल्य क्लोन करा | |
| 88 | DUP9 | 3 | ..., a | a, ..., a | स्टॅकवरील 9 वे मूल्य क्लोन करा | |
| 89 | DUP10 | 3 | ..., a | a, ..., a | स्टॅकवरील 10 वे मूल्य क्लोन करा | |
| 8A | DUP11 | 3 | ..., a | a, ..., a | स्टॅकवरील 11 वे मूल्य क्लोन करा | |
| 8B | DUP12 | 3 | ..., a | a, ..., a | स्टॅकवरील 12 वे मूल्य क्लोन करा | |
| 8C | DUP13 | 3 | ..., a | a, ..., a | स्टॅकवरील 13 वे मूल्य क्लोन करा | |
| 8D | DUP14 | 3 | ..., a | a, ..., a | स्टॅकवरील 14 वे मूल्य क्लोन करा | |
| 8E | DUP15 | 3 | ..., a | a, ..., a | स्टॅकवरील 15 वे मूल्य क्लोन करा | |
| 8F | DUP16 | 3 | ..., a | a, ..., a | स्टॅकवरील 16 वे मूल्य क्लोन करा | |
| 90 | SWAP1 | 3 | a, b | b, a | ||
| 91 | SWAP2 | 3 | a, _, b | b, _, a | ||
| 92 | SWAP3 | 3 | a, _, _, b | b, _, _, a | ||
| 93 | SWAP4 | 3 | a, _, _, _, b | b, _, _, _, a | ||
| 94 | SWAP5 | 3 | a, ..., b | b, ..., a | ||
| 95 | SWAP6 | 3 | a, ..., b | b, ..., a | ||
| 96 | SWAP7 | 3 | a, ..., b | b, ..., a | ||
| 97 | SWAP8 | 3 | a, ..., b | b, ..., a | ||
| 98 | SWAP9 | 3 | a, ..., b | b, ..., a | ||
| 99 | SWAP10 | 3 | a, ..., b | b, ..., a | ||
| 9A | SWAP11 | 3 | a, ..., b | b, ..., a | ||
| 9B | SWAP12 | 3 | a, ..., b | b, ..., a | ||
| 9C | SWAP13 | 3 | a, ..., b | b, ..., a | ||
| 9D | SWAP14 | 3 | a, ..., b | b, ..., a | ||
| 9E | SWAP15 | 3 | a, ..., b | b, ..., a | ||
| 9F | SWAP16 | 3 | a, ..., b | b, ..., a | ||
| A0 | LOG0 | A8 (नवीन टॅबमध्ये उघडते) | ost, len | . | LOG0(memory[ost:ost+len-1]) | |
| A1 | LOG1 | A8 (नवीन टॅबमध्ये उघडते) | ost, len, topic0 | . | LOG1(memory[ost:ost+len-1], topic0) | |
| A2 | LOG2 | A8 (नवीन टॅबमध्ये उघडते) | ost, len, topic0, topic1 | . | LOG2(memory[ost:ost+len-1], topic0, topic1) | |
| A3 | LOG3 | A8 (नवीन टॅबमध्ये उघडते) | ost, len, topic0, topic1, topic2 | . | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | |
| A4 | LOG4 | A8 (नवीन टॅबमध्ये उघडते) | ost, len, topic0, topic1, topic2, topic3 | . | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | |
| A5-EF | अवैध | |||||
| F0 | CREATE | A9 (नवीन टॅबमध्ये उघडते) | val, ost, len | addr | addr = keccak256(rlp([address(this), this.nonce])) | |
| F1 | CALL | AA (नवीन टॅबमध्ये उघडते) | gas, addr, val, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| F2 | CALLCODE | AA (नवीन टॅबमध्ये उघडते) | gas, addr, val, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] = returndata | DELEGATECALL प्रमाणेच, परंतु मूळ msg.sender आणि msg.value प्रसारित करत नाही |
| F3 | RETURN | 0* (नवीन टॅबमध्ये उघडते) | ost, len | . | return mem[ost:ost+len-1] | |
| F4 | DELEGATECALL | AA (नवीन टॅबमध्ये उघडते) | gas, addr, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| F5 | CREATE2 | A9 (नवीन टॅबमध्ये उघडते) | val, ost, len, salt | addr | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | |
| F6-F9 | अवैध | |||||
| FA | STATICCALL | AA (नवीन टॅबमध्ये उघडते) | gas, addr, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | |
| FB-FC | अवैध | |||||
| FD | REVERT | 0* (नवीन टॅबमध्ये उघडते) | ost, len | . | revert(mem[ost:ost+len-1]) | |
| FE | INVALID | AF (नवीन टॅबमध्ये उघडते) | नियुक्त केलेला अवैध ऑपकोड - EIP-141 (नवीन टॅबमध्ये उघडते) | |||
| FF | SELFDESTRUCT | AB (नवीन टॅबमध्ये उघडते) | addr | . | सर्व ETH addr ला पाठवते; जर कॉन्ट्रॅक्ट तयार केल्याच्या त्याच व्यवहारात अंमलात आणले गेले तर ते कॉन्ट्रॅक्ट नष्ट करते |