ماشین مجازی اتریوم / بخش اول

14 فروردین 1401 | شبکه‌های اجتماعی

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

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

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

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

زمانی که مقاله بخش فنی[1] اتریوم را می‌خوانیم یا به مقالاتی که شیوه کارکرد شبکه اتریوم را توضیح می‌دهند نگاهی می‌اندازیم، ممکن است با این سوال مواجه شوید که EVM چیست؟

برای درک اکوسیستم اتریوم، شناخت EVM بسیار حیاتی است. اما پیش از ورد به بحث اصلی، نیاز است ابتدا اجزای ماشین مجازی اتریوم، بخش به بخش تشریح شود و در ادامه شیوه کارکرد این اجزا در کنار یکدیگر که EVM را می‌سازد بیان شود.

ماشین‌های مجازی

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

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

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

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

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

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

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

یک ماشین تورینگ، یک ماشین فرضی است که مفهوم تفکر ماشینی یا غیرانسانی را مجسم می‌کند. پروسه تفکر توسط تعداد زیادی از الگوریتم‌ها اجرا می‌شود. در مقاله تورینگ، او بیان می‌دارد که چنین ماشینی بایستی یک حلقه نوار با خطوطی از توابع را پردازش کند، نواری که می‌تواند به جلو یا عقب برود. همچنین یک هد خواندن/نوشتن را تصور کنید که بین این توابع حرکت می‌کند. بنابراین، این ماشین قادر به پردازش یک سمبل یا تغییر آن است. چنین ماشینی در هر لحظه تنها می‌تواند توجه خود بر روی یک حالت مشخص معطوف کند. (مفهوم حالت‌مند بودن[2] در درک ماشین‌های مجازی اتریوم کاربرد دارد)

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

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

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

حال که با ایده کلی ماشین تورینگ کامل و شیوه کلی کارکرد ماشین‌های مجازی آشنا شدیم، مجددا به بحث چیستی ماشین مجازی اتریوم بر می‌گردیم. در سال‌های اخیر بلاکچین اتریوم بیش از پیش مورد توجه قرار گرفته است و کاربران می‌دانند که این بلاکچین می‌تواند کاربردهایی بیشتر از انجام تراکنش‌های مالی در بستر غیرمتمرکز داشته باشد. با انتقال شبکه اتریوم به اتریوم ۲.۰ ماشین مجازی اتریوم (EVM) هم ماشین مجازی جدیدی به نام eWASM در اتریوم ۲.۰ منتقل شد.

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

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

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

 

[1] YellowPaper

[2] Statefulness