ماشین مجازی اتریوم؛ چرا یک آدرس روی چند شبکه کار می کند

به روزرسانی: ۷ دقیقه مطالعه
۳۰۶بازدید ۰اشتراک
دارای مجوزهای رسمی انتشار:

برای ثبت سفارش به حساب نیاز دارید. ثبت نام رایگان است.

کیف پول را باز می کنید و کنار آدرس نوشته «EVM». همان آدرس ۰x دار، روی چند شبکه مختلف هم قبول می شود. سوالی که بعدش می آید معمولا این است: این چیزی که همه جا هست، دقیقا چیست و چرا اسمش ماشین مجازی است؟

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

تعریفی که خود اتریوم می دهد

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

همان مستندات، کل شبکه را به شکل یک تابع انتقال وضعیت توصیف می کند: وضعیت معتبر قبلی را با مجموعه ای از تراکنش ها بگیر، وضعیت معتبر بعدی را بده. بلاکچین اتریوم دفتر پول نیست؛ دفتر وضعیت است و پول فقط یکی از چیزهایی است که در آن وضعیت ثبت می شود.

و همین توضیح می دهد چرا هزینه دارد. هر نودی که این وضعیت را نگه می دارد باید هر محاسبه ای را دوباره انجام بدهد تا مطمئن شود نتیجه همان است. شما بابت یک محاسبه پول نمی دهید؛ بابت هزاران بار تکرار همان محاسبه پول می دهید.

چرا «ماشین» و نه «سرور»

EVM یک ماشین پشته ای است؛ یعنی به جای اینکه مثل یک پردازنده معمولی رجیستر داشته باشد، داده ها را روی یک پشته می چیند و از رویش برمی دارد. عمق این پشته ۱۰۲۴ آیتم است و هر آیتم یک کلمه ۲۵۶ بیتی.

آن عدد ۲۵۶ تصادفی نیست. مستندات اتریوم می گوید این اندازه برای راحتی کار با رمزنگاری ۲۵۶ بیتی انتخاب شده؛ همان هش ها و امضاهایی که پایه کل سیستم اند. یعنی معماری از دل نیاز رمزنگاری در آمده، نه از دل کارایی محاسباتی.

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

گس؛ و تصحیحی که هنوز جا نیفتاده

در تقریبا هر متن فارسی درباره EVM می خوانید که گس به ماینرها پرداخت می شود. این جمله دیگر درست نیست. اتریوم مدت هاست از اثبات کار خارج شده و ماینر اتریوم وجود ندارد.

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

این تفاوت مهم است، چون یعنی بخش بزرگی از کارمزدی که می دهید به جیب کسی نمی رود؛ عرضه اتر را کم می کند. اگر می خواهید ببینید این عدد از کجا در می آید، اینکه کارمزد گس اتریوم چطور ساخته می شود همان محاسبه را باز کرده است.

از سالیدیتی تا بایت کد

قرارداد را به زبانی مثل سالیدیتی می نویسید، کامپایلر آن را به بایت کد تبدیل می کند و آن بایت کد در یک تراکنش روی زنجیره می نشیند. از آن لحظه، آنچه اجرا می شود بایت کد است نه کد شما. کسی که قرارداد را بررسی می کند هم همان را می بیند، مگر اینکه سورس را منتشر کرده باشید.

و یک نکته که آموزش های فارسی هنوز اشتباه می گویند: از نسخه ۰.۸ سالیدیتی، سرریز و زیرریز عددی به صورت پیش فرض تراکنش را برمی گرداند. آن توصیه قدیمی که «حتما از کتابخانه SafeMath استفاده کنید» برای کدهای امروزی موضوعیت ندارد و فقط گس اضافه می سوزاند.

ابزارهای پیشنهادی هم عوض شده اند و بخشی از آنچه در ویدیوهای فارسی آموزش داده می شود دیگر نگهداری نمی شود. ساخت قرارداد هوشمند با ابزاری که هنوز زنده است فهرست به روزش را دارد.

آن «آدرس EVM» که در کیف پولتان می بینید

این پرتکرارترین سوال واقعی این موضوع است و کمتر متنی مستقیم جوابش را می دهد.

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

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

مشابه همین ماجرا بین اتریوم و اتریوم کلاسیک هم می افتد؛ آدرس یکی است، شبکه یکی نیست همان اشتباه را با جزئیات نشان داده است.

اتریومنرخ لحظه ای اتریوم ۴.۴۶٪تومانی
۶۴۷,۷۹۵,۵۱۵ تومان
$2,486.18 ▼ ۱.۷۹٪دلاری نرخ جهانی
تغییر ۲۴ ساعته، تومانی و دلاری - بروزرسانی ۰۲:۰۸ مشاهده نرخ

سازگاری با EVM؛ هم مزیت است هم تله

ده ها شبکه، EVM را پیاده کرده اند تا توسعه دهنده مجبور نباشد از صفر شروع کند. مزیتش روشن است: یک قرارداد را تقریبا بدون تغییر می شود جای دیگری هم منتشر کرد.

تله اش کمتر گفته می شود. سازگار بودن یعنی کد همان طور اجرا می شود، نه اینکه امنیت و نقدینگی و اعتبار هم منتقل شده باشد. ممیزی امنیتی یک قرارداد روی یک زنجیره، اعتبارنامه همان قرارداد روی زنجیره دیگر نیست. و شبکه ها هم دائمی نیستند: تعطیل شدن پالیگان zkEVM و مهلتی که برای برداشت دارایی هست نمونه ای است که هنوز برای بعضی کاربران باز است.

جایی که EVM واقعا ضعف دارد

هر متنی که فقط مزایا بشمارد، به درد تصمیم گیری نمی خورد. چهار محدودیت واقعی:

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

اگر فقط کاربرید، نه توسعه دهنده

بیشتر کسانی که این متن را می خوانند قرار نیست قرارداد بنویسند. برای شما، از کل این بحث سه چیز عملی می ماند.

یک، هر تعاملی با یک قرارداد یعنی امضا کردن چیزی که خودتان نخوانده اید. مجوزهایی که به یک برنامه غیرمتمرکز می دهید معمولا نامحدودند و تا وقتی خودتان لغوشان نکنید باقی می مانند؛ مجوزهای نامحدود و بقیه راه هایی که قرارداد کیف پول را خالی می کند همین را نشان می دهد.

دو، برای هر کاری روی این شبکه ها به ارز بومی همان شبکه نیاز دارید. توکن داشتن بدون داشتن اتر یعنی توکنی که تکان نمی خورد.

سه، مقدار اتر مورد نیاز برای کارمزد را قبل از شروع تهیه کنید، نه وسط کار. نرخ روز و شرایط سفارش را می توانید از صفحه اتریوم و ثبت سفارش تومانی ببینید.

سوال های پرتکرار

آدرس EVM چیست؟

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

کیف پول سازگار با EVM یعنی چه؟

کیف پولی که می تواند به شبکه های مبتنی بر EVM وصل شود و تراکنش هایشان را امضا کند. تفاوت اصلی این کیف پول ها در امنیت و رابط کاربری است، نه در آدرسی که می سازند؛ آدرس در همه شان یکی است چون از یک عبارت بازیابی می آید.

اگر توکن را به شبکه اشتباه بفرستم چه می شود؟

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

ماشین مجازی اتریوم فقط برای اتریوم است؟

نه. EVM یک مشخصات فنی است و هر شبکه ای می تواند پیاده اش کند، و بسیاری هم کرده اند. اما پیاده سازی یکسان به معنای امنیت یا نقدینگی یکسان نیست و این را نباید با هم اشتباه گرفت.

منابع