ماشین مجازی (VM) از مفاهیم مهم در دنیای ارزهای دیجیتال است. ماشین مجازی امکان نگهداری پروژه را در وضعیت پایدار فراهم می‌کند. ماشین مجازی اتریوم (Ethereum Virtual Machine یا به‌اختصار EVM)، همان‌گونه که از نام آن پیداست، ماشین مجازی شبکه و ارز دیجیتال اتریوم (ETH) است و قلب تپنده شبکه اتریوم محسوب می‌شود. در این مقاله از کلینیک سرمایه، قصد داریم بیشتر با ماشین مجازی اتریوم و کاربردهای آن آشنا شویم. اگر مایلید بدانید EVM چیست و چه ویژگی‌هایی دارد، در ادامه مطلب با ما همراه باشید.

منظور از تورینگ ناقص و کامل چیست؟

تکامل تورینگ (Turing completeness) یکی از اصطلاحات علوم کامپیوتر است که توانایی سیستم را برای انجام هرگونه محاسبه یا برنامه‌ریزی نشان می‌دهد. وقتی می‌گوییم سیستمی قابل برنامه‌ریزی تورینگ کامل است، یعنی سیستم مدنظر می‌تواند هر گونه مشکل محاسباتی را حل کند. سیستمی که تورینگ ناقص یا غیر تورینگ کامل باشد، فقط می‌تواند وظایف مشخصی را بر اساس دستورالعمل‌های ازپیش‌تعیین‌شده انجام دهد. مفهوم کامل بودن تورینگ از مدل محاسباتی ماشین تورینگ گرفته شده است که آلن تورینگ، ریاضی‌دان انگلیسی، در سال ۱۹۳۶ میلادی آن را مطرح کرد.

ماشین مجازی یعنی چه؟

ماشین مجازی یک سیستم عامل مجازی است.

ماشین مجازی (Virtual Machine یا به‌اختصار VM) نوعی منبع محاسباتی است که به‌جای کامپیوتر فیزیکی، برای اجرای برنامه‌ها و استقرار اپلیکیشن‌ها از نرم‌افزار استفاده می‌کند. روی کامپیوتر فیزیکی «میزبان» یک یا چند ماشین مجازی «مهمان» اجرا می‌شوند.

هر ماشین مجازی سیستم‌عامل مختص خود را دارد و عملکرد آن از ماشین‌های مجازی دیگر مستقل است؛ حتی اگر همه آن‌ها روی یک کامپیوتر میزبان اجرا شوند. برای مثال، می‌توان روی کامپیوتر فیزیکی، یک ماشین مجازی با سیستم‌عامل مک و یک ماشین مجازی با سیستم‌عامل ویندوز اجرا کرد که هر دو مستقل از هم کار می‌کنند. ماشین‌های مجازی کاربردهای متنوعی دارند و در بسیاری از محیط‌های درون‌سازمانی (On-premises) و کلاد (Cloud) از آن‌ها استفاده می‌شود.

ماشین مجازی اتریوم چیست؟ (Ethereum Virtual Machine)

ماشین مجازی اتریوم یا EVM امکان اجرای قراردادهای هوشمند و برنامه های غیرمتمرکز را فراهم می کند.

ماشین مجازی اتریوم (EVM) از اجزای حیاتی بلاک‌چین اتریوم است که محیط اجرای قراردادهای هوشمند (Smart Contracts) و اپلیکیشن‌های غیرمتمرکز (dApps) را فراهم می‌سازد. به عبارتی، این ماشین نرم‌افزاری است که قراردادهای هوشمند را اجرا و وضعیت شبکه اتریوم را بعد از اضافه شدن هر بلاک جدید به زنجیره، محاسبه می‌کند.

ماشین مجازی اتریوم به‌عنوان کامپیوتر غیرمتمرکز عمل می‌کند که روی شبکه عمومی نودها یا گره‌های اتریوم اجرا می‌شود. ماشین مجازی اتریوم مسئول پردازش و اجرای کدهای نوشته‌شده با زبان برنامه‌نویسی بومی اتریوم، یعنی سالیدیتی (Solidity)، یا دیگر زبان‌های سازگار با آن است. این ماشین یک محیط اجرای تورینگ کامل (Turing-complete) و ایزوله است و به همین دلیل می‌تواند پلتفرم مناسبی برای ساخت انواع برنامه‌های غیرمتمرکز باشد.

معماری ماشین مجازی اتریوم چگونه است؟

معماری ماشین مجازی اتریوم

ماشین مجازی اتریوم یا EVM مستقل از شبکه اصلی کار می‌کند و می‌توان آن را با زبان‌های برنامه‌نویسی مختلف پیاده‌سازی کرد. درنتیجه، توسعه‌دهندگان می‌توانند قراردادهای هوشمند را با زبان‌های مختلفی از جمله سالیدیتی، وایپر، و غیره توسعه دهند.

ماشین مجازی اتریوم با زبان C++ نوشته شده است و از کامپایلر LLVM استفاده می‌کند. همچنین این ماشین مجازی برای نگهداری مقادیر و اجرای دستورها، از ساختار داده استک یا پشته (Stack)  استفاده می‌کند. در معماری استک، هر دستوری که آخر وارد می‌شود، اول از همه اجرا و از استک خارج می‌شود.

خود EVM مجموعه دستورهایی با عنوان «Opcode» دارد که از آن برای انجام وظایفی مثل خواندن و نوشتن روی فضای ذخیره‌سازی، فراخوانی قراردادهای دیگر و اجرای عملیات ریاضی استفاده می‌کند. فضای ذخیره‌سازی در ماشین مجازی اتریوم از چهار بخش استک (EVM Stack)، حافظه (EVM Memory)، محل ذخیره‌سازی (EVM Storage)، و فراخوانی داده یا کال دیتا (Calldata) تشکیل شده است.

ماشین مجازی اتریوم چگونه از قرارداد هوشمند استفاده می‌کند؟

نحوه اتصال ماشین مجازی اتریوم با قراردادهای هوشمند

ماشین مجازی اتریوم می‌تواند انواع قراردادهای ساخته‌شده بر بستر بلاکچین اتریوم را اجرا کند. این کار به‌کمک زبان سالیدیتی و کامپایل آن به کدهای قابل‌ فهم برای EVM انجام می‌شود. هدف از کدنویسی روی شبکه اتریوم، ساخت قراردادهای هوشمند (Smart Contracts) و برنامه‌هایی است که در شرایط مشخص به‌صورت خودکار دستورها را اجرا می‌کنند.

شاید این سؤال برای شما هم مطرح شود که قرارداد هوشمند چیست. به‌زبان ساده، قراردادهای هوشمند از کدهایی تشکیل شده‌اند که تبادل پول و اطلاعات را تسهیل می‌کنند. با کمک این قراردادها، امکان اجرای توافق‌نامه مشخص و ازپیش‌تعیین‌شده به‌صورت خودکار وجود دارد.

ماشین مجازی اتریوم بستر اجرای این قراردادها را فراهم می‌کند. قراردادهای هوشمند بعد از مستقر شدن در شبکه اتریوم، دیگر قابل‌‌تغییر نیستند و تراکنش‌هایی که به این قراردادها ارسال می‌شود، برگشت‌ناپذیرند. ماشین مجازی اتریوم قواعد و دستورات مشخص‌شده در قرارداد را اجرا می‌کند و اجرای آن به‌صورت عمومی روی شبکه بلاکچین قابل بررسی و نظارت است.

انواع حساب‌ها در ماشین مجازی اتریوم

حساب‌های روی بلاک‌چین اتریوم کاربردها و اهداف مختلفی دارند و دو نوع اصلی آن‌ها شامل حساب‌های تحت مالکیت خارجی (EOA) و حساب‌های قراردادی (Contract Account) است. حساب‌های EOA به هر کسی اجازه می‌دهند که اتریوم یا توکن‌های ساخته‌شده بر بستر بلاک‌چین اتریوم مثل توکن‌های ERC-20 را ذخیره، دریافت، یا ارسال کنند.

حساب EOA با یک کلید خصوصی کنترل می‌شود، یعنی هر کس که صاحب کلید خصوصی باشد، می‌تواند به حساب و دارایی‌های آن دسترسی داشته باشد. حساب‌های EOA محبوب‌ترین حساب‌های بلاک‌چین اتریوم محسوب می‌شوند.

نوع دوم حساب‌ها، که قراردادی است، با قراردادهای هوشمند کنترل می‌شوند. قرارداد هوشمند نسخه کدنویسی‌شده‌ای از توافق‌نامه‌ای روی دفتر کل توزیع‌شده است که در شرایط معینی به‌صورت خودکار اجرا می‌شود.

یکی از تفاوت‌های کلیدی بین این دو نوع حساب این است که حساب‌های EOA می‌توانند با یکدیگر و با قراردادهای هوشمند در تعامل باشند. حساب‌های قراردادی می‌توانند با قراردادهای دیگر و EOAها ارتباط برقرار کنند، اما نمی‌توانند بدون قراردادهای هوشمند کار کنند.

ویژگی‌های ماشین مجازی اتریوم چیست؟

ویژگی‌های ماشین مجازی اتریوم

ماشین مجازی اتریوم بخش مهمی از بلاکچین اتریوم را تشکیل می‌دهد و ویژگی‌ها و قابلیت‌های مختلفی دارد. از ویژگی‌های EVM می‌توان به این موارد اشاره کرد:

اجرای غیرمتمرکز تراکنش‌ها

ماشین مجازی اتریوم روی شبکه غیرمتمرکزی از نودها (Node) کار می‌کند. درنتیجه، هیچ نهاد یا سازمان متمرکزی روی اعمال آن کنترل ندارد. وقتی تراکنش یا قرارداد هوشمندی روی شبکه اتریوم ثبت می‌شود، به هزاران نود در سراسر جهان مخابره می‌شود. این نودها به‌صورت مستقل از هم کدهای گنجانده شده در تراکنش را اجرا می‌کنند و بر سر اعتبار و نتیجه تراکنش با هم به اجماع می‌رسند. به‌دلیل همین ماهیت غیرمتمرکز هیچ نقطه شکست واحدی در شبکه وجود ندارد و هیچ نهادی نمی‌تواند سیستم را دستکاری کند.

اجرای قراردادهای هوشمند

اجرای قراردادهای هوشمند یکی از ویژگی‌های مهم ماشین مجازی اتریوم است. قراردادهای هوشمند برنامه‌هایی هستند که وقتی شرایط معینی فراهم شود، به‌صورت خودکار اجرا می‌شوند و وظایف تعریف‌شده‌ای را انجام می‌دهند. ماشین مجازی اتریوم (EVM) به‌صورت اختصاصی برای اجرای این قراردادها طراحی شده است و می‌تواند قراردادهایی را که با زبان‌های سطح بالا مثل سالیدیتی نوشته شده‌اند، به کدهای قابل‌فهم تبدیل و آن‌ها را اجرا کند.

تورینگ کامل بودن

ماشین مجازی اتریوم یک ماشین تورینگ کامل محسوب می‌شود، یعنی می‌تواند هر گونه محاسبه‌ای را که به‌صورت الگوریتمی بیان شده باشد، اجرا کند. این ویژگی EVM موجب تمایز آن از دیگر بلاکچین‌های ساده و تورینگ ناقص می‌شود. توسعه‌دهندگان می‌توانند الگوریتم‌های پیچیده را به‌راحتی روی آن پیاده‌سازی کنند، یک برنامه غیرمتمرکز (dApp) با منطق پیچیده و پر از جزئیات بسازند، و راهکارهای بلاکچینی متنوعی را طراحی و پیاده‌سازی کنند.

امن و ایزوله بودن

اجرای کدها در ماشین مجازی اتریوم در محیط امن و ایزوله‌ای انجام می‌شود. هر قرارداد هوشمند در «سندباکس» مختص خود اجرا می‌شود. به همین دلیل، حالت یا رفتار قراردادها با یکدیگر تداخل پیدا نمی‌کند. ایزوله بودن ماشین‌ها موجب بهبود امنیت آن‌ها می‌شود و آسیب‌پذیری‌های احتمالی محدود به یک قرارداد باقی می‌مانند؛ حتی اگر قراردادی باگ داشته باشد یا در معرض خطر قرار بگیرد، تأثیری در یکپارچگی کل شبکه اتریوم یا قراردادهای دیگر نخواهد داشت.

ذخیره‌سازی داده‌ها در ماشین مجازی اتریوم چگونه صورت می‌گیرد؟

در ماشین مجازی اتریوم، فضای ذخیره‌سازی یا استورج‌های مختلف وجود دارد. این استورج‌ها تعیین می‌کنند که داده‌ها چطور و کجا در یک قرارداد ذخیره شوند. انواع اصلی استورج یا فضای ذخیره‌سازی در ماشین مجازی اتریوم عبارت‌اند از:

فضای ذخیره‌سازی قرارداد (Contract Storage)

هر قرارداد هوشمند فضای ذخیره‌سازی مختص خود را دارد. این در واقع همان هارد درایو است که همیشه وجود دارد و می‌توانید متغیرها را روی آن بنویسید، بخوانید، یا از روی آن حذف کنید.

حافظه یا مموری (Memory)

مموری یا حافظه فضای ذخیره‌سازی موقتی است که هنگام اجرای قرارداد از آن استفاده می‌شود. هنگامی که متغیری درون تابعی تعریف می‌شود، به‌صورت پیش‌فرض به این نوع فضای ذخیره‌سازی تخصیص می‌یابد. داده‌های موجود در این نوع حافظه پایدار نیستند و بعد از هر فراخوانی تابع، مقادیر ذخیره‌شده در مموری حذف می‌شوند.

استک یا پشته (Stack)

استک نوعی فضای ذخیره‌سازی موقت است که هنگام اجرای قرارداد، مقادیر میانی را نگه می‌دارد و دستورها را اجرا می‌کند. در معماری استک دستورها به‌صورت «LIFO» اجرا می‌شوند، یعنی آخرین دستوری که وارد پشته شود، اول از همه اجرا و از آن حذف می‌شود.

کال دیتا (Calldata)

کال دیتا نوعی فضای ذخیره‌سازی «read-only» است، یعنی فقط امکان خواندن داده‌ها از روی آن وجود دارد. این فضا حاوی داده‌های ورودی است که هنگام فراخوانی تابعی بیرونی به قرارداد پاس داده می‌شوند. از این فضا برای دسترسی به آِرگومان‌های تابع و داده‌های دیگری که از بیرون از قرارداد ارسال شده‌اند، استفاده می‌شود. داده‌های کال دیتا نیز مثل مموری پایدار نیست و بعد از هر فراخوانی تابع پاک می‌شود.

نرخ کارمزد گس تراکنش‌ها در ماشین مجازی اتریوم

کارمزد گس تراکنش‌ها در ماشین مجازی اتریوم

گس (Gas) یکی از بخش‌های مهم ماشین مجازی اتریوم را تشکیل می‌دهد و هزینه محاسبات و کارمزد تراکنش‌ها را مشخص می‌کند. به‌بیان ساده‌تر، گس واحدی است که هزینه عملیاتی مثل اجرای قراردادهای هوشمند را تعیین می‌کند.

کارمزد گس باید با ارز بومی شبکه اتریوم (ETH) پرداخت شود. نرخ کارمزد گس معمولاً برحسب «Gwei» (گیگاوی یا گیوی)، که به آن نانو اتر هم می‌گویند، بیان می‌شود. هر «Gwei» معادل یک میلیاردم (ده به توان منفی ۹) یک اتریوم است. برای مثال به‌جای ۰/۰۰۰۰۰۰۰۰۱ اتر، می‌توانیم بگوییم نرخ گس معادل یک گیوی است.

فرمول محاسبه نرخ کارمزد گس به این صورت است:

Total Fee = Gas Unit (Limits) * (Base Fee + Tip)

کارمزد گس = واحد گس × (کارمزد پایه + انعام)

واحد گس یا لیمیت مقدار کارمزدی است که کاربر قصد دارد برای انجام تراکنش بپردازد. کارمزد پایه حداقل هزینه لازم برای انجام یک تراکنش در شبکه بلاکچین اتریوم است که بسته به وضعیت شبکه تغییر می‌کند. انعام یا تیپ نیز هزینه‌ای اضافی است که کاربران می‌توانند برای انجام سریع‌تر تراکنش‌ها به ماینرها بپردازند.

مزایا و معایب ماشین مجازی اتریوم چیست؟

ماشین مجازی اتریوم مزایا و معایب خود را دارد و در کنار قابلیت‌هایی که ارائه می‌کند، محدودیت‌هایی نیز دارد. به‌طور خلاصه، مزایای ماشین مجازی اتریوم عبارت‌اند از:

  • اجرای کدهای نامطمئن بدون به‌ خطر انداختن داده‌ها؛
  • توانایی اجرای قراردادهای هوشمند پیچیده؛
  • پردازش قطعی و تضمین‌شده تراکنش‌ها؛
  • استفاده از مکانیزم اجماع توزیع‌شده؛
  • مقاوم در برابر خرابی و از کار افتادگی شبکه؛
  • توسعه آسان قراردادهای هوشمند و برنامه‌های غیرمتمرکز.

در کنار این مزایا، ماشین مجازی اتریوم محدودیت‌هایی نیز دارد. ازجمله آن‌ها می‌توان به این موارد اشاره کرد:

  • هزینهٔ زیاد ذخیره‌سازی داده‌ها؛
  • هزینه زیاد کارمزد گس؛
  • هزینه زیاد گس در زمان شلوغی شبکه؛
  • نیازمند دانش تخصصی برای توسعه.

فهرست شبکه‌های سازگار با ماشین مجازی اتریوم

یکی از ویژگی‌های مهم ماشین مجازی اتریوم این است که دیگر شبکه‌های بلاکچین می‌توانند آن را راه‌اندازی و قراردادهای هوشمند اتریوم را روی آن اجرا کنند. توسعه‌دهندگان می‌توانند بدون اینکه لازم باشد تغییرات زیادی در کدهای خود اعمال کنند، قراردادهای هوشمند را روی بلاکچین‌های مختلف EVM بنویسند.

سازگاری با شبکه‌های دیگر به کاهش هزینه‌ها و گسترده‌تر شدن کاربران و اکوسیستم توسعه‌دهندگان نیز کمک می‌کند. از مهم‌ترین شبکه‌های سازگار با ماشین مجازی اتریوم می‌توان به این موارد اشاره کرد:

  • اتریوم (Ethereum)
  • بایننس اسمارت چین (BSC)
  • آربیتروم (Arbitrum)
  • پالیگان (Polygon)
  • آوالانچ (Avalanche)
  • آپتیمیسم (Optimism)
  • فانتوم (Fantom)
  • کرونوس (Cronos)
  • کلایتن (Klaytn)
  • کانتو (Canto)

کلام پایانی

در این مطلب بررسی کردیم که ماشین مجازی اتریوم (EVM) چیست و چه نقشی در شبکه اتریوم دارد. برنامه‌های توسعه و به‌روزرسانی اتریوم می‌تواند در سال‌های آینده به ارتقای این ماشین مجازی منتهی شود؛ اتفاقی که در ارائه خدمات سریع‌تر با قیمت مقرون‌به‌صرفه، به توسعه‌دهندگان برنامه‌های غیرمتمرکز در بستر اتریوم کمک می‌کند.