قرارداد هوشمند همانند کلماتی نظیر بلاک چین، هوش مصنوعی و رایانش ابری از آن دست اصطلاحاتی است که تبلیغات و سروصدای زیادی ایجاد کرده است.
از این گذشته، چه چیزی میتواند بهتر از این باشد که به جای استفاده از سیستم قضایی، به اتفاقات آینده اعتماد داشته باشیم؟ وعده های قراردادهای هوشمند عبارتند از:
- اعمال خودکار، معتبر و بیطرفانه قراردادها
- حذف واسطه در ایجاد، اجرا و اعمال قراردادها
- حذف وکلا (به طور ضمنی)
ما نیز با این سروصدای ایجاد شده هم مسیر هستیم. از اینها گذشته، اگر بتوانیم نیاز به اعتماد به سایرین را برای اجرای قراردادها حذف کنیم، بازده چه مقدار افزایش مییابد؟
اصلا قرارداد هوشمند چیست؟ آیا قرارداد هوشمند دامنه ای از اتریوم است؟ آیا مسیری به آینده است؟
در این مقاله به بررسی این موضوع میپردازیم که قرارداد هوشمند چیست و مهندسی آن چگونه است.
قرارداد هوشمند چیست؟
قرارداد معمولی به توافقنامه بین دو یا بیش از دو طرف میگویند که آنها را به موضوعی در آینده مرتبط میسازد. ممکن است آلیس برای استفاده از خانه باب به عنوان اجاره پولی به باب بدهد. ممکن است چارلی قبول کند که هر ماه برای آسیب زدن به خودروی دنیس هزینه ای به او بپردازد.
نکته ای که در خصوص قرارداد هوشمند متفاوت میباشد این است که شرایط توسط کد رایانه ای و بدون نیاز به اعتماد به طرف مقابل ارزیابی و اجرا میشود. بنابراین اگر آلیس با باب موافقت کند که سه ماه بعد ۵۰۰ دلار به او بدهد، کدها میتوانند تعیین کنند که شرایط مهیا شده است (آیا آلیس به باب پولی پرداخت کرده است؟ آیا سه ماه گذشته است؟) و قرارداد را اجرا کند (هزینه را از اسکرو بپردازد) بدون آنکه هر کدام از طرفین بتوانند مفاد قرارداد را نقض یا فسخ کنند.
ویژگی کلیدی قرارداد هوشمند، اجرای بدون نیاز به اعتماد به طرف مقابل است. بدین ترتیب، برای اجرای شرایط مختلف به شخص ثالث نیاز ندارید. به جای آنکه برای انجام امور به اشخاص ثالث وابسته باشید یا بدتر از آن برای حل و فصل اوضاع به سیستم قانونی یا وکیل نیاز داشته باشید، قرارداد هوشمند مفاد مورد نظر را بیطرفانه و بر اساس زمانبندی اجرا میکند.
قراردادهای هوشمند بسیار احمق هستند
شاید فکر کنید که استفاده از کلمه هوشمند بیانگر این باشد که این قراردادها دارای هوش ذاتی میباشند. اما اینگونه نیست. بخش هوشمند قراردادها این است که برای اجرای توافق های به دست آمده به همکاری شخص ثالث نیاز ندارد. به جای بیرون کردن مستأجری که هزینه خود را پرداخت نکرده است، قرارداد هوشمند اجازه ورود مستاجر به آپارتمان را مسدود میکند. اجرای مفاد مورد توافق، نقطه قوت قراردادهای هوشمند میباشند، نه هوش ذاتی آنها.
یک قرارداد هوشمند واقعی تمام شرایط توجیهی را مد نظر قرار میدهد، ماهیت قرارداد را بررسی میکند و قوانینی وضع میکند من حتی در شرایط مبهم نیز عادلانه میباشند. به عبارت دیگر، یک قرارداد هوشمند واقعی همانند یک قاضی خوب عمل میکند. در عوض، قرارداد هوشمند اصلا هوشمند نیست. در واقع کاملا مبتنی بر قوانین است و از آنها موبهمو پیروی میکند و هیچ گونه ملاحظه یا در نظر نمیگیرد.
به عبارت دیگر، ایجاد قرارداد بدون نیاز به اعتماد یعنی آنکه هیچ جایی برای ابهام باقی نمیگذارد.
قراردادهای هوشمند بسیار سخت میباشند
از آنجایی که بازاریابی های متمرکز بسیار زیادی از اتریوم انجام شده است، به اشتباه اینطور برداشت میشود که قراردادهای هوشمند فقط در اتریوم وجود دارند. این موضوع صحیح نیست. بیت کوین نیز از زمان پیدایش در سال ۲۰۰۹ دارای زبان برنامه نویسی بسیار گسترده ای به اسم اسکریپت (Script) بودن است. در واقع، قراردادهای هوشمند حتی قبل از بیت کوین و از سال ۱۹۹۵ وجود دارند. تفاوت میان زبان برنامه نویسی قرارداد هوشمند بیت کوین و اتریوم این است که زبان برنامه نویسی اتریوم تورینگ کامل است. بدین ترتیب، سالیدیتی (زبان برنامه نویسی قراردادهای هوشمند اتریوم) قراردادهای پیچیده تر را به ازای سخت تر شدن تحلیل آنها امکان پذیر میسازد.
این پیچیدگی عواقبی نیز دارد. اگرچه قراردادهای پیچیده میتوانند شرایط پیچیده تر را امکان پذیر سازند، اما ایمن سازی قرارداد پیچیده نیز دشوارتر میشود. حتی در قراردادهای معمولی، هرچه قرارداد پیچیده تر شود، اعمال آن نیز دشوارتر میشود زیرا پیچیدگی باعث افزایش عدم قطعیت و تفسیرهای گوناگون میشود. با وجود قراردادهای هوشمند، امنیت به معنای مدیریت تمام روش های ممکن اجرای قرارداد و اطمینان از اجرای قرارداد بر اساس تقاضای نویسنده آن میباشد.
اجرا در محیط تورینگ کامل به شدت زیرکانه و تحلیل آن سخت است. ایمن سازی قرارداد هوشمند تورینگ کامل معادل اثبات باگ نداشتن برنامه رایانه ای است. همه ما میدانیم که این کار بسیار دشوار است زیرا تمام برنامه های رایانه ای موجود باگ دارند.
فرض کنید که نوشتن قرارداد معمولی به سال ها مطالعه و آزمون بسیار سخت وکالت نیاز داشته باشد. قرارداد هوشمند نیز حداقل به چنین سطح توانایی نیاز دارد اما در عین حال بسیار از قراردادها توسط مبتدیانی نوشته میشود که شناخت درستی از نحوه ایمن سازی آن ندارند. این موضوع از قراردادهای مختلفی که دارای نقص میباشند کاملا مشهود است.
راهکار بیت کوین برای این مشکل صرفا نداشتن تورینگ کامل است. این امر، تحلیل قرارداد را آسانتر میکند، زیرا وضعیت برنامه برای بررسی و ارزیابی آسانتر میشود.
راهکار اتریوم نیز ایجاد موانعی برای نویسندگان قراردادهای هوشمند است. این به خود نویسندگان بستگی دارد که مطمئن شوند قرارداد طبق خواسته آنها میباشد.
قراردادهای هوشمند در واقع قرارداد نمیباشند (حداقل در اتریوم)
اگرچه واگذاری مسئولیت ایمن سازی قراردادها به نویسندگان به نظر خوب است، اما در عمل امر دارای عواقب متمرکزسازی جدی ای است.
اتریوم با این ایده عرضه شد که “کد قانون است”. بدین ترتیب، قراردادها در اتریوم بالاترین سطح اختیار است و هیچکس نمیتواند از قوانین قرارداد تخطی کند. این ایده برای آن بود که توسعه دهندگان قراردادهای هوشمند متوجه شوند عواقب قرارداد به عهده خودشان است. اگر در ایجاد قرارداد هوشمند اشتباه کردید، پس لیاقت همین این اشتباه را دارید. هنگامی که رخداد DAO رخ داد، این موضوع متوقف شد.
اصطلاح DAO به معنای سازمان خودمختار غیرمتمرکز است و صندوقی در اتریوم بود تا نشان دهد این پلتفرم چه اقداماتی میتواند انجام دهد. کاربران میتوانستند به DAO پول واریز کنند و بر اساس سرمایه گذاری های خود سود دریافت کنند. این تصمیمات میتوانست به جذب سرمایه عمومی و غیرمتمرکزسازی بیانجامد. هنگامی که قیمت اتر ۲۰ دلار بود، DAO حدود ۱۵۰ میلیون دلار سرمایه به صورت اتر جذب کرد. تمام این موارد به نظر خوب میرسید اما یک مشکل وجود داشت. کد DAO به طور مناسب ایمن نشده بود و منجر به این شد که فردی بتواند روشی برای خالی کردن سرمایه DAO پیدا کند.
بسیاری از افراد، به فردی که سرمایه DAO را سرقت کرد هکر میگویند. این موضوع که هکر روشی برای خارج کردن سرمایه از قرارداد پیدا کرد واقعیت دارد. اما در مفهوم گسترده تر، این فرد اصلا هکر نبود، فقط فردی بود که از تناقض های موجود در قرارداد هوشمند به نفع خود استفاده کرد.
پس از آن، اتریوم تصمیم گرفت که کد دیگر قانون نباشد و تمام پولی که به DAO وارد شده بود را برگرداند. به عبارت دیگر نویسندگان قرارداد و سرمایه گذاران کار احمقانه ای انجام داده بودند و توسعه دهندگان اتریوم تصمیم گرفتند جلوی ضرر آنها را بگیرند.
وقوع این رخداد کاملا ثبت شده است. پس از آن اتریوم کلاسیک به وجود آمد و DAO و اصل “کد قانون است” را حفظ کرد. به علاوه، توسعه دهندگان از استفاده از ویژگی تورینگ کامل بودن اتریوم دست کشیدند زیرا ثابت شده بود که ایمن سازی آن بسیار دشوار است. استانداردهای ERC-20 و ERC721 پراستفاده ترین الگوهای قرارداد هوشمند در اتریوم هستند و ذکر این نکته مهم است که هردو نوع این قراردادها بدون تورینگ کامل بودن قابل نوشتن اند.
قراردادهای هوشمند فقط با ابزارهای دیجیتال کار میکنند
قراردادهای هوشمند حتی بدون تورینگ کامل نیز بسیار خوب به نظر میرسند. از اینها گذشته چه کسی میخواهد برای چیزی که متعلق به خودش است به دادگاه برود؟ آیا استفاده از قراردادهای هوشمند نباید آسانتر از قراردادهای معمولی باشد؟
برای مثال، آیا املاک نباید از قراردادهای هوشمند بهره مند شوند؟ آلیس میتواند ثابت کند که مالک خانه است. باب میتواند برای خرید خانه به آلیس پول ارسال کند. هیچ سوالی در خصوص مالکیت توسط ماشین پرسیده نمیشود و نیازی به قاضی، کاغذبازی یا مسائل بیمه ای وجود ندارد. به نظر عالی میرسد اینطور نیست؟
در این خصوص دو مشکل وجود دارد. اولین مشکل این است که اجرای قرارداد هوشمند توسط نهاد متمرکز واقعا بدون نیاز به اعتماد نیست. در این مورد هم چنان برای اجرای قرارداد باید به نهاد متمرکز اعتماد کنید. عدم نیاز به اعتماد ویژگی کلیدی قراردادهای هوشمند است، بنابراین اجرای متمرکز منطقی نیست. برای آنکه قراردادهای هوشمند بدون نیاز به اعتماد باشد، به پلتفرمی نیاز دارید که واقعا غیرمتمرکز باشد.
این مورد ما را به سمت مشکل دوم هدایت میکند. در محیط غیرمتمرکز، قراردادهای هوشمند فقط در صورتی کار میکنند که ارتباطی بین نسخه دیجیتال و نسخه واقعی و فیزیکی وجود داشته باشد. بدین ترتیب، هرگاه مالکیت نسخه دیجیتال خانه تغییر کند، مالکیت نسخه فیزیکی نیز تغییر میکند. دنیای دیجیتال باید اتفاقات دنیای فیزیکی را بداند. به این مشکل، “مشکل اوراکل” میگویند.
هنگامی که آلیس خانه را به باب انتقال میدهد، قرارداد هوشمند باید بداند که او واقعا خانه را به باب انتقال داده است. چندین روش برای انجام این کار وجود دارد اما همه این روش ها مشکل یکسانی دارند. باید اعتماد به شخص ثالث وجود داشته باشد تا رویدادهای دنیای واقعی تایید شود.
برای مثال، خانه میتواند به عنوان یک توکن غیرقابل تعویض در اتریوم بیان شود. آلیس میتواند خانه را در تبادل اتمی به ازای مقدار مشخصی اتر به باب انتقال دهد. باب باید اعتماد کند که این توکن واقعا بیانگر خانه است. باید نوعی اوراکل وجود داشته باشد تا تضمین کند که انتقال توکن خانه به باب واقعا به معنای این باشد که باب از نظر قانونی متعلق به او شده است.
علاوه بر این، حتی اگر نهاد دولتی بگوید که این توکن واقعا بیانگر خانه است، اگر توکن دزدیده شود چه اتفاقی رخ میدهد؟ آیا خانه متعلق به سارق میشود؟ اگر توکن گم شود چه اتفاقی رخ میدهد؟ دیگر خانه را نمیتوان فروخت؟ آیا میتوان توکن خانه را مجددا صادر کرد؟ توسط چه کسی صادر شود؟
مشکلی نیز در ارتباط یافتن دارایی دیجیتال به دارایی واقعی در بافت غیرمتمرکز وجود دارد. دارایی های واقعی توسط حوزه قضایی کشور قانونمند میشود و این موضوع بدان معنا است که همان طرفین مورد اعتمادی هستند که به قرارداد هوشمند اضافه میشوند. این موضوع بیانگر آن است که مالکیت در قرارداد هوشمند لزوما به معنای مالکیت در دنیای واقعی نیست و دچار همان مشکل نیاز به اعتمادی است که در قراردادهای معمولی وجود دارد. قرارداد هوشمندی که دارای اعتماد به شخص ثالث است، ویژگی منحصربهفرد خود که عدم نیاز به اعتماد است را از بین میبرد.
حتی دارایی های دیجیتال نظیر کتاب های الکترونیکی، سوابق پزشکی یا فیلم ها نیز با مشکل مشابهی مواجه اند. حقوق این دارایی های دیجیتال توسط نهادهای دیگر تصمیم گیری میشود و اوراکل باید مورد اعتماد باشد.
در این خصوص، اوراکل ها نسخه تنزل یافته قاضی ها میباشند. به جای اجرای صرفا ماشینی و ساده سازی اعمال قانون، چیزی که در واقع دریافت میکنید پیچیدگی رمزگشایی تمام نتایج ممکن با در نظر گرفتن قضاوت انسانی است. به عبارت دیگر، با هوشمند ساختن یک قرارداد، نوشتن آن را بسیار پیچیده تر میکنید درحالی که هم چنان به فرد مورد اعتماد نیاز دارید.
تنها چیزی که بدون اوراکل کار میکند، ابزار حامل دیجیتالی است. اساسا هر دو طرف معامله نه تنها باید دیجیتال باشند بلکه باید ابزارهای حامل نیز باشند. بدین ترتیب، مالکیت توکن نمیتواند وابستگی ای به خارج از پلتفرم های قرارداد هوشمند داشته باشد. تنها هنگامی که قرارداد هوشمند دارای ابزار حامل دیجیتال باشد میتواند واقعا آن را بدون نیاز به اعتماد در نظر گرفت.
نتیجه گیری
ایکاش قراردادهای هوشمند میتوانستند مفیدتر از چیزی باشند که اکنون هستند. متاسفانه بیشتر چیزی که از قراردادها در ذهن داریم، مجموعه ای از فرضیات و قانونهایی است که نیازی به بیان آنها نیست.
به علاوه، مشخص شده است که استفاده از تورینگ کامل روشی آسان برای اشتباه کردن و بروز هر نوع رفتار ناخواسته است. ما باید پلتفرم های قرارداد هوشمند را به جای تورینگ کامل، تورینگ آسیب پذیر بخوانیم. رخداد DAO نیز ثابت کرد که ماهیتی از قرارداد وجود دارد که بیانگر نیاز به اعتماد است و بیشتر از چیزی که بدانیم در حل تعارضات کمک میکند.
اشتباه کردن در قراردادهای هوشمند بسیار آسان است، ایمن سازی آن بسیار دشوار است، حذف نیاز به اعتماد از آن بسیار سخت است و برای کار کردن آن، وابستگی های خارجی بسیار زیادی وجود دارد. تنها جایی که قرارداد هوشمند واقعا بدون نیاز به اعتماد است، ابزارهای حامل دیجیتال در پلتفرم های غیرمترکز نظیر بیت کوین است.