ইথিরিয়াম ভার্চুয়াল মেশিন (EVM)
পেজ সর্বশেষ আপডেট: ২৫ ফেব্রুয়ারী, ২০২৬
ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) হলো একটি ডিসেন্ট্রালাইজড ভার্চুয়াল পরিবেশ যা সমস্ত Ethereum নোড জুড়ে ধারাবাহিকভাবে এবং নিরাপদে কোড এক্সিকিউট করে। নোডগুলো স্মার্ট কন্ট্রাক্ট এক্সিকিউট করার জন্য EVM চালায়, অপারেশনগুলোর জন্য প্রয়োজনীয় কম্পিউটেশনাল প্রচেষ্টা পরিমাপ করতে "গ্যাস" ব্যবহার করে, যা দক্ষ রিসোর্স বরাদ্দ এবং নেটওয়ার্ক নিরাপত্তা নিশ্চিত করে।
পূর্বশর্ত
EVM বোঝার জন্য কম্পিউটার বিজ্ঞানের সাধারণ পরিভাষা যেমন বাইট (opens in a new tab), মেমরি (opens in a new tab) এবং স্ট্যাক (opens in a new tab) সম্পর্কে প্রাথমিক ধারণা থাকা প্রয়োজন। এছাড়া ক্রিপ্টোগ্রাফি/ব্লকচেইন ধারণা যেমন হ্যাস ফাংশন (opens in a new tab) এবং মার্কেল ট্রি (opens in a new tab) সম্পর্কে ধারণা থাকাও সহায়ক হবে।
লেজার থেকে স্টেট মেশিন
বিটকয়েনের মতো ব্লকচেইন বর্ণনা করতে প্রায়শই 'ডিস্ট্রিবিউটেড লেজার' এর উপমা ব্যবহার করা হয়, যা ক্রিপ্টোগ্রাফি এর মৌলিক সরঞ্জামগুলো ব্যবহার করে একটি ডিসেন্ট্রালাইজড মুদ্রা সক্ষম করে। লেজার কার্যকলাপের একটি রেকর্ড বজায় রাখে যা অবশ্যই কিছু নিয়মের সেট মেনে চলে, যা নির্ধারণ করে লেজার পরিবর্তন করার জন্য কেউ কী করতে পারে এবং কী করতে পারে না। উদাহরণস্বরূপ, একটি বিটকয়েন এডড্রেস পূর্বে প্রাপ্ত পরিমাণের চেয়ে বেশি বিটকয়েন ব্যয় করতে পারে না। এই নিয়মগুলো বিটকয়েন এবং অন্যান্য অনেক ব্লকচেইন এর সমস্ত লেনদেন এর ভিত্তি।
যদিও ইথিরিয়ামের নিজস্ব নেটিভ ক্রিপটোকারেন্সি (ইথার) রয়েছে যা প্রায় হুবহু একই স্বজ্ঞাত নিয়ম অনুসরণ করে, এটি আরও অনেক শক্তিশালী ফাংশন সক্ষম করে: স্মার্ট কন্ট্রাক্ট। এই আরও জটিল বৈশিষ্ট্যের জন্য, আরও পরিশীলিত উপমা প্রয়োজন। একটি ডিস্ট্রিবিউটেড লেজার এর পরিবর্তে, ইথিরিয়াম হলো একটি ডিস্ট্রিবিউটেড স্টেট মেশিন (opens in a new tab)। ইথিরিয়ামের স্টেট হলো একটি বিশাল ডেটা স্ট্রাকচার যা কেবল সমস্ত একাউন্ট এবং ব্যালেন্সই ধারণ করে না, বরং একটি মেশিন স্টেট ধারণ করে, যা পূর্ব-নির্ধারিত নিয়মের সেট অনুযায়ী ব্লক থেকে ব্লকে পরিবর্তিত হতে পারে এবং যা যেকোনো মেশিন কোড এক্সিকিউট করতে পারে। ব্লক থেকে ব্লকে স্টেট পরিবর্তনের নির্দিষ্ট নিয়মগুলো EVM দ্বারা সংজ্ঞায়িত করা হয়।
চিত্রটি Ethereum EVM illustrated (opens in a new tab) থেকে গৃহীত
ইথিরিয়াম স্টেট ট্রানজিশন ফাংশন
EVM একটি গাণিতিক ফাংশনের মতো আচরণ করে: একটি ইনপুট দেওয়া হলে, এটি একটি ডিটারমিনিস্টিক আউটপুট তৈরি করে। তাই ইথিরিয়ামকে আরও আনুষ্ঠানিকভাবে একটি স্টেট ট্রানজিশন ফাংশন হিসেবে বর্ণনা করা বেশ সহায়ক:
1Y(S, T)= S'একটি পুরানো বৈধ স্টেট (S) এবং বৈধ লেনদেন এর একটি নতুন সেট (T) দেওয়া হলে, ইথিরিয়াম স্টেট ট্রানজিশন ফাংশন Y(S, T) একটি নতুন বৈধ আউটপুট স্টেট S' তৈরি করে।
স্টেট
ইথিরিয়ামের প্রেক্ষাপটে, স্টেট হলো একটি বিশাল ডেটা স্ট্রাকচার যাকে মডিফাইড মার্কেল প্যাট্রিসিয়া ট্রাই বলা হয়, যা সমস্ত একাউন্ট হ্যাস দ্বারা সংযুক্ত রাখে এবং ব্লকচেইন এ সংরক্ষিত একটি একক রুট হ্যাস এ হ্রাসযোগ্য।
লেনদেন
লেনদেন হলো একাউন্ট থেকে ক্রিপ্টোগ্রাফিক ভাবে স্বাক্ষরিত নির্দেশাবলী। দুই ধরনের লেনদেন রয়েছে: যেগুলো মেসেজ কলের ফলাফল এবং যেগুলো কন্ট্রাক্ট তৈরির ফলাফল।
কন্ট্রাক্ট তৈরির ফলে কম্পাইল করা স্মার্ট কন্ট্রাক্ট বাইটকোড ধারণকারী একটি নতুন কন্ট্রাক্ট একাউন্ট তৈরি হয়। যখনই অন্য কোনো একাউন্ট সেই কন্ট্রাক্টে মেসেজ কল করে, এটি তার বাইটকোড এক্সিকিউট করে।
EVM নির্দেশাবলী
EVM 1024 আইটেমের গভীরতা সহ একটি স্ট্যাক মেশিন (opens in a new tab) হিসেবে এক্সিকিউট হয়। প্রতিটি আইটেম একটি 256-বিট শব্দ, যা 256-বিট ক্রিপ্টোগ্রাফি (যেমন Keccak-256 হ্যাস বা secp256k1 সিগনেচার) এর সাথে ব্যবহারের সুবিধার জন্য বেছে নেওয়া হয়েছিল।
এক্সিকিউশনের সময়, EVM একটি ক্ষণস্থায়ী মেমরি (একটি শব্দ-সম্বোধিত বাইট অ্যারে হিসেবে) বজায় রাখে, যা লেনদেন এর মধ্যে স্থায়ী হয় না।
ট্রানজিয়েন্ট স্টোরেজ
ট্রানজিয়েন্ট স্টোরেজ হলো একটি প্রতি-লেনদেন কী-ভ্যালু স্টোর যা TSTORE এবং TLOAD অপকোডের মাধ্যমে এক্সেস করা হয়। এটি একই লেনদেন এর সময় সমস্ত অভ্যন্তরীণ কল জুড়ে স্থায়ী হয় তবে লেনদেন এর শেষে মুছে ফেলা হয়। মেমরির বিপরীতে, ট্রানজিয়েন্ট স্টোরেজকে এক্সিকিউশন ফ্রেমের পরিবর্তে EVM স্টেট এর অংশ হিসেবে মডেল করা হয়, তবুও এটি গ্লোবাল স্টেট এ প্রতিশ্রুতিবদ্ধ নয়। ট্রানজিয়েন্ট স্টোরেজ একটি লেনদেন এর সময় অভ্যন্তরীণ কল জুড়ে গ্যাস-সাশ্রয়ী অস্থায়ী স্টেট শেয়ারিং সক্ষম করে।
স্টোরেজ
কন্ট্রাক্টগুলোতে একটি মার্কেল প্যাট্রিসিয়া স্টোরেজ ট্রাই (একটি শব্দ-সম্বোধনযোগ্য শব্দ অ্যারে হিসেবে) থাকে, যা সংশ্লিষ্ট একাউন্ট এর সাথে যুক্ত এবং গ্লোবাল স্টেট এর অংশ। এই স্থায়ী স্টোরেজটি ট্রানজিয়েন্ট স্টোরেজ থেকে আলাদা, যা শুধুমাত্র একটি একক লেনদেন এর সময়কালের জন্য উপলব্ধ এবং একাউন্ট এর স্থায়ী স্টোরেজ ট্রাইয়ের অংশ গঠন করে না।
অপকোডস
কম্পাইল করা স্মার্ট কন্ট্রাক্ট বাইটকোড বেশ কয়েকটি EVM অপকোড হিসেবে এক্সিকিউট হয়, যা XOR, AND, ADD, SUB ইত্যাদির মতো স্ট্যান্ডার্ড স্ট্যাক অপারেশন সম্পাদন করে। EVM বেশ কয়েকটি ব্লকচেইন-নির্দিষ্ট স্ট্যাক অপারেশনও প্রয়োগ করে, যেমন ADDRESS, BALANCE, BLOCKHASH ইত্যাদি। অপকোড সেটে TSTORE এবং TLOAD ও অন্তর্ভুক্ত রয়েছে, যা ট্রানজিয়েন্ট স্টোরেজে এক্সেস প্রদান করে।
চিত্রগুলো Ethereum EVM illustrated (opens in a new tab) থেকে গৃহীত
EVM ইমপ্লিমেন্টেশন
EVM এর সমস্ত ইমপ্লিমেন্টেশন অবশ্যই ইথিরিয়াম ইয়েলোপেপারে বর্ণিত স্পেসিফিকেশন মেনে চলতে হবে।
ইথিরিয়ামের দশ বছরের ইতিহাসে, EVM বেশ কয়েকটি রিভিশনের মধ্য দিয়ে গেছে এবং বিভিন্ন প্রোগ্রামিং ভাষায় EVM এর বেশ কয়েকটি ইমপ্লিমেন্টেশন রয়েছে।
ইথিরিয়াম এক্সিকিউশন ক্লায়েন্ট একটি 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
আরও পঠন
- ইথিরিয়াম ইয়েলোপেপার (opens in a new tab)
- জেলোপেপার বা KEVM: K-তে EVM এর শব্দার্থবিদ্যা (opens in a new tab)
- দ্য বেইজপেপার (opens in a new tab)
- ইথিরিয়াম ভার্চুয়াল মেশিন অপকোডস (opens in a new tab)
- ইথিরিয়াম ভার্চুয়াল মেশিন অপকোডস ইন্টারেক্টিভ রেফারেন্স (opens in a new tab)
- সলিডিটির ডকুমেন্টেশনে একটি সংক্ষিপ্ত পরিচিতি (opens in a new tab)
- মাস্টারিং ইথিরিয়াম - ইথিরিয়াম ভার্চুয়াল মেশিন (opens in a new tab)
সম্পর্কিত বিষয়সমূহ
টিউটোরিয়াল: ইথিরিয়াম ভার্চুয়াল মেশিন (EVM) / ইথিরিয়ামে অপকোডস
- ইয়েলো পেপারের EVM স্পেসিফিকেশন বোঝা – ইথিরিয়াম ইয়েলো পেপার থেকে আনুষ্ঠানিক EVM স্পেকের একটি নির্দেশিত ওয়াকথ্রু।
- একটি কন্ট্রাক্ট রিভার্স ইঞ্জিনিয়ারিং – EVM অপকোড ব্যবহার করে কীভাবে একটি কম্পাইল করা স্মার্ট কন্ট্রাক্ট রিভার্স-ইঞ্জিনিয়ার করতে হয়।