قرارداد هوشمند که به آن اسمارت کانترکت (Smart Contract) نیز گفته میشود، ابزاری است که فرآیند انجام معاملات در حوزه بلاک چین را سادهتر میکند.
شاید تا به حال برای شما پیش آمده باشد که بخواهید قراردادی را بر مبنای شروطی مشخص، با فردی دیگر ببندید. معمولا در این مواقع، دو طرف قرارداد برای اجرای درست و دقیق آن، نگرانیهایی دارند. همچنین اگر نیاز به قرارداد معتبر و رسمی باشد، باید طرف سومی (مانند سازمانهای دولتی و …) این قرارداد را تایید کند. اما قراردادهای هوشمند شرایط متفاوتی را ایجاد کردهاند. این نوع قراردادها، بدون نیاز به شخص ثالث و با امنیت و دقت بالا نوشته و اجرا میشوند.
کاربرد قراردادهای هوشمند بسیار گسترده است و با مزایایی که ایجاد میکنند، قادر به حل مشکلات رایج قراردادهای معمولی هستند. در این مقاله به معرفی کامل قرارداد هوشمند، کاربردها و تفاوتهای آن با قرارداد معمولی میپردازیم. همچنین مزایا و معایب این نوع قرارداد را برشمرده و نحوه کار آن را بیان میکنیم. اگر علاقهمند به آشنایی با مفهوم قراردادهای هوشمند در بستر بلاکچین هستید، با این مقاله از «آکادمی رمز ارز» همراه باشید.
قراردادهای هوشمند برنامههای سادهای هستند که در یک بلاکچین ذخیره میشوند و در صورت تحقق شرایط از پیش تعیینشده، اجرا میگردند. این قراردادها معمولا برای خودکارسازی اجرای توافقنامه استفاده میشوند تا تمام شرکتکنندگان بتوانند، بدون دخالت واسطه و اتلاف زمان، بلافاصله از نتیجه اطمینان حاصل کنند. این نوع قراردادها همچنین میتوانند یک گردش کار را بهصورت خودکار انجام دهند و در صورت تحقق شرایط موردنظر، اقدام بعدی را آغاز کنند.
قراردادهای هوشمند خودکار، برنامههای اتوماسیون تجاری هستند که در یک شبکه غیرمتمرکز مانند بلاکچین اجرا میشوند. از آنجا که قراردادهای هوشمند قادر به حذف سربار اداری هستند، یکی از جذابترین ویژگیهای مرتبط با فناوری بلاکچین محسوب میشوند. در حالی که بلاکچین بهعنوان نوعی پایگاه داده عمل میکند و تایید میکند که معاملات انجام شده است، قراردادهای هوشمند شرایط از پیش تعیینشده را اجرا میکنند.
بهبیان دیگر، قرارداد هوشمند یک قرارداد خوداجرایی است که شرایط توافق بین خریدار و فروشنده، بهطور مستقیم داخل خطوط کد نوشته میشود. کد و توافقات موجود در آن، در شبکه توزیعشده و غیرمتمرکز بلاکچین قرار دارند. کد، فرآیند اجرا را کنترل میکند و تراکنشها قابلپیگیری و برگشتناپذیر هستند. همچنین معاملات بدون نیاز به مرجع مرکزی، سیستم حقوقی یا سازوکار اجرایی خارجی انجام میشوند. در حال حاضر، پرکاربردترین بستر اجرای قراردادهای هوشمند، شبکه اتریوم است. قراردادها در شبکه اتریوم، معمولا با زبان سالیدیتی (Solidity) نوشته میشوند.
قرارداد هوشمند را میتوان بهطور خلاصه در قالب سه نکته اساسی زیر تعریف کرد:
پیشینه قراردادهای هوشمند به سالها قبل بازمیگردد. در سال 1994 یک رمزنگار به نام نیک سابو به این فکر افتاد که میتوان قراردادها را به شکل یک کد درآورد تا بهصورت خودکار فعال شوند. این موضوع مزیتهای فراوانی داشت که یکی از این مزایا، برطرف کردن نیاز به حضور و نظارت یک شخص ثالث، برای منعقد شدن قرارداد بود. در آن سالها نیز بهخوبی حس میشد که برای افزایش ضریب امنیت و اطمینان یک قرارداد، حتما باید شخص ثالثی مانند بانک وجود داشته باشد و اجرای قرارداد را تضمین کند. این امر محدودیتها و مشکلاتی را رقم میزد و به همین دلیل، ایده قراردادهای هوشمند شکل گرفت.
ایده اولیه قراردادهای هوشمند بدین شکل بود که نیاز به حضور شخص ثالث در قرارداد را برطرف میکردند. یعنی زمانی که شروط یک معامله محقق میشد، قرارداد هوشمند نیز در یک شبکه رایانهای بهطور کاملا خودکار به اجرا درمیآمد. اما همانطور که حدس میزنید، در آن سالها هنوز تکنولوژی به حدی پیشرفت نکرده بود که ایده نیک سابو عملی شود. با ظهور شبکه بلاک چین، امکان لازم برای اجرای قراردادهای هوشمند فراهم شد و این قراردادها بهطور گسترده مورد استفاده قرار گرفتند. با اینکه بلاک چین بهطور رسمی از سال 2009 و با ظهور بیت کوین به دنیا معرفی شد، اما چند سال بعد و با تاسیس اتریوم بود که قراردادهای هوشمند کاربرد واقعی خود را به جهان نشان دادند. حالا بدون این قراردادها، حتی تصور استفاده از امکانات بلاک چین نیز غیرممکن است.
نیک سابو، یک متخصص رمزنگاری و امور رایانهای، در سال 1994 ایده اولیه استفاده از قراردادهای هوشمند را ارائه کرد. همانطور که گفتیم، در آن زمان شرایطی مهیا نبود که بتوان این ایده را پیادهسازی کرد. با ظهور تکنولوژی بلاک چین، ایده قراردادهای هوشمند نیز دوباره مطرح شد و آن را به عنوان راهحلی برای معاملات بر بستر این شبکه معرفی کردند. اگرچه بیت کوین زمینه را برای استفاده از قراردادهای هوشمند ایجاد کرد، اما ابن اتریوم بود که امکان استفاده از Smart Contract را برای عموم مردم فراهم نمود و آن را گسترش داد. در حال حاضر، قراردادهای هوشمند یک عامل محرک اصلی جهت انجام معاملات در شبکه بلاک چین هستند.
فرض کنید برای یک سفر کاری، باید با هواپیما به یک کشور دیگر سفر کنید. از ساعاتی قبل از وقت پرواز، به فرودگاه میروید و منتظر میشوید تا زمان موردنظر فرا برسد. دقیقا لحظاتی قبل از زمان پرواز متوجه میشوید که پرواز شما بیش از دو ساعت تاخیر دارد. اینجاست که از این اتلاف زمان، ناراحت میشوید و حداقل انتظار شما، پرداخت خسارت مناسب با زمان تلفشده به شماست. این موضوع نیاز به شخص ثالثی دارد که اجرای آن را تضمین کند. ولی پیگیری این موضوع و رساندن آن به نتیجه، معمولا کاری زمانبر و شاید غیرممکن باشد.
در همین مورد بالا فرض کنید، یک شرکت بیمه با استفاده از قراردادهای هوشمند اتریوم، قراردادی را تحتعنوان بیمه تاخیر پرواز ارائه دهد. این قرارداد با ارتباط به پایگاه داده فرودگاه که وضعیت پرواز را ضبط میکند، شرایط پرداخت خسارت شما را فراهم میکند. شرط تعیینشده برای اجرای این قرارداد هوشمند بیمه، تاخیر بیشتر از دو ساعت است. بر اساس این کد، قرارداد هوشمند تا زمان تحقق شروط در نظر گرفتهشده، پول شرکت بیمه را در خود نگه میدارد و اگر شروط برقرار شود، بلافاصله پول تعیینشده را به حساب شما واریز میکند. قراردادهای هوشمند غیرقابلتغییر هستند و بهطور خودکار اجرا میشوند. میتوان گفت هدف اصلی و مهمی که بهواسطه قراردادهای هوشمند محقق میشود، اعتماد دوطرفه میان شرکتکنندگان در یک قرارداد است.
قرارداد معمولی، توافقی است بین دو یا چند نفر که آنها را ملزم به چیزی در زمان آینده میکند. همه ما با نمونههای مختلفی از قرارداد در زندگی خود سر و کار داریم. مثلا فردی که به عنوان کارمند در شرکتی مشغول به کار میشود، به واسطه قرارداد کاری، متعهد شده که وظایف مشخصی را به انجام برساند. از سوی دیگر، کارفرما نیز موظف است نسبت به پرداخت حقوق و مزایای کارمند، بر اساس چیزی که در قرارداد ذکر شده، اقدام نماید.
کمی بالاتر گفتیم که قراردادهای هوشمند از طریق کدهای کامپیوتری اجرا میشوند. اما این موضوع بدان معنا نیست که تمام قراردادهای کامپیوتری، هوشمند هستند. فرض کنید که میخواهید یک فیلم یا بازی را بهصورت اینترنتی بخرید. برای این کار باید مقدار مشخصی پول پرداخت کنید و سپس لینک دانلود برای شما فعال خواهد شد. در این بین، سرورهای کامپیوتر چک میکنند که پول پرداخت شده از سوی شما کافی باشد؛ سپس لینک را در اختیارتان میگذارند. در اینجا، سرورهای رایانهای نقش واسطه را دارند، یعنی نمیتوان این قرارداد را هوشمند نامید.
قراردادی هوشمند است که بدون نیاز به واسطه، شرایط یک توافقنامه را بررسی و اجرا کند. در ادامه بیشتر درباره تفاوتهای قرارداد هوشمند و قرارداد معمولی صحبت میکنیم.
تفاوت اصلی قرارداد هوشمند و قرارداد معمولی، در وجود یا عدموجود واسطه در فرآیند اجرای قرارداد است. قراردادهای هوشمند برخلاف قراردادهای معمولی، در بستر بلاکچین (مانند اتریوم) شکل میگیرند و بدون نیاز به واسطه و بهصورت خودکار اجرا میشوند. کد قرارداد هوشمند، بعد از اجرا، توسط هیچکس قابلتغییر یا توقف نیست. حتی خود برنامهنویس هم نمیتواند کد قرارداد هوشمند ثبتشده در بلاکچین را دستکاری کند.
در ادامه تفاوتهای کلیدی قراردادهای هوشمند و معمولی را بهصورت مختصر مشاهده میکنید:
قراردادهای هوشمند را میتوان در کاربردهای گستردهای به کار برد. در اجرای هر قراردادی که بخواهیم بستر وجود واسطه را از بین ببریم و خودکارسازی فرآیند را در دستور کار قرار دهیم، استفاده از قرارداد هوشمند کاربرد دارد. در زیر به بعضی از این کاربردها که فراگیری گستردهتری دارند، اشاره میکنیم:
قراردادهای هوشمند، ویژگیهای خاصی را با خود به همراه دارند که میتوان از آن ویژگیها بهعنوان مزیتهای قرارداد هوشمند نام برد. با مرور این قراردادها، تعداد زیادی مزیت و برتری نسبت به قراردادهای معمولی قابلمشاهده است. در ادامه، اصلیترین مزایای این قراردادها را که نشاندهنده وجوه مثبت آن هستند، در قالب یک شکل معرفی میکنیم:
از لحاظ تئوری قراردادهای هوشمند بسیار کارآمد بهنظر میرسند. اما در عمل هنوز با کامل و بینقص شدن فاصله دارند. بهطور مثال، اگر در کد قرارداد هوشمند، اشکالی وجود داشته باشد، چهکاری میتوان کرد؟ یا دولتها چگونه میتوانند چنین قراردادهایی را تنظیم کنند؟ چهطور میتوان از این قراردادها مالیات گرفت؟
این موارد، بخشی از چالشهای قراردادهای هوشمند است که هنوز بهطور کامل حل نشدهاند. چند مورد از معایب و مشکلات این قراردادها عبارتند از:
کدهای قراردادهای هوشمند توسط افراد نوشته میشود و در نتیجه احتمال خطا در آن وجود دارد. همچنین اگر یک قرارداد هوشمند در بلاکچین ثبت شود، دیگر قابلتغییر یا حذف نیست. همین موضوع در گذشته هم باعث مشکلاتی شده است. مثلا در پروژه DAO در اتریوم، وجود یک خطای کوچک باعث بروز مشکل امنیتی شد و همین مشکل، میلیونها دلار اتریوم را به باد داد. اصلا همین قضیه بود که باعث شد یک اتریوم جدید شکل بگیرد و اتریوم قبلی با عنوان «کلاسیک» شناخته شود.
قراردادهای هوشمند برای اجرا و بررسی وقوع شروط تعیینشده، نیاز به استفاده از دادههای خارجی دارند. این دادهها توسط اوراکلها تامین میشوند. مشکلی که پیش میآید، امکان دستکاری این دادهها و در نتیجه نامعتبر شدن قرارداد هوشمند است. فرض کنید شما نتیجه یک مسابقه فوتبال را به نفع تیم A پیشبینی کردهاند و دوستتان نتیجه را به نفع تیم B پیشبینی میکند. برای اینکه از نتیجه بازی اطلاع پیدا کنید، در قرارداد خود ذکر میکنید که باید از وبسایت مشخصی که نتایج را بهطور زنده نشان میدهد استفاده کنید. این وبسایت یک اوراکل است. حالا اگر این سایت هک شود یا به هر دلیل اشتباه کند، قرارداد بین شما و دوستتان تحت تاثیر قرار خواهد گرفت.
قراردادهای هوشمند توسط نهادهای دولتی پذیرفتهشده نیستند. در آینده هم اگر دولتی بخواهد از این قراردادها بهصورت رسمی پشتیبانی کند، نیاز به وجود بستر تعریفشدهای دارد. بنابراین اگر یک دارایی از طریق قرارداد هوشمند به فردی منتقل شده باشد، برای اثبات این امر در نهادهای دولتی با مشکل مواجه خواهد شد.
گام اصلی برای داشتن یک قرارداد هوشمند، نوشتن کد آن است. استخدام یک برنامهنویس ماهر که بتواند یک قرارداد هوشمند را به نحو احسن بنویسد، هزینههایی را در پی دارد. البته سرویسها و پلتفرمهایی هستند که امکان انعقاد قرارداد هوشمند برای کاربران عادی را فراهم میکنند. اما این سرویسها فقط برای قراردادهای ساده کاربرد دارند و برای قراردادهای پیچیدهتر، حتما باید از یک یا چند برنامهنویس قوی کمک بگیرید.
توسعه قراردادهای هوشمند با توسعه بلاکچین در ارتباط است. در حقیقت، این قراردادها در بستر بلاکچین اجرا میشوند. محتوای قرارداد، داخل بلوک برنامه قرار میگیرد و با نقاط ورود و خروجی که ایجاد میشود، قرارداد هوشمند میتواند با اطلاعات خارج از بلاکچین، کار کند.
قراردادهای هوشمند در قالب جملات ساده «اگر…، آنگاه …» در کد روی یک بلاکچین، کار میکنند. هنگامی که شروط از پیش تعیینشدهای برقرار شوند، شبکهای از رایانهها، اقداماتی را انجام میدهند. این اقدامات میتواند شامل مواردی مانند واریز وجوه برای اشخاص مربوطه، ثبت یک وسیله نقلیه، ارسال اعلان یا صدور یک بلیط باشد. بعد از تکمیل هر تراکنش، بلاکچین بهروزرسانی میشود. به همین دلیل، تراکنشها قابلتغییر نیستند و همچنین فقط افرادی که به آنها مجوز داده شده است، امکان مشاهده نتایج را دارند. قرارداد هوشمند برای ارزیابی، به گرههای EMV (یک کامپایلر زمان اجرا برای اجرای کد قرارداد هوشمند) ارسال میشود. برای اجرای یک قرارداد، تمام گرههای موجود در شبکه که کد را اجرا میکنند، باید به یک نتیجه واحد برسند. این نتیجه در دفتر توزیعشده ثبت میشود.
برای اجرای قرارداد، لازم است طرفین از فناوریهای امضای الکترونیکی موجود در برنامههای بلاکچین، استفاده کنند. اصل اساسی نحوه کار قراردادهای هوشمند، صحت اجرای شروط مقرر و همچنین اتوماسیون کامل این فرآیند است.
برای اجرا قراردادهای هوشمند، ابتدا باید کد مربوط به قرارداد نوشته شود. سپس این کد باید روی شبکه بلاک چین قرار بگیرد. برای نوشتن کد، لازم است که برنامهنویس، زبان برنامهنویسی مربوط به همان شبکه بلاک چین را بلد باشد. مثلا زبان برنامهنویسی قراردادهای هوشمند در شبکه اتریوم، سالیدیتی (Solidity) است. وقتی کد مربوطه نوشته شد، این کد از طریق یک کلاینت، روی بلاک چین ثبت میشود.
توضیح اینکه قراردادهای هوشمند چگونه کار میکنند یا اجرا میشوند، تا حدی مشکل است. در واقع قبل از اینکه نحوه اجرای این قراردادها را توضیح بدهیم، باید روش کار شبکه اتریوم را بازگو کنیم. البته برای کار با قراردادهای هوشمند اصلا لازم نیست که روش کار آنها را بدانید. اما اگر بخواهیم خیلی ساده و مختصر بگوییم، برای انجام هر گونه تعاملی با قرارداد هوشمند، باید یک تراکنش انجام داد. یعنی یک تراکنش به عنوان ورودی انجام میشود و سپس نودها، از طریق ماشین مجازی اتریوم (EVM) قرارداد را اجرا میکنند. چنانچه کارمزد به اندازه کافی باشد، تراکنش تایید خواهد شد.
تا به اینجا بهطور کلی گفتیم که اگر بخواهیم یک قرارداد هوشمند را ایجاد کنیم، به چه مواردی نیاز داریم و چه شرایطی باید وجود داشته باشند. اما بهطور دقیقتر میتوان گفت که برای ایجاد یک Smart Contract موارد زیر مورد نیاز هستند:
کد یا برنامهای که نوشته میشود، باید به محصول یا خدمات تحت قرارداد دسترسی داشته باشد. مثلا اگر موضوع قرارداد به گونهای باشد که در ازای دریافت مبلغ مشخصی، باید یک فایل به فرد تحویل داده شود، قرارداد باید به فایل مربوطه دسترسی داشته باشد.
شرایط قرارداد در واقع مجموعهای از عملیات هستند که در نهایت منجر به اجرای قرارداد میشوند. این شرایط و عملیات با کدنویسی مشخص میشوند و طرفهای قرارداد نیز باید حتما این شرایط را قبول و امضاء کرده باشند.
اوراکل وظیفه دارد که اطلاعات و دادههای خارجی را برای قرارداد فراهم کند. مثلا اگر موضوع قرارداد درباره پیشبینی نتایج فوتبال باشد، سایت ارائه کننده نتایج، اوراکل است.
قراردادهای هوشمند باید حتما روی یک پلتفرم مشخص اجرا شوند. در حال حاضر رایجترین پلتفرمی که از قراردادهای هوشمند استفاده میکند، بلاک چین اتریوم است.
قراردادهای هوشمند کاربردهای زیادی دارند و مطمئنا در آینده نیز به کاربرد آنها افزوده خواهد شد. بهطور کلی در هر زمینهای که لازم باشد اطمینان و اعتماد طرفین قرارداد را تامین کنیم، قراردادهای هوشمند راهحلی ایدهآل به حساب میآیند. در بخشهای قبلی همین مقاله به چند تا از موارد استفاده از قراردادهای هوشمند اشاره کردیم. در ادامه، کمی مفصلتر این موارد را بیان میکنیم:
استفاده از کردن از اسمارت کانترکت در انتخابات مزایای بسیار زیادی دارد. تمام رایها بهصورت شفاف دریافت میشوند، اما کاملا رمزنگاری شده هستند. امکان ناشناس ماندن رای دهندگان نیز وجود دارد. با این سیستم از بروز هر گونه اشتباه یا تقلبی در انتخابات جلوگیری میشود. ضمن اینکه فرآیند انتخابات و اعلام نتایج نیز بسیار تسریع خواهد شد.
از آنجا که قراردادهای هوشمند بسیار سریع و دقیق کار میکنند، میتوانند کمکهای زیادی به مدیران، برای اداره کسب و کارشان داشته باشند. یک مثال ساده این است که با استفاده از قراردادهای هوشمند میتوان میزان حقوق کارمندان را بر اساس ساعتهای کاریشان تعیین کرد و عملیات پرداخت نیز به شکل خودکار و بدون کمترین تاخیر انجام میشود.
در دنیای امروز، حفظ اطلاعات پزشکی بیمار اهمیت دو چندانی پیدا کرده است. در واقع اطلاعات پرونده یک بیمار، باید فقط بین خودش و پزشک رد و بدل شوند. استفاده اشخاص ثالث از این اطلاعات، بدون اجازه بیمار کاملا غیرقانونی است. قراردادهای هوشمند میتوانند امکان ارسال امن اطلاعات برای بیمار را فراهم کنند. میتوان شرایطی را نیز پیشبینی کرد که اگر افراد ثالث میخواهند از این اطلاعات استفاده کنند، از بیمار اجازه بگیرند یا اینکه اطلاعات را بخرند.
مالکیت معنوی یکی از بحثهای مهم در سالهای اخیر بوده است. با اوجگیری روند انتشار محتوا در فضای آنلاین، حفاظت از مالکیت معنوی این محتواها نیز به امری چالشبرانگیز تبدیل شده است. قراردادهای هوشمند میتوانند این مشکل را تا حد زیادی برطرف کنند و مثلا برای استفاده از یک فایل، شرایط خاصی را تعیین نمایند. بدین ترتیب افراد ملزم میشوند که قبل از دانلود یا استفاده از یک فایل یا محتوا، بهای آن را بهطور کامل بپردازند
در سیستم بیمه معمولا واسطههای زیادی وجود دارند که این مورد گاهی زمینهساز بروز برخی مشکلات میشود. با استفاده از قراردادهای هوشمند میتوان واسطهها را به کلی حذف کرد و تمام فرآیند ثبت نام بیمه، پرداخت حق بیمه، پرداخت خسارت و … را بهصورت اتوماتیک انجام داد.
قراردادهای هوشمند باید شامل مواردی باشند که در ادامه به آنها اشاره میکنیم:
تمام بلاکچینها توانایی پشتیبانی از قراردادهای هوشمند را ندارند. از جمله بلاکچینهایی که میتوانند قراردادهای هوشمند را پردازش کنند، میتوان به موارد زیر اشاره کرد:
در این مقاله به موارد متعدد پیرامون قراردادهای هوشمند اشاره کردیم. در ادامه به دو سوال رایج در همین زمینه پاسخ خواهیم داد تا از این طریق، مروری اجمالی بر موارد گفته شده در مقاله نیز داشته باشیم:
قرارداد هوشمند یا Smart Contract یک پروتکل کامپیوتری است که امکان ایجاد تراکنشهای معتبر، بدون نیاز به وجود یک واسطه را فراهم میکند. مهمترین ویژگی قراردادهای هوشند، امنیت بالای آنهاست.
قراردادهای هوشمند از طریق برنامهنویسی مشخص و اجرا میشوند. سپس کدهای نوشته شده باید روی یک شبکه بلاک چین مانند اتریوم قرار بگیرند.
بهطور خلاصه میتوان گفت قراردادهای هوشمند امکانی هستند که با اجرای خودکار مراحل توافق، واسطهها را از فرآیند اجرای آن حذف میکنند. همچنین، این قراردادها بهدلیل غیرقابلتغییر بودن، امنیت و اعتماد را به ارمغان میآورند. این قراردادها کاربردهای گستردهای دارند که در این مطلب به آنها پرداختیم و تفاوت آنها را با قراردادهای معمولی برشمردیم. علاوه بر این، مزیتهای قراردادهای هوشمند را که بهدلیل ویژگیهای خاص این نوع قراردادها شکل گرفتهاند، بهصورت خلاصه مطرح کردیم.
پرکاربردترین بستری که امروزه برای اجرای قراردادهای هوشمند استفاده میشود، شبکه اتریوم است که از زبان برنامهنویسی سالیدیتی استفاده میکند. قراردادهای هوشمند با وجود تمام مزیتهایی که دارند برای عملی شدن و بهکارگیری گسترده، هنوز هم چالشهای حلنشدهای دارند. در این مقاله، با چالشهای اصلی این قراردادها آشنا شدیم. نظر شما در مورد استفاده از قراردادهای هوشمند بهجای قراردادهای معمولی چیست؟ آیا چالشهای این قراردادها، میتواند سد راهی برای استفاده بیشتر از آنها باشد؟ نظرات ارزنده خود را با ما و سایر مخاطبان آکادمی رمز ارز در میان بگذارید.