مرکزی مواد پر جائیں
Change page

⁦EVM⁩ کے لیے آپ کوڈز

یہ wolflo/evm-opcodes (نئے ٹیب میں کھلتا ہے) پر موجود EVM حوالہ جاتی صفحہ کا اپ ڈیٹ شدہ ورژن ہے۔ اسے یلو پیپر (نئے ٹیب میں کھلتا ہے)، Jello Paper (نئے ٹیب میں کھلتا ہے)، اور geth (نئے ٹیب میں کھلتا ہے) کے نفاذ سے بھی اخذ کیا گیا ہے۔ اس کا مقصد ایک قابل رسائی حوالہ فراہم کرنا ہے، لیکن یہ خاص طور پر سخت نہیں ہے۔ اگر آپ درستگی کا یقین کرنا چاہتے ہیں اور ہر غیر معمولی صورتحال (edge case) سے آگاہ رہنا چاہتے ہیں، تو 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 اس سے کم (less-than)
11GT3a, ba > buint256 اس سے زیادہ (greater-than)
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وہ پتہ جہاں سے ٹرانزیکشن شروع ہوئی
33CALLER2.msg.sendermsg بھیجنے والے کا پتہ
34CALLVALUE2.msg.valuemsg کی ویلیو، Wei میں
35CALLDATALOAD3idxmsg.data[idx:idx+32]اشاریہ idx پر msg ڈیٹا سے لفظ پڑھیں
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ٹرانزیکشن کی گیس کی قیمت، 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.بے ترتیبی کا بیکنبے ترتیبی کا بیکن
45GASLIMIT2.block.gaslimitموجودہ بلاک کی گیس کی حد
46CHAINID2.chain_idموجودہ چین کی شناخت (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 پر میموری سے لفظ پڑھیں
52MSTORE3* (نئے ٹیب میں کھلتا ہے)ost, val.mem[ost:ost+32] := valمیموری میں ایک لفظ لکھیں
53MSTORE83* (نئے ٹیب میں کھلتا ہے)ost, val.mem[ost] := val && 0xFFمیموری میں ایک بائٹ لکھیں
54SLOADA6 (نئے ٹیب میں کھلتا ہے)keystorage[key]اسٹوریج سے لفظ پڑھیں
55SSTOREA7 (نئے ٹیب میں کھلتا ہے)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 (نئے ٹیب میں کھلتا ہے))
5DTSTORE100key, val.tstorage[key] := valعارضی اسٹوریج میں لفظ لکھیں (EIP-1153 (نئے ٹیب میں کھلتا ہے))
5EMCOPY3+3*words+A0 (نئے ٹیب میں کھلتا ہے)dstOst, ost, len.mem[dstOst] := mem[ost:ost+len]میموری کو ایک جگہ سے دوسری جگہ کاپی کریں (EIP-5656 (نئے ٹیب میں کھلتا ہے))
5FPUSH02.uint8مستقل ویلیو 0 کو اسٹیک پر پش کریں
60PUSH13.uint81-بائٹ ویلیو کو اسٹیک پر پش کریں
61PUSH23.uint162-بائٹ ویلیو کو اسٹیک پر پش کریں
62PUSH33.uint243-بائٹ ویلیو کو اسٹیک پر پش کریں
63PUSH43.uint324-بائٹ ویلیو کو اسٹیک پر پش کریں
64PUSH53.uint405-بائٹ ویلیو کو اسٹیک پر پش کریں
65PUSH63.uint486-بائٹ ویلیو کو اسٹیک پر پش کریں
66PUSH73.uint567-بائٹ ویلیو کو اسٹیک پر پش کریں
67PUSH83.uint648-بائٹ ویلیو کو اسٹیک پر پش کریں
68PUSH93.uint729-بائٹ ویلیو کو اسٹیک پر پش کریں
69PUSH103.uint8010-بائٹ ویلیو کو اسٹیک پر پش کریں
6APUSH113.uint8811-بائٹ ویلیو کو اسٹیک پر پش کریں
6BPUSH123.uint9612-بائٹ ویلیو کو اسٹیک پر پش کریں
6CPUSH133.uint10413-بائٹ ویلیو کو اسٹیک پر پش کریں
6DPUSH143.uint11214-بائٹ ویلیو کو اسٹیک پر پش کریں
6EPUSH153.uint12015-بائٹ ویلیو کو اسٹیک پر پش کریں
6FPUSH163.uint12816-بائٹ ویلیو کو اسٹیک پر پش کریں
70PUSH173.uint13617-بائٹ ویلیو کو اسٹیک پر پش کریں
71PUSH183.uint14418-بائٹ ویلیو کو اسٹیک پر پش کریں
72PUSH193.uint15219-بائٹ ویلیو کو اسٹیک پر پش کریں
73PUSH203.uint16020-بائٹ ویلیو کو اسٹیک پر پش کریں
74PUSH213.uint16821-بائٹ ویلیو کو اسٹیک پر پش کریں
75PUSH223.uint17622-بائٹ ویلیو کو اسٹیک پر پش کریں
76PUSH233.uint18423-بائٹ ویلیو کو اسٹیک پر پش کریں
77PUSH243.uint19224-بائٹ ویلیو کو اسٹیک پر پش کریں
78PUSH253.uint20025-بائٹ ویلیو کو اسٹیک پر پش کریں
79PUSH263.uint20826-بائٹ ویلیو کو اسٹیک پر پش کریں
7APUSH273.uint21627-بائٹ ویلیو کو اسٹیک پر پش کریں
7BPUSH283.uint22428-بائٹ ویلیو کو اسٹیک پر پش کریں
7CPUSH293.uint23229-بائٹ ویلیو کو اسٹیک پر پش کریں
7DPUSH303.uint24030-بائٹ ویلیو کو اسٹیک پر پش کریں
7EPUSH313.uint24831-بائٹ ویلیو کو اسٹیک پر پش کریں
7FPUSH323.uint25632-بائٹ ویلیو کو اسٹیک پر پش کریں
80DUP13aa, aاسٹیک پر پہلی ویلیو کا کلون بنائیں
81DUP23_, aa, _, aاسٹیک پر دوسری ویلیو کا کلون بنائیں
82DUP33_, _, aa, _, _, aاسٹیک پر تیسری ویلیو کا کلون بنائیں
83DUP43_, _, _, aa, _, _, _, aاسٹیک پر چوتھی ویلیو کا کلون بنائیں
84DUP53..., aa, ..., aاسٹیک پر پانچویں ویلیو کا کلون بنائیں
85DUP63..., aa, ..., aاسٹیک پر چھٹی ویلیو کا کلون بنائیں
86DUP73..., aa, ..., aاسٹیک پر ساتویں ویلیو کا کلون بنائیں
87DUP83..., aa, ..., aاسٹیک پر آٹھویں ویلیو کا کلون بنائیں
88DUP93..., aa, ..., aاسٹیک پر نویں ویلیو کا کلون بنائیں
89DUP103..., aa, ..., aاسٹیک پر دسویں ویلیو کا کلون بنائیں
8ADUP113..., aa, ..., aاسٹیک پر گیارہویں ویلیو کا کلون بنائیں
8BDUP123..., aa, ..., aاسٹیک پر بارہویں ویلیو کا کلون بنائیں
8CDUP133..., aa, ..., aاسٹیک پر تیرہویں ویلیو کا کلون بنائیں
8DDUP143..., aa, ..., aاسٹیک پر چودہویں ویلیو کا کلون بنائیں
8EDUP153..., aa, ..., aاسٹیک پر پندرہویں ویلیو کا کلون بنائیں
8FDUP163..., aa, ..., aاسٹیک پر سولہویں ویلیو کا کلون بنائیں
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 پر بھیجتا ہے؛ اگر اسی ٹرانزیکشن میں عمل درآمد کیا جائے جس میں کنٹریکٹ بنایا گیا تھا تو یہ کنٹریکٹ کو خود تلف کر دیتا ہے