ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)
পৃষ্ঠাটি সর্বশেষ আপডেট করা হয়েছে: ২৫ ফেব্রুয়ারী, ২০২৬
ইথেরিয়াম ভার্চুয়াল মেশিন (EVM) একটি বিকেন্দ্রীভূত ভার্চুয়াল এনভায়রনমেন্ট যা সমস্ত Ethereum নোড জুড়ে ধারাবাহিকভাবে এবং সুরক্ষিতভাবে কোড এক্সিকিউট করে। নোডগুলি স্মার্ট কন্ট্র্যাক্ট এক্সিকিউট করার জন্য EVM চালায়, "gas" ব্যবহার করে অপারেশনগুলির জন্য প্রয়োজনীয় কম্পিউটেশনাল প্রচেষ্টা পরিমাপ করে, যা কার্যকর রিসোর্স বরাদ্দ এবং নেটওয়ার্ক নিরাপত্তা নিশ্চিত করে।
পূর্বশর্ত
EVM বোঝার জন্য কম্পিউটার সায়েন্সের কিছু সাধারণ পরিভাষা যেমন bytes (opens in a new tab), memory (opens in a new tab), এবং একটি stack (opens in a new tab) এর সাথে প্রাথমিক পরিচিতি থাকা প্রয়োজন। ক্রিপ্টোগ্রাফি/ব্লকচেইন ধারণা যেমন hash functions (opens in a new tab) এবং Merkle tree (opens in a new tab) এর সাথে পরিচিতি থাকলেও সহায়ক হবে।
লেজার থেকে স্টেট মেশিন
Bitcoin-এর মতো ব্লকচেইন বর্ণনা করার জন্য প্রায়শই 'ডিস্ট্রিবিউটেড লেজার'-এর উপমা ব্যবহার করা হয়, যা ক্রিপ্টোগ্রাফির মৌলিক টুলস ব্যবহার করে একটি বিকেন্দ্রীভূত কারেন্সি সক্ষম করে। লেজারটি কার্যকলাপের একটি রেকর্ড বজায় রাখে যা একটি নির্দিষ্ট নিয়মাবলীর সেটকে মেনে চলে, যা নির্ধারণ করে যে কেউ লেজারটি পরিবর্তন করার জন্য কী করতে পারে এবং কী করতে পারে না। উদাহরণস্বরূপ, একটি Bitcoin অ্যাড্রেস আগে যা পেয়েছে তার থেকে বেশি Bitcoin খরচ করতে পারে না। এই নিয়মগুলি Bitcoin এবং অন্যান্য অনেক ব্লকচেইনের সমস্ত ট্রানজ্যাকশনের ভিত্তি।
যদিও Ethereum-এর নিজস্ব নেটিভ ক্রিপটোকারেন্সি (ইথার) আছে যা প্রায় একই স্বজ্ঞাত নিয়মগুলি অনুসরণ করে, এটি একটি অনেক বেশি শক্তিশালী ফাংশনও সক্ষম করে: smart contracts। এই আরও জটিল বৈশিষ্ট্যের জন্য, একটি আরও পরিশীলিত উপমার প্রয়োজন। ডিস্ট্রিবিউটেড লেজারের পরিবর্তে, Ethereum একটি ডিস্ট্রিবিউটেড state machine (opens in a new tab)। Ethereum-এর স্টেট হল একটি বিশাল ডেটা স্ট্রাকচার যা শুধুমাত্র সমস্ত অ্যাকাউন্ট এবং ব্যালেন্সই ধরে রাখে না, বরং একটি মেশিন স্টেট ধারণ করে, যা একটি পূর্ব-নির্ধারিত নিয়মাবলীর সেট অনুযায়ী ব্লক থেকে ব্লকে পরিবর্তন হতে পারে, এবং যা ইচ্ছামত মেশিন কোড এক্সিকিউট করতে পারে। ব্লক থেকে ব্লকে স্টেট পরিবর্তনের নির্দিষ্ট নিয়মগুলি EVM দ্বারা সংজ্ঞায়িত হয়।
Ethereum EVM illustrated (opens in a new tab) থেকে অভিযোজিত ডায়াগ্রাম
Ethereum স্টেট ট্রানজিশন ফাংশন
EVM একটি গাণিতিক ফাংশনের মতো আচরণ করে: একটি ইনপুট দিলে, এটি একটি ডিটারমিনিস্টিক আউটপুট তৈরি করে। অতএব, Ethereum-কে আরও আনুষ্ঠানিকভাবে একটি স্টেট ট্রানজিশন ফাংশন হিসেবে বর্ণনা করা বেশ সহায়ক:
1Y(S, T)= S'একটি পুরানো বৈধ স্টেট (S) এবং নতুন বৈধ ট্রানজ্যাকশনের সেট (T) দেওয়া হলে, Ethereum স্টেট ট্রানজিশন ফাংশন Y(S, T) একটি নতুন বৈধ আউটপুট স্টেট S' তৈরি করে।
স্টেট
Ethereum-এর প্রসঙ্গে, স্টেট হল একটি বিশাল ডেটা স্ট্রাকচার যা modified Merkle Patricia Trie নামে পরিচিত, যা সমস্ত অ্যাকাউন্টকে হ্যাসের মাধ্যমে লিঙ্ক করে রাখে এবং ব্লকচেইনে সংরক্ষিত একটি একক রুট হ্যাসে পরিণত করা যায়।
লেনদেন
লেনদেন হল অ্যাকাউন্ট থেকে ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত নির্দেশাবলী। দুই ধরনের ট্রানজ্যাকশন আছে: যেগুলি মেসেজ কলের ফলে হয় এবং যেগুলি কন্ট্র্যাক্ট তৈরির ফলে হয়।
কন্ট্র্যাক্ট তৈরির ফলে একটি নতুন কন্ট্র্যাক্ট অ্যাকাউন্ট তৈরি হয়, যেখানে কম্পাইল করা স্মার্ট কন্ট্র্যাক্ট বাইটকোড থাকে। যখনই অন্য কোনো অ্যাকাউন্ট সেই কন্ট্র্যাক্টে মেসেজ কল করে, তখন এটি তার বাইটকোড এক্সিকিউট করে।
EVM নির্দেশাবলী
EVM একটি 1024 আইটেমের ডেপথ সহ স্ট্যাক মেশিন (opens in a new tab) হিসাবে এক্সিকিউট করে। প্রতিটি আইটেম একটি 256-বিটের শব্দ, যা 256-বিট ক্রিপ্টোগ্রাফি (যেমন Keccak-256 হ্যাস বা secp256k1 সিগনেচার) এর সাথে ব্যবহারের সুবিধার জন্য বেছে নেওয়া হয়েছিল।
এক্সিকিউশনের সময়, EVM একটি ক্ষণস্থায়ী মেমরি (একটি শব্দ-অ্যাড্রেসড বাইট অ্যারে হিসাবে) বজায় রাখে, যা ট্রানজ্যাকশনের মধ্যে স্থায়ী হয় না।
ক্ষণস্থায়ী স্টোরেজ
ক্ষণস্থায়ী স্টোরেজ হল একটি প্রতি-ট্রানজ্যাকশন কী-ভ্যালু স্টোর যা TSTORE এবং TLOAD অপকোডের মাধ্যমে অ্যাক্সেস করা হয়। এটি একই ট্রানজ্যাকশনের সময় সমস্ত অভ্যন্তরীণ কলের মধ্যে স্থায়ী হয় কিন্তু ট্রানজ্যাকশনের শেষে মুছে যায়। মেমরির মতো নয়, ক্ষণস্থায়ী স্টোরেজ এক্সিকিউশন ফ্রেমের পরিবর্তে EVM স্টেটের অংশ হিসাবে মডেল করা হয়, তবুও এটি গ্লোবাল স্টেটে প্রতিশ্রুতিবদ্ধ নয়। ক্ষণস্থায়ী স্টোরেজ একটি ট্রানজ্যাকশনের সময় অভ্যন্তরীণ কলের মধ্যে গ্যাস-সাশ্রয়ী অস্থায়ী স্টেট শেয়ারিং সক্ষম করে।
সংগ্রহস্থল
কন্ট্র্যাক্টে একটি Merkle Patricia স্টোরেজ ট্রাই (একটি শব্দ-অ্যাড্রেসযোগ্য শব্দ অ্যারে হিসাবে) থাকে, যা সংশ্লিষ্ট অ্যাকাউন্টের সাথে যুক্ত এবং গ্লোবাল স্টেটের অংশ। এই স্থায়ী স্টোরেজ ক্ষণস্থায়ী স্টোরেজ থেকে আলাদা, যা শুধুমাত্র একটি একক ট্রানজ্যাকশনের সময়কালের জন্য উপলব্ধ এবং অ্যাকাউন্টের স্থায়ী স্টোরেজ ট্রাই-এর অংশ গঠন করে না।
Opcodes
কম্পাইল করা স্মার্ট কন্ট্র্যাক্ট বাইটকোড একাধিক EVM opcodes হিসাবে এক্সিকিউট হয়, যা XOR, AND, ADD, SUB ইত্যাদির মতো স্ট্যান্ডার্ড স্ট্যাক অপারেশন সম্পাদন করে। EVM এছাড়াও ADDRESS, BALANCE, BLOCKHASH ইত্যাদির মতো বেশ কিছু ব্লকচেইন-নির্দিষ্ট স্ট্যাক অপারেশন প্রয়োগ করে। অপকোড সেটে TSTORE এবং TLOAD অন্তর্ভুক্ত রয়েছে, যা ক্ষণস্থায়ী স্টোরেজে অ্যাক্সেস প্রদান করে।
Ethereum EVM illustrated (opens in a new tab) থেকে অভিযোজিত ডায়াগ্রাম
EVM ইমপ্লিমেন্টেশন
EVM-এর সমস্ত ইমপ্লিমেন্টেশনকে অবশ্যই Ethereum Yellowpaper-এ বর্ণিত স্পেসিফিকেশন মেনে চলতে হবে।
Ethereum-এর দশ বছরের ইতিহাসে, EVM-এর বেশ কিছু সংশোধন হয়েছে, এবং বিভিন্ন প্রোগ্রামিং ভাষায় EVM-এর বেশ কিছু ইমপ্লিমেন্টেশন রয়েছে।
Ethereum এক্সিকিউশন ক্লায়েন্টগুলিতে একটি EVM ইমপ্লিমেন্টেশন অন্তর্ভুক্ত থাকে। এছাড়াও, একাধিক স্বতন্ত্র ইমপ্লিমেন্টেশন রয়েছে, যার মধ্যে রয়েছে:
- Py-EVM (opens in a new tab) - Python
- evmone (opens in a new tab) - C++
- ethereumjs-vm (opens in a new tab) - JavaScript
- revm (opens in a new tab) - Rust
আরও পড়ুন
- Ethereum Yellowpaper (opens in a new tab)
- Jellopaper ওরফে KEVM: K-তে EVM-এর সেম্যান্টিক্স (opens in a new tab)
- The Beigepaper (opens in a new tab)
- Ethereum ভার্চুয়াল মেশিন অপকোড (opens in a new tab)
- Ethereum ভার্চুয়াল মেশিন অপকোড ইন্টারঅ্যাক্টিভ রেফারেন্স (opens in a new tab)
- Solidity-র ডকুমেন্টেশনে একটি সংক্ষিপ্ত পরিচিতি (opens in a new tab)
- মাস্টারিং Ethereum - দি Ethereum ভার্চুয়াল মেশিন (opens in a new tab)