ماشین مجازی اتریوم (Ethereum Virtual Machine یا EVM) کامپیوتری است که روی میز هیچ‌کس نیست: مجموعه‌ای از قواعد که هزاران نود اتریوم هر کدام جداگانه اجرایش می‌کنند و از هر تراکنش دقیقاً به یک نتیجه می‌رسند. قرارداد هوشمند به شکل «بایت‌کد» (bytecode)، یعنی رشته‌ای از دستورهای خیلی ساده، روی شبکه ذخیره می‌شود و EVM این دستورها را یکی‌یکی اجرا می‌کند. هر دستور مقدار مشخصی گس (gas) خرج دارد. گس مثل کنتور تاکسی هزینه هر قدم را حساب می‌کند، و چون هر تراکنش سقف گس دارد، هیچ برنامه‌ای نمی‌تواند تا ابد کار کند و کسی هم نمی‌تواند مجانی شبکه را با کارهای بیهوده پر کند.

شاید بپرسید وقتی برنامه‌نویس نیستید، این‌ها چه ربطی به شما دارد. ربطش این است که شبکه‌های زیادی، از BNB Chain و پالیگان تا آربیتروم و بیس، همین ماشین را اجرا می‌کنند و برای همین آدرس 0x کیف پول شما روی همه آن‌ها یکی است. این در کار روزمره راحت است، ولی ریشه یکی از رایج‌ترین اشتباه‌ها هم همین‌جاست: فرستادن پول با شبکه EVM اشتباه. در ادامه می‌بینید EVM چطور کار می‌کند، گس چرا لازم است، «سازگار با EVM» دقیقاً یعنی چه و اگر پولتان روی شبکه EVM دیگری نشست، چه کار کنید.

EVM به زبان ساده: ماشین‌حسابی یکسان در دست هزاران نفر

فرض کنید هزاران نفر در شهرهای مختلف ماشین‌حساب‌هایی کاملاً یکسان دارند. هر چند ثانیه یک فهرست عملیات به دست همه می‌رسد، همه همان دکمه‌ها را می‌زنند و جوابشان را با هم مقایسه می‌کنند. اگر کسی عدد دیگری اعلام کند، بقیه حرفش را قبول نمی‌کنند. EVM همان ماشین‌حساب یکسان است، نودهای اتریوم همان آدم‌ها هستند و بلاک‌ها همان فهرست‌های عملیات.

مستندات اتریوم همین را دقیق‌تر می‌گوید: اتریوم فقط یک دفتر حساب نیست، یک «ماشین حالت» (state machine) است. «وضعیت» شبکه، یعنی موجودی همه حساب‌ها و داده‌های همه قراردادها، در هر بلاک با قواعدی که EVM تعیین کرده به وضعیت تازه‌ای می‌رسد. EVM مثل یک تابع ریاضی رفتار می‌کند: وضعیت قبلی و تراکنش‌های تازه را که به آن بدهید، همیشه همان وضعیت بعدی را تحویل می‌دهد.

این «همیشه همان جواب» چند محدودیت مهم هم با خودش می‌آورد. مثلاً قرارداد هوشمند نمی‌تواند خودش به اینترنت سر بزند و قیمت دلار را از یک سایت بخواند. اگر می‌توانست، ممکن بود نودها جواب‌های متفاوتی بگیرند و دیگر به نتیجه یکسان نرسند. برای همین طبق ethereum.org داده‌های بیرون از بلاک‌چین با سرویس‌هایی به اسم «اوراکل» (oracle) به قراردادها می‌رسد.

EVM یک نرم‌افزار واحد هم نیست. هر نرم‌افزار نود اتریوم پیاده‌سازی خودش را از EVM دارد و نسخه‌های مستقلی به زبان‌های پایتون، ++C، جاوااسکریپت و Rust هم نوشته شده است. همه این‌ها باید دقیقاً از یک مشخصات فنی پیروی کنند که به آن «یلوپیپر» (Yellow Paper) می‌گویند. اگر یکی‌شان حتی در یک دستور جواب دیگری بدهد، نودی که از آن استفاده می‌کند دیگر با بقیه شبکه هم‌نظر نیست.

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

از کد تا بایت‌کد: EVM دقیقاً چه چیزی را اجرا می‌کند؟

برنامه‌نویس معمولاً قرارداد را به زبان Solidity یا Vyper می‌نویسد. EVM این زبان‌ها را نمی‌فهمد. کامپایلر کد را به بایت‌کد تبدیل می‌کند و این بایت‌کد با یک تراکنش «ساخت قرارداد» روی شبکه می‌نشیند. از آن به بعد قرارداد آدرس خودش را دارد و هر بار که کسی تراکنشی به آن بفرستد، EVM بایت‌کدش را اجرا می‌کند.

بایت‌کد از «آپ‌کد»ها (opcode) ساخته شده است، یعنی دستورهای کوچکی مثل جمع (ADD)، تفریق (SUB)، خواندن موجودی یک آدرس (BALANCE) یا نوشتن یک عدد در حافظه دائمی قرارداد (SSTORE). EVM عددها را روی یک «پشته» (stack) می‌چیند؛ مثل یک دسته بشقاب که همیشه از بالا برمی‌دارید و بالا می‌گذارید. این پشته حداکثر ۱۰۲۴ خانه دارد و هر خانه یک عدد ۲۵۶ بیتی است. این اندازه را برای این انتخاب کرده‌اند که هش‌ها و امضاهای اتریوم (Keccak-256 و secp256k1) هم با عددهای ۲۵۶ بیتی کار می‌کنند.

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

گس: کنتوری که EVM را از گیر کردن نجات می‌دهد

هر آپ‌کد قیمت مشخصی به گس دارد. طبق جدول آپ‌کدهای ethereum.org، یک جمع ساده (ADD) فقط ۳ واحد گس می‌خورد. در مقابل، طبق پیوست گس همین جدول، نوشتن یک عدد تازه در خانه‌ای خالی از حافظه دائمی دست‌کم ۲۰٬۰۰۰ واحد گس خرج دارد؛ بیش از شش هزار برابر یک جمع. دلیلش روشن است: جمع در یک لحظه تمام و فراموش می‌شود، ولی داده دائمی را همه نودها باید برای همیشه نگه دارند. هزینه پایه یک ارسال ساده ETH هم ۲۱٬۰۰۰ گس است.

کارمزدی که آخر کار می‌پردازید، همین گس مصرفی ضرب در قیمت هر واحد گس است. قیمت گس با شلوغی شبکه بالا و پایین می‌رود و جزئیاتش را در چرا کارمزد اتریوم زیاد می‌شود؟ توضیح داده‌ایم. همان‌جا هم می‌بینید چرا انتقال تتر از ارسال ETH گران‌تر است.

چرا اصلاً گس لازم است؟

EVM هر برنامه‌ای را می‌تواند اجرا کند، حتی برنامه‌ای که در یک حلقه بی‌پایان گیر می‌کند. وایت‌پیپر اتریوم اینجا به مسئله مشهوری در علوم کامپیوتر به اسم «مسئله توقف» (halting problem) اشاره می‌کند: در حالت کلی هیچ راهی نیست که از قبل بفهمیم یک برنامه بالاخره تمام می‌شود یا نه. پس نودها نمی‌توانند پیش از اجرا، برنامه‌های بی‌پایان را کنار بگذارند. راه‌حل اتریوم ساده است. هر تراکنش باید از اول بگوید حداکثر چقدر گس خرج می‌کند. اگر اجرا به این سقف برسد، EVM کار را قطع می‌کند و همه تغییرات برمی‌گردد، ولی کارمزد گسی که مصرف شده پس داده نمی‌شود.

صفحه گس ethereum.org دلیل دوم را هم می‌گوید: چون هر محاسبه پول دارد، کسی نمی‌تواند شبکه را مجانی با تراکنش‌های بیهوده پر کند.

یک مثال فرضی: قراردادی به‌خاطر یک باگ در حلقه‌ای بی‌پایان می‌افتد و سقف گس تراکنش شما ۱۰۰٬۰۰۰ است. EVM بعد از خرج شدن همین ۱۰۰٬۰۰۰ گس اجرا را قطع می‌کند. تراکنش «ناموفق» ثبت می‌شود و چیزی در قرارداد عوض نمی‌شود، ولی کارمزد آن گس را داده‌اید. شبکه هم بی‌دردسر سراغ تراکنش بعدی می‌رود. کیف پول‌ها معمولاً سقف گس را خودشان تخمین می‌زنند و لازم نیست دستی تنظیمش کنید.

«سازگار با EVM» یعنی چه؟

EVM اول برای اتریوم ساخته شد، ولی هر کسی می‌تواند همین قواعد را در بلاک‌چین خودش پیاده کند. به شبکه‌ای که این کار را کرده، «سازگار با EVM» (EVM-compatible) می‌گویند. سازگاری برای شما سه نتیجه دارد:

  1. همان قرارداد، بدون بازنویسی. قراردادی که برای اتریوم با Solidity نوشته شده، معمولاً با تغییر کم یا بدون تغییر روی این شبکه‌ها هم اجرا می‌شود. برای همین خیلی از توکن‌ها و صرافی‌های غیرمتمرکز روی چند شبکه EVM نسخه دارند.
  2. همان کیف پول. متامسک، تراست ولت و کیف پول‌های مشابه با یک عبارت بازیابی روی همه این شبکه‌ها کار می‌کنند.
  3. همان آدرس. آدرس روی همه این شبکه‌ها با 0x شروع می‌شود و ۴۰ کاراکتر بعدش می‌آید. پایین‌تر می‌بینید که آدرس شما روی همه‌شان دقیقاً یکی است.

ولی هیچ شبکه سازگار با EVM خودِ اتریوم نیست. هر کدام اعتبارسنج‌ها یا گرداننده خودش را دارد، کارمزدش را با کوین خودش می‌گیرد، سرعت و هزینه‌اش فرق می‌کند و موجودی‌ها روی هر شبکه جدا ثبت می‌شود. آربیتروم و آپتیمیزم و بیس لایه دوم اتریوم‌اند و خلاصه تراکنش‌هایشان را روی اتریوم ثبت می‌کنند. BNB Smart Chain و زنجیره C آوالانچ بلاک‌چین‌های مستقل‌اند و پالیگان PoS هم زنجیره‌ای با اعتبارسنج‌های خودش است. فرق این دسته‌ها را در لایه دوم چیست مفصل گفته‌ایم.

ترون: خویشاوند نزدیک EVM، ولی شبکه‌ای جدا

ماشین مجازی ترون (TVM) هم بایت‌کدی را اجرا می‌کند که کامپایلر Solidity ساخته است. طبق مستندات خود ترون، ارتقاهای EVM اتریوم هم مرحله‌به‌مرحله و با رأی اعتبارسنج‌های ترون به آن اضافه می‌شود. پس برنامه‌نویس اتریوم روی ترون غریبه نیست. ولی از دید کاربر، ترون یک شبکه EVM معمولی نیست. آدرسش با حرف T شروع می‌شود و ۳۴ کاراکتر دارد، کارمزد قراردادهایش با «انرژی» حساب می‌شود و اجرای هر قرارداد علاوه بر سقف انرژی، سقف زمانی هم دارد. برای همین تتر TRC20 و تتر ERC20 دو دارایی جدا روی دو شبکه جدا هستند؛ فرقشان را در تتر TRC20 و ERC20 ببینید.

شبکه‌های EVM و غیر EVM در یک نگاه

این دو جدول را از مستندات رسمی خود شبکه‌ها در مهر ۱۴۰۵ جمع کرده‌ایم. جدول اول شبکه‌های EVM است که موقع برداشت یا در متامسک زیاد می‌بینید. آدرس همه‌شان یک شکل دارد: 0x و بعد ۴۰ کاراکتر.

شبکه

چه جور شبکه‌ای

شناسه شبکه (Chain ID)

کارمزد با

اتریوم (ERC20)

لایه یک

1

ETH

BNB Smart Chain (BEP20)

بلاک‌چین مستقل

56

BNB

پالیگان PoS

زنجیره جدا با اعتبارسنج‌های خودش

137

POL

آربیتروم وان

لایه دوم اتریوم

42161

ETH روی آربیتروم

OP Mainnet (آپتیمیزم)

لایه دوم اتریوم

10

ETH روی OP Mainnet

بیس (Base)

لایه دوم اتریوم

8453

ETH روی بیس

زنجیره C آوالانچ

یکی از سه زنجیره اصلی آوالانچ

43114

AVAX

جدول دوم شبکه‌هایی است که EVM نیستند، یا مثل ترون فقط به آن نزدیک‌اند. آدرس هر کدام شکل خودش را دارد:

شبکه

ماشین مجازی

شکل آدرس

کارمزد با

ترون (TRC20)

TVM، یعنی ماشین مجازی ترون

با T شروع می‌شود، ۳۴ کاراکتر

TRX، یا انرژی و پهنای باند

سولانا

ماشین مجازی سولانا با بایت‌کد sBPF

پیشوند ثابت ندارد، حدود ۳۲ تا ۴۴ کاراکتر

SOL

TON

TVM، یعنی ماشین مجازی TON

معمولاً با UQ یا EQ شروع می‌شود، ۴۸ کاراکتر

گرام (GRAM)

سوی (Sui)

ماشین مجازی Move

0x و بعد ۶۴ کاراکتر

SUI

منبع‌ها: EIP-155 برای اتریوم، مستندات BNB Chain، پالیگان، آربیتروم، OP Mainnet، بیس، آوالانچ، ترون، سولانا، TON و سوی.

در جدول دوم دو نکته هست که کمتر جایی به آن اشاره می‌شود:

  • دو TVM داریم که به هم ربطی ندارند. ترون و TON هر دو ماشین مجازی‌شان را TVM صدا می‌زنند. اگر جایی فقط «TVM» دیدید، از خودتان بپرسید منظور کدام است.
  • هر آدرسی که با 0x شروع شود، آدرس EVM نیست. آدرس سوی هم با 0x شروع می‌شود، ولی بعدش ۶۴ کاراکتر می‌آید، نه ۴۰؛ یعنی ۲۴ کاراکتر از آدرس اتریوم بلندتر است. آدرس سوی و آدرس EVM را نمی‌شود جای هم به کار برد.

Chain ID به چه کاری می‌آید؟

وقتی آدرس روی همه شبکه‌های EVM یکی است، کیف پول از کجا بفهمد تراکنش برای کدام شبکه است؟ از شناسه شبکه. از پاییز ۱۳۹۵ و با استاندارد EIP-155، شماره شبکه داخل خود امضای تراکنش قرار می‌گیرد. این استاندارد را ویتالیک بوترین بعد از جدا شدن اتریوم کلاسیک (ETC) پیشنهاد کرد، چون آن موقع یک تراکنش امضاشده می‌توانست روی هر دو شبکه اجرا شود. حالا تراکنشی که برای شبکه شماره ۵۶ امضا شده، روی اتریوم با شماره ۱ معتبر نیست و قرار است هر شبکه EVM شماره یکتای خودش را داشته باشد.

یک کاربرد عملی هم دارد. اگر شبکه‌ای را دستی به کیف پول اضافه می‌کنید، Chain ID را با مستندات رسمی همان شبکه مقایسه کنید. راهنمای متامسک می‌گوید خود متامسک اطلاعات شبکه‌های دستی را بررسی نمی‌کند و اگر شماره با Chainlist نخواند، باید شک کنید. مراحلش را در آموزش متامسک آورده‌ایم.

یادتان باشد Chain ID جلوی تکرار تراکنش شما روی شبکه دیگر را می‌گیرد، نه جلوی انتخاب شبکه اشتباه در فرم برداشت را. آن یکی ماجرای بخش بعد است.

یک آدرس، چند شبکه: هم راحتی، هم دردسر

طبق ethereum.org، آدرس حساب شخصی از کلید عمومی شما ساخته می‌شود: ۲۰ بایت آخر هش Keccak-256 کلید عمومی که اولش 0x می‌گذارند. اسم هیچ شبکه‌ای در این محاسبه نیست. برای همین در کیف پول‌هایی مثل متامسک، یک عبارت بازیابی روی همه شبکه‌های EVM به همان آدرس می‌رسد. پشتیبانی متامسک هم صریح می‌گوید آدرس روی همه شبکه‌های EVM یکی است، ولی دارایی هر شبکه جداست و نباید مستقیم از یک شبکه به شبکه دیگر پول فرستاد.

نمودار یک آدرس 0x روی چهار شبکه EVM با Chain ID جدا؛ ۱۰۰ تتر فقط روی BNB Smart Chain دیده می‌شود

هر شبکه EVM را یک دفتر حساب جدا فرض کنید که آدرس شما در همه این دفترها یک صفحه دارد. یک نفر ۱۰۰ تتر در دفتر BNB Smart Chain به صفحه شما می‌نویسد، ولی صفحه شما در دفتر اتریوم همچنان خالی است. پول گم نشده؛ فقط در دفتری است که ورقش نزده‌اید.

فایده‌اش روشن است: یک کیف پول و یک آدرس برای دریافت روی چند شبکه کافی است. دردسرش اینجاست که فرم برداشت صرافی فقط شکل آدرس را بررسی می‌کند. آدرس 0x برای ERC20 و BEP20 و پالیگان و آربیتروم یک شکل دارد. پس اگر به‌جای شبکه‌ای که گیرنده گفته، شبکه EVM دیگری را بزنید، هیچ خطایی نمی‌بینید. تراکنش موفق است و پول روی همان آدرس، ولی در شبکه دیگر، می‌نشیند.

پول روی شبکه EVM دیگری نشسته؛ حالا چه؟

همه‌چیز به این بستگی دارد که کلید آدرس مقصد دست کیست:

  • کیف پول شخصی خودتان، مثل متامسک یا تراست ولت: پول سالم است. شبکه درست را در کیف پول اضافه یا انتخاب کنید تا موجودی‌اش را ببینید. برای جابه‌جا کردنش به کوین کارمزد همان شبکه نیاز دارید؛ مثلاً اگر تتر روی BNB Smart Chain نشسته، کمی BNB روی همان شبکه لازم است.
  • آدرس واریز یک صرافی یا سرویس دیگر: کلید دست آن‌هاست. اگر آن شبکه را پشتیبانی کنند، ممکن است پول را خودکار یا با درخواست شما به حسابتان بنشانند. اگر نه، از خود شبکه کاری برنمی‌آید. مستندات آربیتروم صریحاً می‌گوید اگر پول را روی آربیتروم به صرافی‌ای بفرستید که آربیتروم را پشتیبانی نمی‌کند، آربیتروم نمی‌تواند آن را برگرداند و باید با پشتیبانی همان صرافی صحبت کنید.
  • آدرس یک قرارداد هوشمند، مثل کیف پول چندامضایی: این حالت از همه بدتر است. قرارداد هوشمند کلید خصوصی ندارد و فقط روی شبکه‌ای وجود دارد که رویش ساخته شده است. آدرس قرارداد از روی آدرس سازنده‌اش و شمار تراکنش‌های او ساخته می‌شود، یا در روش دیگری از روی آدرس سازنده، یک عدد انتخابی و کد خود قرارداد. اگر همین قرارداد روی شبکه دوم ساخته نشده باشد، روی آن شبکه هیچ‌کس آن آدرس را در اختیار ندارد. پول فقط وقتی برمی‌گردد که بشود همان قرارداد را دقیقاً در همان آدرس روی شبکه دوم هم ساخت، و این همیشه شدنی نیست.

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

قبل از هر برداشت روی شبکه EVM

  1. اسم شبکه را از گیرنده بپرسید، نه فقط آدرس را. جمله «آدرس 0x من این است» کافی نیست. بپرسید BEP20، ERC20، پالیگان یا آربیتروم؟
  2. صفحه واریز مقصد را ببینید. همان شبکه‌ای را انتخاب کنید که آنجا فهرست شده، حتی اگر شبکه دیگری کارمزد کمتری داشته باشد.
  3. بار اول مبلغ کم بفرستید. وقتی رسید، بقیه را بفرستید.

شکل آدرس شبکه‌های دیگر و راه بررسی‌اش را در آدرس کیف پول ارز دیجیتال چیست گفته‌ایم.

شبکه‌های EVM در برداشت سواپ‌ولت

در صفحه کارمزدهای سواپ‌ولت در ۱۷ مهر ۱۴۰۵، چهار شبکه از شبکه‌های برداشت EVM هستند: بایننس‌چین یا همان BNB Smart Chain (BEP20)، اتریوم (ERC20)، پالیگان و آربیتروم. آدرس مقصد در هر چهار شبکه 0x است، پس انتخاب درست شبکه کاملاً با شماست. سه شبکه دیگر فهرست، یعنی سولانا، TON و ترون، EVM نیستند و آدرس خودشان را دارند. چند نکته از همین فهرست:

  • ETH فقط با شبکه آربیتروم فهرست شده است. پس ETH برداشتی روی آربیتروم می‌نشیند. اگر مقصد کیف پول شخصی است، کافی است شبکه آربیتروم را در کیف پول انتخاب کنید تا موجودی را ببینید. اگر مقصد صرافی است، مطمئن شوید واریز ETH روی آربیتروم را می‌پذیرد.
  • بیت‌کوین فقط با شبکه BEP20 فهرست شده است. یعنی بیت‌کوین روی BNB Smart Chain و به یک آدرس 0x فرستاده می‌شود، نه به آدرس بیت‌کوینی که مثلاً با bc1 شروع می‌شود.
  • بیس، OP Mainnet و آوالانچ در این فهرست نیستند. اگر گیرنده فقط روی یکی از این‌ها واریز می‌گیرد، شبکه‌ای پیدا کنید که هم سواپ‌ولت و هم مقصد پشتیبانی کنند.

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

پرسش‌های رایج

آدرس 0x من روی همه شبکه‌ها یکی است؛ پس موجودی‌ام هم یکی است؟

نه. آدرس یکی است، ولی هر شبکه EVM موجودی‌اش را جدا نگه می‌دارد. کیف پول معمولاً موجودی شبکه‌ای را نشان می‌دهد که رویش هستید، یا همه شبکه‌ها را جدا جدا فهرست می‌کند. اگر پولی را نمی‌بینید، اول بررسی کنید روی کدام شبکه فرستاده شده است.

برای جابه‌جا کردن توکن روی یک شبکه EVM دیگر چه لازم دارم؟

به کوین کارمزد همان شبکه نیاز دارید که روی خود همان شبکه باشد. برای تتر روی BNB Smart Chain به BNB نیاز دارید و برای پالیگان به POL. روی آربیتروم و بیس کارمزد با ETH است، ولی ETH باید روی خود همان شبکه باشد؛ ETH شبکه اصلی اتریوم آنجا به کار نمی‌آید.

ترون شبکه EVM است؟

نه دقیقاً. ماشین مجازی ترون بایت‌کد Solidity را اجرا می‌کند و ارتقاهای EVM را دنبال می‌کند، ولی آدرس ترون با T شروع می‌شود و کارمزدش با انرژی و پهنای باند حساب می‌شود. تتر TRC20 فقط روی ترون جابه‌جا می‌شود و نمی‌شود آن را با یک ارسال ساده به آدرس 0x فرستاد.

سولانا و TON چرا EVM ندارند؟

چون از اول با طراحی دیگری ساخته شده‌اند. سولانا برنامه‌هایش را با ماشین مجازی خودش و بایت‌کد sBPF اجرا می‌کند. TON هم ماشین مجازی خودش را دارد و قراردادهایش فقط با فرستادن پیام به یکدیگر کار می‌کنند. برای کاربر نتیجه‌اش ساده است: آدرس این شبکه‌ها شکل دیگری دارد و آدرس 0x روی آن‌ها کار نمی‌کند. توضیح بیشترش را در سولانا چیست و TON چیست بخوانید.

آیا EVM قرار است کنار گذاشته شود؟

فعلاً نه. ویتالیک بوترین در ۳۱ فروردین ۱۴۰۴ در انجمن توسعه‌دهندگان اتریوم پیشنهاد کرد که در بلندمدت RISC-V، یک مجموعه‌دستور باز و شناخته‌شده برای پردازنده‌ها، جای EVM را بگیرد تا اتریوم سریع‌تر و ساده‌تر شود. این یک پیشنهاد است، نه تصمیم قطعی. در همان پیشنهاد آمده که قراردادهای قدیمی EVM باید به کارشان ادامه دهند و مفهوم حساب و حافظه قرارداد هم همان می‌ماند.

EVM همان کیف پول یا متامسک است؟

نه. EVM روی نودهای شبکه اجرا می‌شود و کیف پول فقط تراکنش شما را امضا می‌کند و به شبکه می‌فرستد. به همین دلیل یک کیف پول مثل متامسک می‌تواند با همه شبکه‌های EVM کار کند: کافی است بداند به کدام شبکه وصل شود و Chain ID آن چیست.