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