در آغاز کار بهتر است برای آشنایی بیشتر با ماشین مجازی اتریوم (Ethereum Virtual Machine) یا همان EVM، با شبکه بیت تورنت (BitTorrent) آشنا شویم. سازنده اتریوم ویتالیک بوترین، میگوید که بیت تورنت اولین نرم افزار غیر متمرکز (DAPP) بوده که یک جامعه را جدا از کاربران و صرافی ها را در سراسر اینترنت در برمی گرفت.
بیت تورنت
برنامه نویسی به نام برام کوهن (Bram Cohen)، بیت تورنت را به عنوان یک پروتکل اشتراک گذاری در سال 2001 اختراع کرد. با اینکه افرادی در سراسر دنیا با هزینه های میلیارد دلاری سعی در نابودی این پروتکل داشتند، امروزه بیت تورنت فعالیت خود را حفظ کرده است. علاوه بر این، کاربران میتوانند آخرین فیلمها و نرم افزارها را از طریق پروتکل بیت تورنت دانلود و آن ها را روی دستگاه خود ذخیره کنند.
برای اینکه بیت تورنت از بین برود، باید تک تک کامپیوترهایی که در خانهها وجود دارد را نابود کرد تا کسی از این پروتکل استفاده نکند. این روش در از بین بردن ماشین مجازی اتریوم نیز صدق میکند.
ماشین مجازی اتریوم (EVM)
ماشین مجازی اتریوم (Ethereum Virtual Machine) یا EVM بسیار قدرتمند است. محیط ایزوله مجازی آن درون هر نود (Node) اتریوم جاسازی شده است که هریک از آن ها وظیفه اجرای کد قراردادها را دارند. قراردادها به طور معمول با زبانهای برنامهنویسی خاصی مثل سالیدیتی (Solidity) نوشته میشوند و بعد از آن به کدهای ماشین مجازی اتریوم تبدیل میشوند.
ماشین مجازی اتریوم در حقیقت یک ماشین تورینگ کامل است که اجرای آن روی شبکه بلاک چین اتریوم صورت می گیرد و این امکان را به هر کسی می دهد که بتواند پلتفرم ها و اپلیکیشن های خودش را به شکل غیر متمرکز روی آن اجرا کند. در اصل این ماشین مجازی یک دستگاه کدنویسی شده است که می تواند قرارداد های هوشمندی که به زبان Solidity نوشته شدهاند را، روی شبکه بلاکچین اجرا کند. ماشین مجازی اتریوم وظیفه تایید اعتبار تراکنش های انجام شده در بلاکچین اتریوم را به وسیله کنترل وضعیت حساب، وضعیت جهانی، وضعیت ذخیرهسازی، اطلاعات بلاک و اطلاعات فضای رانتایم به عهده دارد. علاوه بر این در اتریوم، از مفهوم gas به عنوان کارمزد انجام تراکنش استفاده میشود.
هر نود در شبکه اتریوم، یک ماشین مجازی اتریوم را راهاندازی میکند که به آن ها اجازه میدهد تا ساختارها و الگوریتمها را به صورت هم زمان اجرا کنند. با توجه به غیر متمرکز بودن شبکه اتریوم، این ماشین مجازی به «رایانه جهانی غیرقابل توقف» معروف شده است.
زبان های برنامه نویسی و واحدهای پردازشگر مرکزی دو نمونه برجسته از سیستمهایی هستند که به دادهها دسترسی داشته و آن ها را تغییر میدهند. اگر این قوانین قادر به شبیه سازی محاسبه فرضی تورینگ باشند، این قوانین تورینگ کامل هستند. این سیستم میتواند هر نوع محاسبه یا برنامه کامپیوتری را اجرا کند.
پس در اصل یک ماشین تورینگ کامل از لحاظ ریاضیاتی توانایی حل هر مشکلی را که به آن معرفی شود، دارد. همان گونه که قبل تر به آن اشاره شد، ماشین مجازی اتریوم شبیه این ماشین است. محاسباتی که ماشین مجازی اتریوم انجام میدهد به گس (gas) وابسته است. این اساسا به عنوان محدودهای برای تعداد کل محاسباتی که میتوان انجام داد، عملکرد دارد.
کاربرد های این سیستم
می توانید قراردادهایی بسازید که نیاز به برقراری چند شرط دارند. مثلاً قرارداد های بیمهای که پس از برقراری شرایطی مشخص، پرداخت هزینه بیمه را انجام میدهند.
می توانید به افراد مختلف امکان دهید قراردادهای کوچکتری را در دل قرارداد بزرگتر شما ایجاد کنند. فرض کنید شخصی چند نفر را برای ساختن خانه استخدام میکند. او میتواند بین لوله کشها، گچ برها و مهندسان برق قرارداد هوشمند کوچکتری ایجاد کند تا پس از برقراری شرایط مشخص شده، دستمزد آن ها پرداخت شود.
می توانید قراردادهایی بسازید که به شکل خودکار آیتمهای لازم را خرید و فروش میکنند. فرض کنید در بازار سیستمهای تهویه مطبوع کار میکنید. میخواهید تنها وقتی سیستم تهویه مطبوع بخرید که دمای هوا از یک حد مشخص بیشتر میشود. میتوانید یک قرارداد هوشمند بسازید که هوا را در نظر گرفته و خرید را به شکل خودکار در هنگام نیاز انجام میدهد.
از طرف دیگر در بلاک چین اتریوم میتوانیم با استفاده از قراردادهای هوشمند، برنامهها یا اپلیکیشنهای غیر متمرکز (DApps) بسازیم. با این حال، کد برنامههای به کاربرده شده بر روی ماشین مجازی اتریوم شبیه یکدیگر نیستند و اجرای یک عملیات برای شبکه میتواند سختتر یا راحتتر از دیگر عملیاتها باشد. بنابراین به راهکاری نیاز داریم که با آن بتوانیم میزان پردازش موردنیاز و در نتیجه کارمزد هر عملیات را نسبت به سختی یا آسانی آن مشخص کنیم. این راهکار، واحدی بهنام گس (Gas) است. گس را میتوان سوخت ماشین مجازی اتریوم (EVM) دانست.
جایگاه گس (Gas) در ماشین مجازی اتریوم
با استفاده از مکانیزم گس، دو مشکل اساسی برطرف خواهد شد:
- تضمین یک اعتبارسنج (ولیدیتور) برای تسویه مبلغ اولیه
- معتبر بودن اطلاعات تراکنش
برای انجام هر تراکنش یا عملیات روی شبکه اتریوم باید با استفاده از توکن اتر (ETH) کارمزد پرداخت کنیم.
وضعیت جهانی اتریوم
وضعیت جهانی اتریوم متشکل از نگاشت بین شناسههای آدرس ۱۶۰ بیتی و وضعیت حساب است. تمام این اطلاعات نگاشت در یک ساختار داده به عنوان Merkle Patricia Tree نگهداری میشوند. این ساختار داده از گروهی از نود ها با موارد زیر ساخته شده است:
- مقدار زیادی از نودهای برگی در انتهای درخت که دادههای زیربنایی در آن قرار دارند.
- مجموعهای از نودهای واسطه، که در آنها هر نود، هش دو نود فرزند است.
- یک هش ریشهای نیز از هش دو نود فرزند پیشین تشکیل میشود که نشان دهنده بالای ساختار درخت است.
وضعیت ذخیره این اطلاعات مربوط به وضعیت حسابی خاص است که در زمان اجرا در ماشین مجازی اتریوم نگهداری میشود. اطلاعات بلاک مقادیر وضعیت که برای پشتیبانی از یک تراکنش مورد نیاز هستند.
اهمیت ماشین های مجازی، چرا ماشین های مجازی مهم هستند؟
ماشین مجازی اتریوم اولین نمونه در نوع خود بود که عملکرد قرارداد هوشمند را به دنیا آورد. اهمیت آن در این است که بلاکچین را از وسیله انتقال معاملات پولی به یک رایانه غیرمتمرکز تبدیل می کنند. اما این به معنای بی نقص بودن ماشین مجازی اتریوم(EVM) نیست. اشکال زدایی یا به روزرسانی قرارداد های هوشمند دشوار است. علاوه بر این، شبکه اتریوم مقیاس پذیر نیست و به دلیل اضافه بار از هزینه های بالای معامله رنج می برد.
آیا ماشین های مجازی می توانند به یکدیگر متصل شوند؟
اگرچه خود اتریوم از معماری قدیمی برخوردار است، اما مزیتی که وجود دارد این است که توسعه دهندگان دیگر، سیستم عامل های خود را با ماشین های مجازی راه اندازی کرده اند که می توانند به ماشین مجازی اتریوم(EVM) متصل شوند. Metaverse یک نمونه از آن هاست.
ماشین مجازی Metaverse
ماشین مجازی Metaverse به هر کسی اجازه می دهد، قرارداد های هوشمند ایجاد کند و آن ها را با استفاده از ابزارهای مشابه قراردادهای هوشمند اتریوم در زنجیره Metaverse دخیره کند. از آن جا که با ماشین مجازی اتریوم سازگار است، هر توسعه دهنده ای که از قبل برنامه های خود را روی اتریوم اجرا می کند، می تواند Dapp های خود را به راحتی به Metaverse منتقل کند. علاوه بر این، این پلتفرم هزینه کمتر و توان عملیاتی بالاتری را ارائه می دهد که به معنای تجربه بهتر کاربر است.
اتریوم چگونه کار میکند؟
اتریوم مبتنی بر پروتکل بیتکوین و طراحی بلاکچین آن است، اما از برنامههای کاربردی خارج از سیستمهای پولی حمایت میکند. تنها شباهت این دو بلاکچین این است که کل تاریخچه تراکنشهای مربوط به شبکههای خود را ذخیره میکنند، با این تفاوت که بلاکچین اتریوم تاریخچه بسیار بیشتری ذخیره میکند. علاوه بر تاریخچه تراکنشها، هر گره رابط در شبکه Ethereum نیاز به دانلود آخرین وضعیت یا اطلاعات جاری هر قرارداد هوشمند در داخل شبکه، مانده حساب هر کاربر و تمامی کدهای قرارداد هوشمند و جایی که ذخیره شده، دارد.
اساساً، بلاکچین اتریوم را میتوان به عنوان ماشین حالت مبتنی بر تراکنش توصیف کرد. در علوم کامپیوتر، ماشین حالت به عنوان چیزی که قادر به خواندن مجموعهای از ورودیها و انتقال به حالت جدید مبتنی بر آن ورودیهاست، تعریف میشود. هنگامی که تراکنش انجام میشود، ماشین به حالت دیگری منتقل میشود.
هر حالت اتریوم، شامل میلیونها تراکنش است. این تراکنشها به صورت “بلوک” گروهبندی میشوند و هر بلوک با بلوکهای قبلی زنجیر میشود. اما قبل از اینکه تراکنش را بتوان به نردبان اضافه کرد، باید آن را مورد تأیید قرار داد، که از طریق فرآیند استخراج، انجام میشود.
استخراج
به فرایندی گفته می شود که یک گروه از رابط ها محاسبات تکمیل چالش “اثبات کار ” را انجام میدهند، که اساس آن معمای ریاضی است. کامپیوتر قدرتمندتر است و سریعتر میتواند معما را حل کند. پاسخ این معما به خودی خود اثبات کار است و اعتبار یک بلوک را تضمین میکند.
بسیاری از ماینرها در سراسر جهان برای ایجاد و اعتبار یک بلوک با یکدیگر رقابت میکنند، چرا که هر بار که ماینر اثبات میکند بلوک توکن های اتر جدیدی ساخته است، به او جایزه داده میشود. ماینرها سنگ بنای شبکه Ethereum هستند، زیرا آن ها نه تنها تراکنشها و سایر عملیات درون شبکه را تأیید میکنند، بلکه همچنین توکنهای جدیدی از ارز شبکه ایجاد می کنند.
سخن پایانی:
در پایان باید یادآور شویم که ماشین مجازی اتریوم مولفه مهمی برای توسعه قراردادهای هوشمند است. درک آن برای افرادی که میخواهند در حوزه اتریوم و قرارداد هوشمند فعالیت داشته باشند، ضروری است. ساخت و توسعه قرارداد هوشمند نیازمند درک کامل و درست ماشین مجازی اتریوم است. برای آشنایی بیشتر با مباحث ارزهای دیجیتال به سایت آکادمی علی ربیعی مراجعه فرمایید.