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 کا استعمال کریں۔
| اسٹیک | نام | گیس | ابتدائی اسٹیک | نتیجتاً اسٹیک | میموری / اسٹوریج | نوٹس |
|---|---|---|---|---|---|---|
| 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 کم ہے (less-than) | |
| 11 | GT | 3 | a, b | a > b | uint256 زیادہ ہے (greater-than) | |
| 12 | SLT | 3 | a, b | a < b | int256 کم ہے (less-than) | |
| 13 | SGT | 3 | a, b | a > b | int256 زیادہ ہے (greater-than) | |
| 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 (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 | وہ پتہ جس نے ٹرانزیکشن شروع کی | |
| 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 | ٹرانزیکشن کی گیس کی قیمت، Wei فی یونٹ گیس میں ** (opens in a new tab) | |
| 3B | EXTCODESIZE | A5 (opens in a new tab) | addr | len(addr.code) | پتہ پر کوڈ کا سائز، بائٹس میں | |
| 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 | 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 | موجودہ چین کی شناخت (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 ایک درست 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] | عارضی اسٹوریج سے لفظ پڑھیں (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 | اسٹیک پر 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 (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 پر بھیجتا ہے؛ اگر اسی ٹرانزیکشن میں عمل درآمد کیا جائے جس میں کنٹریکٹ بنایا گیا تھا تو یہ کنٹریکٹ کو تباہ کر دیتا ہے |