بیاین قبل از اینکه درباره قراردادهای هوشمند صحبت کنیم، کمی راجعبه عنوان قراردادهای معمولی بگیم.
یه قرارداد معمولی، توافق بین دو یا چندنفره که اونا رو نسبت به هم، دررابطهبا چیزی (موضوع قرارداد) در آینده متعهد میکنه.
برای مثال آقای ایکس میخواد برای استفاده از خونهی آقای ایگرگ بهصورت ماهانه، بهش یه مبلغی پرداخت کنه، این وسط به ثبتکردن تمام اطلاعات این اتفاق دو طرف میگن «قرارداد اجاره».
یا مثلاً فرد A ضمانت میکنه که در ازای گرفتن مبلغی، خسارتهای احتمالی ماشین فرد B رو تو تصادفات پرداخت کنه که میشه «قرارداد بیمه» و..
حالا کدهای کامپیوتری هم یهجور قرارداد محسوب میشن؛ بهعنوانمثال وقتی از تو محیط اینترنت، فایلی رو خریداری میکنین، پشتصحنه کدهایی وجود دارن که برای اونها تعریف شده؛ اگر کاربر پول رو پرداخت کرد و مبلغش کافی بود، لینک دانلود فایل و بهش نمایش بده، در غیر اینصورت پیغام خطا نشون بده.
ما برای اجرای قراردادهای عادی نیاز به واسطههایی داریم که مجبوریم بهشون اعتماد کنیم. این واسطهها میتونن سرورهای متمرکز کامپیوتر باشن یا بانکها و دولتها.
حالا قرارداد هوشمند چیه؟
قرارداد هوشمند یه کد برنامهنویسیه که روی بلاکچین پیادهسازی میشه تا در صورت اتفاقافتادن دادن یکسری شرایط، دستورات خاصی رو که برنامهنویس به اون داده، اجرا بکنه. قراردادهای هوشمند یک نوآوری بسیار انقلابی هستن که ما رو از اعتمادکردن به دیگران بینیاز میکنن.
قرارداد هوشمند یه عنصر کلیدی از شبکه اتریومه و قرارداد هوشمند یه کد خوداجرا کنندهست و مجموعهای از دستورالعملها رو انجام میدهد که بعد از اون در یه زنجیره بلوکی تأیید میشه.
این قراردادها غیرقابلاعتماد، مستقل، غیرمتمرکز و شفاف هستن و بعد از استقرار برگشتناپذیر و غیرقابلتغییرن.
این قراردادها توی امور مالی غیرمتمرکز (DeFi) بسیار محبوب هستن؛ البته چندین مورداستفاده دیگه هم دارن.
قراردادهای هوشمند رو میشه تو برنامههای غیرمتمرکز (dApps) قرار داد تا عملکردهای پیچیدهتری رو اجرا کنه.
چیزی که قرارداد هوشمند رو نسبت به قرارداد عادی متفاوت میکنه، استفاده از فناوری بلاک چینه که ما رو از اعتمادکردن به واسطهها بینیاز میکنه.
به عبارت دیگه، قرارداد هوشمند یه جور کده که روی بلاکچین فعال میشه تا بدون نیاز به واسطهها، شرایط رو برای بررسی و اجرای یه توافقنامه مهیا کنه.
زمانی که یک قرارداد هوشمند روی یک بلاکچین آزاد مثل اتریوم اجرا بشه، دیگه قابلتوقف نیست و هیچکس نمیتونه جلوی اجرای اون رو بگیره. با قراردادهای هوشمند میشه برنامهها و پروژههایی رو ساخت که بدون هیچگونه واسطه و از کارافتادگی تا ابد به کار خودشون ادامه بدن.
اینکه قراردادهای هوشمند نیاز به واسطه و اجرای قرارداد رو برطرف کنن، هزینه رو تا حد زیادی کاهش میده و فرایند مذاکره قرارداد رو ساده می کنه.
یه قرارداد هوشمند، کد مکانیسمهای معامله رو تعریف میکنه و داور نهایی شرایط. تغییرناپذیری و برگشتناپذیری کد در قراردادهای هوشمند یک نقطه قوته، اما خب اشکالاتی هم داره؛ بهعنوانمثال، اگه اشکالی در کد وجود داشته باشه، هیچ راهی برای باطل کردن یا تغییر اون قرارداد هوشمند وجود نداره.
جدا از فرایندهای پیچیدهی فنی، وقتی قرارداد هوشمند روی بلاکچین ثبت بشه، بین همهی اعضای بلاکچین یا همان نودها (Node) به اشتراک گذاشته میشه و همه یک نسخه از اون رو خواهند داشت، بنابراین جلوگیری از اجرای اون یا دستکاری درش تقریباً ممکن نیست؛ چون همهی اعضای بلاکچین اون رو اجرا میکنن، نه یک یا چند سرور و نهاد متمرکز.
ایدهی قراردادهای هوشمند در واقع برای پیش از بلاکچین و ارزهای رمزنگاری بوده و اولینبار توسط یک توسعهدهنده به نام «نیک سابو» در سال 1994 مطرح شد. اگرچه راهاندازی بیتکوین در سال 2009 قراردادهای هوشمند رو به یک واقعیت فنی تبدیل کرد، اما این پروتکل اتریوم بود که این فناوری رو به یک عنصر اساسی ارتقا داد.
پیادهسازی قرارداد هوشمند
کد قرارداد هوشمند پس از نوشته شدن توسط برنامهنویس از طریق یه کلاینت (نرمافزار رسمی که شما رو مستقیم به بلاکچین متصل میکند) بهصورت یک تراکنش روی بلاکچین ثبت میشه.
قراردادهای هوشمند توسط یک یا چند زبان برنامهنویسی نوشته میشن؛ مثلاً زبان برنامهنویسی قراردادهای هوشمند اتریوم، سالیدیتیه. پس برای آموزش نوشتن یه قرارداد هوشمند برای بلاکچین اتریوم نیاز داریم زبان برنامهنویسی سالیدیتی رو یاد بگیریم.
موارد استفاده از قرارداد هوشمند
یه قرارداد هوشمند انفرادی فقط برای یک نوع تراکنش قابلاستفاده است. اگر فرایند خاصی اتفاق بیفته، فرایند مرتبط دیگهای رو دنبال می کنه. اما، بیشتر dAppها با ترکیب قراردادهای هوشمند با هم کار میکنن تا عملکردهای پیچیده رو فعال کنن. هزاران dApp در سراسر شبکههای مختلف بلاکچین وجود داره، از امور مالی گرفته تا بازی، صرافیها و رسانهها و… و همه اونها از قراردادهای هوشمند به روشهای مختلف استفاده میکنن.
حالا ما میخوایم که یه قرارداد هوشمند رو ایجاد کنیم،
در این صورت به چیزهایی نیازمندیم؟
موضوع قرارداد و دسترسی
این برنامه باید به محصول یا خدمات تحت قرارداد دسترسی داشته باشه تا به طور خودکار اونها رو در فرایند عرضه یا خرید، کنترل کنه؛ مثلاً اگه قرارداد باید در صورت دریافت پول یه فایل رو تحویل بده، باید به فایل دسترسی داشته باشد.
شرایط قرارداد
شرایط قرارداد هوشمند به شکل دقیق دنبالهای از عملیاته که در صورت رخدادن شرایط، موجب اجرای قرارداد میشن. این شرایط باید با برنامهنویسی مشخص بشن. همهی شرکتکنندگان باید این شرایط و امضا کنن.
اوراکل (Oracle)
اوراکل به چیزی گفته میشه که اطلاعات خارجی رو به قرارداد میده تا قرارداد اونها رو پردازش کنه؛ مثلاً اگه قراره تا قرارداد اطلاعات هواشناسی رو بررسی کند، اوراکل میتونه یک سایت هواشناسی باشه.
در بخش DeFi، قراردادهای هوشمند امکان سود سپردهها و وامها و تجارت و سرمایهگذاری را فراهم میکنن؛ که معمولاً فقط از طریق سازمانهای خدمات مالی سنتی در دسترس هستن. علاوه بر این، قراردادهای هوشمند رو میشه برای تجارت، ردیابی موجودی، بازارهای پیشبینی و شرطبندی، هویت دیجیتال، قراردادهای قانونی، حراجهای آنلاین، وامهای مسکن خودکار و تعداد موارد بسیار زیاد دیگهای استفاده و تنظیم کرد.
با قراردادها میشه کلی ایدهی درجهی یک و عملی کرد. درواقع توی اکثر پروژهها و کارهایی که نیاز باشه قضاوت انسانی و دستکاری احتمالی و بهطور کل عدم اعتماد رو حذف کنیم، این قراردادها بهترین گزینه محسوب میشن.
مثلاً انتخابات رو درنظر بگیرید! با استفاده از قرارداد هوشمند، نتایج رأیگیری تو بلاکچین قرار داده میشه و بین نودهای شبکه توزیع میشه. تمام دادهها شفاف، رمزنگاری شده و ناشناسن. این روش از هر دستکاری یا تقلب تو انتخابات جلوگیری میکنه.
یا بهعنوانمثال مدیریت.
قراردادهای هوشمند میتونن مثل رباتها فرایندهای روتین رو به یه شکل دقیق اجرا کنن. مثلاً میشه یه قراردادی برای پرداخت حقوق به کارمندان نسبت به ساعتای فعالیت تنظیم کرد که نیاز به اعتمادکردن به حسابدارها نباشه!
مثال دیگهاش مالکیت معنویه. هر اثری، مخصوصاً از نوع فایل (موسیقی، عکس، فیلم و …) بعد از انتشار تو فضای اینترنت، بهشدت در خطر نقض کپیرایت قرار داره که ضرر زیادی به مالک اثر میرسونه. با استفاده از قراردادهای هوشمند میشه برای استفاده از یک فایل، یه سری شرایط خاص مثل پرداخت بها با یه توکن خاص رو تعیین کرد.
قراردادهای هوشمند دررابطهبا بیمه هم کارکرد دارن. با قراردادهای هوشمند میشه نیاز به واسطهها رو در سیستمهای سنتی بیمه از بین برد. پرداخت خودکار خسارت، دریافت حق بیمه و تمدید بیمه با قراردادهای هوشمند چیزیه که شرکتهای بیمه روی اون کار میکنن.
و البته تو سیستمهایی مثل بانکداری، حملونقل، ردیابی و اینترنت اشیا و… هزاران مورد دیگه میشه از قراردادهای هوشمند استفاده کرد.
قراردادهای هوشمند اما، با وجود مزیتهای فوقالعاده و ساختارشکن بودنشون، هنوز کامل نیستن و در حال حاضر نمیشه از اونها در سطح گسترده استفاده کرد. فعلاً از بزرگترین مشکلاتی که قراردادهای هوشمند باهاشون دستوپنجه نرم میکنه «عامل انسانی» و «مشکل اوراکله».
خب میدونیم که کد قراردادها توسط برنامهنویسها نوشته میشه و طبیعتاً احتمال اشتباه یا باگ توی کد قرارداد وجود داره؛ اگر قرارداد هوشمند تو بلاکچین ثبت بشه، دیگه نمیشه تغییرش داد و بنابراین باگ هم قابلرفع شدن نیست!
مثل پروژه DAO تو اتریوم که پیداشدن یه مشکل امنیتی تو کد قراردادش باعث شد تا یه چیزی بیش از ۵۰ میلیون دلار اتریوم دزدی بشه و توسعهدهندها مجبور بشن برای برگشت دادن سرمایهها، هارد فورک انجام بدن که در نتیجه دلیل به وجود اومدن یه اتریوم جدید شد و دیگه به توکن قبلی، گفتن اتریوم کلاسیک!
در مورد اوراکل هم باتوجهبه توضیحی که پیشتر دادیم، برای قراردادها، دادههای خارجی رو فراهم میکند تا اونها رو پردازش کنن.
بهعنوانمثال؛ به یه شرطبندی فکر کنید؛ فرضاً دو نفر روی شرایط آبوهوا شرط میبندن، اولی میگه: فردا هوا بارونیه و دومی میگه: آفتابیه. خب، حالا این دو نفر به چیزی نیاز دارن که بینشون داوری کنه و هر کدوم که درست پیشبینی کرده بودن و بهعنوان برنده اعلام کنه.
این دو نفر میتونن از یه قرارداد هوشمند استفاده کنن که از سایت رسمی هواشناسی، اطلاعات آبوهوا رو بررسی کنه و اگر هوا بارونی بود اولی، اگر هوا آفتابی بود دومی رو برنده اعلام کنه. حالا تو این مثال اوراکل میشه سایت رسمی هواشناسی. این سایت متمرکزه و میشه با هککردن یا تغییرش، قرارداد هوشمند رو بهاشتباه انداخت. اوراکلها، عدم نیاز به اعتماد در قرارداد هوشمند رو با چالش مواجه میکنن.
از چالشهای دیگهی قراردادهای هوشمند، وضعیت قانونی و همینطور هزینهی پیادهسازیه.
در حال حاضر، قراردادهای هوشمند توسط دولتها به رسمیت شناخته نمیشن؛ بنابراین اگه نهادهای دولتی تصمیم به ایجاد یه چارچوب قانونی برای قراردادهای هوشمند بگیرن، مسائل عجیبی به وجود میاد. مثلاً مالکیت یه خونه روی قرارداد هوشمند، در حال حاضر برای دولتها پذیرفته نیست.
از اون گذشته قراردادهای هوشمند بدون برنامهنویسی قابلاجرا نیستن. باید یک یا چند برنامهنویس ماهر داشته باشین تا قراردادهای هوشمند بهخوبی تنظیم بشن.
البته سرویسهایی برای ایجاد قراردادهای هوشمند توسط کاربرای عادی وجود داره و کاربرها میتونن با چند کلیک بعضی از قراردادهای هوشمند خودشون رو تنظیم کنن. بااینحال، این سرویسها نمیتونن قراردادهای پیچیده رو طراحی کنن.
قراردادهای هوشمند در حال حاضر کاربرد بسیار زیادی رو در مراحل مختلف بلاکچین دارن سرعتی گسترششون هم بسیار بالاست. اجرای بدون اعتماد تعهدات قراردادی که روی بلاکچین اجرا می شن ممکنه در آیندهی نزدیک، یه امر عادی بشه و این تصور که کاغذبازی و واسطهها ضروری هستن، ممکنه بهزودی تقریباً در هر صنعتی – از املاک و مستغلات و امور مالی گرفته تا مراقبتهای بهداشتی و مهماننوازی – بخشی از تاریخ بشه.