ماشین مجازی (Virtual Machine) چیست؟
قبل از پرداختن به جزئیات فنی اتریوم، باید مفهوم پایه ای ماشین مجازی را درک کنیم. یک ماشین مجازی یا VM، یک شبیه ساز نرم افزاری است که رفتار یک کامپیوتر فیزیکی را تقلید می کند. این نرم افزار به شما اجازه می دهد تا یک سیستم عامل یا برنامه را در محیطی ایزوله اجرا کنید، بدون اینکه تأثیری بر سیستم عامل اصلی دستگاه شما بگذارد. برای مثال، اجرای یک برنامه مخصوص لینوکس بر روی یک کامپیوتر با سیستم عامل ویندوز، از طریق یک ماشین مجازی امکان پذیر است. این فناوری پایه و اساس بسیاری از زیرساخت های ابری و محاسباتی مدرن را تشکیل می دهد.
ماشین مجازی اتریوم (EVM) دقیقاً چه نقشی دارد؟
ماشین مجازی اتریوم که به اختصار EVM نامیده می شود، موتور محاسباتی و محیط اجرای قرارداد های هوشمند در شبکه اتریوم است. اگر اتریوم را یک کامپیوتر جهانی و غیر متمرکز در نظر بگیریم، EVM پردازشگر مرکزی این کامپیوتر است که دستورالعمل ها را اجرا می کند. این محیط به توسعه دهندگان اجازه می دهد تا برنامه های غیر متمرکز (DApps) را بسازند و اجرا کنند، با این اطمینان که کدها دقیقاً همانطور که نوشته شده اند، بدون دخالت شخص ثالث یا سانسور، اجرا خواهند شد.
نکته کلیدی اینجاست که EVM یک ماشین حالت توزیع شده (Distributed State Machine) است. این بدان معناست که وضعیت فعلی تمام حساب ها و موجودی ها در یک پایگاه داده عظیم ذخیره می شود و EVM قوانین انتقال این وضعیت از یک بلوک به بلوک بعدی را تعیین و اجرا می کند.
معماری داخلی ماشین مجازی اتریوم
معماری EVM به گونه ای طراحی شده است که حداکثر امنیت و کارایی را در یک محیط غیر متمرکز فراهم کند. این معماری بر سه ناحیه اصلی داده متکی است که هر کدام نقش حیاتی در پردازش تراکنش ها ایفا می کنند:
پشته (Stack)
یک ساختار داده با عمق ۱۰۲۴ آیتم که هر کدام ۲۵۶ بیت طول دارند. بیشتر عملیات محاسباتی و منطقی EVM روی این پشته انجام می شود و از اصل آخرین ورودی، اولین خروجی (LIFO) پیروی می کند.
حافظه موقت (Memory)
یک آرایه بایتی خطی که برای ذخیره سازی داده های موقت در حین اجرای یک تراکنش استفاده می شود. این حافظه پس از پایان اجرای تراکنش به طور کامل پاک می شود و هزینه استفاده از آن به صورت درجه دوم افزایش می یابد.
ذخیره سازی (Storage)
گران ترین و دائمی ترین بخش حافظه EVM. این فضا مانند هارد دیسک عمل می کند و وضعیت نهایی قرارداد های هوشمند و متغیر های آن ها را برای همیشه روی بلاک چین ثبت می کند.
فرآیند اجرای قرارداد هوشمند در EVM
اجرای یک قرارداد هوشمند در این محیط از یک فرآیند دقیق و مرحله به مرحله پیروی می کند تا از صحت و امنیت کد اطمینان حاصل شود:
- نوشتن کد منبع: توسعه دهندگان منطق برنامه را با زبان های سطح بالا و خوانا برای انسان، مانند سالیدیتی (Solidity) یا وایپر (Vyper) می نویسند.
- کامپایل به بایت کد: از آنجا که EVM زبان های سطح بالا را درک نمی کند، یک کامپایلر کد منبع را به بایت کد (Bytecode) تبدیل می کند. بایت کد یک فرمت فشرده و سطح پایین است که برای ماشین قابل خواندن است.
- تبدیل به آپ کد (Opcodes): بایت کد از مجموعه ای از دستورالعمل های بسیار کوچک و پایه به نام آپ کد تشکیل شده است. هر آپ کد یک عملیات خاص ریاضی یا منطقی را انجام می دهد، مانند جمع دو عدد یا خواندن موجودی یک حساب.
- اجرا و مصرف گس: هر نود در شبکه اتریوم، نسخه ای از EVM را اجرا می کند و این آپ کد ها را خط به خط پردازش می نماید. در حین اجرا، منابع محاسباتی به صورت گس مصرف می شود و در صورت موفقیت، وضعیت جهانی شبکه به روز رسانی می گردد.
مفهوم تورینگ کامل (Turing Complete) در اتریوم
یکی از ویژگی های بنیادین که EVM را از بسیاری از سیستم های بلاک چینی اولیه متمایز می کند، تورینگ کامل بودن آن است. در علوم کامپیوتر، یک سیستم تورینگ کامل سیستمی است که قادر به حل هر مسئله ای باشد که از نظر الگوریتمی قابل حل است، مشروط بر اینکه زمان و حافظه کافی در اختیار داشته باشد. این ویژگی به توسعه دهندگان آزادی عمل می دهد تا هر نوع منطق برنامه نویسی پیچیده ای را، از ساده ترین انتقال وجوه تا پیچیده ترین پروتکل های مالی و بازی های زنجیره ای، روی شبکه اتریوم پیاده سازی کنند.
سیستم گس (Gas) و مدیریت منابع در EVM
گس واحد اندازه گیری میزان کار محاسباتی مورد نیاز برای اجرای عملیات در EVM است. از آنجا که منابع محاسباتی در یک شبکه غیر متمرکز محدود و ارزشمند هستند، سیستم گس به عنوان یک مکانیزم اقتصادی حیاتی عمل می کند. هر دستورالعمل آپ کد هزینه گس مشخصی دارد. برای مثال، یک عملیات جمع ساده گس بسیار کمی مصرف می کند، در حالی که ذخیره سازی داده در فضای Storage گس بسیار بالایی نیاز دارد.
محاسبه دقیق هزینه گس از ضرب مقدار گس مصرفی در قیمت گس به دست می آید. مقدار گس مصرفی توسط خود EVM و بر اساس پیچیدگی عملیات تعیین می شود و قابل تغییر نیست، اما قیمت گس را کاربر تعیین می کند. با معرفی مکانیزم EIP-1559، ساختار هزینه گس تغییر کرد و شامل یک هزینه پایه که سوزانده می شود و یک انعام برای اعتبارسنج ها گردید. این تغییر به پایدارتر شدن هزینه ها و کاهش تورم اتریوم کمک شایانی کرده است.
ویژگی های بنیادین و امنیتی EVM
- غیر متمرکز بودن: هیچ نهاد مرکزی، سرور یا شرکتی کنترل EVM را در دست ندارد. هزاران نود در سراسر جهان به طور مستقل کد را اجرا و اعتبارسنجی می کنند.
- محیط ایزوله (Sandbox): هر قرارداد هوشمند در یک محیط ایزوله اجرا می شود. اگر یک قرارداد دارای باگ امنیتی باشد یا هک شود، این آسیب فقط به همان قرارداد محدود می شود و به سایر بخش های شبکه یا سایر قرارداد ها سرایت نمی کند.
- قطعی بودن (Determinism): EVM تضمین می کند که با ورودی یکسان و وضعیت اولیه یکسان، خروجی همیشه دقیقاً یکسان خواهد بود. این ویژگی برای رسیدن به اجماع در شبکه بلاک چین ضروری است.
- تغییر ناپذیری (Immutability): پس از استقرار یک قرارداد هوشمند روی بلاک چین، کد آن غیر قابل تغییر است. این موضوع اعتماد کاربران را جلب می کند، زیرا منطق برنامه توسط هیچ کسی پس از انتشار دستکاری نخواهد شد.
شبکه های سازگار با EVM (EVM Compatible)
موفقیت عظیم ماشین مجازی اتریوم باعث شده است تا بسیاری از پروژه های بلاک چینی دیگر، معماری خود را به گونه ای طراحی کنند که با EVM سازگار باشد. سازگاری با EVM به این معناست که توسعه دهندگان می توانند همان کد سالیدیتی نوشته شده برای اتریوم را بدون هیچ تغییری یا با تغییرات بسیار جزئی، روی این شبکه های جدید مستقر کنند. این امر باعث اشتراک گذاری ابزارها، کیف پول ها و استانداردهای توکن می شود.
مزایا و معایب استفاده از ماشین مجازی اتریوم
مزایا
- ایجاد اکوسیستم نوآورانه امور مالی غیر متمرکز و ان اف تی
- امنیت و شفافیت بی نظیر به دلیل غیر متمرکز بودن
- پشتیبانی گسترده از ابزارهای توسعه و جامعه برنامه نویسان
- تضمین اجرای دقیق و بدون سانسور قرارداد ها
معایب
- هزینه های بالای گس در زمان شلوغی شبکه
- محدودیت ذاتی در مقیاس پذیری لایه اصلی
- پیچیدگی توسعه و نیاز به دانش تخصصی زبان سالیدیتی
- خطر باگ های غیر قابل بازگشت در قرارداد های هوشمند
آینده ماشین مجازی اتریوم و راهکار های مقیاس پذیری
آینده EVM با تحولات پیوسته در پروتکل اتریوم گره خورده است. ارتقا های شبکه مانند انتقال به اثبات سهام و بهینه سازی های مداوم، کارایی این ماشین مجازی را بهبود بخشیده اند. با این حال، بزرگترین چالش، مقیاس پذیری است. راهکار های لایه دو مانند رول آپ های دانش صفر و رول آپ های خوش بینانه، بار پردازشی را از روی EVM اصلی برداشته و تراکنش ها را خارج از زنجیره پردازش می کنند. این راهکار ها تنها نتیجه نهایی را به لایه اصلی اتریوم ارسال می کنند که منجر به کاهش چشمگیر هزینه های گس و افزایش سرعت شبکه می شود، در حالی که امنیت بنیادین EVM حفظ می گردد.
سوالات متداول
ماشین مجازی اتریوم (EVM) دقیقاً چیست؟
EVM یک محیط اجرای محاسباتی غیر متمرکز و تورینگ کامل است که مسئول پردازش و اجرای قرارداد های هوشمند و برنامه های غیر متمرکز در شبکه اتریوم می باشد.
چرا هزینه تراکنش ها (گس) در اتریوم گاهی بسیار بالا می رود؟
هزینه گس بر اساس عرضه و تقاضا برای فضای محاسباتی در شبکه تعیین می شود. در زمان شلوغی شبکه، کاربران برای اولویت دادن به تراکنش خود، قیمت گس بالاتری پیشنهاد می دهند که منجر به افزایش کلی هزینه ها می شود.
منظور از شبکه های سازگار با EVM چیست؟
این شبکه ها بلاک چین هایی هستند که معماری خود را طوری طراحی کرده اند که بتوانند کد های نوشته شده برای ماشین مجازی اتریوم را بدون تغییر اجرا کنند، که این امر باعث سهولت انتقال برنامه ها بین شبکه ها می شود.
آیا امکان تغییر کد یک قرارداد هوشمند پس از استقرار در EVM وجود دارد؟
خیر، یکی از ویژگی های اصلی EVM تغییر ناپذیری است. پس از استقرار، کد قرارداد غیر قابل تغییر است، مگر اینکه توسعه دهنده از الگوهای خاصی مانند قرارداد های قابل ارتقا از ابتدا استفاده کرده باشد.