انجمن توسعه قرارداد هوشمند

آشنایی با ماشین مجازی اتریوم (evm)

وقتی در مورد یک بلاکچین مثل بیت کوین حرف میزنیم، در واقع در مورد یک دفترکل توزیع شده یا Distributed Ledger صحبت میکنیم. چون عموما بلاکچین چیزی نیست جز یک دفتر کل توزیع شده که یک ارز رمزنگاری شده داره که مثل یک ارز معمولی در دنیای واقعی عمل میکنه و از قوانین سفت و سختی تبعیت میکنه تا بتونه در شبکه معامله و مبادله بشه. برای مثال می تونیم بگیم شما با داشتن مقداری بیت کوین نمیتونید بیش از دارایی تون خرج کنید یا دارایی تون رو دوبار خرج کنید. در واقع این قوانین به عنوان قوانین پایه در تمامی تراکنش های شبکه بلاکچین بیتکوین و سایر بلاکچین ها هم برقراره.
بریم سراغ اتریوم. اتریوم هم دقیقا از همین قوانین تبعیت میکنه و رمزارز بومی خودش رو داره که اسمش ETHER هست. ولی برگ برنده اتریوم و چیزی که اتریوم رو از بلاکچین های دیگه متمایز میکنه داشتن قراردادهای هوشمند یا Smart Contractها و ماشین مجازیه اونه که بهش EVM یا Ethereum Virtual Machine میگیم. در واقع EVM قلب تپنده ی شبکه ی اتریومه و همچنین یک ماشین تورینگ کامله. ماشین تورینگ کامل چیه؟ ماشینیه که توسط آلن تورینگ در سال 1936 ایجاد شد و میتونه هر عملیاتی رو انجام بده. به ماشینی تورینگ کامل میگیم که 4 شرط داشته باشه: 1. قابلیت محاسبه با چهار عملگر اصلی(ضرب، تقسیم، جمع و تفریق) رو داشته باشه2. حلقه یا (Loop) داشته باشه3. قابلیت انتقال یا Go to داشته باشه4. و از شرط (If Then Else) هم پشتیبانی کنه. پس EVM هم چون این شرط ها رو داره یک ماشین تورینگ کامله و به کمکش میتونیم اپلیکیشن های غیرمتمرکز یا همون Dappها رو در بستر بلاکچین اجرا کنیم.
به طور خلاصه EVM مثل یه تابع (Function) ریاضی عمل میکنه. به این صورت که یه ورودی میگیره و بعد از پردازش، یه خروجی قطعی تولید میکنه.به عنوان مثال تابع Y رو در نظر بگیرید که یک حالت یا وضعیت(S) و همچنین یک تراکنش (Transaction) رو به عنوان ورودی میگیره و در نهایت یک خروجی جدید تحت عنوان “حالت جدید شبکه” تولید میکنه. Y(S, T)= S’
EVM یا ماشین مجازی اتریوم چطوری میتونه یه اپلیکیشن رو بر بستر بلاکچین اجرا کنه؟ میتونیم خیلی خلاصه بگیم که ما به کمک تعدادی ابزار توسعه و با زبان برنامه نویسی سالیدیتی (Solidity) قراردادهای هوشمند رو مینویسیم. این قراردادهای هوشمند در واقع همون پروتکل ها یا برنامه های ما هستند. این ها رو میدیم به EVM تا بتونه اجراشون کنه. EVM هم کد فایل های سالیدیتی رو میخونه و اونها رو به بایت کد(بایت کد زبانیه بسیار نزدیک به زبان ماشین) تبدیل میکنه و در نهایت با اجرای این بایت کدها، اپلیکیشن های ما هم اجرا میشن.
البته بهتره اینو بدونیم که انجام هر عملیاتی توسط EVM هزینه داره و برای این موضوع اصطلاحی وجود داره به نام GAS. در واقع گس سوخت شبکه اتریومه و ما با توجه به نوع عملیات و تراکنشی که در شبکه انجام میدیم باید این GAS رو پرداخت کنیم. در انتها هم بهتره بدونیم:

  1. اولین ماشین مجازی که در دنیای بلاکچین معرفی شد ماشین مجازی اتریوم یا EVM بود.
  2. بعضی از بلاکچین های معروف نیومدن چرخ رو دوباره اختراع کنن و به جای اینکه بشینن با کلی زحمت ماشین مجازی پیاده سازی کنن، اومدن و از ماشین مجازی اتریوم در شبکه های بلاکچین خودشون استفاده می کنن. مثل شبکه بایننس اسمارت چین (Binance Smart Chain)، آوالانچ (Avalanche). بعضی دیگشونم EVM رو یکم تغییر دادن ولی اعلام کردن که ماشین مجازیاشون EVM Compatible هست یعنی سازگار با EVM هستند. یعنی شما میتونید Smart Contract هایی که در شبکه MATIC نوشتین رو در شبکه اتریوم کپی کنید و بدون مشکل اجراشون کنید.

منبع: Ethereum.org و چند وبسایت بلاکچینی دیگر

5 Likes

ممنون از مطلب آموزشی تون :grinning: