شاید این روزها نام شبکه سولانا (Solana) و توکن بومی این بلاکچین، سول (SOL) را شنیده باشید. سولانا شبکهای سریع و ضد سانسور است که با به کارگیری روشهای بدیع، همانند پردازش موازی و استفاده از همگام سازی کلاسترها، به توانایی پردازش تعداد زیادی از تراکنشها در ثانیه رسیده است. این خصوصیات در کنار کارمزد تراکنش اندک، آن را به مقصدی جذاب برای پروژههای فعال در دیفای بدل کرده است.
پروژههای دیفای برای فعالیت به توکنها و داراییهای دیجیتال خود وابستهاند. اینجاست که نقش توکنهای مبتنی بر استاندارد SPL به میان میآید. در ادامه این مطلب با استاندارد توکن نویسی SPL، برخی ویژگیهای آن و کیف پولهایی که از آن پشتیبانی میکنند، آشنا خواهیم شد. با ما همراه باشید.
استاندارد توکن نویسی SPL چیست؟

واژه SPL مخفف کتابخانه برنامه سولانا (Solana Program Library) است. این کتابخانه در واقع حاوی مجموعهای از برنامههای آنچین (On-Chain) یا روی زنجیره برای اجرا در زمان اجرای موازی سیلول (Sealevel parallel runtime) است. این معماری اجرای موازی همان ویژگی است که به سولانا این اجازه را میدهد تا به شکل تئوری بتواند تا ۷۱۰۰۰۰ تراکنش در ثانیه را پردازش کند و بتواند رقیبی برای نهادهای مالی متمرکز همچون ویزا و مستر کارت باشد.
کتابخانه یاد شده حاوی مجموعهای از برنامههای نوعی برای انجام کارهای رایجی همچون ایجاد توکن، سواپ، وامدهی، تشکیل استخر استیکینگ و غیره است. میتوان به زبانهای راست (Rust)، C و C++ در سولانا برنامه نوشت. این کتابخانه قواعد و امکانات در دسترس برنامهها (قراردادهای هوشمند) برای اجرا در بلاکچین سولانا را مشخص میکند. توسعهدهندگان با استفاده از امکانات این کتابخانه میتوانند سرویسهای مدنظر خود را توسعه داده و در شبکه سولانا پیاده و اجرا کنند. این استاندارد را میتوان مشابه استاندارد ERC-20 برای شبکه اتریوم و BEP-20 برای شبکه هوشمند بایننس دانست.
بنابراین وقتی جلوی نام یا نشان توکنی عبارت SPL را میبینید، اشاره به این دارد که این توکن در شبکه سولانا و تحت استانداردهای آن نوشته شده است. دقت به این نکته خصوصا در هنگام انتقال/خرید توکنها خصوصا در والتهایی که از چندین شبکه پشتیبانی میکنند، میتواند موجب کاهش اشتباهات و ضررهای مالی شود.

ویژگیهای استاندارد توکن نویسی SPL
البته همانطور که اشاره شد، این کتابخانه مجموعهای از برنامههاست و کارکردهای مختلف قراردادهای هوشمند را در بر میگیرد و نمیتوان آن را منحصر به توکنها دانست. در این قسمت به برخی خصوصیات برنامه توکن (Token program) و برنامه حساب توکن مربوطه (Associated Token Account program) اشاره خواهیم کرد:
ساخت توکن در سولانا به راحتی و تنها با یک دستور (create-token) قابل اجراست. هر توکن شناسهای یکتا دارد که در مورد مثال ما، AQoKYV7tYpTrFZN6P5oUufbQKAUr9mNYGe1TTJC9wajM است.

توکنهایی که با متود spl-token ساخته میشوند در ابتدا تعداد آنها صفر است. با دستور supply میتوان عرضه یک توکن از ابتدای ایجاد تا کنون را مشاهده کرد:

در شبکه سولانا، علاوه بر آدرس کلید عمومی هر فرد، به ازای هر توکن، آدرس (اکانت) برای دریافت آن توکن باید ساخته شود. در مثال زیر، اکانت 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi برای دریافت توکنی که در مثالهای پیشین ساختیم، ایجاد شده است.

خوشبختانه میتوان تمامی آدرسهای توکنهای مختلف یک فرد را ذیل آدرس کلید عمومی آن شخص در شبکه سولانا تعریف کرد. این کار، سهولت استفاده از این اکوسیستم را برای کاربران بسیار راحتتر میکند. پیشتر شما برای دریافت توکنی که تا کنون آن را نداشتید، میبایست آدرس مرتبط به آن را ایجاد میکردید که مستلزم پرداخت هزینه اندکی (حدود ۰.۰۰۲ سول) بود. همچنین باید آدرس مشخص آن توکن را برای فرستنده ارسال میکردید. اما اکنون اگرچه همچنان میتوان از آن راه استفاده کرد، اما امکان فرستادن توکنهای مختلف شبکه سولانا تنها با استفاده از آدرس کلید عمومی شبکه سولانا (آدرسی که در کیف پولها ذیل رمزارز SOL درج میشود) وجود دارد. بار مالی ایجاد اکانت دریافتکننده توکن، به کیف پولها یا فرستنده منتقل شده است. در عکس اول، ابتدا دریافتکننده اکانت توکن مربوطه را ایجاد میکند و همراه با آدرس کلید عمومی برای فرستنده میفرستد تا توکن برایش ارسال شود. در عکس متعاقب، بار مالی ایجاد اکانت توکن مربوطه به عهده فرستنده است و تنها با داشتن آدرس کلید عمومی دریافتکننده، توکن را برای وی میفرستد.


تمامی توکنهای شبکه سولانا به صورت پیشفرض عرضه نامحدود دارند. میتوان با استفاده از دستورات Mint و MintTo، به تعداد توکنها افزود مگر آن که با دستور SetAuthority اختیار مینت توکن جدید را به None تغییر داد. در این حالت دیگر نمیتوان توکن جدیدی عرضه کرد و تعداد توکنها ثابت خواهند ماند. همچنین با استفاده از دستور Burn میتوان توکنهای یک اکانت را سوزاند. این روش معادل فرستادن توکنها به آدرسی در شبکه است که کلید خصوصی آن را نداریم.
در شبکه سولانا استاندارد متمایزی (همچون ERC-721) برای توکنهای غیر مثلی (NFT) وجود ندارد. بلکه با تعیین آرگومان تقسیمپذیری توکن (decimal) به عدد یک و مینت کردن تنها یک عدد از آن و بستن امکان مینت متعاقب، میتوان توکنی یکتا ایجاد کرد.


از دیگر امکانات جالب در دسترس توسعهدهندهها، دستور Approve است. با این دستور میتوان با تعیین مقدار مشخص، به شکل مشروط تفویض اختیار کرد. اکانتی که به آن تفویض اختیار شده، میتوان تا سقف مشخص شده دست به انتقال یا سوزاندن توکن بزنند.
امکان جذاب دیگر این استاندارد، گنجاندن برنامه زمانی در انتشار توکنها (vesting) است. با استفاده از دستور unlock schedule و تعیین آرگومانهای unix timestamp و amount میتوان مقادیر مشخصی از توکن را در زمانهای از پیش تعیین شده منتشر (مینت) کرد.
با استفاده از دستور get_associated_token_address (تصویر زیر) میتوان تمام آدرس اکانتهای مربوطه به آدرس اصلی یک حساب را به دست آورد.

امکان فریز کردن موجودی توکن یک اکانت، دیگر قابلیت کارگشای در اختیار توسعهدهندگان است.
در این بخش با برخی قابلیتهایی که استاندارد SPL در اختیار توسعهدهندگان قرار میدهد آشنا شدیم. در ادامه برخی از کیفپولهایی که از توکنهای SPL پشتیبانی میکنند را معرفی خواهیم کرد.
کیف پولهایی که از توکنهای SPL پشتیبانی میکنند
کیف پولهای متعددی از شبکه سولانا پشتیبانی میکنند. برخی منحصرا از شبکه سولانا پشتیبانی میکنند و برخی دیگر والتهایی هستند که توانایی پشتیبانی از چندین بلاکچین را دارند. مهمترین گروه از دسته اول، والت سولت Sollet، کیف پول فانتوم Phantom و والت SolFlare است.
دسته دوم، شامل والتهایی همچون تراست ولت، کوین ۹۸ (Coin98)، اگزودوس (Exodus) و مث والت (Mathwallet) است. این والتها قابلیت اجرا در گوشیهای هوشمند را دارند. در بین کیف پولهای سخت افزاری، لجر نانو ایکس و نانو اس میتوانند پذیرای توکنهای شبکه سولانا باشند.
برای کاربران حرفهایتر، امکان استفاده از والت به شکل رابط خط کاربری (CLI) است. برای داشتن اطلاعات بیشتر میتوانید به این لینک مراجعه کنید.
همانطور که در قسمت پیشین اشاره شد، ایجاد اکانت مرتبط با هر توکن، معضلی بود که تا چند ماه پیش در شبکه سولانا موجود بود. اما چندین ماه است که برای بهبود تجربه کاربری بهتر برای استفادهکنندگان، برای فرستادن یا دریافت توکنی در شبکه Solana، کافی است که به آدرس شبکه سولانا خودتان/طرف مقابل دسترسی داشته باشید.
جمعبندی
SPL مجموعهای از ضوابط و برنامههای آنچین است که در شبکه سولانا اجرا میشود. این استانداردها تنها مختص به ایجاد توکن نیست. با کمک این کتابخانه و دستورات و توابع موجود در آن، توسعهدهندگان میتوانند دارایی دیجیتال خود را ساخته و مدیریت کنند. سولانا امکانات جذابی برای توسعهدهندگان فراهم کرده است که به برخی از آنها در این مقاله اشاره کردیم.
تجربه شما از کار در شبکه سولانا چیست؟ آیا تاکنون از توکنهای SPL استفاده کردهاید؟ نظرتان را با در میان بگذارید.