মূল কন্টেন্টে যান
Change page

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 ব্যবহার করুন।

StackNameGasInitial StackResulting StackMem / StorageNotes
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 (opens in a new tab)a, ba ** buint256 সূচকীকরণ মডিউলো 2**256
0BSIGNEXTEND5b, xSIGNEXTEND(x, b)সাইন এক্সটেন্ড (opens in a new tab) 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 ইজ-জিরো
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 (opens in a new tab)ost, lenkeccak256(mem[ost:ost+len-1])keccak256
21-2Fঅবৈধ
30ADDRESS2.address(this)এক্সিকিউট হওয়া কন্ট্রাক্ট এর ঠিকানা
31BALANCEA5 (opens in a new tab)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 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1]msg ডেটা কপি করুন
38CODESIZE2.len(this.code)এক্সিকিউট হওয়া কন্ট্রাক্ট এর কোডের দৈর্ঘ্য, বাইটে
39CODECOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1]
3AGASPRICE2.tx.gaspriceট্রানজ্যাকশন এর গ্যাস প্রাইস, প্রতি ইউনিট গ্যাস Wei তে ** (opens in a new tab)
3BEXTCODESIZEA5 (opens in a new tab)addrlen(addr.code)addr এ কোডের আকার, বাইটে
3CEXTCODECOPYA4 (opens in a new tab)addr, dstOst, ost, len.mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1]addr থেকে কোড কপি করুন
3DRETURNDATASIZE2.sizeসর্বশেষ এক্সটার্নাল কল থেকে রিটার্ন করা ডেটার আকার, বাইটে
3ERETURNDATACOPYA3 (opens in a new tab)dstOst, ost, len.mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1]সর্বশেষ এক্সটার্নাল কল থেকে রিটার্ন করা ডেটা কপি করুন
3FEXTCODEHASHA5 (opens in a new tab)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স্ট্যাকে বর্তমান চেইন আইডি (opens in a new tab) পুশ করুন
47SELFBALANCE5.address(this).balanceএক্সিকিউট হওয়া কন্ট্রাক্ট এর ব্যালেন্স, Wei তে
48BASEFEE2.block.basefeeবর্তমান ব্লক এর ভিত্তি ফি
49BLOBHASH3idxtx.blob_versioned_hashes[idx]EIP-4844 (opens in a new tab)
4ABLOBBASEFEE2.block.blobbasefeeবর্তমান ব্লক এর ব্লব ভিত্তি ফি (EIP-7516 (opens in a new tab))
4B-4Fঅবৈধ
50POP2_anon.স্ট্যাকের শীর্ষ থেকে আইটেম সরান এবং এটি বাতিল করুন
51MLOAD3* (opens in a new tab)ostmem[ost:ost+32]অফসেট ost এ মেমরি থেকে শব্দ পড়ুন
52MSTORE3* (opens in a new tab)ost, val.mem[ost:ost+32] := valমেমরিতে একটি শব্দ লিখুন
53MSTORE83* (opens in a new tab)ost, val.mem[ost] := val && 0xFFমেমরিতে একটি একক বাইট লিখুন
54SLOADA6 (opens in a new tab)keystorage[key]স্টোরেজ থেকে শব্দ পড়ুন
55SSTOREA7 (opens in a new tab)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 (opens in a new tab))
5DTSTORE100key, val.tstorage[key] := valট্রানজিয়েন্ট স্টোরেজে শব্দ লিখুন (EIP-1153 (opens in a new tab))
5EMCOPY3+3*words+A0 (opens in a new tab)dstOst, ost, len.mem[dstOst] := mem[ost:ost+len]মেমরি এক জায়গা থেকে অন্য জায়গায় কপি করুন (EIP-5656 (opens in a new tab))
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 (opens in a new tab)ost, len.LOG0(memory[ost:ost+len-1])
A1LOG1A8 (opens in a new tab)ost, len, topic0.LOG1(memory[ost:ost+len-1], topic0)
A2LOG2A8 (opens in a new tab)ost, len, topic0, topic1.LOG2(memory[ost:ost+len-1], topic0, topic1)
A3LOG3A8 (opens in a new tab)ost, len, topic0, topic1, topic2.LOG3(memory[ost:ost+len-1], topic0, topic1, topic2)
A4LOG4A8 (opens in a new tab)ost, len, topic0, topic1, topic2, topic3.LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3)
A5-EFঅবৈধ
F0CREATEA9 (opens in a new tab)val, ost, lenaddraddr = keccak256(rlp([address(this), this.nonce]))
F1CALLAA (opens in a new tab)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F2CALLCODEAA (opens in a new tab)gas, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] = returndataDELEGATECALL এর মতোই, তবে আসল msg.sender এবং msg.value প্রচার করে না
F3RETURN0* (opens in a new tab)ost, len.return mem[ost:ost+len-1]
F4DELEGATECALLAA (opens in a new tab)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F5CREATE2A9 (opens in a new tab)val, ost, len, saltaddraddr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:]
F6-F9অবৈধ
FASTATICCALLAA (opens in a new tab)gas, addr, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
FB-FCঅবৈধ
FDREVERT0* (opens in a new tab)ost, len.revert(mem[ost:ost+len-1])
FEINVALIDAF (opens in a new tab)নির্ধারিত অবৈধ অপকোড - EIP-141 (opens in a new tab)
FFSELFDESTRUCTAB (opens in a new tab)addr.সমস্ত ETH addr এ পাঠায়; যদি একটি কন্ট্রাক্ট তৈরি হওয়ার একই ট্রানজ্যাকশন এ এক্সিকিউট করা হয় তবে এটি কন্ট্রাক্টটি ধ্বংস করে দেয়