بیاید یه نگاهی بندازیم به دنیای قراردادهای هوشمند یا همون Smart Contracts. اینا در اصل برنامههایی هستن که روی بلاکچین اجرا میشن و قراره همه قوانین یه توافق رو بین دو یا چند نفر یا گروه، به طور کامل و دقیق، خودکار اجرا کنن. حالا مشکل وقتی پیش میاد که این قرارداد هوشمند اشتباه باشه؛ یعنی ممکنه کاربرها بتونن قوانین رو دور بزنن یا حتی کلاً امنیت بلاکچین رو به خطر بندازن.
از اون طرف، یه نکته بامزه اینه که قراردادهای هوشمند رو نمیتونی راحت مثل برنامههای معمولی آپدیت یا پچ کنی، چون ذات این قراردادها یعنی “تغییرناپذیری” یا همون immutability، که به معنی غیر قابل ویرایش بودنشونه؛ یه بار برنامه میشه، بمونه.
حالا اکثر برنامهنویسا میان از زبانهایی مثل Java برای نوشتن قرارداد هوشمند استفاده میکنن. این زبانها که بهشون General-purpose language یا زبانعمومی برنامهنویسی میگن، مناسب همهجور کار هستن، ولی وقتی وارد بلاکچین میشن داستان فرق میکنه. اگه یه قرارداد جاوایی درست کار نکنه، میتونه باعث بشه مثلاً کل شبکه بلاکچین گیر کنه، توافقگیری یا Consensus (که یعنی همه شبکه باید با نتیجه یکی باشن!) خراب شه، یا حتی اطلاعات جوری افشا بشن که نباید!
برای اینکه اینجور اتفاقات نیافته، یه سری ابزار ساخته شدن به نام Static Analyzers یا تحلیلگرهای ایستا که قبل از اینکه قرارداد هوشمند روی بلاکچین نصب شه، کدشو چک میکنن و دنبال باگ میگردن. به این کار هم Off-chain verification یا تایید خارج از زنجیره میگن؛ یعنی روی خود شبکه اجرا نمیشه، فقط یه تست قبلیه. ولی خب مشکل اینجاست که هیچ کسی مجبور نیست از این ابزارها استفاده کنه، یعنی اختیاریه.
حالا توی این مقاله یه ایده باحال مطرح شده: بیاید یه سیستم بسازیم که این تایید قرارداد هوشمند الزاماً بخشی از پروتکل شبکه (همون قوانین اصلی کار نودها) باشه! یعنی موقع نصب قرارداد هوشمند روی بلاکچین، شبکه خودش اول کد رو چک کنه، هر چی طبق قانون نبود رد شه و کلاً بهش راه نده. به این میگن Mandatory entry filter، یعنی یه فیلتر اجباری ورود. این قوانین تایید هم، میشن قسمتی از اصل توافق کل شبکه یا به اصطلاح Consensus Rules.
حالا این کار چه فایدهای داره؟ اگه قانونهای تایید قرارداد تغییر کنن، باید همه شبکه با هم قوانین توافق یا Protocol رو آپدیت کنن تا شبکه هماهنگ بمونه، وگرنه بلاکچین قفل میکنه. مقاله در مورد پیادهسازی یه لایه اپلیکیشن روی بلاکچین صحبت میکنه که قراردادهای هوشمند رو به روشی پروتکلی بررسی و فیلتر میکنه، مخصوصاً برای اونایی که با Java و نسخه محدود شده به اسم Takamaka نوشته شدن. (Takamaka یعنی نسخهای از جاوا که محدودیتهایی داره تا تو بلاکچین امنتر کار کنه.)
این سامانه میتونه روی موتورهای توافق (Consensus Engine) مثل Tendermint و خانوادهش (Ignite, CometBFT که با Proof of Stake یا اثبات سهم کار میکنن)، یا Mokamint که با Proof of Space (یعنی بر اساس میزان فضای ذخیرهسازی واقعی که داری) میچرخه، نصب شه و واسطه باشه.
یه نکته جالب مقاله اینکه نمونه پیادهسازی این سیستم رو نشون داده و قانونهای تایید قرارداد رو با مثال توضیح داده، مثل اینکه چطور مطمئن میشه قرارداد متناظر با محدودیتهای زبان Takamaka نوشته شده باشه و موارد خطرناک اجراش حذف شه.
در نهایت مقاله میگه این سیستم جواب میده، ولی یه سری محدودیتم داره. مثلاً اینکه تایید باید سریع انجام بشه وگرنه ممکنه کارایی کل شبکه بلاکچین رو خراب کنه. خلاصه اگه پیچیدگی این تایید بالا بره، به سرعت شبکه آسیب میزنه.
به طور خلاصه، اگه بخوای قرارداد هوشمند جاواییت رو تو Takamaka روی بلاکچین نصب کنی، با این لایه اپلیکیشنی که طبق پروتکل چک میکنه، امنیت شبکه بیشتر میشه و کلی باگ از اول راه پیدا نمیشن. ولی یادت باشه همه چی به هماهنگی کل شبکه و سرعت این تایید بستگی داره!
منبع: +