EVM साठी ओपकोड्स
पृष्ठ अखेरचे अद्यतन: ११ सप्टेंबर, २०२५
आढावा
हे wolflo/evm-opcodes (opens in a new tab) येथील EVM संदर्भ पृष्ठाची अद्ययावत आवृत्ती आहे. यलो पेपर (opens in a new tab), जेलो पेपर (opens in a new tab) आणि गेथ (opens in a new tab) अंमलबजावणीमधून देखील घेतले आहे. हा एक सुलभ संदर्भ म्हणून आहे, परंतु तो विशेष सखोल नाही. तुम्हाला अचूकतेची खात्री हवी असल्यास आणि प्रत्येक एज केसबद्दल जागरूक राहायचे असल्यास, जेलो पेपर किंवा क्लायंट अंमलबजावणी वापरण्याचा सल्ला दिला जातो.
परस्परसंवादी संदर्भ शोधत आहात? evm.codes (opens in a new tab) पहा.
डायनॅमिक गॅस खर्चासह ऑपरेशन्ससाठी, gas.md (opens in a new tab) पहा.
💡 द्रुत टीप: संपूर्ण ओळी पाहण्यासाठी, डेस्कटॉपवर आडवे स्क्रोल करण्यासाठी [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 (opens in a new tab) | a, b | a ** b | uint256 घातांक मोड्युलो 2**256 | ||
| 0B | SIGNEXTEND | 5 | b, x | SIGNEXTEND(x, b) | साइन वाढवा (opens in a new tab) 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 शून्य आहे | ||
| 16 | AND | 3 | a, b | a && b | बिटवाईज AND | ||
| 17 | OR | 3 | a, b | `a \ | \ | b` | |
| 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 (opens in a new tab) | ost, len | keccak256(mem[ost:ost+len-1]) | keccak256 | ||
| 21-2F | अवैध | ||||||
| 30 | ADDRESS | 2 | . | address(this) | अंमलबजावणी करणाऱ्या कराराचा पत्ता | ||
| 31 | BALANCE | A5 (opens in a new tab) | 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 डेटामधून शब्द वाचतो | ||
| 36 | CALLDATASIZE | 2 | . | len(msg.data) | msg डेटाची लांबी, बाइट्समध्ये | ||
| 37 | CALLDATACOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | msg डेटा कॉपी करतो | |
| 38 | CODESIZE | 2 | . | len(this.code) | अंमलबजावणी करणाऱ्या कराराच्या कोडची लांबी, बाइट्समध्ये | ||
| 39 | CODECOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | अंमलबजावणी करणाऱ्या कराराचा बायटेकोड कॉपी करतो | |
| 3A | GASPRICE | 2 | . | tx.gasprice | tx ची गॅस किंमत, प्रति युनिट गॅस wei मध्ये ** (opens in a new tab) | ||
| 3B | EXTCODESIZE | A5 (opens in a new tab) | addr | len(addr.code) | addr वरील कोडचा आकार, बाइट्समध्ये | ||
| 3C | EXTCODECOPY | A4 (opens in a new tab) | addr, dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | addr मधून कोड कॉपी करतो | |
| 3D | RETURNDATASIZE | 2 | . | size | मागील बाह्य कॉलमधून परत आलेल्या डेटाचा आकार, बाइट्समध्ये | ||
| 3E | RETURNDATACOPY | A3 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | मागील बाह्य कॉलमधून परत आलेला डेटा कॉपी करतो | |
| 3F | EXTCODEHASH | A5 (opens in a new tab) | addr | 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 | सध्याचा चेन आयडी (opens in a new tab) स्टॅकवर पुश करतो | ||
| 47 | SELFBALANCE | 5 | . | address(this).balance | अंमलबजावणी करणाऱ्या कराराची शिल्लक, wei मध्ये | ||
| 48 | BASEFEE | 2 | . | block.basefee | सध्याच्या ब्लॉकची बेस फी | ||
| 49 | BLOBHASH | 3 | idx | tx.blob_versioned_hashes[idx] | EIP-4844 (opens in a new tab) | ||
| 4A | BLOBBASEFEE | 2 | . | block.blobbasefee | सध्याच्या ब्लॉकची ब्लॉब बेस फी (EIP-7516 (opens in a new tab)) | ||
| 4B-4F | अवैध | ||||||
| 50 | POP | 2 | _anon | . | स्टॅकच्या वरून आयटम काढून टाकतो आणि टाकून देतो | ||
| 51 | MLOAD | 3* (opens in a new tab) | ost | mem[ost:ost+32] | ऑफसेट ost वरून मेमरीमधून शब्द वाचतो | ||
| 52 | MSTORE | 3* (opens in a new tab) | ost, val | . | mem[ost:ost+32] := val | मेमरीमध्ये एक शब्द लिहितो | |
| 53 | MSTORE8 | 3* (opens in a new tab) | ost, val | . | mem[ost] := val && 0xFF | मेमरीमध्ये एकच बाइट लिहितो | |
| 54 | SLOAD | A6 (opens in a new tab) | key | storage[key] | स्टोरेजमधून शब्द वाचतो | ||
| 55 | SSTORE | A7 (opens in a new tab) | key, val | . | storage[key] := val | स्टोरेजमध्ये शब्द लिहितो | |
| 56 | JUMP | 8 | dst | . | $pc := dst हे चिन्हांकित करते की pc फक्त तेव्हाच नियुक्त केले जाते जेव्हा dst एक वैध जंपडेस्ट असेल | ||
| 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] | क्षणिक स्टोरेजमधून शब्द वाचतो (EIP-1153 (opens in a new tab)) | ||
| 5D | TSTORE | 100 | key, val | . | tstorage[key] := val | क्षणिक स्टोरेजमध्ये शब्द लिहितो (EIP-1153 (opens in a new tab)) | |
| 5E | MCOPY | 3+3*words+A0 (opens in a new tab) | dstOst, ost, len | . | mem[dstOst] := mem[ost:ost+len] | मेमरी एका भागातून दुसऱ्या भागात कॉपी करतो (EIP-5656 (opens in a new tab)) | |
| 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 | स्टॅकवरील पहिल्या मूल्याची प्रतिकृती करतो | ||
| 81 | DUP2 | 3 | _, a | a, _, a | स्टॅकवरील दुसऱ्या मूल्याची प्रतिकृती करतो | ||
| 82 | DUP3 | 3 | _, _, a | a, _, _, a | स्टॅकवरील तिसऱ्या मूल्याची प्रतिकृती करतो | ||
| 83 | DUP4 | 3 | _, _, _, a | a, _, _, _, a | स्टॅकवरील चौथ्या मूल्याची प्रतिकृती करतो | ||
| 84 | DUP5 | 3 | ..., a | a, ..., a | स्टॅकवरील पाचव्या मूल्याची प्रतिकृती करतो | ||
| 85 | DUP6 | 3 | ..., a | a, ..., a | स्टॅकवरील सहाव्या मूल्याची प्रतिकृती करतो | ||
| 86 | DUP7 | 3 | ..., a | a, ..., a | स्टॅकवरील सातव्या मूल्याची प्रतिकृती करतो | ||
| 87 | DUP8 | 3 | ..., a | a, ..., a | स्टॅकवरील आठव्या मूल्याची प्रतिकृती करतो | ||
| 88 | DUP9 | 3 | ..., a | a, ..., a | स्टॅकवरील नवव्या मूल्याची प्रतिकृती करतो | ||
| 89 | DUP10 | 3 | ..., a | a, ..., a | स्टॅकवरील दहाव्या मूल्याची प्रतिकृती करतो | ||
| 8A | DUP11 | 3 | ..., a | a, ..., a | स्टॅकवरील अकराव्या मूल्याची प्रतिकृती करतो | ||
| 8B | DUP12 | 3 | ..., a | a, ..., a | स्टॅकवरील बाराव्या मूल्याची प्रतिकृती करतो | ||
| 8C | DUP13 | 3 | ..., a | a, ..., a | स्टॅकवरील तेराव्या मूल्याची प्रतिकृती करतो | ||
| 8D | DUP14 | 3 | ..., a | a, ..., a | स्टॅकवरील चौदाव्या मूल्याची प्रतिकृती करतो | ||
| 8E | DUP15 | 3 | ..., a | a, ..., a | स्टॅकवरील पंधराव्या मूल्याची प्रतिकृती करतो | ||
| 8F | DUP16 | 3 | ..., a | a, ..., a | स्टॅकवरील सोळाव्या मूल्याची प्रतिकृती करतो | ||
| 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 (opens in a new tab) | ost, len | . | LOG0(memory[ost:ost+len-1]) | ||
| A1 | LOG1 | A8 (opens in a new tab) | ost, len, topic0 | . | LOG1(memory[ost:ost+len-1], topic0) | ||
| A2 | LOG2 | A8 (opens in a new tab) | ost, len, topic0, topic1 | . | LOG2(memory[ost:ost+len-1], topic0, topic1) | ||
| A3 | LOG3 | A8 (opens in a new tab) | ost, len, topic0, topic1, topic2 | . | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | ||
| A4 | LOG4 | A8 (opens in a new tab) | ost, len, topic0, topic1, topic2, topic3 | . | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | ||
| A5-EF | अवैध | ||||||
| F0 | CREATE | A9 (opens in a new tab) | val, ost, len | addr | addr = keccak256(rlp([address(this), this.nonce])) | ||
| F1 | CALL | AA (opens in a new tab) | gas, addr, val, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | ||
| F2 | CALLCODE | AA (opens in a new tab) | gas, addr, val, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] = returndata | DELEGATECALL प्रमाणेच, परंतु मूळ msg.sender आणि msg.value प्रसारित करत नाही | |
| F3 | RETURN | 0* (opens in a new tab) | ost, len | . | return mem[ost:ost+len-1] | ||
| F4 | DELEGATECALL | AA (opens in a new tab) | gas, addr, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | ||
| F5 | CREATE2 | A9 (opens in a new tab) | val, ost, len, salt | addr | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | ||
| F6-F9 | अवैध | ||||||
| FA | STATICCALL | AA (opens in a new tab) | gas, addr, argOst, argLen, retOst, retLen | success | mem[retOst:retOst+retLen-1] := returndata | ||
| FB-FC | अवैध | ||||||
| FD | REVERT | 0* (opens in a new tab) | ost, len | . | revert(mem[ost:ost+len-1]) | ||
| FE | INVALID | AF (opens in a new tab) | निर्दिष्ट अवैध ऑपकोड - EIP-141 (opens in a new tab) | ||||
| FF | SELFDESTRUCT | AB (opens in a new tab) | addr | . | सर्व ETH addr ला पाठवते; जर करार तयार केलेल्या त्याच व्यवहारात कार्यान्वित केले तर ते करार नष्ट करते |