حقایقی درباره قراردادهای هوشمند (Smart Contracts) و نحوه کارکرد آنها

حقایقی درباره قراردادهای هوشمند (Smart Contracts) و نحوه کارکرد آنها | همتاپی

کلمه قرارداد هوشمند (Smart Contract) هم مثل بلاک­چین، هوش مصنوعی و ابر، یکی از آن کلماتی است که توجه زیادی را به خود جلب کرده است. گذشته از این، چه چیزی بهتر از این است که بدون مراجعه به مراکز قضایی، خودمان بتوانیم به آنچه اتفاق می‌­افتد، اعتماد کنیم؟ در این مقاله، به بررسی این مسئله می‌­پردازم که قراردادهای هوشمند چه هستند و مهندسی آنها چگونه انجام شده است؟

وعده‌های قراردادهای هوشمند عبارتند از:

  • اجرای قراردادها به صورت خودکار، بدون ­نیاز به اعتماد و کاملا بی‌­طرفانه
  • حذف واسطه­‌ها در منعقد کردن، اجرا و پیاده سازی قراردادها
  • و در نهایت حذف وکلا

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

خرید و فروش بیت کوین

برای خرید و فروش بیت کوین همین حالا اقدام کنید.

می خواهم بیت کوین بخرم

خب، پس قرارداد هوشمند واقعا چیست؟ و آیا فقط به حوزه اتریوم مربوط می‌شود؟ آیا این راهی برای انجام دادن کارها در آینده است؟ چرا در استفاده از قردادهای هوشمند مقاومت می‌کنید؟


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


در یک قرارداد عادی، توافقی بین دو یا چند طرف صورت می‌گیرد که آن‌ها را ملزم به انجام کاری در آینده می‌کند. به عنوان مثال، آلیس در ازای استفاده از خانه باب (بابت اجاره) مبلغی پول به باب می‌پردازد یا چارلی و دنیس موافقت می‌کنند تا چارلی در ازای هر نوع تعمیری برای ماشین دنیس در آینده مبلغی پول به صورت ماهانه (بیمه ماشین) دریافت کند. 

تفاوت قراردادهای هوشمند با سایر قراردادها در این است که شرایط ارزیابی و همچنین اجرایی با استفاده از کدگذاری کامپیوتری انجام می‌شود که این امر باعث عدم نیاز به اعتماد طرفین قرارداد می‌­شود. به عنوان مثال، اگر آلیس و باب توافق کنند که آلیس بابت یک کاناپه سه ماه بعد 500 دلار به باب بپردازد، آیا کد می‌­تواند تعیین کند که شرایط مطرح شده در این قرارداد انجام شده‌ است یا خیر. آیا آلیس پول باب را پرداخت کرده است؟ آیا سه ماه طی شده است؟ و آیا می‌توان کار را بدون دادن قدرت لغو به هر یک از طرفین معامله (تحویل کاناپه) اجرا کرد؟

خصوصیت کلیدی و مهم قراردادهای هوشمند، اجرای قرارداد بدون نیاز به اعتماد کردن است؛ یعنی لازم نیست برای اجرای شرایط مختلف قرارداد به شخص ثالث تکیه کنید. به جای تکیه کردن به حرف طرف مقابل یا حتی بدتر از آن، به جای تکیه کردن به وکلا و سیستم قضایی برای اصلاح اشتباهات، یک قرارداد هوشمند آنچه را که باید در آینده اتفاق بیفتد را به ­موقع و بی‌­طرفانه اجرا می‌کند.


قراردادهای هوشمند بسیار گُنگ هستند


استفاده از واژه هوشمند این معنا را القا می‌­کند که این نوع از قراردادها دارای نوعی هوش ذاتی هستند. اما این طور نیست. منظور از بخش هوشمند قرارداد، عدم نیاز به همکاری طرف مقابل برای اجرای مفاد قرارداد است. به جای آن که مجبور به بیرون انداختن مستأجرانی شویم که اجاره ­بها را پرداخت نمی‌­کنند، قرارداد هوشمند درب آپارتمان را به روی آن­ها قفل خواهد کرد. آنچه قراردادهای هوشمند را قدرتمند می‌­سازد اجرای پیامدهای توافق شده است نه هوش ذاتی آن­ها.

یک قرارداد واقعاً هوشمندانه تمام شرایط را در نظر می‌­گیرد، به روح قرارداد می‌­­نگرد و احکامی را صادر می­‌کند که حتی در تیره‌­ترین شرایط نیز عادلانه هستند. به بیان دیگر، یک قرارداد هوشمند کاملا شبیه به یک قاضی واقعاً خوب عمل می‌­کند. در واقع اصلاً نمی‌­توان یک قرارداد هوشمند را باهوش دانست؛ این نوع از قراردادها کاملا قانون‌محور عمل می‌­کنند، در تمام موارد پیرو قانون هستند، ملاحظات ثانویه را در نظر نمی‌­گیرد و توجهی به روح قانون ندارد.

به طور خلاصه، عدم نیاز قرارداد هوشمند به اعتمادسازی بدان معناست که واقعاً جایی برای شک و تردید نخواهیم داشت که این امر خود به خود مشکل دیگری را به وجود می‌­آورد.


قراردادهای هوشمند بسیار دشوار هستند


به دلیل زیاد بودن بازاریابی متمرکز در حوزه اتریوم، این باور اشتباه به وجود آمده است که قراردادهای هوشمند تنها در اتریوم وجود دارند. چنین چیزی صحت ندارد بیت­ کوین (btc) از آغاز سال 2009 دارای زبان بسیار گسترده‌ای به نام اسکریپت (Script) برای قراردادهای هوشمند بوده است. در حقیقت، قراردادهای هوشمند پیش از بیت­کوین و از سال 1995 وجود داشته‌­اند. تفاوت میان زبان قرارداد هوشمند بیت­کوین و اتریوم آن است که اتریوم، تورینگ کامل (Turing-complete) است. منظور آن است که سولیدیتی (Solidity) (زبان قرارداد هوشمند اتریوم) امکان ایجاد قراردادهای پیچیده­‌تر را با دشوارتر ساختن تجزیه و تحلیل آن­ها فراهم می‌­سازد.

به دلیل زیاد بودن بازاریابی متمرکز در حوزه اتریوم، این باور اشتباه به وجود آمده است که قراردادهای هوشمند تنها در اتریوم وجود دارند. چنین چیزی صحت ندارد بیت­کوین از آغاز سال 2009 دارای زبان بسیار گسترده‌ای به نام اسکریپت (Script) برای قراردادهای هوشمند بوده است.

قراردادهای هوشمند حتی قبل از بیت کوین هم وجود داشته‌اند. منبع: medium 

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

اجرا در بستر تورینگ کامل، فوق‌­العاده پیچیده است و تجزیه و تحلیل دشواری دارد. تأمین امنیت قرارداد هوشمندی که تورینگ کامل است، معادل با اثبات بدون باگ بودن یک برنامه کامپیوتری است. همه می‌­دانیم که انجام آن بسیار دشوار است چرا که تقریباً در هر برنامه کامپیوتری باگ­ وجود دارد.

توجه داشته باشید که نوشتن قراردادهای عادی به چند سال تحصیل و پشت سر گذاشتن امتحانات بسیار دشوار نیاز دارد. همچنین قراردادهای هوشمند نیز نیازمند همان سطح از توانایی و شایستگی هستند و با این تفاوت که در حال حاضر بسیاری از نویسندگان قرارداد هوشمند تازه‌­کارانی هستند که درکی از سطح امنیت مورد نیاز در این قراردادها را به طور کامل ندارند. این امر را می‌­توان به وضوح از قراردادهای مختلفی متوجه شد که ناقص بودنشان به اثبات رسیده است.

راه ­حل بیت­کوین برای این مشکل بسیار ساده است: تورینگ ­کامل نبودن. این راه ­حل تجزیه و تحلیل قراردادها را ساده‌­تر خواهد کرد؛ زیرا شمارش و بررسی حالات احتمالی برنامه بسیار ساده‌­تر خواهد شد.

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


قراردادهای هوشمند (حداقل در ETH) واقعاً قرارداد نیستند


در حالی که از نظر تئوری قرار دادن بار مسئولیت تأمین امنیت قراردادها بر دوش نویسندگان آن­ها بدون اشکال به نظر می‌­رسد، اما در عمل پیامدهای جدی را برای متمرکزسازی به دنبال خواهد داشت.

اتریوم این ایده را مطرح کرد که «کد، یک قانون است»؛ یعنی در اتریوم قرارداد مرجع نهایی است و هیچ کس نمی‌­تواند آن را نقض کند. این ایده برای توسعه‌­دهندگان قراردادهای هوشمند روشن ساخت که باید به خود تکیه کنند. اگر در نوشتن قرارداد هوشمند خود اشتباه کنید، به نوعی باید نتایج سوء آن را بپذیرید. اما با رویداد DAO این دیدگاه از بین رفت.

DAO مخفف عبارت Decentralized Autonomous Organization و به معنای «سازمان خودگردان غیرمتمرکز» می‌باشد.

DAO مخفف عبارت Decentralized Autonomous Organization و به معنای «سازمان خودگردان غیرمتمرکز» می‌باشد. این سازمان صندوقی در اتریوم تشکیل داد تا نشان دهد که این پلتفرم می‌تواند چه کارهایی انجام دهد. کاربران آن می‌­توانستند پول خود را در DAO سپرده‌­گذاری کنند و سود خود را مبنی بر سرمایه­‌گذاری­‌های DAO دریافت نمایند. تصمیمات بر محوریت جمع و نامتمرکز بودند. وقتی ETH حدود 20 دلار خرید و فروش می‌­شد، DAO سرمایه‌­گذاری خود در ETH را 150 میلیون دلار افزایش داد. این اقدام از نظر تئوری عاقلانه به نظر می‌­رسد، اما مشکلاتی را به همراه داشت. کد نوشته شده امنیت مناسبی نداشت و همین باعث شد تا یک نفر به فکر خارج کردن پول­‌ها از DAO بیفتد.

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

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

وقوع این حادثه به خوبی مستند شده است. اتریوم کلاسیک متولد شد و DAO را مکتوب کرد و اصل کد، قانون است حفظ گردید. به علاوه، توسعه‌­دهندگان با اثبات دشوار بودن حفظ امنیت اتریومی که تورینگ کامل است، شروع به کنار گذاشتن استفاده از این خصوصیت در اتریوم کردند. استانداردهای ERC20 و ERC721 پُرکاربردترین قالب‌­های قراردادهای هوشمند در اتریوم هستند و باید بگوییم که هر دو نوع قرارداد را می‌­توان بدون آن که تورینگ ­کامل باشند به مرحله نگارش درآورد.


نتیجه­‌گیری


ای کاش قراردادهای هوشمند می‌­توانستند مفیدتر از آنچه در عمل نشان داده­‌اند، باشند. متأسفانه بخش اعظم آنچه ما انسان‌­ها از قرارداد می‌­دانیم مجموعه‌­ای از مفروضات و قوانین عرفی هستند که نیازی به بیان صریح آن­ها نیست.

به علاوه، همانطور که پیداست استفاده از ویژگی تورینگ کامل راهی ساده برای گند زدن و علت اصلی همه رفتارهای ناخواسته است. باید روی پلتفرم‌­های قرارداد هوشمند به جای “تورینگ ­کامل” برچسب «تورینگ – آسیب‌­پذیر» بزنیم. حادثه DAO نیز ثابت کرد که قراردادها «روحی» دارند که اعتماد ضمنی بدان وجود دارد و بیش از آنچه تصویر کنیم به حل اختلافات کمک می‌­کند.

گند زدن در قراردادهای هوشمند بسیار ساده است، تأمین امنیت آن­ها بسیار دشوار است، به سختی می‌­توان عدم نیاز به اعتماد را برطرف ساخت و در اکثر موارد برای کارآمد بودن، وابستگی‌­های خارجی متعددی دارند.

ترجمه و جمع‌آوری: تیم خرید و فروش اتریوم صرافی ارز دیجیتال همتا پی

اشتراک گذاری

پیام شما

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *