شاید نتوان تصور فیزیکی درستی از ماشین مجازی اتریوم EVM توصیف کرد اما میتوان آن را به یک ابر در آسمان بلاکچین یا یک موج در اقیانوس کریپتو تشبیه کرد که بهعنوان یک موجودیت واحد بوده و توسط هزاران رایانه متصل که یک کلاینت اتریوم را اجرا میکنند، نگهداری میشود. کاربرد EVM در دنیای ارز اتریوم چیست؟ در این فضا، علاوه بر اینکه قراردادها و معاملات تحت اتریوم انجام میشود سعی شده است عملکرد مداوم، بدون وقفه و تغییرناپذیر یک ماشین مجازی نیز برآورده و حفظ شود. در این مقاله میخواهیم به شما بگوییم ماشین مجازی اتریوم چیست؟ یا نگاهی دقیقتر به مفهوم EVM داشته باشیم، بدانیم چارز اتریوم چیست؟ه کاری انجام میدهد و چه مزایا و معایبی دارد؟
فهرست محتوا
آشنایی با شبکهی اتریوم
اگر کمی با دنیای بلاکچین آشنایی داشته باشید، میدانید که بعد از بیت کوین، شبکهی اتریوم، بزرگترین پروژهی این سیستم است که توسط ویتالیک بوترین راهاندازی شد. در واقع باید گفت، اتریوم هم مانند بیت کوین، چیزی فراتر از پول یا یک ارز دیجیتال معمولی برای سرمایهگذاری به حساب میآید. این یک شبکه غیرمتمرکز است که به کاربران اجازه میدهد کارهای مختلفی را روی پلتفرم انجام دهند. در این مرحله بد نیست تفاوت اتر و اتریوم را نیز بدانید.
اتر یا همان ارز دیجیتال اتریوم، یک کریپتو کارنسی مانند سایر رمزارزهای موجود در شبکهی بلاکچین است که برای خرید، فروش یا سرمایهگذاری مورد استفاده قرار میگیرد. در مقابل، یک شبکهی اتریوم هم داریم که متمرکز بر قراردادهای هوشمند بلاکچین بوده و کاربردها و امکانات متعدد دیگری از جمله EVM) Ethereum Virtual Machine) را در خود جای میدهد. بد نیست در این مرحله، یک توضیح کوتاه درباره قراردادهای هوشمند نیز بدهیم.
قرارداد هوشمند یعنی چه؟
در بلاک چین اتریوم، برنامههای اجرایی تحت عنوان قرارداد هوشمند وجود دارند که از مجموعهای از دادهها و کدهایی که در یک آدرس اتریوم وجود دارد، تشکیل میشوند. تمامی این اطلاعات در حسابهای اتریوم نگهداری شده و با برنامهریزی هوشمند، به شبکهی مورد نظر، عبور و مرور دارند. بنابراین، پشت قراردادهای هوشمند، یک کاربر انسانی وجود نداشته و همه چیز بهصورت اتوماتیک اتفاق میافتد.
زمانی که یک قرارداد هوشمند اجرا میشود، یعنی اطلاعات به شبکه وارد میشوند، تراکنشها وظایف مشخص شده خود را اجرا میکنند. بهطور کلی، قراردادهای هوشمند چند ویژگی مشترک دارند که عبارتند از:
- از کد برای اجرای قوانین از پیش تعیین شده استفاده میکنند
- نمیتوان قرارداد هوشمند را پاک کرد
- تراکنشهایی که توسط قرارداد هوشمند انجام شدهاند قابل برگشت نیستند
اینجاست که برای توسعه یک قرارداد هوشمند در بلاک چین اتریوم، باید با اصطلاح ماشین مجازی اتریوم (EVM) آشنا باشید. ماشینهای مجازی، به طور کلی، یک لایه انتزاعی بین کد در حال اجرا و ماشین در حال اجرا ایجاد میکنند که این لایه برای افزایش قابلیت حمل نرم افزار و اطمینان از مجزا بودن بخشهای مختلف برنامه، ایجاد میشود.
ماشین مجازی اتریوم یا EVM یعنی چه؟
در واقع، ماشین مجازی اتریوم محیطی است که تمام حسابها و قرارداد هوشمند اتریوم در آن زندگی کرده و جریان دارند. در این ماشین، هر بلوک در زنجیره، یک حالت برای اتریوم تعریف میکند که EVM قوانین محاسبهی این حالت را از بلوکی به بلوک دیگر، انتقال و تعریف میکند. همانطور که از اسم این ماشین پیداست، یک جز مجازی است، که در هر گره از اتریوم حضور دارد.
درک صحیح از مفهوم EVM برای ورود کامل به اکوسیستم اتریوم، از اهمیت بالایی برخوردار است. در ابتدا، به یادگیری مفهوم ماشین مجازی اتریوم میپردازیم. ماشینهای مجازی در واقع ماشینهایی هستند که سطح بالاتری از دریافت مفهوم را در مقایسه با سیستم عاملهای رایج دارند.
ماشینهای مجازی یا VMها به صورت مبتنی بر سیستمهای عامل ساخته شدهاند، تا عملکرد مشابهی نسبت به یک ماشین محاسباتی فیزیکی داشته باشند. به عبارت دیگر Virtual Machineها به صورت تقریبی، قدرت محاسباتی ماشینهای فیزیکی را با استفاده از معماری مجازی شبیهسازی میکنند. این ماشینها در بسیاری از سیستم عاملها و سخت افزارهای گوناگون قابل اجرا هستند و همین امر آنها را به یک موتور کامل متناسب برای اکوسیستم غیرمتمرکز تبدیل میکند.
ما میتوانیم به واسطه یک ماشین مجازی، از منابع مشارکتکنندگان درون شبکه استفاده کنیم و این موضوع، فارغ از موقعیت مکانی یا جغرافیایی آنهاست و بهرهبرداری ما در راستای ساخت، پردازش و اجرای کاری که قصد پیادهسازی آن را داریم، شکل خواهد گرفت. از این نقطه نظر، ماشین مجازی اتریوم عملکردی شبیه به یک پردازنده جهانی یا کامپیوتری را دارد که قدرت محاسباتی کلی خود را در اختیار توسعهدهندگان قرار میدهد. توسعهدهندگان نیز در مقابل، از این منبع برای ساخت قراردادهای هوشمند و برنامههای غیرمتمرکز (DAppها) استفاده میکنند.
دسترسی به یک VM توسط نودهای Ethereum، از سراسر دنیا امکانپذیر است. در اختیار قرار دادن قدرت محاسباتی به شبکه، به صورت داوطلبانه بوده و نظارت روی این فرآیند، به واسطه عوامل انگیزشی مختلف صورت میگیرد.
یک ماشین مجازی، کامپیوتری است که روی بلاکچین اجرا میشود و به چندین اسمارت کانترکت اجازه میدهد که با یکدیگر تعامل داشته باشند. به بیانی ساده، قرارداد هوشمند یک توافقنامه است که توسط کدها نوشته شده و زبان برنامهنویسی آن نیز مطابق شبکه این قرارداد است. برای این که بتوانیم Smart Contractها را روی بلاکچینهای مختلف اجرا کنیم، ماشینهای مجازی باید قراردادهایی که با یک زبان برنامهنویسی واحد نوشته شدهاند را اجرا کنند.
فرض کنید که یک توسعهدهنده Dapp هستید و یک برنامه روی یک بلاک چین عمومی راهاندازی کردهاید و اکنون میخواهید Dapp خود را به دیگر شبکهها نیز گسترش دهید تا فرصتهای بیشتری برای جذب کاربران بیابید؛ اینجاست که ماشینهای مجازی وارد میشوند. VMها به توسعهدهندگان کمک میکنند تا بهسرعت برنامههای غیرمتمرکز خود را روی شبکههای مختلف توسعه دهند.
از آنجایی که قراردادهای هوشمند معمولا با زبانهای سطح بالا، مثل سالیدیتی یا پایتون نوشته میشوند، برای اینکه بتوان در یک ماشین مجازی آن را اجرا کرد، لازم است کدهای آن به بایت کد تغییر کند. بنابراین، ماشین مجازی اتریوم میتواند بایت کدهای قراردادها را خوانده و اجرا کند. با مرزبندی بین کدها، ماشین مجازی مطمئن میشود که هر لایه از کد، علاوه بر اینکه قابلیت حمل نرمافزار را برای توسعه ایجاد میکرد، برنامهها از میزبان و از یکدیگر جدا شده و تداخلی ایجاد نمیکنند. حالا اگر برایتان سوال شده که بایت کد چیست، اجازه دهید کمی بیشتر توضیح دهیم.
بایت کد چیست؟
برنامهای که از کد منبع، به کد سطح پایین تبدیل شود تا برای یک ماشین قابل فهم و اجرا باشد، بایت کد نامیده میشود. در واقع ماشینهای مجازی از زبانهای سطح بالا سر در نمیآورند و همین امر سبب میشود زمانی که برنامهنویسان قصد توسعه بلاک چین با زبانهای سطح بالا را دارند، برای برقراری ارتباط با ماشین مجازی به مشکل بخورند. اینجاست که بایت کد، نقش یک مفسر را ایفا کرده و کدهای سطح بالا را به کدهای سطح پایین و قابل کامپایل برای ماشین تبدیل میکند.
وقتی پای ماشین مجازی اتریوم به میان میآید، قراردادهای هوشمند این حوزه که با زبان سطح بالا نوشته شده باشند، با بایت کد برای ماشین خوانا شده و روی سختافزارهای مختلف قابل اجرا میشوند.
تورینگ کامل چیست؟
هنگام پاسخ دادن به سوال ماشین مجازی اتریوم چیست، با عبارتی تحت عنوان تورینگ کامل (Turing Complete) مواجه میشویم. ماشین مجازی اتریوم نیز یک تورینگ کامل است.
تورینگ کامل به ماشینی اشاره دارد که با داشتن زمان و حافظه کافی همراه با دستورالعملهای لازم، میتواند هر مشکل محاسباتی را (صرف نظر از اینکه چقدر پیچیده باشد) حل کند. حتی ماشینحسابهای مهندسی که قابلیت برنامهریزی دارند نیز نوعی ماشین تورینگ محسوب میشوند.
فرض کنید برنامهای وجود دارد که ۱۰ عدد را بر میدارد و آنها را با هم جمع میکند. یک ماشین تورینگ کامل بهراحتی میتواند این برنامه را اجرا کند؛ اما فرض کنید که به هر دلیلی، این ماشین نتواند برنامه را اجرا کند یا بهصورت چرخه یا Loop (یعنی بهطور مداوم) محاسبات را انجام دهد.
به این ماشینها تورینگ ناقص (Turing Incomplete) میگویند. زبانهای برنامهنویسی نیز نوعی سیستم تورینگ هستند و بیشتر زبانهای مدرن مثل جاوا، جاوا اسکریپت، Perl، پایتون، سالیدیتی و غیره تورینگ کامل هستند؛ زیرا میتوان با آنها برنامههایی نوشت که محاسبات مختلفی را انجام دهند. حتی این سیستمها میتوانند دادهها را در حافظه خود ذخیره کنند و درباره نحوه محاسبه تصمیم بگیرند.
طرح کلی این مفهوم توسط دانشمند کامپیوتری به نام آلن تورینگ (Alan Turing) ارائه شد. او ایدههایی حول محور شیوه تفکر و عملکرد یک کامپیوتر فرضی یا “ماشین فکر” را توسعه داد. آلن اینگونه استدلال میکرد که رایانهها همانند انسانها افکار را پردازش نمیکنند؛ بلکه برای حل مشکلات، از مجموعهای از قوانین و دستورالعملهایی که برای آنها تعریف شده، استفاده میکنند.
زبان برنامهنویسی بیت کوین تورینگ ناقص است و افزایش پیچیدگی به طور بالقوه مشکلاتی را برای این شبکه ایجاد میکند. البته این موضوع به نفع این شبکه است؛ زیرا با ساده نگه داشتن آن، توسعه دهندگان میتوانند با دقت بالایی نحوه واکنش بیت کوین را پیشبینی کنند.
اما شبکه اتریوم یک سیستم تورینگ کامل است؛ زیرا میتواند قراردادهای هوشمند را اجرا کند. این شبکه میتواند توافقنامههایی که در آینده نیز ممکن است انجام شوند را درک و اجرا کند؛ حتی آنهایی که تاکنون اجرا نشدهاند. به بیانی دیگر، تورینگ کامل بودن اتریوم، بدین معنی است که این شبکه میتواند از کدبیس (منبع کدها) خود استفاده کند و هرگونه وظیفهای را (در صورتی که زمان، قدرت محاسباتی و دستورالعملهای صحیح را داشته باشد) انجام دهد.
مفاهیم ماشین مجازی و تورینگ کامل برای درک ماشین مجازی اتریوم EVM بسیار بنیادین هستند؛ زیرا اصول اولیه مفهوم و معماری آن را تشکیل میدهند. جالب است بدانید که سایر فعالان این حوزه توانستند از ایده کلی “فیزیکی” تورینگ در مورد پردازش ماشین، به یک همتای “مجازی” از این ماشین دست پیدا کنند که اصول عملیاتی یکسانی را به همراه دارد. اکنون که دانش پایه در مورد یک ماشین تورینگ کامل و کلیات شیوه عملکرد ماشینهای مجازی را فرا گرفتید، به درک مفهوم ماهیت ماشین مجازی اتریوم یا EVM نزدیکتر شدهایم.
ماشین مجازی اتریوم چطور کار میکند؟
هدف یک EVM این است که وضعیت کلی اتریوم در هر بلوک از بلاکچین را درک کند. برای این منظور، لایه دوم ماشین مجازی اتر، که با نام ماشین حالت توزیع شده (distributed state machine) شناخته میشود، وضعیت اتریوم از یک پایگاه دادهی عظیم که تمام حسابها و موجودیهای ارز اتریوم در آن وجود دارد، دریافت میکند. حالا این وضعیت دریافت شده که یک حالت ماشین است، میتواند اطلاعات خود را به بلوک جدیدی انتقال یا تغییر دهد و کدهای ماشینی که تحت قوانین خاصی وجود دارند، اجرا شوند. این قوانین خاص، توسط ماشین مجازی اتریوم تعریف شده و نحوه تغییر وضعیت هر بلوک را کنترل میکند.
مزایا و معایب EVM چیست؟
مانند هر چیز دیگری که در اطراف ما مزایا و معایبی را با خود به همراه دارد، ماشین مجازی اتریوم EVM نیز شامل لیستی از مزایا و معایب است که در ادامه به آن اشاره میکنیم:
مزایای EVM
- برای اینکه بتوانید برنامههای غیرمتمرکز خود را در این پلتفرم اجرا کنید، هیچ محدودیت امنیتی ندارید.
- به کمک ماشین مجازی اتریوم میتوانید وارد دنیای NFT شده و توکنهای غیرقابل تعویض یا آثار هنری دیجیتالی ایجاد کنید و آنها را بفروشید.
- اطلاعات وضعیت حسابهای اتریوم خود را در زمان فروش یا خرید اتریوم، کنترل شده پیش ببرید.
معایب EVM
- تا اینجا گفتیم شبکهی EVM غیرمتمرکز است، اما باید بگوییم نه کاملا! بخش عمدهای از گرههای اتریوم در سرویسهای وب آمازون که سرورهای ابری متمرکز هستند، قرار دارند. اگر در هر زمانی و به هر دلیلی صاحبان این سرویسها تمایلی به ادامه کار با اتریوم نداشته باشند، گرهها به سادگی از دست رفته یا به شبکه آسیب وارد میشود.
- با اینکه این ماشین مجازی به تخصص فنی نیاز دارد، از آنجایی که دسترسی به آن بدون محدودیت است، حتی کسانی که دانش فنی در این حوزه ندارند هم میتوانند به آن ورود کنند. این یعنی ممکن است برنامههای ناکارآمد زیادی در ماشین مجازی اتریوم EVM اجرا شود.
- در مواقع شلوغی شبکه، هزینهی تراکنشها زیاد است که این مساله میتواند یک نقطه ضعف قابل توجه برای کاربران اتریوم باشد. البته این موضوع بیشتر کسانی را درگیر میکند که تراکنشهای کوچک را اجرا میکنند.
ارتباط گس با روند اجرای EVM چیست؟
هرگونه اقدامی که در بستر Ethereum صورت میگیرد، نشاندهنده یک تراکنش است. تراکنشها برای انجام شدن به فی یا کارمزد نیاز دارند. همانطور که اشاره کردیم، در بستر این شبکه، تمامی هزینههای مورد نیاز تحت عنوان Gas شناخته میشوند.
در زمانهایی که میزان فعالیت درون این شبکه بسیار بالا بوده و تراکنشهای زیادی در حال انجام هستند، میزان گس فی افزایش پیدا میکند. برخی اوقات میزان گس فی مورد نیاز برای انجام تراکنشهای ساده به ۱۰ یا ۲۰ دلار از ارزش اتر نیز میرسد.
شیوه ذخیرهسازی داده در شبکه اتریوم
دادهها به صورت درختی و به واسطه ساختار داده درختمانند مدیریت میشوند. دیتاهایی مثل میزان موجودی حساب کاربری، به صورت مستقیم در بلاکهای بلاکچین اتریوم ذخیرهسازی نمیشوند و تنها نودهای روت هش (Root Hash) یا هش ریشهای میتوانند تراکنشها، حالات ماشین و دریافتیهای درون این زنجیره را نگهداری کنند.
دو نوع داده متمایز در بستر Ethereum وجود دارد: دادههای دائمی و دادههای موقت.
دادههای دائمی
تراکنشها نمونهای از دادههای دائمی محسوب میشوند. به محض اینکه یک تراکنش به حالت تایید برسد، در درون ساختار داده درختی ذخیرهسازی میشود و هیچگاه تغییر نمیکند.
دادههای موقت
میزان موجودی آدرس حساب کاربری نمونهای از داده موقت است. میزان موجودی نگهداری شده در یک آدرس حساب کاربری، در بخش حالت درختی ذخیرهسازی میشود و هنگامی که تراکنشها توسط فرستنده ارسال میشوند و یا تراکنشی را دریافت میکنند، دچار تغییر میشوند. دادههای دائمی و موقت بهصورت جداگانه ذخیرهسازی میشوند.
شیوه ثبت سوابق اتریوم شباهت زیادی با بانک دارد؛ ممکن است فردی به صورت آنالوگ و به دور از دنیای دیجیتال، از یک کارت اعتباری استفاده کند. بانکها میزان موجودی هر کارت را در زمان درخواست برای خرج کردن پول را ردیابی میکنند. بانک سوابق خود را مورد بررسی قرار میدهد، تا از این موضوع اطمینان حاصل کند که حساب کاربر مورد نظر پیش از تایید تراکنش از میزان موجودی کافی برخوردار باشد. شبکه اتریوم نیز به همین شکل عمل میکند؛ قبل از ارسال تراکنش، موجودی آدرس بررسی میشود و اگر موجودی کافی نباشد، اجازه ارسال داده نمیشود.
ما تمام موارد مربوط به ماشین مجازی اتریوم EVM و نحوه کارکرد ماشینهای مجازی، سیستمهای تورینگ کامل، کارکرد قراردادهای هوشمند و خلاصهای از کارمزدهای گس و نحوه ذخیرهسازی اطلاعات در شبکه اتریوم را پوشش دادیم.
EVM چه کاربردی دارد؟
یکی از مهمترین دلایل استفاده از ماشین مجازی اتریوم EVM، این است که پروتکل اتریوم برای ایجاد اجماع سیستم نیازمند چنین محیطی خواهد بود. از طرفی، اگر شخصی بخواهد برنامهنویسی مبتنی بر اتریوم را انجام دهد، بدون اینکه آسیبی به شبکهی موجود وارد شود، میتوان کدهای مورد نظر را در اکوسیستم خاصی از ماشین مجازی وارد و تست کرد تا مطمئن شد برنامه به درستی نوشته شده است. همچنین کنترل و مدیریت قراردادهای هوشمند نیز یکی دیگر کاربردهای این ماشین به حساب میآید.
در نهایت باید گفت، اگرچه استفاده از قراردادهای هوشمند برای اتصال با ماشین مجازی اتریوم EVM گرانتر از اجرای برنامههای کاربردی در سرورهای سنتی است، همچنان استفاده از ماشین مجازی اتریوم، در جایگاه خوبی قرار دارد. اگر هنوز سوالی در این زمینه دارید، کافیست در بخش نظرات با ما در میان بگذارید.
جمع بندی
ماشین مجازی اتریوم مسبب اصلی اجرای برنامههای غیرمتمرکز و ارائهدهنده قراردادهای هوشمند به کاربران است. EVM ماشین مجازی اتریوم است که به کاربران اجازه میدهد که بر بستر اتریوم، به ایجاد برنامههای غیرمتمرکز بپردازند. زبان برنامهنویسی سالیدیتی برای کدنویسی این برنامه مورد استفاده قرار گرفته است و یادگیری این زبان نیز نسبتا ساده است.
گس فی، هزینه مورد نیاز برای انجام تراکنشهای این شبکه بوده و برای ایجاد انگیزه در ماینرها و اولویتبندی انجام عملیات گوناگون درون سازمانی مورد استفاده قرار میگیرد. در این مقاله از هلدینگ سیمیا به معرفی ماشینهای مجازی و نحوه کارکرد آنها، سیستمهای تورینگ کامل، قراردادهای هوشمند و خلاصهای از کارمزدهای گس و نحوه ذخیرهسازی در شبکه اتریوم پرداختیم، تا بتوانیم به پاسخ این سوال بپردازیم که ماشین مجازی اتریوم چیست و در انتهای مقاله نیز مزایا و معایب ماشین مجازی اتریوم EVM را بررسی کردیم.
سوالات متداول:
+ماشین مجازی اتریوم چیست؟
EVM یا ماشین مجازی اتریوم یک محیط برای نگهداری و کنترل قراردادهای هوشمند مبتنی بر اتریوم است که وضعیت دادهها را در بلوکهای بلاکچین شبکهی اتریوم نگهداشته و میتواند تغییر وضعیت را به سایر بلوکها منتقل کند. این ماشین قوانین خاصی را برای تعریف وضعیت هر بلوک تعیین میکند. همچنین EVM با تبدیل کدهای سطح بالا به کدهای سطح پایین، اجرای برنامههایی که توسط برنامهنویسان توسعه داده شده است را برای ماشین امکانپذیر میکند.
+کاربرد EVM چیست؟
از جمله کاربردهای EVM میتوان به کنترل و مدیریت قراردادهای هوشمند و ایجاد محیطی برای تست برنامههای مبتنی بر اتریوم اشاره کرد. به کمک این محیط، برنامهنویسان بدون دغدغه میتوانند کدهای خود را در اکوسیستم مشخص اجرا و تست کنند.
+تفاوت شبکه اتریوم و ارز دیجیتال اتریوم چیست؟
ارز دیجیتال اتریوم، یک کریپتو کارنسی مانند سایر رمزارزهای موجود در شبکهی بلاکچین است در مقابل، شبکهی اتریوم یک شبکهی متمرکز بر قراردادهای هوشمند بلاکچین بوده و کاربردها و امکانات متعدد دیگری از جمله EVM را در خود جای میدهد.