ماشین مجازی اتریوم یا EVM چیست؟
ماشین مجازی اتریوم (EVM) نقش مهمی در جلب نظر سرمایهگذاران و توسعهدهندگان به شبکه اتریوم دارد. این شبکه به لطف انعطافپذیری، تنوع ابزار برنامهنویسی و پایگاه کاربری وسیع خود، همچنان انتخاب اول توسعهدهندگان است. از طرفی، اتر (ETH) به عنوان رمز ارز بومی این شبکه و دومین رمز ارز بزرگ به لحاظ ارزش بازاری (مارکت کپ)، در بین سرمایهگذاران کریپتو محبوبیت زیادی دارد.
ماشین مجازی اتریوم در واقع هستۀ مرکزی در معماری این بلاکچین است. این ماشین مجازی به تمام گرههای شبکه دسترسی دارد و اجرای قراردادهای هوشمند و تمام تراکنشها را به شکل موثری مدیریت میکند. این راهحل، یک محیط اجرا برای قراردادهای هوشمند روی بلاکچین اتریوم فراهم کرده است. با این وجود، ماشین EVM به یکی از قویترین ماشینهای مجازی موجود در دنیای امروز تبدیل شده است.
پیشنهاد مطالعه: راهنمای جامع اتریوم برای تازهکارها!
برای فهم EVM به یک آشنایی اولیه با اصطلاحات رایج در علوم کامپیوتر مانند بایت، حافظه و استک نیاز است. همچنین شناخت مفاهیم رمزنگاری مثل تابع هش و درخت مرکل در این زمینه سودمند است.
ماشین مجازی اتریوم (EVM) چیست؟
شبکه اتریوم که در سال ۲۰۱۳ توسط ویتالیک بوترین طراحی شد، موفقیت مثالزدنی خود را بهعنوان بلاکچین محبوب برنامهنویسان اپلیکیشن غیرمتمرکز (DApp) مدیون ماشین مجازی اتریوم است که توسط گوین وود (Gavin Wood) توسعه یافت. این یک ماشین وضعیت ویژه است که در زبان برنامهنویسی C++ نوشته شده و بهصورت پیوسته درحال کار است. عملیات غیرقابلتغییر این ماشین، وضعیت هر بلوک جدید را در بلاکچین اتریوم تعیین میکند.
ماشین مجازی اتریوم یا EVM را میتوان به یک کامپیوتر مجازی تشبیه کرد که توسط برنامهنویسان استفاده میشود تا قراردادهای هوشمند را در اکوسیستم اتریوم اجرا کنند و اپلیکیشنهای غیرمتمرکز بسازند. این نوآوری بهعنوان یک لایه بین ماشینها و کدهای اجرایی، میتواند روی سختافزار و سیستمعاملهای مختلف کار کند.
ماشین مجازی EVM محیطی است که تمام حسابهای اتریوم و قراردادهای هوشمند در آن دایر هستند. پروتکل اتریوم خود با هدف حفظ عملکرد پیوسته، بیوقفه و غیرقابل تغییر این ماشین وضعیت، وجود دارد. اتریوم، در هر بلوکِ مشخص در زنجیره، یک و تنها یک وضعیت «متعارف» دارد. ماشین مجازی چیزی است که قوانین را برای محاسبۀ یک وضعیت معتبر جدید، از یک بلوک به بلوک دیگر تعریف میکند.
ماشین مجازی اتریوم، تورینگ کامل است؛ یعنی میتواند هر برنامهای را که در هر زبان برنامهنویسی نوشته شده، اجرا کند. از این منظر، به توسعهدهندگان اجازه میدهد به سادگی قراردادهای هوشمند سفارشی و اپلیکیشنهای غیرمتمرکز (DApps) را در فضای در حال رشد وب ۳.۰ بسازند.
پیشنهاد مطالعه: معرفی بهترین اپلیکیشنهای غیرمتمرکز یا D’apps
بسیاری مصداق فیزیکی EVM را شبیه ابر یا موج اقیانوس میدانند که البته توصیف درستی نیست. این ماشین مجازی یک موجودیت واحد است که توسط هزاران کامپیوتر متصل به هم که یک کلاینت اتریوم (Ethereum client) را اجرا میکنند، حفظ و برقرار میشود.
از دفترکل تا ماشین وضعیت؛ کاری که EVM میکند
اغلب برای توصیف بلاکچین (مثل بیت کوین یا اتریوم) که ارزهای غیرمتمرکز را با استفاده از ابزار اساسی رمزنگاری پشتیبانی میکنند، از تشبیه آنها به دفترکل استفاده میشود. دفترکل یک سابقه فعالیت را نگه میدارد که باید به یک مجموعه قوانین حاکم بر اینکه چه کاری میتواند و نمیتواند برای تغییر دفترکل انجام شود، پایبند باشد. برای مثال، یک آدرس بیت کوین نمیتواند بیش از بیت کوینهایی که دریافت کرده، خرج کند. این قوانین زیربنای تمام تراکنشهای شبکه بیت کوین یا بلاکچینهای دیگر هستند.
درحالیکه شبکه اتریوم رمز ارز بومی خود را دارد که از قوانین مشابهی پیروی میکند، اما علاوه بر این، یک کارکرد بسیار قوی بهنام قراردادهای هوشمند را امکانپذیر کرده است. ماشین مجازی اتریوم نهتنها حکم میکند که گرهها چه کارهایی را بتوانند و نتوانند با دفترکل توزیعشده انجام دهند، بلکه قواعد و قوانین تغییر وضعیت از یک بلوک به بلوک دیگر را تعیین میکند. همین تفاوت موجب شده است که اجرای بیوقفۀ قراردادهای هوشمند امکانپذیر شود.
با این ویژگی نیاز به یک تشبیه پیچیدهتر داریم؛ بهجای یک دفترکل، اتریوم یک ماشین وضعیت توزیعشده است. وضعیت اتریوم یک ساختار دادۀ بزرگ است که تمام حسابها و موجودیها و همچنین یک وضعیت ماشین را نگه میدارد. وضعیت ماشین میتواند از یک بلوک به بلوک دیگر بر اساس مجموعه قوانین تعریفشده تغییر کند و اینکه میتواند دستورات دلخواه را اجرا کند. قوانین تغییر وضعیت از بلوکی به بلوک دیگر توسط ماشین مجازی اتریوم تعریف میشود.
ماشین مجازی اتریوم یا EVM چگونه کار میکند؟
به هر حال، برای فهم نحوۀ کار EVM باید به نقشها و وظایفی که در برابر عملکرد روان شبکه اتریوم دارد، توجه کنیم. در سادهترین نگاه، این وظایف مانند توابع ریاضی هستند و به ازای هر ورودی، یک خروجی قطعی در ماهیت خود تولید میکنند.
تابع انتقال وضعیت اتریوم
بهتر است اتریوم را اینگونه توصیف کنیم که یک تابع انتقال وضعیت دارد. با داشتن وضعیت معتبر قبلی و مجموعهای جدید از تراکنشهای معتبر، تابع انتقال وضعیت اتریوم یک وضعیت خروجی جدید تولید میکند.
وضعیت
در شبکه اتریوم، وضعیت، یک ساختار دادۀ وسیع بهنام درخت مرکلِ اصلاحشده است که تمام حسابهای مرتبط با مقادیر هش را نگه میدارد و به یک هش ریشه که در بلاکچین ذخیره شده، قابل تقلیل است.
تراکنشها
تراکنشها در واقع دستوراتی با امضای دیجیتال از سوی حسابها هستند. دو نوع تراکنش وجود دارد: آنهایی که به فراخوانی پیام و آنهایی که به ایجاد قرارداد منجر میشوند.
ساخت قرارداد به ایجاد یک حساب قرارداد جدید میانجامد که شامل کدهای اجراشدۀ قرارداد هوشمند است. هر وقت حساب دیگری یک فراخوانی پیام به آن قرارداد انجام دهد، قرارداد هوشمند را اجرا میکند.
دستورات ماشین مجازی اتریوم
ماشین مجازی اتریوم به مانند یک ماشین استک است که با عمق ۱۰۲۴ آیتم کار میکند. هر آیتم یک کلمۀ ۲۵۶- بیت است که برای سادگی استفاده با رمزنگاری ۲۶۵- بیت انتخاب شد (برای مثال، مقادیر هش Keccak-256 یا امضاهای sepk265k1)
در حین اجرا، ماشین مجازی یک حافظۀ موقت در قالب یک آرایۀ بایتی دارد که بین دو تراکنش در شبکه اتریوم تغییر میکند. قراردادها، شامل یک ذخیرۀ درخت مرکل هستند که به حساب موردنظر و بخشی از وضعیت سراسری (گلوبال) وصل است.
قراردادهای هوشمندی که اجرا شدهاند، توسط ماشین EVM در قالب یک مجموعه ۱۴۰تایی از کدهای عملیاتی (opcodes) استاندارد (برای مثال، XOR, AND, ADD, SUB) اجرا میشوند. ماشین مجازی همچنین یک تعداد عملیات استک مخصوص بلاکچین (ADDRESS, BALANCE, BLOCKHASH, etc) را پیادهسازی میکند.
بنابراین، ماشین مجازی اتریوم یک وضعیت متغیر در حین انجام تراکنشهای شبکه و یک وضعیت سراسری (گلوبال)، شامل اطلاعات تمام حسابهای موجود در بلاکچین اتریوم، دارد. در طی تاریخ هفتسالۀ اتریوم، ساختار EVM دستخوش چندین بازبینی شده و چندین پیادهسازی مختلف از آن در زبانهای برنامهنویسی گوناگون بهوجود آمده است:
- Py-EVM در پایتون
- Evmone در C++
- Ethereumjs-vm در جاوا اسکریپت
- eEVM در C++
هدف ماشین مجازی اتریوم چیست؟
ماشین مجازی اتریوم (EVM) تاکنون بهشکل قابل اطمینانی از اجرای اپلیکیشنهای غیرمتمرکز (DApp) در شبکه اتریوم، بدون هیچگونه گزارشی از وقفه یا ازکارافتادگی، پشتیبانی کرده است. برای برنامهنویسان، ماشین EVM به مانند یک برنامۀ فراگیر عمل میکند که برنامههای کوچکتر (قراردادهای هوشمند) را اجرا میکند. در عین حال، به آنها آزادی عمل لازم را میدهد تا این قراردادها را بهصورت سفارشی و در دامنۀ متنوعی از زبانهای برنامهنویسی، پیادهسازی و اجرا کنند.
زمانی که یک قرارداد هوشمند پیادهسازی میشود، ماشین مجازی موظف است با تمام گرهها ارتباط بگیرد و زمانی که اجماع حاصل شد، تغییراتی در وضعیت ایجاد کند. میتوان گفت ماشین مجازی به نوعی به تمام گرههای شبکه اتریوم وارد میشود تا قرارداد هوشمند را با استفاده از کدهای بایتی بهجای زبان برنامهنویسی پایه اجرا کند. برای همین، سیستمعامل کامپیوتر میزبان از کد ماشینی که پروتکل اتریوم بر آن اجرا میشود، جدا میشود.
مزیتهای ماشین مجازی اتریوم
ماشین مجازی اتریوم بهخاطر نحوۀ کار خود، به برنامهنویسان اجازه میدهد تا کدهایی را بنویسند، بدون اینکه از اثر آنها بر دیگر اعضای شبکه و یا اثرگذاری آنها بر فایلها و دادههای کامپیوترهای میزبان و گرههای شبکه، نگران باشند.
به علاوه، میتوانند قراردادهای هوشمند پیشرفته را در محیطهای محاسباتی مختلف با اجماع توزیعشده اجرا کنند. این موجب میشود شکست یک نقطۀ واحد اثری منفی بر اجرای قراردادهای هوشمند و برنامههای غیرمتمرکز نداشته باشد.
همچنین چون اطلاعات حسابها در یک سطح گلوبال در ماشین مجازی قرار دارند، کار برنامهنویسان برای نوشتن قراردادهای هوشمند سفارشی و دلخواه که به این وضعیت سراسری دسترسی دارند و خروجیهای قابل اطمینان میسازند، آسان است.
قابلیت تعامل
یک مزیت مهم استفاده از ماشین مجازی اتریوم، ارتقای قابلیت تعامل، چه بین بلاکچینها و چه درون اکوسیستم اتریوم است. قابلیت تعامل بین بلاکچینها همواره یک محدودیت بزرگ بوده است. با وجود هزینههای گس بالا و سرعت کم، توسعهدهندگان اپلیکیشنهای غیرمتمرکز، به سایر بلاکچینها روی آوردهاند که اغلب به لحاظ قابلیت تعامل محدودیتهای بسیاری دارند.
بلاکچینهای سازگار با EVM راهحل آسانی برای این مشکل هستند. بهجای شروع از صفر و ایجاد یک محیط مشابه با ماشین مجازی اتریوم، برنامهنویسان میتوانند قسمتهایی از شبکه اتریوم را نسخهبرداری کنند و برنامههای غیرمتمرکزی بسازند که کاربران بتوانند به سادگی داراییها را بین شبکههای سازگار با EVM منتقل کنند.
برای مثال، پلتفرم AdaSwap که یک صرافی غیرمتمرکز با یک بازارساز خودکار (AMM) در بلاکچین کاردانو است، با همکاری Milkomeda و با استفاده از یک راهحل لایه- دو به عنوان زنجیرۀ جانبی، توانست بلاکچین کاردانو را با EVM سازگار کند. حالا کاربران میتوانند داراییها را بین کاردانو و اتریوم منتقل کنند و برنامههای کاردانو را در اتریوم اجرا کنند، یا برعکس.
با بهبود قابلیت تعامل، بسیاری از بلاکچینهای معروف امروزی از همین مدل سازگاری با ماشین مجازی اتریوم (EVM) استفاده کردهاند. نامهای بزرگی چون بایننس اسمارت چین، کاردانو، آوالانچ (Avalanche)، پالیگان (Polygon) و ترون همگی با ماشین مجازی اتریوم سازگار هستند.
قابلیت تعامل در درون اکوسیستم اتریوم یک مزیت دیگر است. اپلیکیشنهای غیرمتمرکز مبتنی بر شبکه اتریوم به کمک آن میتوانند بهشکل بهتری با هم تعامل کنند که به یک تجربۀ کاربری سریعتر و بدوننقص منجر میشود.
به همۀ این موارد کتابخانۀ کدهای استاندارد برای برنامهنویسان، تعداد روزافزون بلاکچینهای لایه -۲ سازگار با EVM و کاربردهای وسیع آن را اضافه کنید. حالا متوجه میشویم که چرا ماشین مجازی اتریوم و در کل بلاکچین اتریوم به عنوان یک محیط پایدار و مناسب برای توسعۀ برنامههای غیرمتمرکز و دنیای وب۳ شناخته میشود.
پیشنهاد مطالعه: معرفی بهترین ارزهای وب۳ (Web 3.0)
مشکلات ماشین مجازی اتریوم
در کنار سودهای زیادی که از آن میرسد، ماشین مجازی اتریوم چندین مشکل دارد. مهمترین مانع در واقع از محبوبیت آن نشأت میگیرد. ازدحام داده در این ماشین مجازی، به هزینه گس بیش از اندازه برای پیادهسازی و اجرای قرارداد میانجامد. این هزینه گس که با واحد اتر (ETH) پرداخت میشود، بهشدت با پیچیدگی قرارداد هوشمند و ازدحام شبکه در حین اجرا افزایش مییابد.
به علاوه چون زبان سالیدیتی (Solidity) محبوبترین زبان برنامهنویسی برای قراردادهای هوشمند است که در ماشین EVM اجرا میشوند، برنامهنویسان باید تجربه و مهارت فنی لازم را در استفاده از آن برای ساختن قراردادهای هوشمند کارآمد کسب کنند. این مهم است چون هر محاسبات اضافی به قیمت گرانتر شدن هزینه گس تمام میشود و در نهایت یک مانع در موفقیت پروژه خواهد بود.
در حالی که اصلاح و بهروزرسانی قرارداد هوشمند امکانپذیر است، اما با ریسکهای امنیتی همراه است چراکه باید قراردادهای واسطه ایجاد کرد که آدرس قرارداد هوشمند اصلی را بازمیگردانند. بنابراین، برنامهنویسانی که از زبانهای برنامهنویسی دیگر استفاده میکنند، باید در رفع هرگونه تکرار درون کد نوشتهشده، دقت کافی به خرج دهند.
یک نقطهضعف دیگر این است که نمیتوان گفت ماشین مجازی اتریوم بهطور کامل غیرمتمرکز است. حدود ۲۵ درصد گرههای اتریوم در واقع روی زیرساختهای خدمات وب آمازون کار میکنند و اگر آنها دچار مشکل شوند، ماشین مجازی و اپلیکیشنهای غیرمتمرکزی که پشتیبانی میکنند، تحتتأثیر جدی قرار میگیرند.
آیندۀ ماشین مجازی اتریوم
در کنار تمام تحولات انقلابی که توسط ماشین مجازی اتریوم به اکوسیستم بلاکچین معرفی شد، بهبود قابلیت تعامل بین زنجیرهای (cross-chain interoperability) مهمترین جنبه برای توسعهدهندگان است. بسیاری از بلاکچینهای سازگار با EVM پدید آمدهاند که اغلب آنها کارمزد کمتر و سرعت بیشتری نیز دارند. در نتیجه، این بلاکچینها میتوانند با کاربران اتریوم به شکل بهتری تعامل کنند و با استفاده از پلتفرمهای پل بلاکچین (بریج) میتوانند انتقال ارزش را به شبکههای خود تسهیل کنند.
پیشنهاد مطالعه: آموزش پل زدن با پلتفرمهای بریج (BRIDGE) در شبکه اتریوم
حالا، پس از اجرای موفقیتآمیز رویداد مرج اتریوم در سپتامبر ۲۰۲۲، هدف بعدی انتقال از ماشین EVM به Erhereum WebAssembly (eWASM) است. این ماشین مجازی که مستقل از پلتفرم و متناسب با مقیاس، طراحی شده، بهنظر میرسد که برگ برندۀ بعدی برای شبکه اتریوم است. این نوآوری میتواند بلاکچینهای دیگر را نیز به استفاده از این محیط برای اجرای قرارداد هوشمند ترغیب کند.
بههرحال، اینکه آیا راهحل eWASM به عنوان مطمئنترین سازوکار، جایگزین ماشین مجازی اتریوم بشود پرسشی است که تنها گذر زمان به آن پاسخ خواهد داد. تنها چیزی که میتوان با اطمینان گفت این است که این راهحل، بیعیب نیست و چالشهایی مثل سرعت، توان عملیاتی، قابلیتها و پیچیدگی، سیستم اتریوم را آزار میدهد. رفع مشکلات EVM میتواند یک نقشۀ راه برای ادامۀ مسیر پیشرفت شبکه غیرمتمرکز اتریوم باشد.
اگر قرار است شبکه اتریوم انقلابی در نحوۀ تعامل و تراکنش ما با یکدیگر ایجاد کند، یکی از عوامل آن، اصلاح و بهبود ماشین مجازی اتریوم (EVM) است.
پیشنهاد مطالعه: هرآنچه باید دربارۀ بهروزرسانی مرج (Merge) اتریوم بدانید!
جمعبندی
در این مقاله، مفهوم ماشین مجازی اتریوم (EVM) را شکافتیم؛ به نقش آن در اجرای قراردادهای هوشمند پرداختیم و دیدیم که چگونه کدهای بایتی را اجرا میکند. سپس به اهداف، مزیتها و نقش آن در پیشرفت و توسعۀ شبکه اتریوم اشاره شد. در نهایت، پس از مرور برخی از مشکلات و چالشها، نگاهی به آیندۀ آن در اکوسیستم اتریوم انداختیم.
در پایان، میتوان گفت ماشین مجازی اتریوم یا EVM قلب تپندۀ پیادهسازی و اجرای قرارداد هوشمند است. درک عمیق از آن برای هر فردی که میخواهد اپلیکیشن غیرمتمرکز در فضای وب ۳.۰ را توسعه دهد و با اینکار به دنیای غیرمتمرکز آینده وارد شود، ضروری است.
این مقاله صرفا برای اهداف آموزشی ارائه شده است و نباید بهعنوان مشاورهی تجاری و سرمایهگذاری از طرف کوین ایران و نویسندگانش قلمداد شود.