فرض کنید تصمیم به خرید خانه گرفته اید؛ برای این منظور کافی است یک قرارداد میان خریدار و فروشنده امضا شود تا شما مالک خانه جدید شوید. اما این فرایند آنقدرها هم ساده نیست چرا که در این روند علاوه بر نیاز به بانک و دفتر اسناد رسمی، باید حجم بالایی از امور اداری را نیز انجام دهید. قراردادهای هوشمند (Smart Contracts) با بهره گیری از فناوری بلاک چین به وجود آمده اند تا این فرایند تا حد امکان ساده شود.
در این مقاله قرارداد هوشمند را معرفی کرده، تاریخچه آن را توضیح میدهیم. در ادامه به نحوه کار قراردادهای هوشمند پرداخته، تفاوت های این نوع قرارداد با قرارداد سنتی را توضیح میدهیم. در آخر نیز انواع قرارداد هوشمند را معرفی و کاربردها، مزایا و معایب آن ها را شرح میدهیم.
قرارداد هوشمند (Smart Contract) چیست؟
قرارداد هوشمند نوعی برنامه کامپیوتری ذخیره شده بر بستر بلاک چین است که در صورت وجود شرایط از پیش تعیین شده، بصورت خودکار همه یا بخشی از مفاد توافق نامه بین خریدار و فروشنده را اجرا میکند.
قرارداد هوشمند را میتوان به بیان دیگر اینگونه تعریف کرد:
نوعی قرارداد است که مشابه دیگر قراردادها شرایط توافق بین دو یا چند طرف را تعیین میکند با این تفاوت که بر خلاف قراردادهای سنتی، قراردادهای هوشمند بصورت کد بر روی بستر شبکه های بلاک چین مانند اتریوم اجرا میشوند.
توسعه دهندگان میتوانند از قراردادهای هوشمند برای ساخت اپلیکیشن های غیر متمرکز (DApps) استفاده کرده، امکان تراکنش های همتا به همتا (Peer to Peer) را از طریق شبکه بلاک چین فراهم کنند.
استفاده از قراردادهای هوشمند برای ساخت برنامه های غیر متمرکز بر بستر شبکه بلاک چین (عموماً اتریوم) امور مالی غیر متمرکز یا دیفای (DeFi) را شکل میدهد.
به زبان ساده دیفای (Decentralized Finance) را میتوان نوعی پلتفرم رمزنگاری شده دانست که به کمک فناوری بلاک چین و با ایجاد یک سیستم مالی جدید بر بستر اینترنت واسطه های مالی را حذف کرده، جایگزین مکانیسم اعتماد موجود در اقتصاد سنتی میشود و به کاربران اطمینان خاطر بیشتری برای انجام مبادلات مالی آن ها میدهد.
تفاوت قراردادهای معمولی و هوشمند
قراردادهای سنتی (Traditional Contracts) و قراردادهای هوشمند (Smart Contracts) هر دو با هدف امضای یک توافق نامه حاوی شرایط از پیش مشخص شده توسط دو یا چند طرف به وجود آمده اند؛ اما آن چه قراردادهای هوشمند را از سنتی متمایز میکند، لزوم حضور شخص ثالث برای امضای قرارداد سنتی است.
در قراردادهای سنتی، طرفین میتوانند به صورت دستی (یا الکترونیکی) قرارداد را امضا کنند تا در هر زمانی که خواستند توانایی تغییر آن را داشته باشند و از آنجایی که در این امضا هویت واقعی افراد ذخیره میشود، در صورت هرگونه اختلاف نظر بین طرفین، رسیدگی به این پرونده امکان پذیر است.
در سوی دیگر اما، ایده اصلی Smart Contracts، خودکارسازی اجرای توافق است تا همه شرکت کنندگان فورا از نتیجه مطلع شوند. همچنین طراحی قراردادهای هوشمند به گونه ای است که امکان تغییر پس از ذخیره سازی در Blockchain وجود ندارد. اما این قراردادهای هوشمند به ذاته چطور به وجود آمده اند؟ در ادامه در این زمینه بیشتر صحبت میکنیم.
تاریخچه قراردادهای هوشمند
جالب است بدانید مفهوم قراردادهای هوشمند پیش از فناوری Blockchain پیشنهاد شده است؛ این پیشنهاد توسط نیک سابو (Nick Szabo) در دهه ۱۹۹۰ یعنی حدود ده سال قبل از اختراع بیت کوین با اختراع بیت گلد (BitGold) مطرح شد.
برای درک هرچه بهتر، سابو این قراردادها را با مثال دستگاه فروش خودکار یا Vending Machine مقایسه کرد. فرض کنید برای خرید یک نوشابه، یک دلار به دستگاه فروش خودکار پرداخت کرده اید؛ حال از آنجایی که قیمت یک نوشابه ۷۵ سنت است، شما دو راه در پیش دارید؛ باز پس گیری یک دلار یا خرید کالایی دیگر با ۲۵ سنت باقی مانده. این مثال را میتوان نمونه ای از یک قرارداد هوشمند ساده دانست؛ آنچنانکه در آن به دو قابلیت اصلی یک Smart Contract یعنی عدم وجود واسطه و خودکار بودن فرایند اشاره شده است.
نیک سابو معتقد بود که میتوان از قراردادهای هوشمند برای انتقال اطلاعات استفاده کرد؛ بدین معنا که این قراردادها پروتکل های تراکنش های رایانه ای هستند که از الگوریتم های ریاضی برای خودکار سازی اجرای یک تراکنش پس از برآورده شدن شرایط تعیین شده استفاده میکنند.
این مفهوم به دلیل عدم وجود فناوری لازم بخصوص دفتر کل توزیع شده تا سال ۲۰۱۴ و اختراع بلاک چین Ethereum عملی نشد ولی همزمان با ساخت این بلاکچین با استفاده از زبان برنامه نویسی Solidity، شرایط برای پیاده سازی قراردادهای هوشمند نیز فراهم شد.
برای توسعه برنامه های غیرمتمرکز به قراردادهای هوشمند نیاز دارید حال آنکه زبان برنامه نویسی قراردادهای هوشمند در اتریوم سالیدیتی (Solidity) است که یک تورینگ کامل است.
قرارداد هوشمند چگونه کار می کند؟
برای یافتن پاسخ این سوال آخرین انتخابات ایالات متحده آمریکا را به خاطر بیاورید؛ در روند انتخابات علیرغم استفاده از پلتفرم های اینترنتی، اخباری پی در پی مبنی بر کلاهبرداری و تقلب منتشر شد. حال تصور کنید انتخابات آینده آمریکا توسط سیستم های رأی گیری روی بلاک چین Ethereum و با استفاده از قراردادهای هوشمند برگزار شود؛ بدین صورت که ابتدا هویت رأی دهندگان تأیید میشود تا رأی آنها ثبت شود و از آنجایی که بلوک های داخل بلاک چین پس از ثبت هیچ تغییری نمیکنند، دستکاری رکوردها ممکن نیست؛ قابلیتی که مانع از تقلب و کلاهبرداری هکرهای اینترنتی میشود.
از سوی دیگر میتوان به غیر متمرکز بودن سرورهای Blockchain اشاره کرد که به معنای عدم کنترل این شبکه توسط یک حزب مرکزی مانند دولت است که این ویژگی نیز قابلیت اعتماد را در قراردادهای هوشمند و در نتیجه این انتخابات فرضی افزایش میدهد.
حال با توجه به مثال بیان شده و در پاسخ به سوال “Smart Contract چگونه کار میکند؟”، میتوان فرایند اجرای قراردادهای هوشمند را در چند مرحله و به صورت زیر بیان کرد:
- توافق اولیه
- مشخص کردن شرایط
- بازنویسی شرایط در قالب کد
- ذخیره در Blockchain
- اجرای قرارداد
مراحل اجرای قراردادهای هوشمند در ادامه به صورت تفکیک شده توضیح داده میشوند.
توافق (Agreement)
اولین مرحله برای اجرای درست یک Smart Contract، توافقی است که باید بین دو یا چند طرف معامله برقرار شود.
شرایط (Conditions)
در مرحله دوم فرایند پیاده سازی قرارداد هوشمند، شرکت کنندگان باید برای شرایطی که در این قرارداد مورد استفاده قرار میگیرد مذاکره کنند؛ از جمله این شرایط میتوان به نحوه نمایش تراکنش ها و داده ها و دیگر عنوان هایی اشاره کرد که برای جلب رضایت طرفین در نظر گرفته میشود و مانند هر قرارداد دیگری، استثناهایی وجود دارند که طرفین باید بر سر حل آن ها نیز مذاکره کنند.
برنامه نویسی (Coding)
در مرحله بعدی اصطلاحا گفته میشود که شرایط و قوانین با عبارت ساده “اگر-آنگاه” در بلاک چین نوشته میشوند. اگرچه میتوان از یک توسعه دهنده کمک گرفت، اما در این شرایط استفاده از قالب های آماده، Web Interface ها و سایر ابزارهای آنلاین که برای ساده سازی ساختار قراردادهای هوشمند طراحی شده اند، پیشنهاد میشود. این قراردادها در انواع زبان های برنامه نویسی از جمله Solidity ، Web Assembly و Michelson نوشته شده اند.
بلاک چین (Blockchain)
مهم ترین مرحله ای که میتوان از آن برای جلب اعتماد طرفین نسبت به قراردادهای هوشمند استفاده کرد، ثبت این قراردادها در بلاک چین است؛ بدین صورت که Blockchain قراردادهای هوشمند را مانند هر تراکنش دیگری ثبت میکند تا نودها (Node) این قراردادها را با وضعیت جدید خود به روزرسانی کنند. از سوی دیگر، امتیاز دیگر بلاک چین پایگاه داده مشترکی است که امکان کنترل آن در دست هیچ شخص یا گروهی نیست.
این ویژگی ها نشان میدهند که هک کردن قراردادهای هوشمند تقریباً غیرممکن است زیرا اگر هکری بخواهد به بلاک چین یا Smart Contract اجرا شده روی آن حمله کند، باید بیش از نیمی از گره ها را هک کند؛ اما از آنجایی که هر گره یک کپی از تمام تراکنش های جدید شبکه به همراه وضعیتشان را نگهداری میکند، امکان دستکاری این قراردادها ممکن نیست. قراردادهای هوشمند به جز اتریوم میتوانند بر بستر بلاک چین های دیگر نیز طراحی شوند که عبارتند از: EOS ،Neo ،Tezos ،Tron Polkadot و Algorand.
اجرا (Execute)
در صورتی که همه طرفین توافق با شرایط آن موافق باشند، قرارداد هوشمند اجرا میشود و از آنجایی که مفاد آن روی شبکه بلاک چین ذخیره شده است، غیر قابل تغییر بوده و تنها قابل دسترسی توسط طرفین قرارداد است.
عملکرد بهتر قراردادهای هوشمند در بلاک چین اتریوم
پیش تر نیز گفته شد که اجرا و توسعه Smart Contracts در بلاک چین اتریوم به آسانی ممکن شده است؛ چرا که در این شبکه، قراردادها توسط یک زبان برنامه نویسی به نام Solidity نوشته میشود که تورینگ کامل است. در بیان تورینگ کامل میتوان توضیح زیر را بیان کرد:
بطور کلی و به نقل از آلن تورینگ، دستگاهی که بتواند هرگونه معمای پیچیده و مشکلی را حل کند یک ماشین تورینگ کامل (Turing Complete) محسوب میشود. از آنجایی که این اصطلاح بیشتر برای زبان های برنامه نویسی استفاده میشود، میتوان زبان های ++C، پایتون و غیره را Turing کامل دانست که با استفاده از آن ها میتوان هر مسئله پیچیده ای را حل کرد.
بلاک چین اتریوم بر خلاف شبکه های بلاکچین دیگر که به عنوان دفتر کل توزیع شده توصیف میشوند، یک ماشین حالت حاوی چیزی تحت عنوان ماشین مجازی اتریوم (EVM) در نظر گرفته میشود.
ماشین حالت یا State Machine یک روش کارآمد برای کنترل گردش کار در زبان سالیدیتی (زبان برنامه نویسی مورد استفاده در قراردادهای هوشمند) است.
از سویی دیگر بلاک چین بیت کوین نیز از قراردادهای هوشمند پشتیبانی میکند، اما برای استفاده از آن باید کد Opcode اجرا شود. این امر استفاده از قراردادهای هوشمند در Bitcoin را بسیار محدود میکند. ناگفته نماند که قابلیت های آن نیز کمتر است.
انواع قراردادهای هوشمند
حال که با ساختار Smart Contracts آشنا شدید، نوبت به معرفی انواع آن رسیده است. قراردادهای هوشمند خودکار (Self-Executing) بر اساس کاربردی که دارند به سه دسته تقسیم میشوند که عبارتند از:
- قرارداد حقوقی هوشمند
- سازمان های خود مختار غیر متمرکز
- قرارداد منطقی کاربردی
درباره هر نوع قرارداد هوشمند در ادامه بیشتر بحث میشود.
قرارداد حقوقی هوشمند (Smart Legal Contracts)
به عنوان متداول ترین نوع قراردادهای هوشمند، قرارداد قانونی هوشمند طوری تنظیم میشود که طرفین ذیربط را ملزم به اجرای شرایط کرده و در صورت عدم اجرای هر یک از شروط قرارداد، امکان اقدام قانونی علیه طرف ناقض قرارداد وجود دارد که میتواند به صورت خودکار توسط قراردادهای هوشمند انجام شود.
سازمان های خودمختار غیرمتمرکز (Decentralized Autonomous Organizations)
سازمان های خودمختار غیرمتمرکز که با نام اختصاری DAO شناخته میشوند را میتوان جوامعی در بلاک چین دانست که مجموعه ای از قوانین کدگذاری شده توسط قراردادهای هوشمند برای نظارت بر فعالیت آن ها وضع شده است. فعالیت افراد حاضر در جامعه تابع قوانین بوده و همه شرکت کنندگان وظیفه دارند قانون را اجرا کنند.
قراردادهای منطقی کاربردی (Application Logic Contracts)
این قراردادهای هوشمند حاوی کدهایی بر پایه یک برنامه هستند که در ارتباط با سایر قراردادها و برنامه های هوشمند در Blockchain کار میکنند و به برقراری ارتباط و اعتبارسنجی ارتباط بین دستگاه ها کمک میکنند مثل ادغام اینترنت اشیا (IoT) و فناوری بلاک چین. قراردادهای منطقی کاربردی (ALC) بخش مهمی از هر قرارداد هوشمند چند منظوره هستند و عمدتاً تحت یک برنامه مدیریتی کار میکنند.
آینده قراردادهای هوشمند چطور ارزیابی می شود؟
با پیشرفت فناوری بلاک چین و سلب اعتماد هرچه بیشتر مردم نسبت به بانک ها و مؤسسات دولتی، اقبال عمومی به سیستم های پرداخت دیجیتال نوین و در نتیجه امور مالی غیر متمرکز (DeFi) افزایش یافته است. حال آنکه لازمه پیاده سازی دیفای، وجود اپلیکیشن های غیر متمرکز (DApps) است که با استفاده از قراردادهای هوشمند بر بستر شبکه بلاک چین (Blockchain) نوشته شده اند.
آنچه باعث برتری قرارداد هوشمند (Smart Contract) نسبت به قرارداد سنتی (Traditional Contract) میشود، غیر قابل تغییر بودن شرایط توافق پس از امضای طرفین (به دلیل ذخیره شدن شرایط قرارداد روی بلاک چین)، خودکار سازی اجرای قرارداد و نیز دسترسی فوری همه شرکت کنندگان به نتایج قرارداد بلافاصله پس از اجرا است.