معرفی مفهوم
سلام معمار آینده کاردانو! به یک کاوش عمیق در ابزارهای پیشرفته موجود برای ساخت منطق قدرتمند درون زنجیرهای (on-chain) بر روی بلاکچین کاردانو خوش آمدید.
اگر قبلاً با قراردادهای هوشمند کار کرده باشید، ممکن است سختی و محدودیتهای روزهای اولیه را به یاد بیاورید. تصور کنید که باید قیمت فعلی دارایی قفل شده در یک خزانه دیجیتال را بررسی کنید تا تصمیم بگیرید آیا میتوانید وجوه خود را آزاد کنید یا خیر؛ در گذشته، تنها راه برای *خواندن* آن دادههای قیمت این بود که در واقع کل خروجی تراکنش (UTXO) آن خزانه را *مصرف* کنید، که این فرآیند مخرب و ناکارآمد بود.
اینجاست که ورودیهای مرجع (Reference Inputs) (که در CIP-31 تعریف شدهاند) این فرآیند را متحول میکنند. به زبان ساده، یک ورودی مرجع به قرارداد هوشمند شما اجازه میدهد تا به دادهها (دیتوم) ذخیره شده بر روی یک UTXO دیگر *نگاه کند* بدون اینکه آن را مصرف یا تغییر دهد. این مانند این است که بتوانید صفحهای از یک کتاب در کتابخانه را بخوانید بدون اینکه کتاب را از ساختمان خارج کنید. این ویژگی برای ساخت برنامههای غیرمتمرکز (DApps) پیچیده مانند اوراکلها یا پروتکلهای مالی پیچیدهای که نیاز به بازرسی وضعیت مشترک و دائمی بدون بازآفرینی مداوم UTXOها دارند، حیاتی است.
این ویژگیها، در کنار اسکریپتهای بومی (Native Scripts) (که در صورت امکان اجازه میدهند منطق بدون سربار اسکریپتهای کامل پلوتوس اجرا شود) و بهبودهای کارایی معرفی شده در پلوتوس نسخه ۲ (Plutus V2)، متحول کننده بازی هستند. چرا این برای شما مهم است؟ زیرا این بهبودها به طور قابل توجهی اندازه تراکنش و هزینه اجرا را کاهش میدهند و مستقیماً توان عملیاتی و کارایی کلی شبکه کاردانو را افزایش میدهند. تسلط بر ورودیهای مرجع و اکوسیستم پلوتوس ۲ به این معنی است که شما میتوانید قراردادهای هوشمند پیچیدهتر، مقیاسپذیرتر و مقرون به صرفهتری برای شبکه کاردانو بسازید. بیایید به جزئیات فنی
توضیحات تکمیلی
تکامل منطق بر روی زنجیره (آنچین) در کاردانو، که توسط مدل EUTXO نیرو میگیرد، با بهبودهای مداومی که هدفشان کارایی و مقیاسپذیری است، مشخص میشود. حرکت به سمت Plutus V2، همراه با نوآوریهایی مانند ورودیهای مرجع (Reference Inputs - CIP-31) و اسکریپتهای بومی (Native Scripts)، جهش قابل توجهی در توانایی توسعهدهندگان برای ساخت برنامهها ایجاد کرده است.
مکانیزمهای اصلی: ورودیهای مرجع و اسکریپتهای بومی
مانع اصلی که این ویژگیها در تکرارهای قبلی برطرف کردند، ضرورت خرج کردن یک UTXO برای خواندن دیتوم (Datum) متصل به آن بود. این امر منجر به جابجایی داده (Data Churn) میشد خرج کردن خروجی قدیمی و ایجاد مجدد یک خروجی جدید که برنامهها را به یک بهروزرسانی وضعیت در هر بلوک محدود میکرد.
# ورودیهای مرجع (CIP-31)
ورودیهای مرجع اساساً نحوه دسترسی به دادهها بر روی زنجیره را تغییر میدهند:
* دسترسی فقط خواندنی: یک ورودی مرجع به تراکنش اجازه میدهد تا دیتوم، ارزش (Value) یا اسکریپت یک خروجی تراکنش مصرف نشده (UTXO) خاصی را *مشاهده کند*، بدون آنکه آن UTXO مصرف یا تغییر یابد.
* بازرسی وضعیت: این قابلیت به یک برنامه بر روی زنجیره اجازه میدهد تا وضعیت فعلی (دیتوم) یک منبع مشترک، مانند دادههای یک اوراکل یا ماشین حالت یک استیبل کوین، را بدون قفل کردن آن یا مجبور کردن به بازآفرینیاش، بررسی کند.
* تکمیل زمینه اسکریپت (Script Context): برای اینکه اسکریپتهای پلوتوس بتوانند از این قابلیت استفاده کنند، ساختار `scriptContext` برای گنجاندن اطلاعات مربوط به این ورودیهای مرجع تکمیل میشود، که مستلزم استفاده اسکریپتهای پلوتوس از نسخه زبان Plutus V2 برای دسترسی به این واسط است.
# اسکریپتهای بومی و اسکریپتهای مرجع (CIP-33)
اگرچه دقیقاً یکسان نیستند، اسکریپتهای بومی و مفهوم اسکریپتهای مرجع (که اغلب در ارتباط با ورودیهای مرجع استفاده میشوند) اقتصاد تراکنش را بهبود میبخشند:
* اسکریپتهای بومی: اینها اسکریپتهای سادهتری هستند که اغلب برای منطق اساسی مانند مجوز امضای چندگانه (Multisig) استفاده میشوند و میتوانند بدون سربار کامل یک اسکریپت پلوتوس اجرا شوند، در نتیجه برای نیازمندیهای اساسی ارزانتر و سادهتر هستند.
* اسکریپتهای مرجع (CIP-33): این ویژگی اجازه میدهد تا یک اسکریپت (پلوتوس یا بومی) یک بار بر روی زنجیره در یک UTXO ذخیره شود و سپس توسط تراکنشهای دیگر *مرجع داده شود*، به جای اینکه در هر تراکنش مصرفی گنجانده شود. این امر حجم تراکنش و هزینه اجرا را برای قراردادهای پرکاربرد به شدت کاهش میدهد.
# بهبودهای Plutus V2
Plutus V2 که با هارد فورک واسیل معرفی شد، این CIPها را در خود جای داده و بهینهسازیهای دیگری را به همراه داشت:
* مدل هزینه جدید: یک مدل هزینه کارآمدتر معرفی شد که به طور کلی منجر به هزینههای اجرای پایینتر میشود.
* دید کامل زمینه اسکریپت: توسعهدهندگان میتوانند ردمیترهای (Redeemers) *همه* ورودیهای یک تراکنش را ببینند، نه فقط آنهایی که به اسکریپت در حال اجرا پیوست شدهاند، که به ساخت تعاملات پیچیده کمک میکند.
---
موارد استفاده در دنیای واقعی
این پیشرفتها، برنامهنویسی پیچیده بر روی زنجیره را ممکن میسازند:
* اوراکلهای بر روی زنجیره: ارائهدهنده اوراکل میتواند آخرین دادههای قیمت را در یک UTXO خاص با دیتوم خود ذخیره کند. پس از آن، صرافیهای غیرمتمرکز (DEXها) و پروتکلهای وامدهی میتوانند از ورودیهای مرجع برای پرسوجو امن و ارزان این دادههای قیمت برای محاسبات حیاتی (مانند بررسی وثیقه) استفاده کنند، بدون اینکه نیازی به مصرف UTXO اوراکل باشد.
* ماشینهای حالت پیچیده DeFi: پروتکلهایی که نیاز به مدیریت حالت پیچیده دارند (مانند قراردادهای وستینگ یا منطق پیشرفته خزانه) میتوانند UTXO حالت خود را توسط چندین تراکنش مستقل در یک بلوک مشاهده کنند، که قبلاً یک محدودیت عمده بود.
* منطق اعتبارسنجی قابل استفاده مجدد: یک اسکریپت اصلی استیکینگ یا حاکمیتی میتواند یک بار مستقر شود. UTXOهای مرتبط مختلف در سراسر شبکه سپس میتوانند این اسکریپت واحد را از طریق اسکریپتهای مرجع *ارجاع دهند* و از تکرار دادههای اسکریپت در هر تراکنش جلوگیری کنند و فضای بر روی زنجیره را ذخیره نمایند.
---
مزایا و معایب / ریسکها و فواید
| ویژگی | فواید | ریسکها/ملاحظات |
| :--- | :--- | :--- |
| ورودیهای مرجع | حجم و هزینه تراکنش را با حذف تکرار داده/اسکریپت به شدت کاهش میدهد. با امکان بازرسی وضعیت بدون نیاز به مصرف، همزمانی و توان عملیاتی را افزایش میدهد. | نیازمند ارتقاء اسکریپتها به Plutus V2 برای بهرهمندی از زمینه اسکریپت جدید است. UTXO مرجع همچنان باید در مجموعه UTXO برای خوانده شدن وجود داشته باشد. |
| اسکریپتهای بومی/مرجع | با عدم گنجاندن مکرر بدنه اسکریپت، محدودیتهای اندازه تراکنش را آزاد میکند. هزینههای پایینتر برای استفاده از قراردادهای هوشمند پیچیده یا با فرکانس بالا. | نیازمند مدیریت دقیق UTXO است که *اسکریپت مرجع* را نگهداری میکند؛ اگر آن UTXO مصرف شود، تا زمانی که اسکریپت در جای دیگری ذخیره نشود، دیگر نمیتوان به آن ارجاع داد. |
| Plutus V2 | کارایی بهبود یافته و هزینه کلی پایینتر برای اجرای قراردادهای هوشمند بر روی زنجیره. دید توسعهدهنده بهبود یافته نسبت به زمینه تراکنش. | توسعهدهندگان باید برنامههای Plutus V1 موجود را مهاجرت کرده و اسکریپتها را با استفاده از نسخه جدید زبان بازنشر دهند. |
تسلط بر تعامل بین ورودیهای مرجع (برای داده) و اسکریپتهای مرجع (برای منطق) در محیط Plutus V2، دروازه ساخت نسل بعدی برنامههای غیرمتمرکز بسیار کارآمد و مقیاسپذیر در کاردانو است.
جمعبندی
گذار به Plutus V2، که مبتنی بر پیادهسازی استراتژیک ورودیهای مرجع (CIP-31) و انعطافپذیری اسکریپتهای بومی است، چشمانداز ساخت منطقهای پیچیده و مقیاسپذیر درون زنجیرهای (on-chain) بر روی کاردانو را به طور اساسی دگرگون میسازد. دستاورد اصلی در ورودیهای مرجع نهفته است، که دسترسی فقط خواندنی به دیتوم (Datum)، ارزش (Value) یا اسکریپت یک UTXO را بدون نیاز به تراکنش خرجکرد فراهم میکند. این امر موجب حذف 'چرخش داده' پرهزینه و محدودکننده وضعیت گذشته میشود و به برنامهها اجازه میدهد تا وضعیتهای مشترک مانند اوراکلها یا وضعیتهای قراردادهای هوشمند پیچیده را به طور کارآمد بررسی کنند، که به طور قابل توجهی قفل شدن درون زنجیرهای را کاهش داده و پتانسیل توان عملیاتی تراکنشها را افزایش میدهد. همراه با صرفه اقتصادی اسکریپتهای بومی برای مجوزدهیهای سادهتر، توسعهدهندگان اکنون ابزاری قدرتمند برای مدیریت وضعیت در اختیار دارند. در چشمانداز آینده، این نوآوریها راه را برای برنامههای غیرمتمرکز (dApps) پیچیدهتر، سازوکارهای حاکمیتی مستحکمتر و مدلهای تعاملی غنیتر در چارچوب EUTXO هموار میسازند. کاوش مستمر در اسکریپتهای مرجع (CIP-33) و بهبودهای آتی زبان پلوتوس، نویدبخش ماژولار بودن و بهینهسازی هزینه حتی بیشتری است. ما قویاً توصیه میکنیم که کلیه توسعهدهندگان آینده کاردانو این مفاهیم را فراگیرند، زیرا آنها سنگ بنای توسعه نسل بعدی برنامههای غیرمتمرکز با کارایی بالا بر روی بلاکچین کاردانو هستند.