تکنولوژی بلاکچین در گذشته فقط برای افراد متخصص اهمیت داشت و همه مردم آن را نمیشناختند؛ اما این تکنولوژی امروزه یکی از جریانهای اصلی زندگی مردم محسوب میشود و افراد بسیاری اخبار آن را دنبال میکنند و به دنبال یادگیری آن هستند. ماشین مجازی اتریوم EVM یکی از تکههای پازل فناوری بلاکچین محسوب میشود. زمانی که با این ماشین مجازی آشنا میشوید، متوجه خواهید شد که کاربرد بلاکچینها به امور مالی و ارزهای دیجیتال محدود نمیشود و میتواند در صنایع مختلف مورد استفاده قرار بگیرد.
توسعهدهندگان اتریوم از ابتدا قصد داشتند این شبکه را به عنوان کامپیوتر تکنولوژی بلاکچین توسعه دهند و توسعه ماشین مجازی هم بخشی از برنامههای آنها برای دستیابی به این چشمانداز بزرگ است. در این مقاله از صرافی داموند توضیح میدهیم ماشین مجازی اتریوم چیست و چه کاربردی در بلاکچین دارد.
آنچه باید پیش از آشنایی با ماشین مجازی اتریوم بدانید…
این مقاله از سطوح پایه ارائه شده است تا متوجه تمام فرایندی که در Ethereum Virtual Machine رخ میدهد، بشوید. به همین دلیل لازم است در ابتدا چند مفهوم پایه را مورد بررسی قرار دهیم و سپس به سراغ داستان اصلی ماشین مجازی بلاکچین اتریوم برویم. در این قسمت از مقاله با قسمتهای مختلف بلاکچین اتریوم و نحوه تعامل آنها با یکدیگر را متوجه میشوید.
ماشین مجازی چیست؟
ماشینهای مجازی میان افزارهایی هستند که در سطح بالاتر از سیستم عاملهایی مانند ویندوز یا IOS و… قرار دارند. ماشینهای مجازی روی سیستم عاملهای معمولی نصب میشوند تا بتوانند عملکردی مشابه ماشینهای محاسباتی داشته باشند. به عبارت دیگر، ماشینهای مجازی میتوانند قدرت محاسباتی یک کامپیوتر فیزیکی را به صورت مجازی اجرا کنند. با نصب این ماشینها روی سختافزار یا سیستم عامل یک کامپیوتر میتوان آن را به یک دستگاه مناسب برای فعالیت در اکوسیستـمهای غیـرمتمرکز تبدیل کرد.
با استفاده از یک ماشین مجازی میتوان از قدرت پردازش سیستمهای عضو شبکه برای بلاکچین استفاده کرد و اهمیتی ندارد که این سیستمها در چه موقعیت مکانی قرار دارند. با توجه به این تعریف میتوان گفت ماشین مجازی اتریوم کامپیوتری است که قدرت پردازش خود را از نقاط مختلف جهان میگیرد و میتواند این قدرت پردازش را در اختیار پروژههای مختلف از جمله قراردادهای هوشمند، Dappها یا سایر پلتفرمهای غیرمتمرکز قرار دهد.
نودهای بلاکچین اتریوم میتوانند از نقاط مختلف جهان به ماشین مجازی شبکه دسترسی داشته باشند. نودها میتوانند به صورت اختیاری قدرت پردازش خود را در اختیار شبکه اتریوم قرار دهند. ویژگیهای ماشین مجازی و نیاز اتریوم باعث شد که استفاده از این تکنولوژی بهترین راهکار برای دستیابی به چشماندازهای اتریوم باشد.
کامل بودن تورینگ چیست؟
تکامل یا کامل بودن تورینگ از دیگر اصطلاحات ارز دیجیتال است که باید با آن آشنایی داشته باشید. ماشین مجازی اتریوم یک ماشین تورینگ کامل است، اما این یعنی چه؟
آلن تورینگ اولین کسی بود که نظریه این ماشینها را ارائه داد و ایدههایی درباره اینکه یک ماشین فرضی با توانایی اندیشیدن چطور کار میکنند، بیان کرد. او گفت ماشینها نمیتوانند مانند انسانها فکر کنند و قدرت تحلیل و پردازش مسائل را ندارند، آنها تنها میتوانند مسائل را با استفاده از قوانین پردازش دادهای که در آنها وجود دارد، حل کنند. بنابراین اگر مسئلهای با این قوانین مطابقت نداشته باشد، ماشین تورینگ توانایی حل آن را نخواهد داشت.
به بیان ساده، این ماشین یک کلاهک و یک نوار با مربعهایی به یک اندازه دارد. روی هر مربع در نوار یک علامت وجود دارد که ماشین به کمک کلاهک میتواند آنها را بخواند یا تغییر دهد. ماشین مطابق با قوانینی که از پیش برایش تعریف شده، با مربعهای روی نوار برخورد میکند و آنها را پردازش میکند. دو نکته مهم در این عملکرد وجود دارد؛ نکته اول این است که نوار از نظر تئوری میتواند تا بینهایت ادامه داشته باشد و تنها محدودیتهای فیزیکی عملکرد ماشین تورینگ را متوقف میکند. نکته دوم هم این است که ماشین تورینگ در لحظه میتواند یک مربع را پردازش کند و از پردازش همزمان چند مربع روی نوار عاجز است.
جاوا اسکریپت در اتریوم
زبانهای برنامهنویسی هم از عملکرد کامل شدن ماشین تورینگ استفاده میکنند. جاوا اسکریپت یکی از این زبانهای برنامهنویسی است که برای کار با اتریوم و ماشینهای مجازی مورد استفاده قرار میگیرد و همچنین پایه زبان برنامهنویسی قراردادهای هوشمند اتریوم (Solidity) است.
اکنون پیشنیازهای لازم درباره ماشین مجازی بلاکچین اتریوم را میدانید و میتوانیم به سراغ مبحث اصلی برویم.
ماشین مجازی اتریوم چیست؟
در سالهای اخیر بلاکچین اتریوم بیش از پیش مورد توجه قرار گرفته است و کاربران میدانند که این بلاکچین میتواند کاربردهایی بیشتر از انجام تراکنشهای مالی در بستر غیرمتمرکز داشته باشد. با انتقال شبکه اتریوم به اتریوم ۲.۰ ماشین مجازی اتریوم (EVM) هم ماشین مجازی جدیدی به نام eWASM در اتریوم ۲.۰ منتقل شد.
ماشین مجازی اتریوم یک پلتفرم نرمافزاری است که توسعهدهندگان میتوانند پروژههای مختلفی چون قراردادهای هوشمند و اپلیکیشنهای غیرمتمرکز را روی آن اجرا کنند. در حال حاضر تمام قراردادهای هوشمند و حسابهای کاربری بلاکچین اتریوم روی این ماشین مجازی قرار دارند.
توسعهدهندگان با استفاده از این ماشین دیگر نیازی به سختافزارهای قدرتمند ندارند و میتوانند از قدرت شبکه آن استفاده کنند. اینکه EVM دقیقا چطور کار میکند مبحثی تخصصی است که به دانش برنامهنویسی نیاز دارد و در سطح اطلاعات عمومی درباره بلاکچین و ارزهای دیجیتال مورد نیاز نیست.
برای درک درست سازوکار اتریوم این مقاله را بخوانید: اتریوم چیست؟
ویژگیهای EVM چیست؟
سایر ماشینهای مجازی مانند بیتکوین بیشتر با تراکنشهای مالی ارزهای دیجیتال سر و کار دارند و هیچکدام به اندازه ماشین مجازی اتریوم پیشرفته نیستند. ماشین مجازی بیت کوین بر خلاف اتریوم، به یک دفتر کل توزیعشده متمرکز است و نمیتواند یک کامپیوتر جهانی باشد. برای درک بهتر تفاوتهای میان EVM و سایر VMها، درباره ویژگیهای مختلف EVM توضیح خواهیم داد.
ماشین حالات توزیعشده
اتریوم در تلاش است که چیزی بیشتر از یک دفتر کل توزیع شده در یک محدوده باشد؛ وب سایت اصلی مجموعه این بلاکچین را به عنوان «Distributed State Machine» به معنی «ماشین حالات توزیع شده» معرفی کرده است. اتریوم علاوه بر دادهها، موجودی و اطلاعات حسابهای کاربری، حالات ماشین را هم نگهداری میکند.
حالات ماشین مجازی در هر بلوک باهم متفاوت است، زیرا انتقال دادههای ماشین در هر مجموعه از برنامهها با توجه به قوانین خاصی انجام میشود. ماشین مجازی اتریوم همان چیزی است که این تغییر حالات مبتنی بر قوانین را مشخص میکند.
ماشین مجازی اتریوم همچنین از طریق زبان برنامهنویسی سالیدیتی با قراردادهای هوشمند در تعامل است و در ذخیره شرایط قرارداد و اجرای آنها نقش دارد. اتریوم برای پشتیبانی از قراردادهای هوشمند و تبدیل شدن به یک ماشین حالات توزیعشده باید ویژگیهای مختلف دیگری هم داشته باشد که در ادامه آنها را نام میبریم.
ماشین مجازی غیرقابل تغییر
غیرقابل تغییر یعنی به ازای تمام ورودیهای یکسان، یک خروجی وجود دارد و اهمیتی ندارد که چند بار ماشین تورینگ دستورات را اجرا کرده باشد. غیرقابل تغییر بودن یکی از اساسیترین ویژگیهای مورد نیاز برای ماشین مجازی اتریوم است، زیرا اپلیکیشنهای غیرمتمرکز و پروژههای فعال بر بستر اتریوم ممکن است در هر زمانی تراکنشهایی با مبالغ زیاد را انجام دهند. ثبت و عدم تغییر تراکنشهای انجام شده اهمیت بسیاری دارد.
ماشین مجازی ایزوله
قراردادهای هوشمند باید در محیطی ایزوله اجرا شوند تا احتمال هک یا ایجاد باگ در آنها کاهش پیدا کند. در واقع زمانی که هرکدام از قراردادهای هوشمند در محیطی ایزوله اجرا میشوند، اگر یکی از آنها مورد حمله هک قرار بگیرد یا باگی داشته باشد، این مشکل سایر قراردادهای هوشمند را درگیر نخواهد کرد و پروتکل اصلی ماشین مجازی را تحت تأثیر قرار نمیدهد.
ماشین مجازی دارای پردازشهای پایانپذیر
اگر ماشین مجازی اتریوم یک ماشین تورینگ باشد، حداقل به صورت تئوری میتوانیم بگوییم که قراردادهای هوشمند موجود در EVM میتوانند تمام مسائل را حل کنند یا حداقل به صورت فرضی چنین قابلیتی را دارند. البته در حال حاضر هیچ راهکاری برای اطمینان از اینکه عملکردهای ماشین مجازی در بازه زمانی مشخصی به پایان میرسد، وجود ندارد. این موضوع نشان میدهد که در اکوسیستم باید مکانیزمی با مهلت مشخص برای ایجاد محدودیت وجود داشته باشد.
در شبکه اتریوم از گس (Gas) برای کمک کردن به ترافیک شبکه استفاده میشود. گس همچنین بخشی از مکانیزم پاداش در شبکه است؛ به وسیله هزینه گس (کارمزد تراکنشها) تعیین میشود که کدام تراکنشها باید در اولویت قرار بگیرند یا در لحظه اجرا شوند. محدودیت گس چیزی است که از ابتدای شروع کار تعیین میشود و زمانی که به پایان برسد، عملیات و پردازشهای ماشین مجازی متوقف میشود.
مزایا و معایب ماشین مجازی اتریوم
مزیتهای EVM عبارت است از:
- همه توسعهدهندگان بدون محدودیت در منابع میتوانند Dappهایشان را توسعه دهند. این موضوع بستر خلاقیت را برای افرادی که بودجه کافی برای راهاندازی پروژه خود ندارند، فراهم میکند.
- بهرهمندی از پتانسیل کامل قراردادهای هوشمند مانند راهاندازی توکنهای NFT.
- کمک به توسعه داده به صورت دموکراتیک.
معایب ماشین مجازی بلاکچین اتریوم عبارت است از:
- شبکه فعال در ماشین مجازی اتریوم کاملا غیرمتمرکز نیست و نودها برای دسترسی به شبکه به واسطههایی مثل شرکتهای ارائه دهنده اینترنت نیاز دارند. بنابراین اگر روزی این شرکتها اتریوم را دوست نداشته باشند، میتوانند ارتباط بسیاری از نودها را با آن قطع کنند.
- ماشینهای مجازی تنها برای افراد حرفهای و کسانی که دانش کدنویسی دارند، کاربردی هستند. البته توسعهدهندگان در تلاشند میانافزارهایی طراحی کنند که زبانی نزدیک به زبان انسان داشته باشند تا تعامل با آنها سادهتر شود.
- هنگام افزایش ترافیک شبکه، هزینه گس به شدت افزایش پیدا میکند. تراکنشهای بزرگ در این زمینه با مشکل مواجه نمیشوند، اما زمانی که ترافیک زیاد میشود، احتمالا تراکنشهای کوچک در اولویتهای آخر قرار میگیرند، در نتیجه باید زمان زیادی منتظر بمانند. این موضوع برای Dappهایی که در طول روز تعداد زیادی تراکنش کوچک انجام میدهند، مشکلات بسیاری به وجود میآورد.
دادهها چگونه در ماشین مجازی ذخیره میشوند؟
دادهها در شبکه اتریوم با ساختار trie (درختی) مدیریت میشوند؛ یعنی دادههایی مانند موجودی حسابها مستقیما روی بلوکهای بلاکچین قرار نمیگیرند. بلاکها تنها هشهای نود اصلی تراکنش، حالات و رسیدها را ذخیره میکنند.
در بلاکچین اتریوم دو نوع داده وجود دارد:
- دادههای دائمی: زمانی که یک تراکنش تایید میشود، این دسته از دادهها به همراه بلوک روی بلاکچین ذخیره میشوند و غیرقابل تغییر هستند.
- دادههای زودگذر: موجودی حساب از جمله این دادههاست و در یک آدرس در حالت آزمایشی ذخیره میشود. زمانی که تراکنش جدیدی توسط آن آدرس انجام شود، این داده تغییر خواهد کرد.
هرکدام از انواع دادههای بلاکچین به صورت مجزا ذخیره میشوند. عملکرد اتریوم در زمینه ذخیره دادهها شبیه به سیستمهای بانکی سنتی است. در بانکهای سنتی مردم حسابهایی دارند و زمانی که میخواهند از این حساب برداشت کنند، سیستمهای بانکی بررسی میکنند که آیا مبلغ مورد نیاز فرد در حسابش موجود است یا خیر، بعد از آن تراکنش را تایید میکند. در بلاکچین اتریوم هم نودهای اعتبارسنج چنین کاری را انجام میدهند و در صورتی که شرایط فراهم باشد، دستور تشکیل بلاک و ذخیره دادهها را میدهند.
کسب درآمد از ماشین مجازی اتریوم
EVM یک مدل اقتصادی ایجاد کرده است. با استفاده از پاداشهای گس، یک ماشین تورینگ کامل همتا به همتا توسعه داده میشود و میتواند از منابع موجود در سراسر جهان برای توسعه برنامههایش استفاده کند. نتیجه این موضوع رسیدن به چشمانداز کامپیوتر جهانی برای اتریوم است.
زمانی که نودها به شبکه اتریوم میپیوندند، میتوانند دستورات خود را در بستری که در آن نیازی به اعتماد به شخص ثالث ندارند، اجرا کنند. همچنین قراردادهای هوشمند غیرقابل تغییر به این نودها تضمین میدهند که در ازای انجام هر دستور، پاداش مورد نظرشان را دریافت خواهند کرد. این روش به محافظت از سیستم اولویتبندی تراکنشها کمک میکند.
برخی از نودهای اتریوم به عنوان اعتبارسنج عمل میکنند، وظیفه این نودها بررسی اعتبار دادههای مربوط به تراکنشهای مختلف است. این نودها همچنین باید تشخیص دهند که آیا فرستنده هزینه کافی برای اجرای قرارداد هوشمند را در والت خود دارد یا خیر. وظیفه دیگر نودهای اعتبارسنج بررسی عملکرد صحیح ماشین مجازی است.
چطور میتوان با ماشین مجازی اتریوم کار کرد؟
شما هم میتوانید به عنوان یک نود در شبکه اتریوم فعالیت داشته باشید و هم به عنوان توسعهدهنده اپلیکیشن غیرمتمرکز فعالیت خود را آغاز کنید. البته هر دو فرایند به تخصص کافی نیاز دارند تا بتوانید به درآمد خوبی از این طریق برسید.
برای تبدیل شدن به یک نود در اتریوم باید implementation اتریوم را دانلود و نصب کنید و نسخهای خالی از ماشین مجازی اتریوم را روی سیستم خود داشته باشید. بعد از آن باید تاریخچه تراکنشهای اتریوم که شامل بلوکهای از ابتدا تا کنون است را دانلود کنید، این کار ممکن است به زمان و هزینه زیادی نیاز داشته باشد.
برخی از برنامهنویسان هم به عنوان توسعهدهنده اپلیکیشن غیرمتمرکز در شبکه فعالیت میکنند و به کمک قدرت پردازش ماشین مجازی اتریوم برنامههایی برای حل مشکلات مختلف مینویسند. در حال حاضر Dappها در حوزههای بسیار متنوعی از جمله بازارهای مالی، اخبار، پلتفرم اشتراکگذاری فایل، امور مالی غیرمتمرکز و روشهای تعامل بدون نظارت شخص ثالث در حال توسعه هستند.
کلام آخر
ماشین مجازی اتریوم یکی از مباحث تخصصی در تکنولوژی بلاکچین است و تنها برنامهنویسان میتوانند به صورت تخصصی عملکرد آن را مورد بررسی قرار بدهند. ما در این مقاله سعی کردیم به زبان ساده توضیح دهیم EVM چیست و اتریوم چگونه با استفاده از آن میتواند به یک کامپیوتر غیرمتمرکز جهانی تبدیل شود.
توسعهدهندگان میتوانند برای پروژههای مختلف از ماشین مجازی بلاکچین اتریوم کمک بگیرند، روی آن قراردادهای هوشند با شرایط گوناگون ایجاد کنند و Dappهایی با ایدههای منحصر به فرد توسعه دهند. به مرور زمان ماشینهای مجازی بیشتر توسعه پیدا میکنند و احتمالا زمانی میرسد که کار با آنها بسیار ساده خواهد بود و هرکسی بدون دانش کدنویسی میتواند با آنها کار کند.