قرارداد هوشمند سولانا؛ کد جداست، داده جداست

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

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

هر کسی که از اتریوم به سولانا می آید، سر یک چیز گیر می کند. و آن چیز زبان برنامه نویسی نیست.

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

اگر این جمله را جدی بگیرید، بقیه معماری سولانا سر جایش می نشیند. اگر نگیرید، هر چه بخوانید گیج کننده می ماند.

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

در ادبیات سولانا به این کد «برنامه» می گویند. این فقط تفاوت واژگان نیست و تفاوت مفهومی را نشان می دهد.

در اتریوم هر قرارداد یک شیء است که هم کد دارد و هم موجودی و هم متغیرهای خودش. در سولانا برنامه فقط کد اجرایی است که روی زنجیره ذخیره شده؛ هر چه قرار است تغییر کند در حساب هایی جداست که برنامه اجازه نوشتن روی آنها را دارد.

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

نکته ای که هیچ مطلب فارسی نمی گوید و باید بدانید

این بخش را حتی اگر برنامه نویس نیستید بخوانید، چون به دارایی شما ربط دارد.

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

بگذارید ساده بگویم: قراردادی که امروز بررسی کرده اید و امن است، ممکن است فردا کد دیگری داشته باشد. مگر اینکه سازنده اش اختیار ارتقا را سوزانده باشد.

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

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

با چه چیزی نوشته می شود

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

دو مسیر پیش رویتان است.

  • راست خام. کنترل کامل، کد کم حجم تر، و کار بیشتر. تمام بررسی های امنیتی روی حساب های ورودی را باید خودتان بنویسید.
  • چارچوب انکور. بخش تکراری کار را حذف می کند و مهم تر، بررسی مالکیت و نوع حساب ها را به شکل ساختاریافته انجام می دهد.

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

سمت موبایل هم داستان جداگانه ای دارد و ابزار مخصوص خودش را می خواهد؛ آن مسیر در برنامه نویسی سولانا برای موبایل بررسی شده و با آنچه اینجا می خوانید یکی نیست.

مسئله اجاره حساب

چیزی که تازه واردها را غافلگیر می کند: در سولانا فضای ذخیره سازی رایگان نیست.

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

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

مسیر عملی شروع

ترتیبی که وقت کمتری هدر می دهد:

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

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

این کار برای چه کسی جواب نمی دهد

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

و اگر هدفتان سرمایه گذاری روی سولاناست، اصلا لازم نیست وارد این بحث ها شوید. نرخ روز و شرایط سفارش در صفحه سولانا و نرخ لحظه ای است و برای شارژ حساب یو ووچر یوتوپیا با تحویل سریع ساده ترین مسیر است.

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

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

قرارداد هوشمند سولانا با اتریوم چه فرقی دارد؟

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

آیا قرارداد سولانا بعد از انتشار قابل تغییر است؟

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

برای نوشتن قرارداد سولانا حتما باید راست بلد باشم؟

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

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

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

حرف آخر

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

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

منابع اولیه: مستندات رسمی سولانا درباره برنامه ها و قابلیت ارتقای آنها و توضیح مدل حساب و ذخیره سازی داده در سولانا.