با توجه به اهمیت روزافزون قراردادهای هوشمند، در این مقاله سعی کردهایم به تاریخچه، سیر تکامل، اهمیت، پلتفرمهای موفق در زمینه قراردادهای هوشمند، دستهبندی و معرفی قرارداد هوشمند مجوزدار و عمومی، کاربرد، چرخه عمر و معماری بپردازیم. در ادامه مفصلا درباره هر کدام خواهیم خواند:
تاریخچه قراردادهای هوشمند به دهه 90، زمانی که یک مهندس کامپیوتر به نام Wei Dai، متنی در زمینه یک نظام گمنام وامدهی با اوراق قرضه قابل بازپرداخت و مالیات ناچیز، با عنوان اعتبارات گمنام نوشت، بازمیگردد. پسازآن Szabo، با بررسی قابلیتهای قراردادهای هوشمند، پیشنهاد استفاده از رمزنگاری در جهت بهبود امنیت قراردادهای هوشمند را مطرح کرد. وی قرارداد هوشمند را «مجموعهای از تعهدات به شکل دیجیتالی، شامل پروتکلهایی که طرفین بهواسطه آنها به تعهدات خود عمل میکنند» تعریف کرد. در مثالی مشهور، زابو قراردادهای هوشمند را با دستگاههای فروش خودکار مقایسه میکند؛ دستگاهها سکه (پول) دریافت میکند و طی یک فرایند ساده، در قبال آن، محصول موردنظر را تحویل میدهد.
البته قراردادهای هوشمند با ارائه امکان ایجاد انواع قراردادها، ورای این دستگاهها کار میکنند. زابو همچنین عقیده داشت که با منطقی واضح و تأیید و اجرای پروتکلهای رمزنگاری، قراردادهای هوشمند میتوانند بهمراتب از اجداد کاغذی خود کارآمدتر باشند. بااینحال، ایده قراردادهای هوشمند تا زمان ظهور فناوری زنجیرهبلوک، ارزش افزودهای ایجاد نکرده بود. امروزه، با توسعه فناوری زنجیرهبلوک، قراردادهای هوشمند تغییر شکل داده و بدل به برنامههای کامپیوتری شدند که بر روی گرههای زنجیرهبلوک اجرا میشوند و میان اعضایی گمنام و غیرمعتمد، بدون وجود هیچ عامل سومی توزیعشدهاند. بهطورکلی، قرارداد هوشمند را میتوان پروتکلی در رایانه دانست که بهصورت دیجیتالی، قراردادهای بین دو یا چند طرف در زنجیرهبلوک را تسهیل، تأیید و اجرا میکند.
ازآنجاکه قراردادهای هوشمند معمولاً در زنجیرهبلوک پیادهسازی و بهوسیله آن محافظت میشوند، ویژگیهای منحصربهفردی را میتوان در آنها دید. 1) کد برنامه یک قرارداد هوشمند روی زنجیرهبلوک ثبت و تأیید میشود. بنابراین یک قرارداد هوشمند در برابر دستکاری عمدی و سهوی مقاوم است. 2) یک قرارداد هوشمند بین گرههای ناشناس که لزوماً هیچ اعتمادی بین آنها وجود ندارد، بدون نیاز به ناظر متمرکز و اشخاص ثالث اجرا میشود. 3) یک قرارداد هوشمند میتواند مانند یک دستیار هوشمند عمل کند و هنگام وقوع شرایطی ازپیشتعیینشده مقداری رمزارز (پول) به شخصی دیگر (طرف قرارداد) منتقل کند.
برخلاف تصورات بسیاری از افراد، اولین پیادهسازی قراردادهای هوشمند مبتنی بر زنجیرهبلوک، اسکریپت بیتکوین بود. زبان برنامهنویسی که عامدانه تورینگ کامل نبوده و مجموعهای از دستورات ساده و از پیش تعریفشده است. تراکنشهای استاندارد بیتکوین، نمونههای سادهای از قراردادهای هوشمند هستند که در اسکریپت بیتکوین وجود دارد.
بهعلاوه، پلتفرمهایی همانند اتریوم، با استفاده از زبانهای برنامهنویسی تورینگ کامل، قابلیتهای قراردادی بیشتر و پیچیدهتری نیز ارائه میدهند. اتریوم اولین پلتفرم عمومی زنجیرهبلوکی است که از قراردادهای هوشمند پیشرفته و شخصیسازیشده با کمک یک ماشین مجازی تورینگ کامل با نام «ماشین مجازی اتریوم» پشتیبانی میکند. ماشین مجازی اتریوم محیط اجرای قراردادهای هوشمند است. هر گره در شبکه اتریوم یک نسخه مشابه از آن را اجرا میکند و دستورالعملهایی یکسان با دیگر از گرهها در پیش میگیرد.
از چندین زبان برنامهنویسی سطح بالا، مانند سالیدیتی3 و سرپنت، میتوان برای نوشتن قراردادهای هوشمند اتریوم استفاده کرد. کدهای قرارداد نیز به زیرکدهای ماشین مجازی اتریوم ترجمه شده و برای اجرا در زنجیرهبلوک مستقر میشوند. اتریوم در حال حاضر محبوبترین بستر توسعه قراردادهای هوشمند است و میتواند برای طراحی انواع برنامههای غیرمتمرکز مانند مدیریت حقوق دیجیتال، جمعسپاری مالی و غیره مورداستفاده قرار گیرد.
در سالهای اخیر، پلتفرمهای جدیدتری همانند Neo و هایپرلجر فبریک نیز به وجود آمدهاند که امکان طراحی قراردادهای هوشمند با بسیاری از زبانهای سطح بالا را مهیا میسازند. در شکل زیر، روند تکامل قراردادهای هوشمند نمایش داده شده است.
قراردادهای هوشمند، صفاتی همچون ثبت غیرقابلتغییر دادهها و حذف نقطه تکین شکست را از فناوری زنجیرهبلوک خود به ارث میبرند. قراردادهای هوشمند میتوانند از طریق فراخوانیها، با یکدیگر ارتباط داشته باشند. برخلاف قراردادهای هوشمند سنتی و کاغذی که برای اجرا و نظارت بر عامل سوم، واسطه یا میانجی نیاز دارد، قراردادهای هوشمند، روالهای قراردادی را خودکار نمودهاند، تعاملات بین اعضا را حداقل کرده و هزینههای اداری را کاهش میدهند.
به دلیل آسان بودن توسعه قراردادهای هوشمند بر بستر زنجیرهبلوکهای عمومی، کاربردهای تجاری متنوعی بر این بستر رشد نموده است. بااینحال، قراردادهای هوشمند بر بستر زنجیرهبلوکهای خصوصی (قراردادهای هوشمند خصوصی)، به دلیل توانایی در کاهش هزینهها، افزایش بهرهوری و جلوگیری از بهروزرسانیهای ناخواسته، عموماً در فرایندهای مشترک تجاری استفاده میشوند.
علیرغم توجهات ویژه به زنجیرهبلوک و قراردادهای هوشمند، این فناوری در دوران نخستین و نابالغ خود است. در این نوشتار ، با بررسی برنامههای کاربردی موجود و ارزیابی قراردادهای هوشمند مختلف، تفاوت میان قرارداد هوشمند مجوزدار و عمومی بررسی خواهد شد.
سازوکار عملیاتی قراردادهای هوشمند در شکل 2 نشان داده شده است. بهطورکلی، قراردادهای هوشمند دارای دو ویژگی هستند: 1) ارزش و 2) حالت. شرایط لازم برای آغاز یک قرارداد هوشمند و واکنشهای مربوط به آن با استفاده از دستورهای شرطی (در برنامهنویسی) مانند «اگر ...-آنگاه ...» تنظیم میشود.
قراردادهای هوشمند توسط طرفین قرارداد امضا و در قالب تراکنش به شبکه (زنجیرهبلوک) ارسال میشوند. سپس تراکنشها از طریق شبکه و بدون واسطه (مستقیماً از عضوی به عضو دیگر) دستبهدست میشوند. تراکنشها توسط ماینرها تأیید میشود و در بلوکی از دفترکل ذخیره میشود. ایجادکنندگان قراردادها پارامترهای برگردانده شده (مانند آدرس محل ذخیره قرارداد) را دریافت میکنند، سپس کاربران میتوانند با ارسال یک تراکنش یک قرارداد را آغاز نمایند.
انگیزه ماینرها از سازوکارهای تشویقی تعبیه شده در شبکه بر میآید. این انگیزهها که عموماً مالی هستند سبب میشود که آنها منابع محاسباتی خود را برای تأیید تراکنشها به کار گیرند. ماینرها پس از خلق یک قرارداد یا دریافت تراکنشهای محرک و آغازکننده قراردادها، کد قرارداد را در محیط اجرایی سندباکس خود اجرا میکنند. بر اساس دادههای ورودی مورد اعتماد که به آن اوراکل نیز گفته میشود. همچنین وضعیت سامانه، قرارداد هوشمند تشخیص میدهد که آیا سناریوی فعلی شرایط برانگیزنده را برآورده میکند یا خیر. اگر جواب بلی باشد، اقدامات واکنشی بدون کموکاست اجرا میشود. پس از اعتبارسنجی و تأیید، یک تراکنش در یک بلوک جدید جایگذاری میشود. هنگامی که تمامی شبکه در تأیید آن به اجماع برسد، بلوک جدید به زنجیرهبلوک متصل میشود.
اتریوم در حال حاضر پرکاربردترین پلتفرم توسعه قراردادهای هوشمند است که میتوان آن را یک ماشین حالت مبتنی بر تراکنش در نظر گرفت که از حالت ابتدایی آغاز به کار میکند و تراکنشها را بهصورت تدریجی انجام میدهد تا آن را به حالت نهایی مطلوب تغییر شکل دهد. این حالت نهایی است که بهعنوان نسخه استاندارد در دنیای اتریوم پذیرفته میشود. برخلاف مدل «خروجی تراکنش خرجنشده» در بیتکوین، اتریوم مفهوم حساب را در حوزه زنجیرهبلوک تعریف کرده است. دو نوع حساب در اتریوم وجود دارد: حسابهای دارای مالکیت خارجی و حسابهای قرارداد. اولی توسط کلید خصوصی و بدون کد مرتبط و دومی توسط کد قرارداد و کدی مرتبط با آن کنترل میشود.
کاربران تنها از طریق حسابهای دارای مالکیت خارجی میتوانند اقدام به ایجاد تراکنش کنند. تراکنش میتواند شامل دادههای باینری (payload) و اتر باشد. اگر گیرنده تراکنش یک حساب صفر باشد، یک قرارداد هوشمند ایجاد شده است. اگر گیرنده یک حساب قرارداد باشد، حساب فعال و کد مرتبط با آن در ماشین مجازی اتریوم محلی اجرا میشود (payload بهعنوان داده ورودی ارائه میشود). سپس این تراکنش به زنجیرهبلوک ارسال میشود تا توسط ماینرها تأیید و منتشر شود.
بهمنظور جلوگیری از سوءاستفاده از شبکه و گریز از مشکلات تورینگ-کامپلیت بودن، کدهای برنامهنویسی محاسباتی در اتریوم مشمول کارمزد میشود. واحد اندازهگیری هزینههای موردنیاز برای محاسبات، گَس نامیده میشود.
هایپرلجر فبریک یک چارچوب زنجیرهبلوکی و یکی از پروژههای هایپرلجر است که بنیاد لینوکس آن را بنا نهاد. بهجای یک زنجیرهبلوک عمومی مانند بیتکوین و اتریوم که هر شخصی میتواند به شبکه آن بپیوندد. عضویت در هایپرلجر نیازمند مجوز است؛ زیرا تنها مجموعهای از سازمانهای فعال در حوزه زنجیرهبلوک میتوانند در آن عضو شوند. اعضای شبکه، میزبان دفترکل و قراردادهای هوشمند هستند. دفترکل دنبالهای مقاوم در برابر دستکاری از تراکنشها/ حالتها است. همانطور که در شکل 4 نشان داده شده است، روند کاری هر تراکنش در هایپرلجر فبریک شامل سه مرحله است:
یک نرمافزار پروپوزال تراکنش را به همتای تأییدکننده هر سازمان در شبکه ارسال میکند. همچنین به همتای عضو شبکه، «تأییدکننده» نیز گفته میشود که معاملات را با خطمشیهای اخذ تأییدیه اعتبارسنجی میکند. این پروپوزال درخواستی برای برانگیختن یک کد در زنجیره است تا دادهها در دفترکل خوانده و یا نوشته شود. خروجی تراکنش شامل مقدار پاسخ، خواندن و نوشتن میشود. مجموعهای از این مقادیر بههمراه امضاهای تأییدکنندگان بهعنوان پاسخِ تراکنشِ ارسالشده بازگردانده میشود.
نرمافزار امضای تأییدکنندگان را اعتبارسنجی میکند و بررسی میکند که مقادیر بازگرداندهشده همسان باشد. سپس نرمافزار تراکنش را برای بهروزرسانی دفترکل به سفارشگیرنده ارسال میکند. سفارشگیرنده تراکنشهای دریافتی از شبکه را مرتب و دسته تراکنشها را در قالب یک بلوک بستهبندی میکند تا آماده توزیع میان اعضای شبکه باشد.
اعضای متصل به سفارشدهنده هرگونه تراکنش موجود در بلوک را تأیید میکنند تا اطمینان حاصل کنند که توسط سازمانهایی که باید، (مطابق خطمشی) تأیید شده باشد. شایانذکر است که این مرحله نیازی به اجرای کد در زنجیره ندارد. پس از اعتبارسنجی، هر یک از اعضا بلوک را به زنجیرهبلوک میافزایند و دفترکل بهروز میشود.
اتریوم و هایپرلجر فبریک با یکدیگر تفاوتهایی دارند که در ذیل به آن پرداخته شده است:
تعاملات میان اتریوم و هایپرلجر در حال گسترش است. برای مثال، بارو در هایپرلجر، بهوسیله افزونه ماشین مجازی اتریوم در کد زنجیره از قراردادهای هوشمند اتریوم پشتیبانی میکند.
عملکرد قراردادهای هوشمند، بسیار به زیرساخت زنجیرهبلوکی خود وابسته است. با ثبت یک تراکنش بر روی زنجیره، حالت یک زنجیرهبلوک بهروز میشود. از قراردادهای هوشمند نیز میتوان برای آغاز خودکار تراکنشها در صورت بروز شرایطی مشخص، استفاده کرد. بر اساس زنجیرهبلوکهای خصوصی (مجوزدار) و عمومی، قرارداد هوشمند را نیز میتوان طبق زنجیرهبلوکیاش، خصوصی (مجوزدار) یا عمومی نامید.
از آنجاییکه انتظارات و پیشنیازهای قراردادهای هوشمند متفاوتاند، در ادامه این قراردادها به صورت مجزا از یکدیگر بررسیشدهاند. در این متن، قرارداد هوشمند بر بستر زنجیرهبلوک مجوزدار، کنسرسیومی و خصوصی، همگی قرارداد هوشمند مجوزدار نام گرفتهاند.
مشارکت افراد در زنجیرهبلوکهای عمومی، هیچ پیشنیاز خاصی نمیخواهد. به همین ترتیب، تمامی افراد نیز، حق توسعه و استقرار قراردادهای هوشمند عمومی را دارند. چنانچه اجرای قراردادهای هوشمند بی هزینه و رایگان باشد، امکان انتشار تراکنشهای اسپم در زنجیرهبلوکهای عمومی بسیار محتمل است؛ از این روی، اجرای هر قرارداد هوشمند نیازمند پرداخت کارمزد است.
به دلیل محدودیت در توابع و عملگرهای زبان اسکریپت نویسی بیتکوین، طراحی قراردادهای هوشمند پیچیده بر بستر زنجیرهبلوک بیتکوین، بسیار دشوار است. در این میان، زبان برنامهنویسی همهمنظوره اتریوم با نام سالیدیتی، برای توسعه انواع قراردادهای هوشمند در حوزههای مختلف کاربرد دارد. بر اساس وبسایت Etherscan، در بین یک میلیون حساب کاربری اتریومی که بر رویهم حاوی 6/105 اتریوم هستند، نیمی از آنها را حسابهای کاربری قراردادهای هوشمند با 12 میلیون اتریوم تشکیل میدهد. در این بازار، رقبایی همانند Neo و EOS نیز وجود دارند که خدمت قرارداد هوشمند را ارائه میدهند. بااینحال، اتریوم، رهبر این بازار است. برای نمایش میزان محبوبیت پلتفرمهای زنجیرهبلوکی عمومی، تعداد قراردادهای هوشمند توسعه داده شده بر بستر زنجیرهبلوکهای عمومی از سال 2015 تا 2019 استخراج در نمودار زیر آورده شده است.
بر اساس نمودار پایین، اتریوم محبوبترین پلتفرم در میان 7 پلتفرم توسعه قراردادهای هوشمند عمومی انتخاب شده است.
برای درک شیوه عملکرد قراردادهای هوشمند عمومی، سازوکار قراردادهای اتریومی در ادامه بررسی خواهد شد. اتریوم برای اجماع در شبکه خود از پروتکل استخراج اثبات کار استفاده میکند. بهمنظور ایزوله نمودن قراردادهای هوشمند اتریوم از مداخله با سیر فرایندها، این قراردادها در ماشینهای مجازی اتریوم (EVM) قرار دارند. همزمان با استقرار، قرارداد هوشمند، یک آدرس یکتا که به یک موجودی متصل است، به دست میآورد. این آدرس یکتا، چیزی شبیه حساب کاربری کنترلشده از بیرون (EOA) تحت مالکیت یک کاربر است. یک قرارداد هوشمند میتواند تراکنشها را به یک EOA یا قراردادهای دیگر ارسال کند.
شکل6، نحوه کار قراردادهای هوشمند اتریومی را نشان میدهد، در این شکل، به جهت سادهسازی، فرایند استخراج حذف شده است. در گام 1، کاربر 1 به کمک یک زبان سطح بالا همانند سالیدیتی، یک قرارداد هوشمند جهت رأیگیری توسعه داده است. این قرارداد هوشمند به سطح ماشین ترجمه و کامپایل شده و توسط EVM1 در قالب یک تراکنش در زنجیرهبلوک بارگذاری میشود.
یک استخراجکننده (ماینر)، این تراکنش را برداشته و پس از تائید، آن را در بلوک شماره 1+i ثبت میکند. زمانی که یک رأیدهنده، رأی خود را از طریق یک واسط کاربری تحت وب ثبت میکند، EVM2، دادهها را از وب دریافت کرده و آن را درون تراکنش tx قرار میدهد و در زنجیرهبلوک مستقر میکند. با تائید تراکنش tx و قرارگیری آن در بلوک شماره 2+i، حالت قرارداد رأیگیری بهروز میشود. اگر کاربر 3، بهعنوان یک گره ناظر، بخواهد حالت ذخیرهشده در قرارداد را بررسی کند، بایستی حداقل تا بلوک شماره2+i، پیش برود تا تغییرات حاصل از tx را مشاهده کند.
استفاده قرارداد هوشمند مجوزدار که بر روی زنجیرهبلوکهای مجوزدار سوار میشوند، در فضای روابط تجاری، رشد چشمگیری دارد. در مقایسه با فرایند اعتبارسنجی گران و ناکارآمد زنجیرهبلوکهای عمومی، زنجیرهبلوکهای مجوزدار برای استفاده در محیط همکاریهای تجاری مناسبتر هستند.
برای نمونه، پروژه هایپرلجر که در ابتدا توسط بنیاد لینوکس راهبری میشد، باهدف بهبود فرایندهای و روابط تجاری با حضور ذینفعان متعدد طراحیشده است. در مقایسه با زنجیرهبلوکهای عمومی مبتنی بر الگوریتم اجماع اثبات کار، هایپرلجر فابریک (یکی از محصولات پروژه هایپرلجر) با پیادهسازی پروتکل اجماع تحمل خطای بیزانس عملی (PBFT) و ایجاد امکانات لازم (کانال) برای پردازش امن و موازی تراکنشها، هزینهها را کاهش داده است.
به کمک این کانالها، افراد میتوانند با تشکیل گروههای مجازی، دفترکل مستقل خود را داشته و آن را از دید سایر کانالها مخفی نگهدارند. کنسرسیومهای تجاری میتوانند با استفاده از کانالها، اطلاعات موردنظر خود را بهصورت امن تنها در اختیار برخی از شرکای خود قرار دهند.
بر روی یک شبکه فابریک، مرتبسازی تراکنش توسط یک بخش مرکزی به نام مرتبساز انجام میشود. این بخش، تراکنشهای ارسالشده توسط عاملان را جمعآوری کرده و پس از اخذ رأی تأییدکنندگان، آنها را بهصورت دائمی بر روی زنجیرهبلوک ثبت میکند. بسته به زمان انتظار موردنظر یا تعداد تراکنشها، میتوان اندازه بلوک را تنظیم کرد. بهمنظور همگامسازی، تمامی اعضای شبکه بایستی منفرداً، نسبت به اجرای تمامی تراکنشها و قراردادهای هوشمند اقدام نمایند. زنجیرهبلوک IBM، بر روی فابریک ساخته شده است.
علاوهبراین، بهمنظور کاهش بار وارده بر اعضای شبکه زنجیرهبلوک، برخی پیشنهاد میکنند که فرایندهای پیچیده تجاری به یکلایه مستقل میانی خارج از زنجیرهبلوک منتقل شوند. برای نمونه، مایکروسافت آژور، درحالتوسعه پلتفرمی با نام Cryptlets است، پلتفرمی که باهدف جداسازی دادهها از منطق کارکردی زنجیرهبلوک مجوزدار توسعه داده شده و در آن یک میزبان مرکزی، مسئول اجرای قرارداد هوشمند است.
قراردادهای هوشمند عمومی، درذاتخود تهدیدات مرتبط به نقض حریم خصوصی افراد را به همراه دارند. در موارد استفاده حساسی همچون بانکداری، زنجیره تأمین، اینترنت اشیاء و کنتورهای هوشمند، عموماً از قرارداد هوشمند مجوزدار استفاده میشود. در ادامه برخی از این موارد استفاده مختصراً بررسی شده است.
قراردادهای هوشمند برای پیادهسازی بخشنامهها و سیاستهای بانکی مناسب هستند. بر اساس گزارش Capgemini Consulting، با بهرهگیری از قراردادهای هوشمند در ارائه خدمت رهن، مشتریان میتوانند بهازای هر وام بین 480 تا 960 دلار ذخیره کنند. بانکهای اروپایی و ایالاتمتحده نیز میتوانند سالانه بین 3 تا 11 میلیارد دلار در هزینههای خود صرفهجویی کنند.
همچنین بانکها برای تسهیل فرایند تسویه و پرداخت میتوانند از قراردادهای هوشمند استفاده کنند. بر اساس گزارشهای موجود، تا انتهای سال 2019، بیش از 40 بانک بینالمللی با هدف آزمون قراردادهای هوشمند در خدمات پرداخت و تسویه، در کنسرسیومهای زنجیرهبلوکی شرکت کردهاند. همچنین، سیاستهای مرتبط با شناسایی مشتری (KYC) و مبارزه با پولشویی (AML) بهراحتی میتوانند از طریق قراردادهای هوشمند پیادهسازی شوند.
بااینکه قراردادهای هوشمند و داراییهای تحت کنترل آنها در برابر حملهکنندگان مقاوم بوده و دستکاری کدهای قرارداد غیرممکن است، اما قابلیت همکاری متقابل سامانههای قدیمی با سامانههای زنجیرهبلوکی و مشکلات مربوط به مقیاسپذیری این فناوری همچنان سدی محکم در مسیر توسعه اینگونه سامانهها است.
زنجیرهبلوک میتواند نیازمندیهای زنجیرههای تأمین همانند شفافیت، بهینهسازی، امنیت و قابلیت مشاهدهپذیری اجزای دخیل در انتقال کالا را تأمین نماید. یک زنجیرهتأمین با دسترسی قابلاعتماد، مستمر به دادههای مشترک میان اجزای زنجیره، نسبت به زنجیرهتأمینهای سنتی بسیار کارآمدتر هستند.
علیرغم مزایای متعدد زنجیرهبلوک در زنجیرهتأمین، تلفیق این فناوری با پلتفرمها و رویههای تجاری موجود در مراحل نخستین خود است. استفاده از قراردادهای هوشمند برای تعامل و نهاییسازی تراکنشها، نیازمند اعمال تغییرات عظیمی در جریان کاری زنجیره تأمین است. از سویی، مقاومت بانکها، شبکه تبادلاتی و دلالان معتمد، خود باعث به تأخیر افتادن روند بهکارگیری این فناوری شده است.
مدیریت دادههای تولیدی توسط تجهیزات اینترنت اشیاء از طریق قراردادهای هوشمند یکی از سناریوهای بحثبرانگیز در حوزه فناوری زنجیرهبلوک است. فناوری اینترنت اشیاء و فناوری زنجیرهبلوک، هر دو در ذات غیرمتمرکز هستند. از اینرو زنجیرهبلوک میتواند بهمنظور ایجاد و ارتقا اعتماد در سامانههای اینترنت اشیایی که دائماً در حال تولید، تبادل و به اشتراکگذاری حجم زیادی از دادهها هستند به کار گرفته شود.
بااینحال، برخی از ویژگیهای زنجیرهبلوک و اینترنت اشیا ذاتاً با یکدیگر هماهنگ و منطبق نیستند. اول آنکه دادههای اینترنت اشیاء غالباً دادههایی حساس و محرمانه بوده و نبایستی با دیگر افراد به اشتراک گذاشته شود. دوم، فناوری زنجیرهبلوک، یک فناوری پرمصرف بودده که با محدودیتهای تجهیزات اینترنت اشیا همچون باطری و توان پردازشی مغایر است. حتی در صورت استفاده از سازوکارهای اجماع سبکتر، دخالتدادن تمامی تجهیزات در اعتبارسنجی و اجرای تمامی برنامهها، خارج از توان بسیاری از تجهیزات اینترنت اشیاء است.
شرکت IBM، بهعنوان یکی از بزرگترین بازیگران این بازار، در حال تلفیق پلتفرم اینترنت اشیاء خود به نام Watson با زیرساخت زنجیرهبلوکی خود (که بر بستر هایپرلجر کامپوزر) توسعه داده شده است. هدف از این پروژه، ایجاد یک شبکه تجاری ارزانقیمت، قابلاعتماد و کارآمد و منطبق بر نیازمندیهای صنعتی و دولتی است. پروژه زنجیره اشیا نیز تلاش میکند با تلفیق زنجیرهبلوک با اینترنت اشیا به امنیت، اعتمادپذیری و همکاری متقابل دست یابد.
بر اساس سازوکار عملیاتی، چرخه عمر یک قرارداد هوشمند را میتوان در پنج مرحله خلاصه کرد:
بر اساس این چرخه زندگی، یک چارچوب تحقیقاتی بنیادی در مورد قراردادهای هوشمند پیشنهاد خواهد شد. همانطور که در شکل 7 نشان داده شده است، چارچوب تحقیقاتی پیشنهادی از یک معماری ششلایه، شامل لایه زیرساختها، لایه قراردادها، لایه عملیات، لایه هوشمند، لایه نمایش و لایه نرمافزار کاربردی استفاده کرده است. جزئیات به شرح زیر است:
لایه زیرساختها تمام زیرساختهایی را که از قراردادهای هوشمند و کاربردهای آن پشتیبانی میکنند ازجمله محیطهای توسعه قابلاعتماد، محیطهای اجرایی قابلاعتماد و دادههای قابلاعتماد (اوراکل) را یکجا گردآورده و در بر میگیرد. تا حدودی، انتخاب این زیرساختها بر الگوهای طراحی قراردادهای هوشمند و ویژگیهای قرارداد تأثیر خواهد گذاشت. در ادامه موارد نامبرده بررسی میشود:
محیط توسعه قابلاعتماد: در فرایند توسعه، استقرار و فراخوانی قراردادهای هوشمند، انواع ابزارهای توسعه درگیر هستند. برای مثال، زبانهای برنامهنویسی، محیطهای توسعه یکپارچه، چارچوبهای توسعه، مشتریها، کیفپولها و غیره. بهعنوان نمونه، کیفپول علاوهبراینکه یک ابزار مدیریت دارایی دیجیتال است، معمولاً عملکردهایی مانند Boot Node بودن، استقرار یک قرارداد و برانگیختن یک قرارداد را نیز برعهده میگیرد.
محیطهای اجرای قابلاعتماد: زنجیرهبلوک یک محیط اجرای مطمئن برای قراردادهای هوشمند فراهم میکند. اجرای صحیح و بدون نقص قراردادهای هوشمند به ویژگیهای بارز و منحصربهفرد زنجیرهبلوک مانند اجماع، سازوکار تشویقی و بیواسطهبودن متکی است و نتایج نهایی اجرا در دفترکلی توزیعشده که توسط یکایک گرهها نگهداری میشود، ذخیره خواهد شد.
انتخاب و بهکارگیری الگوریتمهای اجماع و سازوکارهای تشویقی مختلف بر الگوی طراحی، بازدهی اجرا و امنیت قراردادهای هوشمند تأثیر میگذارد. برای مثال، توسعه و استقرار قراردادهای هوشمند در اتریوم باید شامل هزینه اجرا (گس) باشد تا از حملات انکار خدمترسانی، هزینههای غیرضروری ناشی از فراخوانی کدهای مرده، عملیات پرهزینه دوری و غیره جلوگیری شود.
دادههای قابلاعتماد (اوراکل): برای تضمین امنیت شبکه زنجیرهبلوکی، قرارداد هوشمند در یک محیط اجرای سندباکس اجرا میشود که اجازه ندارد از بیرون اطلاعات دریافت کند. ازاینرو، قرارداد هوشمند نیازمند دریافت اطلاعات قابلاعتماد است که به آن اوراکل گفته میشود.
لایه قرارداد، دادههای غیرقابلتغییر قرارداد را شامل مفاد قرارداد، نحوه مواجهه با سناریوهای محتمل و معیارهای تراکنش در بر میگیرد؛ بنابراین، این لایه را میتوان پایگاه داده غیرقابلتغییر قراردادهای هوشمند دانست که شامل تمامی قوانین مربوط به برانگیختن (فراخواندن)، اجرا و برقراری ارتباطِ قرارداد میشود. زمانی که یک قرارداد در حال طراحی است، طرفین آن ابتدا باید بر سر مفاد آن مذاکره کنند تا مواردی مانند شروط قانونی، مسائل مربوط به کسبوکار و غیره مشخص شود. سپس برنامهنویسان با استفاده از فناوری مهندسی نرمافزار مفاد قرارداد تشریحشده به زبان طرفین قرارداد را به کدهای برنامهنویسی ترجمه میکنند (برای مثال، مجموعهای از دستورات «اگر ... آنگاه ...»). علاوهبراین، نحوه انجام تعاملات (مانند مجوز دسترسی، نحوه برقراری ارتباط و غیره)، باتوجهبه ویژگیهای پلتفرم توسعه و مقاصد طرفین قرارداد، باید در همین لایه تصویب شود تا شرایط برای تعاملات قرارداد با کاربران (یا قرارداد با قرارداد) مهیا شود.
لایه عملیاتی تمامی عملیات پویای سوارشده روی لایه غیرقابلتغییر شامل طراحی سازوکار، اخذ تأییدیههای رسمی، تجزیهوتحلیل امنیتی، بهروزرسانیها و خودتخریبی را دربرمیگیرد. لایه نگهداری کلیدِ صحیح، امن و کارا بودنِ عملیاتِ قرارداد هوشمند است؛ زیرا قراردادهای هوشمند مخرب یا آسیبپذیر میتواند ضررهای اقتصادی بزرگی به کاربران وارد کند. از منظر چرخهعمر قراردادهای هوشمند از مذاکره تا خودتخریبی، قبل از استقرار قرارداد هوشمند در زنجیرهبلوک سازوکارهای طراحی عملیات از نظریه اطلاعات و انگیزه برای کارکرد بهتر عملکردهای قرارداد استفاده میکنند.
عملیات اخذ تأییدیههای رسمی و تجزیهوتحلیل امنیتی برای تأیید صحت قراردادهای هوشمند، امنیت کد آن و همچنین حصول اطمینان از اینکه قرارداد مطابق انتظار برنامهنویس عمل کند، به کار گرفته میشود. پس از استقرار قرارداد هوشمند در زنجیرهبلوک، درصورتی ناتوانی در رفع تقاضای کاربران یا ضعفهای قابلرفع، بهروزرسانی میشود. این نکته باید در نظر گرفته شود که سوابق تمامی بهروزرسانیها در زنجیرهبلوک بهصورت غیر قابل دستکاری ذخیره میشود. در پایان چرخهعمر قرارداد هوشمند یا زمانی که آسیبپذیر باشد، خودتخریبی بهمنظور اطمینان از امنیت شبکه فعال میشود.
لایه هوشمند الگوریتمهای هوشمند زیادی مانند ادراک، تدلیل، یادگیری، تصمیمگیری و رفتار اجتماعی را شامل میشود که هوشمندی را به قراردادهای هوشمند ساختهشده در سهلایه قبلی میافزاید. البته باید خاطرنشان کرد که قراردادهای هوشمند فعلی از لایه هوشمند قوی برخوردار نیستند. بااینحال، باور بر این است که در آینده قراردادهای هوشمند نهتنها میتواند با دستورات اگر ... آنگاه ... خودمختار عمل کنند، بلکه از دستورات «چه ... اگر ...»، امکان محاسبات پیچیده و تصمیمگیری هوشمند در سناریوهای ناشناخته برخوردار خواهند شد. قراردادهای هوشمند را میتوان دستیاری هوشمند که به نیابت از کاربران خود عمل میکند در نظر گرفت.
با توسعه هوش مصنوعی این دستیارها از سطح مشخصی از هوش برخوردار خواهند بود؛ مانند ادراک، تدلیل و یادگیری. این دستیارها نهتنها آزاد خواهند بود که وظایف را انتخاب و اولویتبندی کنند و رفتاری هدفمحور نشان دهند، بلکه خواهند توانست از طریق برقراری ارتباط، همکاری و مذاکره با یکدیگر اجتماعی عمل کنند. اطلاعات حاصل از یادگیری و همکاری میتواند به لایههای قبلی ارسال شود و طراحی قرارداد و عملیات را بهینه کند و در نهایت ایده قرارداد هوشمند واقعی را تحقق بخشد.
لایه نمایش انواع اشکال نمایش قراردادهای هوشمند در کاربردهای مختلف شامل نرمافزارهای کاربردی غیرمتمرکز، سازمانهای خودمختار غیرمتمرکز، بنگاههای خودمختار غیرمتمرکز و جوامع خودمختار متمرکز را در بر میگیرد. قراردادهای هوشمندی که رفتارهای پیچیده گرههای شبکه را در خود دارند میتوان بهعنوان رابط نرمافزاری زنجیرهبلوکی در نظر گرفت که زنجیرهبلوک را قادر میسازند تا سناریوهای مختلف کاربردی را در خود بپذیرد. بهطور مثال، با نوشتن شروط قانونی و توافقات در قراردادهای هوشمند، کارکردهای زیادی را برای نرمافزارهای کاربردی غیرمتمرکز میتوان در نظر گرفت.
علاوهبراین، سامانه متشکل از چندین دستیار، ساختهشده بر روی لایه چهارم میتواند شامل موارد زیادی کاربردهای غیرمتمرکز که در همین بخش به آن اشاره شد، باشد. میتوان اشکال متعددی برای نمایش قراردادهای هوشمند متصور شد که الگوهای کسبوکار و مدیریت سنتی را تغییر دهند و پایهگذار جوامع قابلبرنامهریزی آینده باشد. به طور مثال، سازمانهای خودمختار غیرمتمرکز سازمانهایی هستند که با قراردادهای هوشمند هدایت میشوند و موضوعات مرتبط با کسبوکار و مدیریت قوانین در آنها در زنجیرهبلوک ذخیره میشود.
بهرهگیری از این سازمانها هزینه تراکنشها را کاهش میدهد. همچنین امکان همراستاسازی امیال شرکای سازمان به روشی غیرمتمرکزتر را فراهم میکند. پیشبینی میشود، این سازمانها تأثیر تحولآفرینی بر الگوهای سنتی مدیریت که ساختاری سلسلهمراتبی و از بالابهپایین دارند، بگذارند.
لایه نرمافزار کاربردی شامل تمامی نرمافزارهای کاربردی میشود که روی لایه نمایش ساخته شده است. برای مثال، نرمافزار کاربردی پلَنتوید (مثالی از یک سازمان خودمختار غیرمتمرکز) بر روی اتریوم توسعه داده شده است و یک اکوسیستم اقتصادی بسیار عالی که هنرمندان، طراحان، آثار هنری و مخاطبان را به یکدیگر متصل میکند، به وجود آورده است. از منظر تئوری، قراردادهای هوشمند قابلاستفاده در تمامی صنایع مانند مالی، اینترنت اشیا، سلامت، زنجیرهتأمین و غیره هستند.
شایانذکر است، چارچوب پیشنهادشده یک چارچوب ایدئال است؛ علیالخصوص برای لایه هوشمند.