قرارداد هوشمند (smart contract) چیست؟
به زبان ساده، قرارداد هوشمند یک کد برنامه نویسی است که روی بلاک چین پیادهسازی میشود تا در صورت اتفاق افتادن دادن یک سری شرایط، دستورات خاصی را که برنامه نویس به آن داده است، اجرا کند. قراردادهای هوشمند یک نوآوری بسیار انقلابی هستند که ما را از اعتماد کردن به دیگران بی نیاز میکنند.
برای درک بهتر قرارداد هوشمند، ابتدا باید بدانیم که یک قرارداد معمولی چیست.
یک قرارداد معمولی چیست؟
یک قرارداد معمولی، توافقی بین دو یا چند شخص است که آنها را به چیزی در آینده متعهد میکند. مثلاً محمد برای استفاده از خانه علی هر ماه به او مبلغی پرداخت میکند، که به آن «قرارداد اجاره» هم میگویند. یا رضا تضمین میکند که در ازای گرفتن مبلغی پول، خسارتهای احتمالی ماشین سعید در تصادفات را پرداخت کند که به آن «قرارداد بیمه» هم میگویند.
کدهای کامپیوتری هم نوعی قرارداد هستند. به عنوان نمونه وقتی از اینترنت یک فایل خریداری میکنید، در پشت صحنه کدهایی وجود دارند که برای آنها تعریف شده است: اگر کاربر پول را پرداخت کرد و مبلغش کافی بود، لینک دانلود فایل را به او نمایش بده، در غیر اینصورت پیغام خطا نشان بده.
ما برای اجرای قراردادهای عادی نیاز به واسطههایی داریم که مجبور هستیم به آنها اعتماد کنیم. این واسطهها میتوانند سرورهای متمرکز کامپیوتر باشند یا بانکها و دولتها.
تفاوت قرارداد هوشمند و قرارداد معمولی چیست؟
چیزی که قرارداد هوشمند را نسبت به قرارداد عادی متفاوت کرده، استفاده از فناوری بلاک چین است که ما را از اعتماد کردن به واسطهها بینیاز میکند.
به عبارت دیگر، قرارداد هوشمند کدی است که روی بلاک چین فعال میشود تا بدون نیاز به واسطهها، شرایط یک توافقنامه بین دو طرف را بررسی و اجرا کند.
زمانی که یک قرارداد هوشمند بر روی یک بلاک چینِ آزاد مثل اتریوم اجرا شود، دیگر قابل توقف نیست و هیچکس نمیتواند جلوی اجرای آن را بگیرد. با قراردادهای هوشمند میتوان برنامهها و پروژههایی را ساخت که بدون هیچگونه واسطه و از کارافتادگی تا ابد به کار خود ادامه دهند. به این برنامهها برنامههای غیرمتمرکز (Dapp) هم میگویند. حتی خودِ برنامهنویس قرارداد هوشمند هم نمیتواند کد قرارداد هوشمند ثبت شده در بلاک چین را تغییر دهد.
قرارداد هوشمند چگونه کار میکند؟
همانطور که گفتیم، قرارداد هوشمند روی بلاک چین پیادهسازی میشود و خاصیت اصلی بلاک چین هم توزیعشده بودنِ آن است. جدا از فرایندهای پیچیده فنی، وقتی قرارداد هوشمند روی بلاک چین ثبت شود میان همه اعضای بلاک چین یا همان نودها (Node) به اشتراک گذاشته میشود و همه یک نسخه از آن را خواهند داشت، بنابراین جلوگیری از اجرای آن یا دستکاری در آن تقریبا ممکن نیست زیرا همه اعضای بلاک چین آن را اجرا میکنند، نه یک یا چند سرور و نهاد متمرکز.
پیاده سازی قرارداد هوشمند
کد قرارداد هوشمند پس از نوشته شدن توسط برنامهنویس از طریق یک کلاینت (نرم افزار رسمی که شما را مستقیم به بلاک چین متصل میکند) به صورت یک تراکنش بر روی بلاک چین ثبت میشود. قراردادهای هوشمند توسط یک یا چند زبان برنامهنویسی نوشته میشوند. مثلا زبان برنامه نویسی قراردادهای هوشمند اتریوم، سالیدیتی (Solidity) است. پس برای یادگیری نوشتن یک قرارداد هوشمند برای بلاک چین اتریوم نیاز است تا زبان برنامهنویسی سالیدیتی را یاد بگیرید.
اجرای قرارداد هوشمند
برای انجام تعامل با قرارداد ثبت شده هم باید با تراکنش این کار را انجام داد. البته اگر فقط نیاز به بررسی وضعیت قرارداد باشد، نیاز به تراکنش نیست. یک تراکنش به قرارداد به عنوان ورودی انجام میشود. سپس نودها با استفاده از ماشین مجازی اتریوم (EVM) خود و ورودی دریافت شده، قرارداد را اجرا میکنند. ماشین مجازی اتریوم فضایی مجازی برای اجرای قراردادها است. اگر کارمزد قرارداد به اندازه کافی باشد، تراکنش تایید میشود.
شاید در مورد نحوه کارکرد قراردادهای هوشمند کمی گیج شده باشید اما این طبیعی است زیرا فرایند اجرای این قراردادها پیچیدگیهای فنی زیادی دارد. برای درک دقیق آن میتوانید مقاله چگونکی کارکرد اتریوم را بخوانید.
به عنوان یک کاربرد معمولی، برای استفاده کاربردی از قراردادهای هوشمند نیاز نیست که بدانید دقیقا چطور کار میکنند، همانطور که برای استفاده از اینترنت نیاز نیست بدانید که اینترنت دقیقا چطور کار میکند.
برای ایجاد یک قرارداد هوشمند به چه چیزهایی نیاز دارم؟
به طور کلی برای ایجاد یک قرارداد هوشمند علاوه بر مواردی که بالا ذکر شد، به موارد زیر هم نیاز است:
موضوع قرارداد و دسترسی
این برنامه باید به محصول یا خدمات تحت قرارداد دسترسی داشته باشد تا به طور خودکار آنها را در فرایند عرضه یا خرید کنترل کند. مثلا اگر قرارداد قرار است تا در صورت دریافت پول یک فایل را تحویل بدهد، باید به فایل دسترسی داشته باشد.
شرایط قرارداد
شرایط قرارداد هوشمند به شکل دقیق دنبالهای از عملیات است که در صورت رخ دادن شرایط، موجب اجرای قرارداد میشوند. این شرایط باید با برنامهنویسی مشخص شوند. همه شرکتکنندگان باید این شرایط را امضا کنند.
اوراکل (Oracle)
اوراکل به چیزی گفته میشود که اطلاعات خارجی را به قرارداد میدهد تا قرارداد آنها را پردازش کند. مثلا اگر قرار است تا قرارداد اطلاعات هواشناسی را بررسی کند، اوراکل میتواند یک سایت هواشناسی باشد.
پلتفرم انحصاری
قرارداد هوشمند به بلاک چین یک پلتفرم خاص صادر میشود و در میان نودهای پلتفرم مورد نظر توزیع میشود. همچنین برای ثبت قرارداد نیاز به یک نرم افزار کلاینت رسمی هم دارید که مستقیما به بلاک چین متصل باشد. اتریوم در حال حاضر محبوبترین پلتفرم برای اجرای قراردادهای هوشمند است.
کاربرد قراردادهای هوشمند در زندگی واقعی
هزاران ایده فوقالعاده را میتوان با این قراردادها عملی کرد. در هر فرایندی که بخواهیم نیاز به اعتماد کردن را از بین ببریم، این قراردادها میتوانند کارآمد باشند. برخی از مهمترینِ آنها که تاکنون اجرایی شدهاند عبارتند از:
انتخابات
نتایج رأی گیری در بلاک چین قرار خواهد گرفت و در میان نودهای شبکه توزیع می شود. تمام دادهها شفاف، رمزنگاریشده و ناشناس هستند. این روش از هرگونه دستکاری یا تقلب در انتخابات جلوگیری میکند.
مدیریت
قراردادهای هوشمند میتوانند مثل رباتها فرایندهای روتین را به شکلی دقیق اجرا کنند. به عنوان مثال میتوان قراردادی برای پرداخت حقوق به کارمندان نسبت به ساعات فعالیت تنظیم کرد که نیاز به اعتماد کردن به حسابدارها نباشد.
مالکیت معنوی
یک اثر مخصوصا از نوع فایل (موسیقی، عکس، فیلم و …) پس از انتشار در فضای اینترنت به شدت در خطر نقض کپی رایت قرار دارد که ضرر زیادی به مالک اثر میرساند. با استفاده از قراردادهای هوشمند میتوان برای استفاده از یک فایل، یک سری شرایط خاص مثل پرداخت بها با یک توکن خاص را تعیین کرد. امروزه پروژههای زیادی برای این هدف در حال کار هستند.
بیمه
با قراردادهای هوشمند میتوان نیاز به واسطهها را در سیستمهای سنتی بیمه از بین برد. پرداخت خودکار خسارت، دریافت حق بیمه و تمدید بیمه با قراردادهای هوشمند چیزیست که شرکتهای بیمه روی آن کار میکنند.
همچنین از قراردادهای هوشمند میتوان در سیستمهایی مثل بانکداری، حمل و نقل، ردیابی و اینترنت اشیا استفاده کرد.