এড়িয়ে গিয়ে মূল কন্টেন্টে যান
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 ব্যবহার করুন।

স্ট্যাকনামগ্যাসপ্রাথমিক স্ট্যাকফলাফল স্ট্যাকMem / সংগ্রহস্থলনোট
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)sign extend (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 iszero
16AND3a, ba && bবিটওয়াইজ AND
17OR3a, b`a \\b`
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যে ঠিকানা থেকে tx শুরু হয়েছে
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.gaspricetx-এর গ্যাস প্রাইস, প্রতি ইউনিট গ্যাসের জন্য 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)addrহ্যাসহ্যাস = 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)keyসংগ্রহস্থল[key]সংগ্রহস্থল থেকে ওয়ার্ড পড়ুন
55SSTOREA7 (opens in a new tab)key, val.সংগ্রহস্থল[key] := valসংগ্রহস্থলে ওয়ার্ড লিখুন
56JUMP8dst.$pc := dst চিহ্নিত করুন যে pc শুধুমাত্র তখনই নির্ধারিত হবে যদি dst একটি বৈধ জাম্পডেস্ট হয়
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স্ট্যাকের ১ম মানটি ক্লোন করুন
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 (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)গ্যাস, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] := returndata
F2CALLCODEAA (opens in a new tab)গ্যাস, addr, val, argOst, argLen, retOst, retLensuccessmem[retOst:retOst+retLen-1] = returndataDELEGATECALL-এর মতোই, কিন্তু আসল msg.sender এবং msg.value প্রচার করে না
F3RETURN0* (opens in a new tab)ost, len.mem[ost:ost+len-1] রিটার্ন করুন
F4DELEGATECALLAA (opens in a new tab)গ্যাস, 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)গ্যাস, 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-এ পাঠায়; যদি একটি কনট্র্যাক্ট তৈরি করার একই ট্রানজ্যাকশনে এটি এক্সিকিউট করা হয়, তবে এটি কনট্র্যাক্টটি ধ্বংস করে দেয়

এই প্রবন্ধটা কি সহায়ক ছিল?