شاید با خواندن تیتر این مقاله حدس زده باشید که قرار است دربارهی چه چیزی با شما صحبت کنم.
یکی از داغترین بحثهای حال حاضر تکنولوژی و اقتصاد که بسیاری از دولتهای جهان را به فکر فرو برده و برای بسیاری از افراد جهان ناشناخته است چیزی نیست جز:
با من همراه شو تا جواب این سوالات رو بگیری!
تصور کنید میخواهید با دوستانتان به سفری بروید و قرار است که جزئیات هزینههای سفر (این که هر کس چه روزی، چه مقداری و برای چه چیزی هزینه کرده) را ثبت کنید.
یکی از دوستان پیشنهاد میدهد که من تمام هزینهها را در دفتر خودم ثبت میکنم و هر کس در طول سفر خواست جزئیات هزینههای خودش را بداند (نه هزینههای دیگر افراد) من به او اطلاع میدهم. در انتها وقتی که سفر تمام شد به بقیه هم نشان میدهم که در مدت سفر هر کس چه مقدار هزینه کرده، چه کسی بیشتر هزینه کرده و چه کسی کمتر (منظور از هزینه در این مثال هزینههای جمعی است نه شخصی).
در این روش ممکن است سوالاتی برای شما ایجاد شود:
با توجه به سوالات بالا همه چیز واضح است. این شیوه، شفاف و قابل اطمینان نیست.
به این سیستم ثبت، دفتر متمرکز (Centralized Ledger) میگوییم.
حال در این سفر شما پیشنهادی میدهید. پیشنهاد شما این است که یک دفتر همگانی در داخل هتل قرار دهیم و هر کس که هزینهای میکند آن را داخل آن دفتر بنویسد و آن دفتر برای همه قابل رؤیت باشد (حتی هزینههای دیگر افراد) و هنگام ثبت هزینه توسط یک شخص بقیه آن را تأیید کنند.
در این روش همه چیز شفاف است.
کسی نمیتواند تغییری در هزینهها ایجاد کند زیرا تمامی افراد باید تغییر یا ثبت مقادیر را تأیید کنند.
به این سیستم ثبت، دفتر غیرمتمرکز (Decentralized Ledger) میگوییم.
سیستم بانکداری و صرافی دنیا در حال حاضر توسط سیستم اول یعنی سیستم متمرکز اداره میشود.
شما برای انتقال پول خود از یک شخص ثالث به نام بانک استفاده میکنید و در اصل بانک ناظر بر این قرارداد و معامله است. میتوان گفت بانک پشتوانهای بر این قرارداد میباشد.
قبل از قراردادهای هوشمند بیایید ابتدا به قراردادهای سنتی بپردازیم.
قراردادهای سنتی قراردادهایی هستند که برای انسانها قابل خواندن میباشند و شامل توافقاتی بین طرفین قرارداد است که این توافقات با یک سری شرایط داخل قرارداد ذکر شده است.
در این نوع قراردادها معمولاً یکی از طرفین در ازای پرداختی، باید وظایفی را برای طرف دیگر انجام دهد و یک وکیل بر کل این قرارداد نظارت میکند (سیستم متمرکز).
همانطور که میتوانید تصور کنید، این شخص ثالث (وکیل) به عنوان یک نقطه شکست در کل توافق عمل میکند. یعنی مبنای درستی قرارداد این است که وکیل یا شخص ثالث نظارت درستی انجام دهد تا به تمام توافقات طرفین، عمل شود.
حال اگر یکی از طرفین با وکیل دست به یکی کند تا نظارت درست پیش نرود چه؟ در این صورت، معامله منصفانه نخواهد بود.
با این حساب، جایگزین چیست؟ اگر ما به نحوی موفق میشدیم این قراردادها را برنامهنویسی کنیم چه؟
در اینجا قراردادهای هوشمند وارد عمل میشوند. این قراردادها خودکار هستند و به صورت خوداجرایی (self-executing) بین طرفین برقرار میشوند.
در حالت کلی:
قراردادهای هوشمند، پروتکلهای کامپیوتریای هستند که به صورت دیجیتالی، مذاکره یا اجرای یک قرارداد را
تسهیل، تأیید یا اجرا میکنند.
بهترین بخش این نوع قرارداد این است که به دو طرف اجازه میدهد که مستقیماً بدون نیاز به واسطهگری با یکدیگر ارتباط برقرار کنند.
سیستم رأیگیری دولتی:
این سیستم میتواند به صورت قرارداد هوشمند بدون واسطه باشد و به صورت غیرمتمرکز اجرا شود که اجرای رأیگیری با استفاده از قرارداد هوشمند باعث میشود شفافیت آرا بالا رود و دستکاری نتایج غیرممکن شود.
مشاور املاک:
توسط قراردادهای هوشمند میتوان سیستم خرید و اجاره و رهن املاک و زمینها را نیز اجرایی کرد که مانند سیستمهای دیگر باعث شفافیت میشود.
خدمات مالی:
یکی از داغترین زمینههای حال حاضر قراردادهای هوشمند خدمات مالی توسط ارزهای دیجیتالی یا رمزارزها (بیتکوین، اتریوم و ...) میباشد که روز به روز در حال رشد و گسترده شدن است.
ارزهای دیجیتال و رمزارزها خود دارای ساختار غیرمتمرکز و بیپشتوانه هستند که بر پایه قراردادهای هوشمند ایجاد شدهاند و به عنوان یکی از ابزارهای دیگر قراردادها نیز استفاده میشوند.
برای مثال در زمینۀ خرید و فروش املاک میتوان از رمزارزها به عنوان واحدهای ارزشگذاری استفاده کرد و خرید و فروش را توسط آنها انجام داد.
از آنجایی که این ارزها بیپشتوانه هستند میزان قیمت و ارزش آنها به شدت وابسته به میزان تأمین و تقاضای آنهاست؛ به همین دلیل اتفاقات مختلف میتوانند روی ارزش آنها تأثیر بگذارند و نموداری نوسانی ایجاد کنند. افراد مختلف از این روندها استفاده میکنند و روی این رمزارزها سرمایهگذاری میکنند.
تا اینجای کار ما با قراردادهای هوشمند و ساختار غیرمتمرکز آنها تا حدی آشنا شدیم اما ممکن است سوالی در ذهن ایجاد شود که:
احتمالا حدس زده باشید که این قراردادها توسط زبانهای برنامهنویسی و به صورت کاملا ساختاریافته و با اجرای کدهایی با دستورات IF-ELSE ایجاد میشوند. این قراردادها و معاملات در محیطی به نام بلاکچین (Blockchain) که زنجیرهای از بلوکهاست ذخیره میشوند.
بلاکچین یک پایگاه دادۀ غیرمتمرکز و توزیعشده است که تمامی معاملاتی که توسط قراردادهای هوشمند انجام میگیرد در این پایگاه داده به صورت رمزنگاریشده ذخیره میشوند.
بلاکچینها بیشتر به خاطر نقش حیاتی خود در سیستمهای ارزهای دیجیتال شناخته میشوند.
بلاکچین را میتوان به عنوان یک دفتر کل غیرمتمرکز نیز در نظر گرفت به طوری که تمامی معاملات در این دفتر ثبت میشوند و هیچ کس قابلیت تغییر، حذف و نابود کردن آنها را ندارد و این معاملات برای همه شفاف است.
بلاکچین همانطور که از نامش پیداست شامل بلوکهایی میباشد که به هم متصل شده و یک زنجیرهی بزرگ را ایجاد کردهاند و داخل هر کدام از این بلوکها اطلاعاتی به صورت رمزنگاری شده ذخیره میشود که این اطلاعات با توجه به قرارداد آنها میتواند تراکنش مالی، سند مربوط به یک خانه و ... باشد.
بلوکها در این زنجیره توسط کدهای هششده (hash code) به بلوکهای قبلی متصل هستند و همین امر امنیت آنها را به شدت بالا میبرد به طوری که اگر تغییری در یک بلوک ایجاد شود کد هششدۀ آن تغییر کرده و در زنجیره فاقد اعتبار میشود.
نکتهی مهم دربارهی بلاکچین این است که چون یک سیستم ثبت غیرمتمرکز است این اطلاعات در یک سرور مشخص به صورت متمرکز ذخیره نمیشود بلکه هر سیستمی که به این شبکه متصل شود یک کپی از بلاکچین را دریافت کرده و روی سیستم خود اجرا میکند که به این سیستمها که شامل سیستمهای من و شما نیز میشود Node میگوییم.
خب تا اینجا با کلیت این ساختار آشنا شدیم ولی هنوز متوجه نشدیم که چگونه ما به عنوان یک برنامهنویس میتوانیم این قراردادهای هوشمند را ایجاد کنیم.
یکی از زبانهای برنامهنویسی که برای ایجاد قراردادهای هوشمند مورد استفاده قرار میگیرد زبان برنامهنویسی Solidity میباشد.
این زبان برنامهنویسی شیءگرا (object-oriented) و سطح بالا (high-level language) است که برای ایجاد قراردادهای هوشمند از آن استفاده میشود. و ساختار آن توسط زبانهای ++C و Python و JavaScript شکل گرفته است.
این زبان از قوانین ارثبری و برخی کتابخانهها پشتیبانی میکند و توسط آن میتوان قراردادهایی مانند رأیگیری و کیف پولهای چند امضایی برای ذخیرۀ رمزارزها و ... را ایجاد کرد.
اصلیترین منبع یادگیری این زبان داکیومنت آن میباشد که میتوانید یادگیریاش را از آنجا شروع کنید.
یکی از نکات مهم این است که چون این زبان، زبان جدیدی میباشد تقاضا برای آن زیاد است و تعداد کمی از برنامهنویسان به این زبان مسلط هستند. به همین دلیل این یک فرصت خوب برای شروع یادگیری آن است.
فیلد قراردادهای هوشمند و بلاکچین نوپا است و روز به روز در حال رشد و گسترش است و افراد زیادی را به سمت خود میکشد. هرچند برخی دولتها با نوع کارکرد این تکنولوژی موافق نیستند و دلیل آن هم مشخص است؛ آنها دوست دارند کنترل لازم را بر روی این ساختار داشته باشند ولی با یک ساختار غیرمتمرکز طرف هستند.
با روند رشد این قراردادها و تکنولوژی میتوان پیشبینی کرد که آینده از آن سیستمهای غیرمتمرکز است.
نظر شما چیست؟ در کامنتها برای ما بنویسید.
ممنونم که این مقاله را مطالعه کردید و امیدوارم که توانسته باشم اندک اطلاعاتی در این زمینه به شما بدهم.
هرگونه انتقاد، پیشنهاد و نظری دارید میتوانید آن را به جیمیل من (baktashans@gmail.com) یا جیمیل مجموعهی ما (debugvalley@gmail.com) ارسال کنید.
نویسنده و گردآورنده: بکتاش انصاری
منابع:
https://en.wikipedia.org
https://docs.soliditylang.org/
https://academy.moralis.io/
https://www.investopedia.com/