ماشین مجازی اتریوم (EVM) چیست و چگونه کار می‌کند؟

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

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

کلمه EVM مخفف Ethereum Virtual Machine به معنای ماشین مجازی اتریوم است. وجود این ماشین برای شبکه اتریوم مانند وجود آب برای ماهی است.

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

عناوین مطلب:

EVM‌ به توسعه دهندگان و برنامه‌نویسان بلاک‌چین اتریوم این امکان را می‌دهد تا با ساخت قرارداد‌های هوشمند توسط زبان برنامه نویسی Solidity، اپلیکیشن‌های غیرمتمرکز تولید کرده و بربستر این بلاک‌چین مستقر کنند.

یکی از کاربری‌های رایج قرارداد‌های هوشمند تولید، مدیریت و تبادل توکن‌ها بربستر بلاک‌چین اتریوم (و سایر بلاک‌چین‌هایی که از این ماشین پشتیبانی می‌کنند) است. 

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

برای درک بهتره قدرت EVM‌ باید به اجزای هسته آن نگاهی داشته باشیم:

ماشین مجازی اتریوم، پلتفرم EVM

اگر تا به حال از سرویس BitTorrent یک ویدیو، موسیقی یا نرم‌افزاری را دانلود کرده باشید از مزایای شبکه غیرمتمرکز آگاه خواهید شد.

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

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

ماشین مجازی
ماشین‌های مجازی به عنوان یک لایه انتزاعی بین کد و ماشین عمل می‌کنند که وظیفه اجرای کد‌های نوشته شده را عهده دارند.

ماشین‌های مجازی مشابه ماشین‌های فیزیکی دارای حافظه ذخیره سازی، RAM و CPU هستند (مانند کامپیوتر شما)، اما این ماشین‌ها در عمل از منابع سخت افزاری برای اجرای خود به عنوان کد بهره می‌برند. در واقع آن‌ها نرم‌افزار‌هایی هستند که شما می‌توانید با نصب آن روی کامپیوتر‌تان به عملکرد تعیین شده ماشین مجازی دست پیدا کنید. 

از نظر تئوری همه می‌توانند یک VM اجرا کنند همین موضوع باعث تبدیل آن به یک پلتفرم با قابلیت جابه‌جایی بالا (Portable) برای شبکه غیرمتمرکز شده است. این موضوع در مورد EVM نیز صدق می‌کند، این ماشین از شبکه غیرمتمرکز متشکل از نود‌ها برای اجرای قرارداد‌های هوشمند بهره می‌برد.

قرارداد‌های هوشمند، اپلیکیشن‌های EVM

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

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

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

نکته مهمی که در مورد قرارداد‌های هوشمند باید به خاطر بسپارید این است که آن‌ها به جای اتکا به سرویس‌های ثانویه پرداخت و انجام تراکنش، مستقیما وارد عمل می‌شوند و فرستنده می‌تواند دارایی‌های خود را مستقیم به آدرس قرارداد هوشمند برای اجرای یک عملیات ارسال کند. 

چیزی که باعث اهمیت قرارداد‌های هوشمند در تضمین امنیت آن‌ها می‌شود این است پس از استقرار (Deploy) روی بلاک‌چین، امکان اعمال تغییر روی کد‌های آن‌ها وجود ندارد.

نتایج قرارداد‌های هوشمند همیشه قابل انتظار هستند از این رو آن‌ها روی اعتماد به کد ایجاد می‌شوند. در بلاک‌چین‌ اتریوم، هر گاه یک عملکرد قرارداد هوشمند اجرا شود (مانند انتقال توکن)، وضعیت EVM یا State آن نیز تغییر می‌کند.

ماشین مجازی اتریوم را می‌توان به یک ماشین وضعیت (state machine) تشبیه کرد. این ماشین وظیفه انجام محاسبات تغییر وضعیت ناشی از اجرای قرارداد‌های هوشمند را برعهده دارد.

حالا تغییر وضعیت به چه معناست؟ ذخیره داده‌هایی که برای همیشه در قرارداد هوشمند باقی می‌مانند در وضعیت ماشین ذخیره می‌شود. برای مثال دارایی‌های شما، داده‌های وضعیت حساب کاربری شما، تراکنش‌هایی که در ولت شما و قرارداد هوشمند انجام شده‌اند همگی در سطح وضعیت ماشین قرار می‌گیرند. 

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

قراردادهای هوشمند
قرارداد‌های هوشمند سازگار با EVM در زبان برنامه نویسی Solidity نوشته می‌شوند و نمی‌توان این کد‌ها را مستقیما اجرا کرد.

کد‌های قرارداد‌های هوشمند ابتدا باید به دستورالعمل‌های ماشینی سطح پایین‌تر به نام Opcode تفسیر شوند تا ماشین‌ها و کامپیوتر‌ها بتوانند آن‌ها درک کنند.

بیشتر بخوانید: چرخه زندگی قرارداد هوشمند چیست؟

Opcode، زبان مورد استفاده ماشین مجازی اتریوم

ماشین مجازی اتریوم به عنوان تورینگ کامل (Turing complete) یا شبه تورینگ برچسب زده می‌شود.

معنای آن این است که EVM از نظر تئوری می‌تواند هر نوع مسئله محاسباتی را حل کند. این موضوع با اجرای دستورالعمل‌های در سطح ماشین که به آن Opcode گفته می‌شود امکان پذیر است.

Opcode‌ اجرا شده در EVM امکان اجرای کد‌ها و وظایف تعیین شده در قرارداد‌های هوشمند یا حتی تراکنش‌ها را امکان پذیر می‌کند. در حال حاضر در ماشین مجازی اتریوم حدود 150 Opcode وجود دارد که EVM قابلیت اجرای همه آن‌ها را دارد. این آپ‌کد‌ها شامل عملیات مختلفی اعم از Arithmetic ،Stopping ،logging ،Duplication ،push ،Memory ،comparison و Exchange را شامل می‌شوند. 

بازگرداندن اطلاعات بلاک و محیط شبکه از وظایف دیگر آپ‌کد‌ها در ماشین مجازی اتریوم هستند.

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

همان‌طور که در تصویر بالا مشاهده می‌کنید، قرارداد هوشمند نوشته شده توسط برنامه نویس در زبان Solidity به بایت‌کد و ABI که در فرمت json است کامپایل (تفسیر) می‌شود. پس از آن در مرحله استقرار (Deploy)، بایت‌کد به دست آمده روی شبکه قرار می‌گیرد.  

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

Gas، سوخت EVM

گاز یا Gas احتمالا یکی از رایج‌ترین مسائلی است که در هنگام مواجه با بلاک‌چین‌های پلتفرم قرارداد هوشمند به خصوص اتریوم با آن مواجه شده‌اید. با این حال کاربرد Gas هنوز برای بسیاری مشخص نیست و احتمالا اشتباه جای افتاده است.

EVM برای انجام عملیات‌های مختلف در لایه‌های پایین نیازمند مقدار مشخصی GAS برای پردازش دستورات است اما چیزی که در شبکه اتریوم دائما تغییر می‌کند، قیمت هر واحد Gas مصرفی است. 

در حال حاضر مسئله Gas و قیمت بالای آن یکی از مشکلات اصلی اتریوم به شمار می‌رود. اما به نظر شما چرا ما باید در هنگام انجام تراکنش‌های اتریوم، قیمت بالایی برای gas بپردازیم؟

بیشتر بخوانید: تراکنش‌های سریع‌تر و ارزان‌تر با پل زدن از اتریوم به لایه 2! (راهنمای کامل)

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

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

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

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

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

یا در مثالی دیگر، هر تراکنش معمولی در شبکه حداقل 21,000 گاز مصرف می‌کند که ارسال مقدار کمتر از آن باعث Revert شدن تراکنش و شکست آن خواهد شد. اغلب شکایت کاربران به دلیل وجود و مصرف Gas نیست بلکه به محدودیت‌های Gas برای انجام موفقیت آمیز یک تراکنش مربوط می‌شود.

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

این روند را می‌توان مانند پر کردن باک خودرو تشبیه کرد. شما برای پر کردن باک خودرو به میزان مشخصی بنزین نیاز دارید که به ازای هر لیتر آن باید مبلغی پرداخت کنید. بنابراین فرمول ساده محاسبه کارمزد گاز به این صورت خواهد بود:

کارمزد = میزان Gas مورد نیاز * قیمت Gas

کارمزد Gas
کارمزد Gas نوعی پاداش برای تاییدکننده‌ای است که از اعتبار اطلاعات موجود در تراکنش اطمینان حاصل می‌کند.

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

زمانی که فرستنده تراکنش، محدودیت Gas را افزایش می‌دهد، این مسئله نشان دهنده پیچیده بودن عملیات انجام تراکنش است که به دلیل کارمزد بالای تعیین شده آن، به عنوان نوعی مشوق برای تایید‌کنندگان تراکنش در جهت اولویت‌دهی برای تایید سریع‌تر تراکنش برای به دست آوردن پاداش بیشتر است.

در زمان‌هایی که فعالیت شبکه به اوج خود برسد، تایید‌کنندگان تراکنش(Validator) از استخر تراکنش‌های در انتظار، تراکنش‌هایی را انتخاب می‌کنند که میزان Gas ارسالی آن‌ها بیشتر از سایرین باشد.

در طرف دیگر کارمزد Gas تحت تاثیر عرضه و تقاضای درون شبکه قرار می‌گیرد. نکته جالب در مورد Gas این است که مقدار باقیمانده آن که برای انجام تراکنش مصرف نشده باشد به فرستنده تراکنش برگشت داده می‌شود. 

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

در این حالت سیستم شبه تورینگ EVM به شکلی است که تا جایی پردازش را ادامه می‌دهد که فرستنده با ارسال Gas مایل به انجام آن بوده باشد.

بیشتر بخوانید: گس وار (Gas War) چیست و چگونه باید در این رقابت پیروز شد؟

از کیف‌پول تا State machine

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

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

با این که بلاک‌چین اتریوم نیز از همین قوانین پیروی می‌کند اما قابلیت قرارداد‌های هوشمند آن کارایی زیادی برای این کریپتو کارنسی فراهم کرده است. برای چنین قابلیتی، اتریوم باید از سیستم تناسب پیچیده‌تری برای پیاده‌سازی آن استفاده می‌کرد. در این حالت اتریوم به جای استفاده از لجر‌های توزیع شده، از سیستم State Machine یا ماشین وضعیت استفاده می‌کند. 

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

موارد استفاده ماشین مجازی اتریوم

اکنون شما در مورد EVM و نحوه عملکرد آن آگاهی دارید. در ادامه ما نگاهی به موارد کاربری این ماشین مجازی در پروژه‌های اتریومی خواهیم داشت.

البته کاربرد‌های EVM فقط به لیستی که در ادامه معرفی می‌کنیم محدود نمی‌شود و با جستجو در فضای دیفای می‌توان پروژه‌های نوآورانه زیادی را مشاهده کرد.

توکن‌های ERC-20

استاندارد ERC20 توکن‌هایی هستند که می‌توان آن‌ها را بین آدرس‌های مختلف جا به جا کرد.

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

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

بیشتر بخوانید: چگونه بدون کدنویسی، یک توکن ERC20 ایجاد کنیم؟

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

صرافی‌های غیرمتمرکز

صرافی‌های غیرمتمرکز (DEX)، قرارداد‌های هوشمندی را روی شبکه قرار می‌دهند که امکان تبادل توکن‌های ERC-20‌ را فراهم می‌کند.

این قرارداد‌های هوشمد بازار ساز خودکار یا AMM نام دارند. علت نام‌گذاری این قرارداد‌ها در فرآیند بدون واسطه آن‌ها در مشارکت کاربران برای تامین نقدینگی در استخرهای آن است.  

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

توکن‌های ERC-721

علاوه‌بر استاندارد ERC20 که برای توکن‌های مثلی به کار می‌رود، استاندارد ERC721 که با نام توکن‌های NFT آن را می‌شناسیم نیز محبوبیت زیادی کسب کرده است.

توکن‌های ERC721 در واقع نوعی استاندارد برای توکن‌های غیرمثلی هستند که هر کدام از آن‌ها نیازمند استقرار یک قرارداد هوشمند مخصوص روی بلاک‌چین است.

توکن‌های NFT
شما برای توسعه نسخه شخصی سازی شده توکن‌های NFT، قرارداد هوشمند اختصاصی آن را توسعه و روی شبکه بلاک‌چین آپلود کنید.

پیاده سازی آثار هنری در قالب توکن‌های NFT و تصاویر پروفایل (PFP) از مهم‌ترین کاربرد‌های توکن NFT است. علاوه‌بر آن، پروژه‌های بازی کریپتو مانند Axie Infinity و God Unchained نیز از دیگر کاربرد‌های مهم توکن‌های ERC721 در فضای گیمفای را به ما نشان می‌دهند. 

بیشتر بخوانید: توکن‌های PFP NFT (تصویر پروفایل)؛ محبوب‌ترین NFT های بازار!

نتیجه گیری

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

با این حال، در حال حاضر چالش‌های زیادی در مورد EVM وجود دارد که فقط گذشت زمان می‌تواند آن‌ها را حل کند. مشکلاتی نظیر سرعت تراکنش‌ها و هزینه بالای کارمزد Gas برای تعامل با قرارداد‌های هوشمند از مهم‌ترین نقد‌های وارده به این سیستم و کل بلاک‌چین اتریوم است. 

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

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

آیا این مطلب مفید بود؟
‌بله‌‌خیر‌

قصد خرید یا فروش ارز دیجیتال در ایران را دارید؟ در این سایت می‌توانید با اطمینان و با چند کلیک خرید کنید:

نام ویژگی‌هاامتیاز
نوبیتکس
  • خرید ارز دیجیتال با کارت بانکی شتاب
  • بدون نگرانی از تحریم
  • معامله با کارمزد و سرعت مناسب
  • ترید ارز دیجیتال با دلار (تتر) و ریال
blankblank
صرافی خارجی MEXCblankblank
بیشتر بخوانید:

اتریوم (Ethereum) چیست؟

0 0 رای
به مطلب امتیاز دهید:
اشتراک
اطلاع از
guest

0 دیدگاه
جدیدترین
قدیمی‌ترین بیشترین رای
Inline Feedbacks
مشاهده همه دیدگاه‌ها
blank
0
از دیدگاه‌ شما استقبال می‌کنیمx