اتریوم (Ethereum)، شبکه بلاک چینی است که مفهوم برنامهریزی قرارداد هوشمند را معرفی کرد. اما این شبکه چطور پایه و اساس ایجاد، تایید و اجرای هزاران قرارداد هوشمند را فراهم میکند؟ اینجاست که اهمیت ماشین مجازی اتریوم (EVM) مشخص میشود. ماشین مجازی اتریوم را میتوان به عنوان هسته انرژی اتریوم توصیف کرد.
ماشین مجازی اتریوم (EVM) یکی از اجزای اصلی اتریوم است که به تقویت بلاک چین و قراردادهای هوشمند کمک میکند. این ماشین برای کمک به اتریوم برای دستیابی به پذیرش و تمرکززدایی کاربر حیاتی است. پروتکل اتریوم صرفاً به منظور حفظ عملکرد مداوم، بدون وقفه و تغییرناپذیر این ماشین وجود دارد. تمام حسابهای اتریوم و قراردادهای هوشمند در EVM وجود دارند. در این مقاله نگاهی دقیق به ماشین مجازی اتریوم یا EVM خواهیم داشت و نحوه کارکرد آن را دقیقتر بررسی خواهیم کرد.
ماشین مجازی اتریوم چیست؟
به گفته ویتالیک بوترین، سازنده دومین ارز دیجیتال بزرگ بر اساس ارزش بازار، اتریوم، هدف اصلی ماشین مجازی اتریوم دیکته کردن وضعیت هر بلاک در بلاک چین اتریوم است. EVM مشابه سایر شبکههای مبتنی بر بلاک چین عمل میکند؛ زیرا این شبکهها از یک دفتر کل توزیع شده برای نگهداری پایگاه داده تراکنشها استفاده میکنند.
اتر (Ether)، که دومین ارز دیجیتال بزرگ از نظر ارزش بازار است، به دلیل توکن بومی خود، یعنی ETH، میان سرمایهگذاران ارز دیجیتال و معاملهگران محبوبیت بالایی دارد. با این حال، زبان برنامه نویسی بومی Solidity و ماشین مجازی اتریوم (EVM)، نقش بزرگی در محبوبیت و توجهی دارد که این دارایی از سوی جامعه توسعهدهندگان دریافت میکند. در واقع، بلاکچین اتریوم به دلیل انعطافپذیری، گستره وسیع ابزارهای توسعهدهنده موجود و پایگاه کاربر بزرگ پلتفرم، توسعهدهندگان برنامههای غیرمتمرکز (DApp) را جذب کرده است.
ماشین مجازی اتریوم (EVM) که هسته بلاک چین را تشکیل میدهد، برنامهای است که کد برنامه یا قراردادهای هوشمند خود را اجرا کرده و محیطی را فراهم میکند تا روی اتریوم اجرا شوند. EVM موتور محاسباتی اتریوم است، که وضعیت بلاک چین را مدیریت کرده و عملکرد قرارداد هوشمند را فعال میکند. گرههای اتریوم کپیهایی از دادههای تراکنش را نگه میدارند، که EVM آنها را پردازش میکند تا دفتر کل توزیعشده را بهروزرسانی کند. این ماشین قابلیت اجرا کردن هر برنامهای را که با هر زبان برنامهنویسی دارد، در نتیجه به توسعهدهندگان اجازه میدهد تا به راحتی قراردادهای هوشمند سفارشی و DAppها را برای فضای در حال رشد وب 3.0 ایجاد کنند.
علاوه بر این قابلیتهای مهم، EVM به تمام گرههای شبکه دسترسی دارد، اجرای قراردادهای هوشمند و به طور موثر تمام تراکنشهای روی بلاکچین اتریوم را مدیریت میکند، که آن را به یکی از قدرتمندترین ماشینهای مجازی موجود تبدیل کرده است.
بررسی دقیقتر EVM
برای درک بهتر EVM، باید با مفهوم ماشین مجازی یا virtual machine بیشتر آشنا شویم. ماشین مجازی یک پیادهسازی نرمافزاری از نوعی ماشین است که دستورالعملها را طوری اجرا میکند که گویی روی یک ماشین فیزیکی اجرا شدهاند. در نتیجه این موضوع، EVM بر روی هر پلتفرمی که زیرساختهای لازم را پشتیبانی میکند، مانند رایانه یا تلفن هوشمند، بدون نیاز به کد مخصوص پلتفرم اجرا خواهد شد. تا زمانی که نرمافزارهای لازم نصب شده باشد، EVM میتواند بر روی هر سیستم عاملی مانند ویندوز، macOS، لینوکس یا اندروید اجرا شود.
علاوه بر این، EVM به صورت منبع باز طراحی شده و کد منبع برای مشاهده، تغییر و توزیع در دسترس است. این موضوع به توسعهدهندگان اجازه میدهد تا برنامههای غیرمتمرکز ایجاد کنند. این برنامهها میتوانند بر روی هر پلتفرمی که از EVM پشتیبانی میکند، بدون توجه به فناوری زیربنایی اجرا شوند.
برای مثال، یک توسعهدهنده میتواند یک برنامه غیرمتمرکز ایجاد کند که روی EVM اجرا میشود و آن را روی سرور دارای لینوکس (Linux) مستقر کند و همین برنامه میتواند روی گوشی هوشمند با سیستم عامل اندروید نیز اجرا شود. این ماهیت پلتفرم آگنوستیک EVM یکی از ویژگیهای کلیدی است که آن را برای ساخت برنامههای غیرمتمرکز مناسب میکند؛ زیرا به توسعهدهندگان اجازه میدهد تا برنامههایی ایجاد کنند که قابلیت اجرا بر روی همه پلتفرمها را دارد، بدون اینکه به یک سیستم عامل یا سختافزار خاصی نیاز باشد.
برخی ویژگیهای ماشین مجازی اتریوم
- EVMها حین کار اجرا میشوند که به اجرای قراردادهای هوشمند اتریوم کمک میکند.
- همانطور که میدانید، شبکه اتریوم حاوی زبان اسکریپت نویسی خاص خود است که بیشتر به نام Solidity شناخته میشود. همراه با زبان برنامهنویسی کامل تورینگ (Turing) نیاز به اجرای این کد نیز وجود دارد.
- برنامه ماشین مجازی اتریوم بر روی شبکه اتریوم اجرا میشود. در نتیجه، اینکه کدام کد در هر زمان معین اجرا شود اتفاقی به نظر میرسد.
بنابراین، EVM دارای یک استیت ماشینی است که طبیعتاً در طول پردازش هر تراکنش ناپایدار است. همچنین یک استیت جهانی حاوی اطلاعاتی در مورد حسابهای مختلف نگهداری شده در بلاک چین اتریوم دارد. همه اقدامات توسط کد EVM کنترل میشوند که به خودی خود از زمان راهاندازی شبکه اتریوم در سال 2015 چندین بار تکرار شده و منجر به پیادهسازی EVM در حال استفاده است.
تاریخچه پیدایش ماشین مجازی اتریوم
در ادامه بهتر است نگاهی به تاریخچه EVM بیندازیم. اکثر افرادی که با بلاک چین اتریوم در تعامل هستند، حتماً درباره ماشین مجازی اتریوم شنیدهاند. جالب اینجاست که شما میتوانید با مروری بر تاریخچه آن، تصور بهتری از یک EVM و عملکردهای آن داشته باشید. اما همه چیز از کجا شروع شد؟
خالق اتریوم، ویتالیک بوترین (Vitalik Buterin)، ادعا کرد که بیت تورنت (BitTorrent) به عنوان یکی از اولین نمونههای نرمافزار غیرمتمرکز خدمت میکرد.برام کوهن (Bram Cohen) BitTorrent در سال 2001 توسعه داد. پروتکل به اشتراکگذاری فایل، حتی پس از گذشت چندین سال و تلاشهای متعدد برای از بین بردن آن، همچنان فعال است.
واقعیت این است که اگر واقعاً میخواهید بیت تورنت را متوقف کنید، باید تمام رایانهها را در سرتاسر دنیا خاموش کنید و همین امر در مورد ماشین مجازی اتریوم نیز صدق میکند. بیت تورنت و ماشین مجازی اتریوم، هر دو ماشینهای مجازی بدون محدودیت فیزیکی هستند. ماشین مجازی اتریوم نیازی به مونتاژ سختافزاری پیشرفته ندارد و به عنوان یک پلتفرم ایدهآل برای مبتدیان عمل میکند. از سوی دیگر، شما باید در مورد بایتها، استکها (stack) و بسیاری دیگر از مفاهیم بلاک چین، مانند اثبات سهام و توابع هش، اطلاعات بیشتری در مورد کدهای سازگار با EVM و همچنین ماشین مجازی اتریوم کسب کنید.
ماشین مجازی اتریوم چگونه کار میکند؟
همانطور که پیش از این اشاره شد، ماشین مجازی اتریوم (EVM) برنامهای است که اسکریپتهایی را اجرا میکند که برای اجرای عملیات خاص معمولاً در بلاک چین اتریوم استفاده میشوند. ماشین مجازی اتریوم فرآیند ایجاد توکنهای جدید در بلاک چین اتریوم را آسان میکند. در اینجا، اسکریپت به معنای مجموعهای از دستورالعملها یا الگوریتمی است که دستوراتی را به رایانه ارائه میدهد. EVM مستلزم آن است که شخص به هر گره شبکه دسترسی داشته باشد تا بتواند دستورات مورد نظر را اجرا کند و توکنهای جدید را بدون هیچ مشکلی در بلاک چین ایجاد کند.
در اتریوم مفهومی به نام قرارداد هوشمند (smart contract) وجود دارد. این قراردادها دارای کدهای کامپیوتری هستند که تبادل پول و اطلاعات را تسهیل میکند. این قراردادها توسط سازنده قرارداد هوشمند از پیش تعریف شده تا اطمینان حاصل شود که یک نتیجه مشخص اتفاق خواهد افتاد. هر چیزی که با کامپیوتر قابل پیادهسازی باشد، میتواند روی EVM اجرا شود.
در اکوسیستم اتریوم، EVM نقشی حیاتی دارد؛ زیرا بستری برای برنامههای غیرمتمرکزی (Dpps) فراهم میکند که بر روی آن اجرا میشوند. ماشین مجازی اتریوم تضمین میکند که تمام تراکنشها و قراردادهای هوشمندی که در بلاک چین اتریوم انجام میشوند، مطابق با کد قرارداد هوشمند، به صورت صحیح اجرا شوند. این ماشین یک پلتفرم برای برنامههای کاربردی است که بر روی آن اجرا میشوند. به عبارت ساده میتوان گفت که ماشین مجازی اتریوم ایجاد و اجرای برنامههای غیرمتمرکز را در بلاک چین تسهیل میکند.
ماشین مجازی اتریوم (EVM) دارای دو بخش است:
- EVM: بخشی که کد منبع جامد را اجرا میکند
EVM به زبان C++ نوشته شده و از LLVM به عنوان کامپایلر آن استفاده میکند. EVM یک ماشین مجازی با امکانات کامل با تمام ویژگیهایی است که شما در یک ماشین مجازی قرارداد هوشمند با هدف کلی میخواهید؛ مانند پشتیبانی از چندین زبان برنامهنویسی، ویژگیهای امنیتی، محیطهای زمان اجرا و موارد دیگر. همچنین به شما امکان نوشتن بایت کد (bytecode) EVM سفارشی را میدهد.
آنکلها قطعات کوچک قراردادهای هوشمند یا دادههای ذخیره شده در بلاک چین هستند و به شما امکان میدهد تا دادههای مربوط به برنامه خود را ذخیره کنید.
بررسی نحوه عملکرد
برای نحوه عملکرد یک ماشین مجازی اتریوم، باید به مجموعه عملکردهای متفاوتی نگاه کرد که این ماشین برای اطمینان از عملکرد روان شبکه اتریوم انجام میدهد. برای هر ورودی که دریافت میکند، EVM خروجیای تولید میکند که ماهیت قطعی دارد و از یک تابع ریاضی پیروی میکند.
EVM دارای 1024 مورد است که هر یک از آنها یک کلمه 256 بیتی است. همچنین یک حافظه موقت بایتی دارد که بین دو تراکنش در بلاک چین اتریوم تغییر میکند. کدهای قرارداد هوشمند که کامپایل شدهاند توسط EVM در قالب مجموعهای از 140 کد عملیات استاندارد اجرا میشوند، در حالی که سایر عملیات مخصوص بلاک چین نیز توسط آن پیادهسازی میشوند. کدهای قرارداد هوشمند که کامپایل شدهاند توسط EVM در قالب مجموعهای از 140 کد استاندارد اجرا میشوند؛ در حالی که سایر عملیات مخصوص بلاک چین نیز توسط آن پیادهسازی میشوند.
در واقع، EVM مسئول حفظ سطحی از انتزاع بین هزاران گره اتریوم و کد اجراکننده است و به عنوان تابعی عمل میکند که نتایج ثابت را بدون فاش کردن جزئیات زیادی برای مشتریان یا گرهها ارائه میکند.
Opcodes چیست؟
Opcode یکی از جنبههای جداییناپذیر در پیادهسازی ماشین مجازی اتریوم است که در حال حاضر تقریباً 150 عدد Opcodeهای مختلف در اتریوم وجود دارد. اهمیت اپ کدها در درک EVM و شناسایی آن به عنوان یک سیستم کامل تورینگ مشهود است. EVM بر اساس توانایی آن در اجرای دستورالعملها یا کدهای عملیاتی در سطح ماشین، به عنوان یک سیستم کامل تورینگ واجد شرایط میشود.
Opcodeهایی که در EVM پشتیبانی میشوند، به آن در انجام وظایف خاص مرتبط با قراردادهای آتی و هوشمند یا تراکنشهای ارز دیجیتال EVM کمک میکنند. Opcodeها برای چندین کار، از جمله ثبت دادهها و وظایف محاسباتی و همچنین بازیابی اطلاعات بلاک، به طور کاربرد داشته باشد. همچنین مهم است که به یاد داشته باشید که Opcodeها مستقیماً در EVM اسکریپت نمیشوند و میتوانند به توسعهدهندگان کمک کنند تا قراردادهای هوشمند ایجاد کرده و با آنها تعامل داشته باشند.
مزایای EVM
- اجرای کدهای ریسکی بدون به خطر انداختن دادهها
میتوان کدهای ریسکی را طوری اجرا کرد که دادهها را در معرض خطر قرار نگیرند. EVM تضمین میکند که محاسبات آن با هیچ چیز دیگری در سیستم یا پروندههای شخصی تداخل نخواهد داشت.
- اجرای قراردادهای هوشمند پیچیده
EVM قراردادهای هوشمند پیچیده را بدون اینکه نگران نحوه تعامل آنها با یکدیگر باشید، اجرا میکند. میتوان آنها را یک بار نوشت و سپس روی پلتفرمهای متعدد اجرا کرد، که امکان ایجاد یک قرارداد واحد را فراهم میکند که در چندین محیط محاسباتی اجرا میشود.
قراردادهای هوشمندی که بر روی EVM نوشته میشوند، در لحظه به تمام وضعیتهای اتریوم دسترسی دارند و امکان انجام پردازش قطعی را فراهم میکنند و تضمین بیشتری در مورد صحت آنها ارائه میدهند.
اجازه دادن به اجماع توزیعشده، یکی از کاربردهای اتریوم است که در آن همه، از رایانهها خودشان، برنامههای مشابهی را اجرا میکنند.
این یک فرآیند پیچیده است؛ زیرا شبکه باید بتواند در هر زمان به یک اجماع برسد. به این ترتیب، سیستم در برابر خرابی گرههای جداگانه قویتر میشود و میتوانید چندین گره را به طور همزمان به روز کنید. نیاز نیست نگران باشید که ممکن است به دلیل نحوه نوشتن کد با یکدیگر مخالفت کنند.
- نوشتن قراردادهای کامپیوتری آسان
EVM برای نوشتن قراردادهای هوشمند و همچنین برای ایجاد برنامههای غیرمتمرکز طراحی شده است. برنامههای غیرمتمرکز برنامههایی هستند که در شبکههای توزیع شده، به نحوی که اطمینان حاصل شود که همه آنها یک نسخه را مشاهده میکنند، اجرا میشوند. همچنین استفاده از EVM نوشتن قراردادهای وابسته به کامپیوتر را که نیاز به دسترسی به نوعی ذخیرهسازی دائمی دارند، بسیار آسان میکند.
معایب EVM
- هزینه بالای ذخیرهسازی دادهها
هزینه اول، کارمزد بالای گس است که برای پرداخت هزینه اجرای یک قرارداد هوشمند باید از آن استفاده کنید. هزینه دیگر هزینه بالای ذخیرهسازی دادهها در بلاک چین است که ممکن است تا بیش از 3 ترابایت را اشغال کند.
در اتریوم، همه تراکنشها برای اجرا نیاز به کارمزد دارند. این کارمزدها «گس (gas)» نامیده میشوند و کارمزد باید با توکنهای ETH پرداخت شود. قیمت گس در لحظه اجرا تعیین میشود و به پیچیدگی اجرای تراکنش بستگی دارد. هرچه محاسبه برای یک تراکنش دشوارتر باشد، هزینه گس آن نیز بیشتر خواهد بود.
- هزینه بیشتر هنگام ازدحام شبکه
در مواقعی که ازدحام شبکه بالا است، به دلیل انجام بسیاری از تراکنشها در بلاک چین، قیمت گس افزایش مییابد؛ زیرا تراکنشهای کمتری وجود دارد. در چنین شرایطی همان مقدار توان محاسباتی باید تراکنشهای بیشتری را انجام دهد.
نوشتن قراردادهای هوشمند و استفاده از EVM نیاز به تخصص فنی دارد. این یک سیستم کامل تورینگ است که به برنامهنویسان اجازه میدهد اسکریپتها را به هر زبان برنامهنویسی که میخواهند بنویسند. بسته به هدف کد، این موضوع یا به نفع برنامهنویس است یا به ضرر او؛ زیرا زبانهای برنامهنویسی ذاتاً خوب یا بد نیستند. همه چیز به این بستگی دارد که چه کسی و برای چه هدفی از آنها استفاده کند. نقطه ضعف این فناوری این است که میتواند مشکلات پیچیده زیادی ایجاد کند؛ زیرا با توانایی بیشتر، مسئولیت بیشتری نیز بر عهده نویسنده کد است.
جمع بندی
همانطور که از نام آن پیداست، EVM یک ماشین مجازی است، البته از نظر عملکرد و ساختار کمی متفاوت است. ماشین مجازی وضعیت چندین کامپیوتر متصل به شبکه را شامل میشود. علاوه بر این، شما همچنین میتوانید EVM را به عنوان یک محیط انعطافپذیر و آسان برای ایجاد و استقرار قراردادهای هوشمند درک کنید.
آینده ماشین مجازی اتریوم (EVM) با آینده بلاک چین اتریوم و توسعه برنامههای غیرمتمرکز (dApps) در اکوسیستم اتریوم مرتبط است. یکی از چالشهای اصلی پیش روی EVM مقیاسپذیری است. بعد از تغییرات زیادی که توسط EVM در اکوسیستم بلاک چین ایجاد شد، این فناوری برای خواندن و اجرای کد توسط تعدادی از پروژههای بلاک چین بهبود یافته است.
با توجه به اینکه قابلیت میانزنجیرهای (cross-chain) مهمترین جنبه برای توسعهدهندگان است، بسیاری از بلاک چینهای سازگار با EVM به کار گرفته شده و اکثر آنها گس کمتر و سرعت تراکنش سریعتری نسبت به پروتکل اتریوم ارائه میدهند. در نتیجه، این بلاک چینها اکنون میتوانند به طور یکپارچه با کاربران اتریوم تعامل داشته و با استفاده از پلهای بلاک چین، انتقال وجه به شبکههای خود را تسهیل میکنند.
سوالات متداول
چه چیزی به ماشین مجازی اتریوم قدرت میدهد؟ گس که در زمان اجرا تولید میشود، به ماشین مجازی اتریوم قدرت میدهد.
ماشین مجازی اتریوم چه زبانی است؟ Solidity زبان اصلی است که در اتریوم و همچنین سایر بلاک چینهای خصوصی استفاده میشود.
معماری ماشین مجازی اتریوم چیست؟ EVM از معماری مبتنی بر استک و اندازه کلمه 256 بیت استفاده میکند.