این روزها، در میان هیاهوی بلاک چین و رمز ارزها، عبارت “قراردادهای هوشمند” زیاد به گوش میرسد. برای افرادی که اطلاعات تخصصی زیادی ندارند، شاید این سوال مطرح شود که این قراردادها دقیقا چه هستند؟ و چه چیزی آنها را هوشمند میکند؟ در ادامه این مطلب سعی میکنیم به این سوالات پاسخ و این مفهوم را به زبان ساده و از نگاه یک کاربر معمولی مورد بررسی قرار دهیم.
برای درک مفهوم قراردادهای هوشمند، لازم است که ابتدا در مورد یک مفهوم کلیدی دیگر با عنوان تراکنش (Transaction) توضیحاتی ارائه دهیم.
تراکنش چیست؟
با شنیدن کلمه “تراکنش”، اکثر مردم بلافاصله به پول و مبادلات پولی (نقدی، انتقال از طریق کارت بانکی و رمز ارزها) فکر میکنند. اما در واقع مبادلات پولی زیر شاخهایی از تراکنشها با عنوان تراکنشهای مالی هستند و “تراکنش” مفهوم کلیتری است. جامعترین تعریفی که از تراکنش میتوان داشت این است:
مجموعه عملیاتی هستند که یا باید همه آنها انجام شوند، یا اصلا نباید هیچکدامشان انجام شوند. در اصطلاح “یا همه یا هیچ”.
شاید در ابتدا این تعریف پیچیده به نظر برسد، اما اگر با یک مثال ساده شرح داده شود، درک آن نسبتا ساده میشود. فرض کنید میخواهید یک فنجان قهوه با قیمت 1000 تومان از یک کافی شاپ بخرید. بدین منظور سه عمل زیر باید حتما انجام شوند:
- شما 1000 تومان پرداخت میکنید (1000 تومان از پولهایتان کم میشود).
- کافیشاپ 1000 تومان دریافت میکند (1000 تومان به داراییاش اضافه میشود).
- شما یک فنجان قهوه دریافت میکنید.
هر سه عمل فوق به عنوان بخشی از یک تراکنش باید اتفاق بیفتند تا شما یک فنجان قهوه داشته باشید. حال اگر کیف پولتان را فراموش کرده باشید، چه میشود؟ در چنین شرایطی چون شما پولی ندارید، امکان انجام عمل اول وجود ندارد، پس دو عمل بعدی هم قابل انجام نخواهند بود.
سیستمهای مبتنی بر بلاکچین مشابه سیستمهای بانکی سنتی، مبتنی بر “تراکنش” هستند. با این تفاوت که در سیستمهای بانکی یک نهاد مرکزی تراکنشها را مدیریت و کنترل میکند، اما در بلاکچین محاسبات و مفاهیم ریاضی، صحت تراکنشها را تضمین میکند.
قراردادهای هوشمند چگونه کار میکنند؟
برای درک نحوه کار قراردادهای هوشمند به بررسی بازی ساده “سنگ، کاغذ، قیچی” اما با کمی تغییرات، میپردازیم. این بازی سه قانون زیر را دارد و باید مرحله به مرحله انجام شوند:
- بازیکن اول بر روی یک مبلغ مناسب شرطبندی و حرکت خود را انتخاب میکند.
- بازیکن دوم هم بر روی مبلغ موردنظر خود شرطبندی و حرکت خود را انتخاب میکند.
- هر دو بازیکن حرکتهای انتخابی خود را نمایش میدهند و بازیکنی که برنده شود جایزه را میبرد.
اگر از دیدگاه تجاری به بازی فوق نگاه کنیم، این بازی در واقع یک قرارداد با سه قانون ساده است. در دنیای واقعی تضمینی وجود ندارد که این بازی (قرارداد) بدون حضور شخص سوم (به عنوان قاضی) به درستی انجام شود. به عنوان مثال، ممکن است بازنده در پایان بازی با اعمال زور از پرداخت مبلغ خود خودداری کند.
برای انجام بازی فوق بدون داور، میتوان از فناوری بلاکچین استفاده کرد. یکی از بلاکچینهایی که امکان اجراء چنین قراردادی را به ما میدهد اتریوم (Ethereum) است.
قبل از ایجاد قرارداد هوشمند بازی فوق بر روی بلاکچین، باید قوانین بازی را به بخشهای کوچکتری که همان تراکنشها هستند، تقسیم کنیم. در این بازی سه تراکنش داریم که در تراکنشهای اول و دوم، هیچکدام از بازیکنها قادر نیستند بدون اینکه مبلغی را شرطبندی کنند، حرکت خود را انتخاب کنند. در تراکنش سوم هم اگر بازیکنی برنده شد باید حتما جایزه را ببرد.
بر روی بلاکچین اتریوم، قرارداد هوشمند به عنوان واسطه و هر بازیکن به عنوان طرفین قرارداد، یک آدرس اتریوم مخصوص به خود و با فرمت 0x1234… دارند. حال برای انجام بازی، مراحل ذیل باید انجام شوند:
- بازیکن اول با آدرس 0x1234P1…، حرکت انتخابی خود (قیچی) به همراه مبلغ شرطبندی را برای آدرس قرارداد هوشمند (0x1234C1…) ارسال میکند. توجه فرمائید که مبلغ شرطبندی که با ارز اتریوم پرداخت میشود، از حساب بازیکن کم میشود.
- بازیکن دوم هم با آدرس 0x1234P2…، حرکت انتخابی خود (سنگ) به همراه مبلغ را برای قرارداد هوشمند ارسال میکند.
- حال قرارداد هوشمند، هم حرکات بازیکنها را میداند، هم کل مبالغ شرطبندی را در حساب خود دارد. با توجه به اینکه بازیکن دوم “سنگ” را انتخاب کرده، بنابراین برنده است. قرارداد هوشمند چون آدرس اتریوم بازیکن دوم را دارد، به صورت خودکار کل مبلغ را برای بازیکن دوم ارسال میکند.
همانطور که در مثال بالا مشاهده شد، قراردادهای هوشمند برخلاف قراردادهای سنتی که تنها قوانین و جرایم را در بندهای مختلف مشخص میکنند، میتوانند مرحله به مرحله جلو بروند و قوانین و تعهدات را بدون دخالت انسان اجرا کنند. بنابراین تا حد زیادی امکان کلاهبرداری و تقلب کاهش میدهند.
تفاوت قراردادهای هوشمند با برنامههای کامپیوتری رایج
بر خلاف برنامههای کامپیوتری رایج که خود برنامه و دادههای آنها در RAM و هارد دیسک کامپیوتر کاربر ذخیره میشود، دادهها و کد قراردادهای هوشمند بر روی بلاکچین ذخیره میشوند.
برای قراردادن کد یک قرارداد هوشمند روی بلاک چین اتریوم، باید یک تراکنش به شبکه اتریوم ارسال شود که دادههای آن تراکنش حاوی کد قرارداد هوشمند است.
ذخیره شدن کد یک قرارداد هوشمند بر روی بلاکچین دو مزیت دارد: مزیت اول این است که توسط همه افراد قابل دیدن است و این بدین معنی است که دیگران میتوانند کد قرارداد را بخوانند و مطمئن شوند که دقیقا همان کاری را انجام میدهد که باید انجام دهد. مزیت دوم این است که چون کد روی بلاکچین ذخیره میشود، قابل تغییر و دستکاری توسط افراد دیگر نیست. این مزیتها باعث میشوند که بدون شناخت و داشتن اعتماد به طرف مقابل، با وی تعامل داشته باشیم.
همانطور که گفته شد، کد قراردادهای هوشمند قابل تغییر نیست. حال این سوال مطرح میشود که اگر خود قرارداد هوشمند خطا یا باگی داشته باشد چه اتفاقی خواهد افتاد؟ این یکی از مشکلات قراردادهای هوشمند است و یک اشتباه کوچک اما کلیدی میتواند باعث بلوکه شدن مقدار زیادی پول در یک قرارداد هوشمند شود و یا آن را در برابر حملات هکری آسیبپذیر کند. این دقیقا همان نقطه ضعفی است که باعث شد حمله معروف DAO در سال 2016 اتفاق بیفتد. در این حمله، یک باگ در قرارداد هوشمند مربوط به فروش توکن باعث شده بود که حمله کننده ارزهای مربوط به آن قرارداد را سرقت کند.
نکتهای مهمی که همیشه باید در نظر داشت این است که فناوری بلاکچین و قراردادهای هوشمند هنوز در حال پیشرفت هستند و به بلوغ کامل نرسیدهاند و یک اشتباه کوچک در این قراردادها، ممکن است موجب وارد شدن خسارت واقعی به افراد واقعی شود.
مزایای قراردادهای هوشمند
- دقت: چون قراردادهای هوشمند به صورت خودکار اجرا میشوند، از بروز خطاهای انسانی جلوگیری میکنند.
- سرعت: برنامههای کامپیوتری قطعا سریعتر از انسانها میتوانند بندهای قراردادها را اجرا کنند.
- شفافیت: با توجه به اینکه دادهها و کد قرارداد بر روی بلاکچین ذخیره شدهاند و توسط افراد دیگر قابل بررسی است، جای هرگونه اختلاف نظر و مشاجره باقی نمیماند.
- کاهش هزینهها: به دلیل اینکه قراردادها مستقیما بین طرفین قرارداد منعقد میشوند، نیاز به هرگونه واسطه و در نتیجه هزینههای مربوط به آن جهت نظارت بر قرارداد حذف میشود.
- امنیت: اگر قراردادهای هوشمند باگی نداشته باشند، جلوی هرگونه هک و تهدیدی را میگیرند.
- دوستدار محیط زیست: چون نیاز به قراردادهای کاغذی کاهش مییابد، قطعا میتواند کمکی برای محیط زیست قلمداد شود.
- فضای ذخیرهسازی مطمئن: چون قراردادهای هوشمند بر روی بلاکچین ذخیره میشوند، میتوان مطمئن بود که قراردادها هیچ موقع از بین نخواهند رفت.
- اعتماد: همانطور که در مثال بازی سنگ، کاغذ، قیچی مشاهده شد، بدون نیاز به شناخت طرف مقابل و تنها با اعتماد به فناوری بلاکچین میتوانید با افراد ناشناس تعامل داشته باشید.
- ارتباطات شفاف: با توجه به شفافیت این نوع قراردادها، جلوی هرگونه تفسیر نادرست گرفته میشود. بنابراین، به طرفین قرارداد کمک می کند تا بر اساس یک ارتباط روشن و مستقیم ارتباط برقرار کنند.