سولانا (Solana) یک بلاک‌چین لایه اول است که از اول برای سرعت طراحی شده. تقریباً هر ۴۰۰ میلی‌ثانیه یک بلاک تازه ساخته می‌شود، کارمزد یک انتقال ساده معمولاً خیلی کمتر از یک سنت است و تراکنش‌هایی که به هم کاری ندارند، همزمان اجرا می‌شوند. ارز اصلی این شبکه SOL است و کارمزدها هم با همین ارز پرداخت می‌شود.

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

در ادامه یک تراکنش را از لحظه ارسال تا تأیید نهایی دنبال می‌کنیم، می‌بینیم کارمزدش چطور حساب می‌شود و موقع کار با سولانا باید حواستان به چه چیزهایی باشد.

سولانا در یک نگاه

  • نوع شبکه: بلاک‌چین لایه اول با اجماع اثبات سهام (Proof of Stake). دارندگان SOL توکن‌هایشان را به اعتبارسنج‌ها می‌سپارند و هر اعتبارسنج به نسبت سهامی که دارد، بلاک می‌سازد و رأی می‌دهد.
  • ارز اصلی: SOL. کوچک‌ترین واحدش لمپورت (lamport) است و هر SOL برابر یک میلیارد لمپورت است.
  • زمان هر اسلات: حدود ۴۰۰ میلی‌ثانیه. اسلات بازه کوتاهی است که در آن نوبت ساختن بلاک با یک اعتبارسنج مشخص است.
  • قرارداد هوشمند: در سولانا به آن «برنامه» (program) می‌گویند. این برنامه‌ها با ماشین مجازی اتریوم (EVM) سازگار نیستند.
  • استاندارد توکن: SPL. تتر و USDC روی سولانا از نوع SPL هستند.
  • آدرس: رشته‌ای حدود ۳۲ تا ۴۴ کاراکتری با قالب Base58 که برخلاف آدرس‌های اتریوم با 0x شروع نمی‌شود. فرق آدرس‌ها در شبکه‌های مختلف را در راهنمای آدرس کیف پول توضیح داده‌ایم.

یک تراکنش در سولانا چه مسیری را طی می‌کند؟

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

۱. کیف پول تراکنش را امضا می‌کند و برایش تاریخ انقضا می‌گذارد

هر تراکنش سولانا یک «بلاک‌هش اخیر» (recent blockhash) همراه خودش دارد که مثل مهر تاریخ عمل می‌کند. طبق مستندات سولانا درباره تأیید و انقضای تراکنش، این بلاک‌هش فقط تا ۱۵۰ بلاک بعد معتبر می‌ماند. با اسلات‌های ۴۰۰ تا ۶۰۰ میلی‌ثانیه‌ای، یعنی تقریباً ۶۰ تا ۹۰ ثانیه. اگر تراکنش تا آن موقع در هیچ بلاکی ثبت نشود، باطل می‌شود و دیگر هرگز اجرا نمی‌شود.

این برای کاربر خبر خوبی است. تراکنش سولانا، برخلاف بعضی شبکه‌ها، روزها در صف گیر نمی‌کند: یا حدوداً ظرف یک دقیقه ثبت می‌شود، یا منقضی می‌شود و می‌توانید با خیال راحت دوباره بفرستید.

۲. تراکنش مستقیم به دست سازنده بلاک بعدی می‌رسد

در سولانا از قبل معلوم است که در هر اسلات نوبت کدام اعتبارسنج است. به این فهرست «برنامه رهبران» (leader schedule) می‌گویند و برای هر دوره، یا «اپاک» (epoch)، بر اساس سهام اعتبارسنج‌ها چیده می‌شود. به همین دلیل تراکنش‌ها لازم نیست در یک صف عمومی منتظر بمانند. کیف پول یا سرویسی که تراکنش را ارسال می‌کند، آن را مستقیم برای رهبر فعلی و چند رهبر بعدی می‌فرستد.

۳. رهبر تراکنش‌ها را با ساعت اثبات تاریخ مرتب می‌کند

اینجا به مهم‌ترین ایده سولانا می‌رسیم. رهبر یک زنجیره خیلی طولانی از هش‌های SHA-256 می‌سازد که هر هش از روی هش قبلی محاسبه می‌شود. این محاسبه را نمی‌شود موازی انجام داد یا میان‌بر زد، پس تعداد هش‌ها نشان می‌دهد چقدر زمان گذشته است. رهبر هر تراکنش را در جای مشخصی از این زنجیره قرار می‌دهد و همین جایگاه ثابت می‌کند تراکنش قبل یا بعد از چه چیزی اتفاق افتاده است.

سولانا اسم این سازوکار را «اثبات تاریخ» (Proof of History یا PoH) گذاشته است و آن را نوعی تابع تأخیر قابل‌تأیید (VDF) می‌داند. اثبات تاریخ به‌تنهایی اجماع نیست؛ فقط ساعتی مشترک است که هر گره می‌تواند خودش درستی‌اش را بررسی کند. فایده‌اش این است که اعتبارسنج‌ها برای توافق روی ترتیب تراکنش‌ها مجبور نیستند مدام با هم پیام رد و بدل کنند.

۴. تراکنش‌های مستقل همزمان اجرا می‌شوند

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

کلید این کار در خود تراکنش است. طبق توضیح سولانا درباره Sealevel، هر تراکنش از قبل اعلام می‌کند کدام حساب‌ها را فقط می‌خواند و کدام‌ها را تغییر می‌دهد. اگر دو تراکنش با حساب‌های متفاوتی کار داشته باشند، یا هر دو یک حساب را فقط بخوانند، می‌توانند همزمان اجرا شوند. فقط تراکنش‌هایی که می‌خواهند یک حساب مشترک را تغییر دهند، باید منتظر نوبت بمانند.

مثلاً ارسال SOL از شما به دوستتان و خرید یک توکن توسط کاربر دیگری در یک صرافی غیرمتمرکز هیچ حساب مشترکی ندارند، پس می‌توانند همزمان اجرا شوند.

۵. بلاک تکه‌تکه پخش می‌شود و اعتبارسنج‌ها به آن رأی می‌دهند

رهبر بلاک را به تکه‌های کوچک تقسیم می‌کند و با پروتکلی به اسم Turbine در شبکه پخش می‌کند. هر اعتبارسنج تکه‌هایی را که گرفته برای گروه دیگری می‌فرستد تا همه بار روی دوش پهنای باند رهبر نیفتد. بعد اعتبارسنج‌ها بلاک را بررسی می‌کنند و با سازوکار اجماعی به اسم Tower BFT به آن رأی می‌دهند.

کیف پول‌ها معمولاً یکی از این سه وضعیت را نشان می‌دهند:

  • processed: تراکنش در یک بلاک قرار گرفته، ولی هنوز ممکن است شبکه آن بلاک را کنار بگذارد.
  • confirmed: اکثریت قاطع سهام شبکه به بلاک رأی داده است. مستندات سولانا می‌گوید در این مرحله احتمال حذف بلاک بسیار کم است و این وضعیت معمولاً چند اسلات بعد از processed می‌رسد.
  • finalized: بلاک نهایی شده و دیگر برنمی‌گردد. طبق اعلام Anza، با اجماع فعلی رسیدن به این مرحله حدود ۱۲٫۸ ثانیه طول می‌کشد.

پس وقتی کیف پول بعد از یکی دو ثانیه پیام «موفق» نشان می‌دهد، تراکنش معمولاً در وضعیت confirmed است. صرافی‌ها ممکن است برای واریزهای بزرگ صبر کنند تا تراکنش finalized شود. منطق تعداد تأییدها را در مقاله Confirmation مفصل‌تر توضیح داده‌ایم.

مدل حساب‌ها؛ جایی که سولانا واقعاً فرق دارد

در سولانا تقریباً همه چیز «حساب» (account) است: کیف پول شما، برنامه‌ها و داده‌هایی که برنامه‌ها نگه می‌دارند. طبق مستندات حساب‌ها، هر حساب پنج فیلد ثابت دارد: موجودی (به لمپورت)، داده، مالک، اینکه کد اجرایی است یا نه، و یک فیلد قدیمی مربوط به اجاره.

دو چیز این مدل را از اتریوم متمایز می‌کند:

  • برنامه‌ها داده‌ای در خودشان نگه نمی‌دارند. برنامه فقط کد است و داده‌هایش در حساب‌های جداگانه‌ای ذخیره می‌شود که مالکشان همان برنامه است. همین جدایی اجرای موازی را ممکن می‌کند، چون هر تراکنش می‌تواند دقیق بگوید با کدام داده‌ها کار دارد.
  • فقط مالک حساب می‌تواند آن را تغییر دهد. فقط برنامه‌ای که مالک یک حساب است اجازه دارد داده‌اش را عوض کند یا از موجودی‌اش برداشت کند. ولی واریز SOL به هر حسابی برای همه آزاد است.

حداقل موجودی حساب؛ همان «اجاره» معروف

هر حسابی که روی سولانا باقی می‌ماند، باید به نسبت حجم داده‌اش حداقلی موجودی داشته باشد. این مبلغ کارمزد نیست و برمی‌گردد: هر وقت حساب بسته شود، آزاد می‌شود. قبلاً به آن «اجاره» (rent) می‌گفتند و خیلی از کیف پول‌ها هنوز با همین اسم نشانش می‌دهند.

فرمول محاسبه‌اش در مستندات حساب‌ها آمده است: (حجم داده به بایت + ۱۲۸) × ۳٬۴۸۰ لمپورت × ۲. با این فرمول:

  • یک کیف پول ساده که فقط SOL نگه می‌دارد و داده‌ای ندارد، دست‌کم حدود ۰٫۰۰۰۸۹ SOL لازم دارد (۱۲۸ × ۶٬۹۶۰ = ۸۹۰٬۸۸۰ لمپورت).
  • یک حساب توکن استاندارد با ۱۶۵ بایت داده، حدود ۰٫۰۰۲ SOL لازم دارد (۲۹۳ × ۶٬۹۶۰ = ۲٬۰۳۹٬۲۸۰ لمپورت).

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

توکن‌ها در سولانا: SPL و حساب توکن

توکن‌های سولانا با برنامه‌ای به اسم Token Program ساخته می‌شوند و به آن‌ها توکن SPL می‌گویند. هر توکن را با آدرس حساب Mint خودش می‌شناسند. این حساب عرضه کل توکن را نگه می‌دارد و مشخص می‌کند چه کسی اجازه دارد توکن جدید بسازد یا حساب‌ها را مسدود کند.

تفاوت مهم با اتریوم اینجاست که موجودی توکن مستقیماً در کیف پول شما ثبت نمی‌شود. برای هر توکنی که دارید، یک حساب توکن جداگانه وجود دارد که مالکش کیف پول شماست. حساب استاندارد هر توکن «حساب توکن وابسته» (Associated Token Account) نام دارد و آدرسش از روی آدرس کیف پول و آدرس Mint به دست می‌آید.

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

مراقب توکن‌های هم‌نام باشید

هر کسی می‌تواند توکن SPL بسازد و اسم و نماد توکن هم منحصربه‌فرد نیست. پس توکنی که اسمش USDT است لزوماً تتر واقعی نیست و تنها ملاک درست، آدرس Mint آن است. اگر توکن ناشناسی بی‌دلیل به کیف پولتان واریز شد، به آن دست نزنید و سراغ سایتی که معرفی می‌کند نروید. نشانه‌های تتر جعلی را در این مقاله گفته‌ایم.

کارمزد سولانا چطور حساب می‌شود؟

طبق مستندات کارمزد سولانا، کارمزد هر تراکنش دو بخش دارد:

  • کارمزد پایه: ۵٬۰۰۰ لمپورت برای هر امضا، یعنی ۰٫۰۰۰۰۰۵ SOL. یک انتقال معمولی فقط یک امضا دارد. نصف این مبلغ سوزانده می‌شود و نصف دیگرش به اعتبارسنج می‌رسد.
  • کارمزد اولویت (اختیاری): هر تراکنش یک سقف برای محاسبات (به واحد compute unit) تعیین می‌کند و برای هر واحد قیمتی پیشنهاد می‌دهد. این قیمت به میکرولمپورت است و هر یک میلیون میکرولمپورت می‌شود یک لمپورت. همه این بخش به اعتبارسنج می‌رسد.

یک مثال با عددهای فرضی

فرض کنید تراکنشی با یک امضا، سقف ۲۰۰٬۰۰۰ واحد محاسباتی و قیمت ۱۰٬۰۰۰ میکرولمپورت برای هر واحد بفرستید:

  • کارمزد پایه: ۵٬۰۰۰ لمپورت
  • کارمزد اولویت: ۲۰۰٬۰۰۰ × ۱۰٬۰۰۰ ÷ ۱٬۰۰۰٬۰۰۰ = ۲٬۰۰۰ لمپورت
  • جمع: ۷٬۰۰۰ لمپورت، یعنی ۰٫۰۰۰۰۰۷ SOL

اگر قیمت SOL را فرضاً ۱۰۰ دلار در نظر بگیریم، این کارمزد ۰٫۰۷ سنت می‌شود. این عددها فقط برای این است که حدود کارمزد دستتان بیاید. در عمل کیف پول موقع ارسال، کارمزد اولویت را خودش پیشنهاد می‌دهد و وقتی شبکه یا یک برنامه خاص شلوغ باشد، این پیشنهاد بالاتر می‌رود.

یادتان باشد که حداقل موجودی حساب‌های تازه، مثل همان ۰٫۰۰۲ SOL حساب توکن، جدا از کارمزد است، هرچند بعضی کیف پول‌ها هر دو را با هم زیر عنوان «هزینه شبکه» نشان می‌دهند. کارمزد برداشت صرافی‌ها هم داستان دیگری دارد که در مقاله کارمزد شبکه توضیحش داده‌ایم.

سولانا در کنار اتریوم و BSC


سولانا

اتریوم

BNB Smart Chain

اجرای تراکنش‌ها

موازی (حساب‌ها از قبل اعلام می‌شوند)

پشت سر هم

پشت سر هم

ماشین مجازی

مخصوص سولانا (برنامه‌ها)

EVM

EVM

ارز کارمزد

SOL

ETH

BNB

شکل آدرس

Base58، بدون 0x

با 0x

با 0x، مثل اتریوم

استاندارد توکن

SPL

ERC20

BEP20

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

نقطه‌ضعف‌ها و هزینه‌های این سرعت

قطعی‌های کامل شبکه

شبکه سولانا در سال‌های گذشته چند بار کاملاً از کار افتاده است. منظور کند شدن نیست؛ ساخت بلاک به‌کلی متوقف شده است. یکی از نمونه‌های اخیر، طبق گزارش رسمی سولانا، ۱۷ بهمن ۱۴۰۲ اتفاق افتاد. نهایی شدن بلاک‌ها متوقف شد و حدود پنج ساعت طول کشید تا اپراتورهای اعتبارسنج نسخه اصلاح‌شده نرم‌افزار را نصب کنند و با هماهنگی هم شبکه را دوباره راه بیندازند.

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

تنوع نرم‌افزار اعتبارسنج

وقتی تقریباً همه اعتبارسنج‌ها یک نرم‌افزار را اجرا کنند، یک باگ در همان نرم‌افزار می‌تواند کل شبکه را از کار بیندازد؛ قطعی بهمن ۱۴۰۲ هم از یک باگ نرم‌افزاری شروع شد. برای کم کردن این ریسک، شرکت Jump نرم‌افزار مستقلی به اسم Firedancer را از صفر و با زبان C نوشته است. هرچه سهم نرم‌افزارهای مختلف در شبکه متعادل‌تر باشد، احتمال اینکه یک باگ کل شبکه را متوقف کند کمتر می‌شود.

تورم SOL

سولانا برای پاداش دادن به اعتبارسنج‌ها و کسانی که استیک می‌کنند، SOL جدید منتشر می‌کند. طبق صفحه استیکینگ سولانا، نرخ تورم سالانه از ۸ درصد شروع شد، هر سال ۱۵ درصد کمتر می‌شود و در نهایت روی ۱٫۵ درصد ثابت می‌ماند. اگر SOL نگه دارید ولی استیک نکنید، سهم شما از کل عرضه کم‌کم کوچک‌تر می‌شود. در مقابل، سوزانده شدن نصف کارمزد پایه از عرضه کم می‌کند، اما اثرش به حجم تراکنش‌ها بستگی دارد.

Alpenglow: تغییر بزرگ بعدی سولانا

شرکت Anza، یکی از توسعه‌دهندگان نرم‌افزار اعتبارسنج سولانا، اجماع تازه‌ای به اسم Alpenglow پیشنهاد داده است. طبق توضیح Anza، Alpenglow هم جای Tower BFT را می‌گیرد و هم جای اثبات تاریخ را. هدفش این است که زمان نهایی شدن بلاک از حدود ۱۲٫۸ ثانیه به حدود ۱۵۰ میلی‌ثانیه (میانه) برسد. بخش رأی‌گیری آن که Votor نام دارد، اگر ۸۰ درصد سهام شبکه فعال باشد، بلاک را در یک دور رأی‌گیری نهایی می‌کند و اگر ۶۰ درصد فعال باشد، در دو دور.

این پیشنهاد با عنوان SIMD-0326 ثبت شده است. یعنی ساعت اثبات تاریخ که سال‌ها نماد سولانا بوده، احتمالاً روزی از هسته شبکه کنار می‌رود. برای کاربر عادی اما چیز زیادی عوض نمی‌شود: آدرس‌ها، توکن‌ها و کیف پول‌ها همان می‌مانند و فقط تأیید نهایی سریع‌تر می‌شود.

سولانا در سواپ‌ولت

در سواپ‌ولت می‌توانید سولانا (SOL) را بخرید، بفروشید و روی شبکه سولانا برداشت کنید. تتر را هم می‌توانید روی شبکه سولانا برداشت کنید؛ این شبکه در صفحه کارمزدها با نام SPL آمده است. توکن‌های سهام توکنیزه xStocks هم در سواپ‌ولت روی سولانا برداشت می‌شوند.

قبل از برداشت روی سولانا این سه مورد را چک کنید:

  1. مقصد شبکه سولانا را قبول می‌کند؟ اگر صرافی یا کیف پول مقصد آن ارز را روی سولانا نمی‌پذیرد، شبکه دیگری انتخاب کنید. اگر شبکه را اشتباه انتخاب کرده‌اید، این راهنما را ببینید.
  2. آدرس واقعاً مال سولاناست؟ آدرس سولانا با 0x یا T شروع نمی‌شود. آدرس را کپی کنید، تایپ نکنید، و چند کاراکتر اول و آخرش را با آدرس کیف پول مقصد مقایسه کنید.
  3. در کیف پول شخصی‌تان کمی SOL دارید؟ برای جابه‌جا کردن تتر یا هر توکن دیگری از کیف پول شخصی، کارمزد و احتمالاً حداقل موجودی حساب توکن مقصد را باید با SOL بدهید.

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

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

سولانا و SOL چه فرقی دارند؟

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

اثبات تاریخ همان اجماع سولاناست؟

نه. اثبات تاریخ یک ساعت قابل‌بررسی است که ترتیب و زمان رویدادها را مشخص می‌کند. توافق روی بلاک‌ها را اعتبارسنج‌ها با رأی‌گیری بر اساس سهام انجام می‌دهند. اجماع فعلی سولانا Tower BFT است و Alpenglow پیشنهاد شده تا جای آن را بگیرد.

چرا تراکنش سولانا گاهی «منقضی» می‌شود؟

هر تراکنش یک بلاک‌هش اخیر دارد که فقط حدود ۶۰ تا ۹۰ ثانیه اعتبار دارد. اگر شبکه شلوغ باشد و تراکنش تا آن موقع ثبت نشود، باطل می‌شود و هیچ پولی از حسابتان کم نمی‌شود. کافی است دوباره بفرستید؛ اگر کیف پولتان اجازه می‌دهد، با کارمزد اولویت بالاتر.

چرا با فرستادن یک توکن، کمی بیشتر از کارمزد معمول SOL خرج شد؟

احتمالاً کیف پول مقصد هنوز حسابی برای آن توکن نداشته و کیف پول شما آن را ساخته است. حداقل موجودی این حساب حدود ۰٫۰۰۲ SOL است. این مبلغ کارمزد نیست و در حساب توکن مقصد باقی می‌ماند.

چرا نمی‌توانم همه SOL کیف پولم را بفرستم؟

چون حسابی که باز می‌ماند باید حداقل موجودی را نگه دارد؛ یعنی یا حدود ۰٫۰۰۰۸۹ SOL در کیف پول بماند یا کل موجودی خالی شود. بعضی کیف پول‌ها هم برای کارمزدهای بعدی مقداری کنار می‌گذارند. اگر می‌خواهید کیف پول را کامل خالی کنید، گزینه ارسال حداکثر (Max) را بزنید و قبل از تأیید ببینید چقدر باقی می‌ماند.

آیا آدرس سولانا برای همه توکن‌های سولانا یکی است؟

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