ماشین مجازی (VM)
۱۴۰۵/۱/۲۷
ماشین مجازی (VM) در مفهوم بلاکچین، محیط اجرای ایزولهای است که کد قرارداد هوشمند را به صورت تعیینپذیر در هر گره شبکه اجرا میکند. هر گره کامل به طور مستقل همان بایتکد را با همان ورودیها اجرا میکند و باید به همان وضعیت برسد — بدون این تعیینپذیری، اجماع غیرممکن خواهد بود.
این با یک ماشین مجازی سیستمی مانند VMware یا VirtualBox که یک کامپیوتر کامل را شبیهسازی میکند، متفاوت است. یک ماشین مجازی بلاکچین به ماشین مجازی جاوا نزدیکتر است: یک مفسر محدود برای یک بایتکد خاص، بدون سیستم فایل، بدون شبکه و بدون عملیات غیرتعیینپذیر.
چرا بلاکچینها به یک VM نیاز دارند
اجرای کد بومی سریع اما ناامن خواهد بود: یک باگ یا یک حلقه بینهایت عمدی در یک قرارداد میتواند همه گرهها را به طور همزمان متوقف کند. یک VM فراهم میکند:
- ایزولهسازی — کد قرارداد نمیتواند فایلها را بخواند، سوکتها را باز کند یا سیستم عامل میزبان را فراخوانی کند
- تعیینپذیری — همان ورودی، همان خروجی، در هر گره و هر سختافزار
- اندازهگیری — هر عملیات هزینه گاز دارد؛ وقتی گاز تمام شود، اجرا متوقف میشود و از حملات انکار سرویس جلوگیری میکند
- قابل حمل بودن — همان بایتکد بر روی هر پیادهسازی از مشخصات VM اجرا میشود
EVM (ماشین مجازی اتریوم)
EVM پرکاربردترین ماشین مجازی بلاکچین است. این یک ماشین پایهپشتهای با اندازه کلمه ۲۵۶ بیتی است که برای تطابق با اندازه ابتداییهای رمزنگاری مانند هشهای Keccak-256 طراحی شده است.
- Solidity یا Vyper به بایتکد EVM کامپایل میشود
- هر اپکد هزینه گاز دارد؛ اپکدهای پیچیدهتر (SSTORE، CALL، keccak) هزینه بیشتری دارند
- زنجیرههای سازگار با EVM (Polygon، Arbitrum، Optimism، BNB Chain، Avalanche C-Chain، Base) همان بایتکد را بدون تغییر اجرا میکنند، به همین دلیل ابزارهایی مانند MetaMask و Hardhat در همه آنها کار میکنند
SVM (ماشین مجازی سولانا)
ماشین مجازی سولانا بر اساس eBPF (فیلتر بسته برکلی توسعهیافته) است که در اصل یک فناوری هسته لینوکس بود و به عنوان sBPF تطبیق داده شده است. قراردادها به زبان Rust یا C نوشته شده و به بایتکد sBPF کامپایل میشوند.
- Sealevel — زمان اجرای موازی سولانا — تراکنشهای غیرهمپوشان را به طور همزمان اجرا میکند، با استفاده از لیستهای دسترسی به حساب که از پیش اعلام شدهاند
- مبتنی بر رجیستر (برخلاف طراحی پایهپشتهای EVM)، نزدیکتر به معماری فیزیکی CPU
ماشینهای مجازی مبتنی بر WASM
WebAssembly (WASM) یک بایتکد قابل حمل است که در اصل برای مرورگرها طراحی شده و به طور فزایندهای به عنوان هدف ماشین مجازی بلاکچین پذیرفته شده است. زنجیرههایی که از ماشینهای مجازی WASM استفاده میکنند شامل NEAR، Polkadot (از طریق زمان اجرای pallet-contracts Substrate)، Cosmos CosmWasm و Internet Computer میشوند.
WASM زبانمحور نیست — توسعهدهندگان میتوانند از Rust، C++، AssemblyScript یا Go استفاده کنند — و از یک اکوسیستم ابزار بالغ خارج از کریپتو بهرهمند است.
ماشینهای مجازی لایه-۲
رولآپها ماشینهای مجازی موجود را به ارث میبرند یا گسترش میدهند:
- Optimism، Arbitrum، Base — معادل EVM
- zkSync Era — سازگار با EVM از طریق یک zkEVM سفارشی
- Starknet — ماشین مجازی Cairo را اجرا میکند، که به طور خاص برای اثباتهای STARK ساخته شده است
- Scroll، Polygon zkEVM، Linea — zkEVMهای معادل EVM در سطح بایتکد
