پرش به محتوای اصلی
Change page

ماشین مجازی اتریوم (EVM)

آخرین ویرایش: , ۲۸ دی ۱۴۰۲

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

خود پروتکل اتریوم صرفاً به منظور حفظ عملکرد مداوم، بدون وقفه و تغییر ناپذیر این ماشین حالت ویژه وجود دارد. این محیطی است که تمام حساب‌های اتریوم و قراردادهای هوشمند در آن زندگی می‌کنند. در هر بلوک معین در زنجیره، اتریوم یک و تنها یک حالت «متعارف» دارد، و EVM همان چیزی است که قوانین را برای محاسبه‌ یک حالت معتبر جدید از بلوکی به بلوک دیگر تعریف می‌کند.

پیش‌نیازها

برای درک EVM آشنایی اولیه با اصطلاحات رایج در علوم کامپیوتر مانند بایت(opens in a new tab)،‏ حافظه(opens in a new tab) و یک پشته(opens in a new tab) ضروری است. همچنین راحت بودن با مفاهیم رمزنگاری/بلاکچین مانند توابع هش(opens in a new tab) و مفید خواهد بود.درخت مرکل(opens in a new tab).

از دفتر کل تا ماشین حالات متناهی

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

در حالی که اتریوم دارای رمزارز بومی خود (اتر) است که تقریباً به‌طور کامل از قوانین شهودی مشابهی پیروی می‌کند، کارکرد بسیار قدرتمندتری را نیز ممکن می‌سازد: قراردادهای هوشمند. برای این ویژگی پیچیده‌تر، قیاس پیچیده‌تری نیز لازم است. به جای یک دفتر کل توزیع شده، اتریوم یک ماشین حالات متناهی(opens in a new tab) توزیع‌شده است. وضعیت اتریوم یک ساختار داده‌ی بزرگ است که نه‌تنها همه حساب‌ها و موجودی‌ها را در خود نگه می‌دارد، بلکه وضعیت ماشین را نیز در خود جای می‌دهد که می‌تواند طبق مجموعه‌ای از قوانین از پیش تعریف‌شده از بلوکی به بلوک دیگر تغییر کند و کد ماشینی دلخواه را اجرا کند. قوانین خاص تغییر حالت از بلوک به بلوک توسط EVM تعریف شده است.

نموداری که ساختار EVM را نشان می‌دهد نمودار برگرفته از‏Ethereum EVM illustrated‏(opens in a new tab)

تابع گذار حالت اتریوم

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

1Y(S, T)= S'

با توجه به یک وضعیت معتبر قدیمی (S) و مجموعه جدیدی از تراکنش‌های معتبر (T)، تابع گذار وضعیت اتریوم Y(S, T) یک وضعیت خروجی معتبر جدید S' ایجاد می‌کند

وضعیت

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

تراکنش‌ها

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

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

دستورالعمل‌های EVM

EVM به صورت یک ماشین پشته‌ای(opens in a new tab) با عمق 1024 آیتم اجرا می‌شود. هر آیتم یک کلمه‌ی 256 بیتی است که برای سهولت استفاده با رمزنگاری 256 بیتی (مانند هش Keccak-256 یا امضاهای secp256k1) انتخاب شده است.

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

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

بایت‌کد قرارداد هوشمند کامپایل‌شده به صورت تعدادی کدگذاری‌های‏ EVM اجرا می‌شود که عملیات‌های استاندارد پشته مانند XOR‏،‏ AND‏ ، ADD،‏ SUB و غیره را انجام می‌دهد. EVM همچنین تعدادی عملیات پشته‌ی مخصوص زنجیره‌ی بلوکی را نیز اجرا می‌کند، مانند ADDRESS،‏ BALANCE،‏ BLOCKHASH و غیره.

نموداری که نشان می‌دهد کجا گاز برای عملیات EVM موردنیاز است نمودارها برگرفته از‏Ethereum EVM illustrated‏(opens in a new tab)

پیاده‌سازی EVM

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

در تاریخ 9 ساله اتریوم، EVM دست‌خوش چندین بازنگری شده است و چندین اجرا و پیاده‌سازی از EVM در زبان های مختلف برنامه نویسی وجود دارد.

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

اطلاعات بیشتر

آیا این مقاله مفید بود؟