حقایقی درباره قراردادهای هوشمند (Smart Contracts) و نحوه کارکرد آنها
کلمه قرارداد هوشمند (Smart Contract) هم مثل بلاکچین، هوش مصنوعی و ابر، یکی از آن کلماتی است که توجه زیادی را به خود جلب کرده است. گذشته از این، چه چیزی بهتر از این است که بدون مراجعه به مراکز قضایی، خودمان بتوانیم به آنچه اتفاق میافتد، اعتماد کنیم؟ در این مقاله، به بررسی این مسئله میپردازم که قراردادهای هوشمند چه هستند و مهندسی آنها چگونه انجام شده است؟
وعدههای قراردادهای هوشمند عبارتند از:
- اجرای قراردادها به صورت خودکار، بدون نیاز به اعتماد و کاملا بیطرفانه
- حذف واسطهها در منعقد کردن، اجرا و پیاده سازی قراردادها
- و در نهایت حذف وکلا
من با این وعدهها موافق هستم. در کل اگر ما بتوانیم فقط نیاز به اعتماد کردن به طرف مقابل را برای اجرای قرارداد رفع کنیم، کارها تا چه اندازه بهتر انجام خواهند شد؟
خب، پس قرارداد هوشمند واقعا چیست؟ و آیا فقط به حوزه اتریوم مربوط میشود؟ آیا این راهی برای انجام دادن کارها در آینده است؟ چرا در استفاده از قردادهای هوشمند مقاومت میکنید؟
منظور از یک قرارداد هوشمند چیست؟
در یک قرارداد عادی، توافقی بین دو یا چند طرف صورت میگیرد که آنها را ملزم به انجام کاری در آینده میکند. به عنوان مثال، آلیس در ازای استفاده از خانه باب (بابت اجاره) مبلغی پول به باب میپردازد یا چارلی و دنیس موافقت میکنند تا چارلی در ازای هر نوع تعمیری برای ماشین دنیس در آینده مبلغی پول به صورت ماهانه (بیمه ماشین) دریافت کند.
تفاوت قراردادهای هوشمند با سایر قراردادها در این است که شرایط ارزیابی و همچنین اجرایی با استفاده از کدگذاری کامپیوتری انجام میشود که این امر باعث عدم نیاز به اعتماد طرفین قرارداد میشود. به عنوان مثال، اگر آلیس و باب توافق کنند که آلیس بابت یک کاناپه سه ماه بعد 500 دلار به باب بپردازد، آیا کد میتواند تعیین کند که شرایط مطرح شده در این قرارداد انجام شده است یا خیر. آیا آلیس پول باب را پرداخت کرده است؟ آیا سه ماه طی شده است؟ و آیا میتوان کار را بدون دادن قدرت لغو به هر یک از طرفین معامله (تحویل کاناپه) اجرا کرد؟
خصوصیت کلیدی و مهم قراردادهای هوشمند، اجرای قرارداد بدون نیاز به اعتماد کردن است؛ یعنی لازم نیست برای اجرای شرایط مختلف قرارداد به شخص ثالث تکیه کنید. به جای تکیه کردن به حرف طرف مقابل یا حتی بدتر از آن، به جای تکیه کردن به وکلا و سیستم قضایی برای اصلاح اشتباهات، یک قرارداد هوشمند آنچه را که باید در آینده اتفاق بیفتد را به موقع و بیطرفانه اجرا میکند.
قراردادهای هوشمند بسیار گُنگ هستند
استفاده از واژه هوشمند این معنا را القا میکند که این نوع از قراردادها دارای نوعی هوش ذاتی هستند. اما این طور نیست. منظور از بخش هوشمند قرارداد، عدم نیاز به همکاری طرف مقابل برای اجرای مفاد قرارداد است. به جای آن که مجبور به بیرون انداختن مستأجرانی شویم که اجاره بها را پرداخت نمیکنند، قرارداد هوشمند درب آپارتمان را به روی آنها قفل خواهد کرد. آنچه قراردادهای هوشمند را قدرتمند میسازد اجرای پیامدهای توافق شده است نه هوش ذاتی آنها.
یک قرارداد واقعاً هوشمندانه تمام شرایط را در نظر میگیرد، به روح قرارداد مینگرد و احکامی را صادر میکند که حتی در تیرهترین شرایط نیز عادلانه هستند. به بیان دیگر، یک قرارداد هوشمند کاملا شبیه به یک قاضی واقعاً خوب عمل میکند. در واقع اصلاً نمیتوان یک قرارداد هوشمند را باهوش دانست؛ این نوع از قراردادها کاملا قانونمحور عمل میکنند، در تمام موارد پیرو قانون هستند، ملاحظات ثانویه را در نظر نمیگیرد و توجهی به روح قانون ندارد.
به طور خلاصه، عدم نیاز قرارداد هوشمند به اعتمادسازی بدان معناست که واقعاً جایی برای شک و تردید نخواهیم داشت که این امر خود به خود مشکل دیگری را به وجود میآورد.
قراردادهای هوشمند بسیار دشوار هستند
به دلیل زیاد بودن بازاریابی متمرکز در حوزه اتریوم، این باور اشتباه به وجود آمده است که قراردادهای هوشمند تنها در اتریوم وجود دارند. چنین چیزی صحت ندارد بیت کوین (btc) از آغاز سال 2009 دارای زبان بسیار گستردهای به نام اسکریپت (Script) برای قراردادهای هوشمند بوده است. در حقیقت، قراردادهای هوشمند پیش از بیتکوین و از سال 1995 وجود داشتهاند. تفاوت میان زبان قرارداد هوشمند بیتکوین و اتریوم آن است که اتریوم، تورینگ کامل (Turing-complete) است. منظور آن است که سولیدیتی (Solidity) (زبان قرارداد هوشمند اتریوم) امکان ایجاد قراردادهای پیچیدهتر را با دشوارتر ساختن تجزیه و تحلیل آنها فراهم میسازد.
قراردادهای هوشمند حتی قبل از بیت کوین هم وجود داشتهاند. منبع: medium
پیچیدگی، پیامدهای جدی دارد. در حالی که قراردادهای پیچیده برای وضعیتهای بسیار پیچیده امکانپذیر میباشند، اما امنیت آنها بسیار دشوار است. حتی در قراردادهای عادی نیز هرچه قرارداد پیچیدهتر باشد، اجرای آن دشوارتر خواهد شد چرا که پیچیدگیها بر گنگی و ابهام آن میافزایند و به تفسیر راه میدهند. اما در قراردادهای هوشمند امنیت به معنای مدیریت تمام کارهایی است که از طریق آنها میتوان قرارداد را اجرا کرد و مطمئن شد که قرارداد مطابق با مقصود نویسندگان عمل خواهد کرد.
اجرا در بستر تورینگ کامل، فوقالعاده پیچیده است و تجزیه و تحلیل دشواری دارد. تأمین امنیت قرارداد هوشمندی که تورینگ کامل است، معادل با اثبات بدون باگ بودن یک برنامه کامپیوتری است. همه میدانیم که انجام آن بسیار دشوار است چرا که تقریباً در هر برنامه کامپیوتری باگ وجود دارد.
توجه داشته باشید که نوشتن قراردادهای عادی به چند سال تحصیل و پشت سر گذاشتن امتحانات بسیار دشوار نیاز دارد. همچنین قراردادهای هوشمند نیز نیازمند همان سطح از توانایی و شایستگی هستند و با این تفاوت که در حال حاضر بسیاری از نویسندگان قرارداد هوشمند تازهکارانی هستند که درکی از سطح امنیت مورد نیاز در این قراردادها را به طور کامل ندارند. این امر را میتوان به وضوح از قراردادهای مختلفی متوجه شد که ناقص بودنشان به اثبات رسیده است.
راه حل بیتکوین برای این مشکل بسیار ساده است: تورینگ کامل نبودن. این راه حل تجزیه و تحلیل قراردادها را سادهتر خواهد کرد؛ زیرا شمارش و بررسی حالات احتمالی برنامه بسیار سادهتر خواهد شد.
از سوی دیگر، راه حل اتریوم برای این مشکل گذاشتن بار مسئولیت بر دوش نویسندگان قراردادهای هوشمند است. آنها باید اطمینان یابند که قرارداد مطابق با مقصود طرفین عمل خواهد کرد.
قراردادهای هوشمند (حداقل در ETH) واقعاً قرارداد نیستند
در حالی که از نظر تئوری قرار دادن بار مسئولیت تأمین امنیت قراردادها بر دوش نویسندگان آنها بدون اشکال به نظر میرسد، اما در عمل پیامدهای جدی را برای متمرکزسازی به دنبال خواهد داشت.
اتریوم این ایده را مطرح کرد که «کد، یک قانون است»؛ یعنی در اتریوم قرارداد مرجع نهایی است و هیچ کس نمیتواند آن را نقض کند. این ایده برای توسعهدهندگان قراردادهای هوشمند روشن ساخت که باید به خود تکیه کنند. اگر در نوشتن قرارداد هوشمند خود اشتباه کنید، به نوعی باید نتایج سوء آن را بپذیرید. اما با رویداد DAO این دیدگاه از بین رفت.
DAO مخفف عبارت Decentralized Autonomous Organization و به معنای «سازمان خودگردان غیرمتمرکز» میباشد. این سازمان صندوقی در اتریوم تشکیل داد تا نشان دهد که این پلتفرم میتواند چه کارهایی انجام دهد. کاربران آن میتوانستند پول خود را در DAO سپردهگذاری کنند و سود خود را مبنی بر سرمایهگذاریهای DAO دریافت نمایند. تصمیمات بر محوریت جمع و نامتمرکز بودند. وقتی ETH حدود 20 دلار خرید و فروش میشد، DAO سرمایهگذاری خود در ETH را 150 میلیون دلار افزایش داد. این اقدام از نظر تئوری عاقلانه به نظر میرسد، اما مشکلاتی را به همراه داشت. کد نوشته شده امنیت مناسبی نداشت و همین باعث شد تا یک نفر به فکر خارج کردن پولها از DAO بیفتد.
بسیاری از افراد این فرد را هکر پولهای DAO خواندند. به نوعی این هکر راهی را برای خارج کردن پولها از قرارداد DAO پیدا کرده بود اما خالقان آن پیش بینی نکرده بودند؛ این حقیقت همیشه وجود دارد. اما اگر در سطحی وسیعتر به این قضیه نگاه کنیم، او به هیچ وجه هکر نبود، صرفاً کسی بود که توانست از تناقضات موجود در قرارداد هوشمند به نفع خود استفاده کند. این فرد تفاوت چندانی با یک حسابرس مستقل و خلاق ندارد که برای نجات پول موکلان خود از حفرههای قوانین مالیاتی استفاده میکند.
آنچه در ادامه اتفاق افتاد این بود که اتریوم تصمیم گرفت تا کد دیگر قانون نباشد و تمام پولهای سپردهشده به DAO را به صاحبان آنها بازگرداند. به بیان دیگر، نویسندگان قرارداد و سرمایهگذاران کار احمقانهای کرده بودند و توسعهدهندگان اتریوم تصمیم به نجات آنها گرفتند.
وقوع این حادثه به خوبی مستند شده است. اتریوم کلاسیک متولد شد و DAO را مکتوب کرد و اصل کد، قانون است حفظ گردید. به علاوه، توسعهدهندگان با اثبات دشوار بودن حفظ امنیت اتریومی که تورینگ کامل است، شروع به کنار گذاشتن استفاده از این خصوصیت در اتریوم کردند. استانداردهای ERC20 و ERC721 پُرکاربردترین قالبهای قراردادهای هوشمند در اتریوم هستند و باید بگوییم که هر دو نوع قرارداد را میتوان بدون آن که تورینگ کامل باشند به مرحله نگارش درآورد.
نتیجهگیری
ای کاش قراردادهای هوشمند میتوانستند مفیدتر از آنچه در عمل نشان دادهاند، باشند. متأسفانه بخش اعظم آنچه ما انسانها از قرارداد میدانیم مجموعهای از مفروضات و قوانین عرفی هستند که نیازی به بیان صریح آنها نیست.
به علاوه، همانطور که پیداست استفاده از ویژگی تورینگ کامل راهی ساده برای گند زدن و علت اصلی همه رفتارهای ناخواسته است. باید روی پلتفرمهای قرارداد هوشمند به جای “تورینگ کامل” برچسب «تورینگ – آسیبپذیر» بزنیم. حادثه DAO نیز ثابت کرد که قراردادها «روحی» دارند که اعتماد ضمنی بدان وجود دارد و بیش از آنچه تصویر کنیم به حل اختلافات کمک میکند.
گند زدن در قراردادهای هوشمند بسیار ساده است، تأمین امنیت آنها بسیار دشوار است، به سختی میتوان عدم نیاز به اعتماد را برطرف ساخت و در اکثر موارد برای کارآمد بودن، وابستگیهای خارجی متعددی دارند.
ترجمه و جمعآوری: تیم خرید و فروش اتریوم صرافی ارز دیجیتال همتا پی
حذف به اصطلاح دلال های اعظم 🙂
سلام.به جز بلاکچین اتریوم از چه بلاکچین های دیگه ای برای nft ها میشه استفاده کرد؟
سلام دوست عزیز
برای ساخت توکنهای غیرمثلی (NFT) میتوان از بلاکچینهایی نظیر سولانا، کاردانو، تزوس و ترون نیز استفاده کرد.
سلام ودرود به ادمین، ایا سایت مرجعی برای قراردادهای هوشمند وجود دارد؟اطلاعات و جزییات این قراردادها را از کجا میتوان مشاهده کرد؟
قراردادهای هوشمند به تنهایی سایت مشخصی ندارند ولی سایت های موثق زیادی هستند که به معرفی قراردادهای هوشمند در زمینه ارزهای دیجیتال به ویژه توکن های شبکه اتریوم، پرداخته اند.