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

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

آخرین ویرایش: , Invalid DateTime

نمونه‌سازی فیزیکی 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) نیز مفید خواهد بود.

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

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

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

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

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

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

1Y(S, T)= S'
2

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

وضعیت

در زمینه‌ی اتریوم، وضعیت یک ساختار داده‌های عظیم به نام درخت مارکل پاتریشیای اصلاح‌شده(opens in a new tab) است که همه‌ی حساب‌ها را با هش مرتبط نگه می‌دارد و به یک هش ریشه‌ای که در زنجیره بلوکی ذخیره‌شده قابل تقلیل است.

تراکنش‌ها

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

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

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

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

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

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

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

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

پیاده‌سازی EVM

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

در طول تاریخ 5 ساله اتریوم، EVM مورد بازنگری‌های متعددی قرار گرفته است و چندین پیاده‌سازی EVM در زبان‌های برنامه‌نویسی مختلف وجود دارد.

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

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

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