قرارداد هوشمند چیست و چگونه کار میکند؟
قرارداد هوشمند چیست؟ در این مقاله قصد داریم شما را با مفهوم قراردادهای هوشمند بلاک چین ، نحوه پیادهسازی آن در بلاک چین اتریوم ، زبانهای برنامه نویسی قرارداد هوشمند، کاربردها و چالش های پیش روی آن آشنا کنیم. در این مقاله آموزشی سعی کردیم تا حد امکان از پیچیدگی مطالب پرهیز کرده و مفهوم قراردادهای هوشمند را به زبان خیلی ساده تشریح کنیم. با ما همراه باشید.
قرارداد هوشمند چیست؟ اگر تا حدودی با دنیای بلاک چین و ارزهای دیجیتال آشنایی داشته باشید، مطمئناً نام قرارداد هوشمند به گوشتان خورده است. وقتی با عبارتی مانند قرارداد هوشمند برخورد میکنیم، قاعدتاً اولین سوالهایی که به ذهنمان خطور میکنند سوالاتی از این دست هستند: به چه نوع قراردادی، قرارداد هوشمند میگویند؟ تفاوت قرارداد هوشمند با قرارداد معمولی چیست؟ قرارداد غیر هوشمند چیست؟ کاربرد قراردادهای هوشمند چیست؟ در صورت کاربردی بودن قراردادهای هوشمند، این قراردادها از چه زمانی به استفاده عموم مردم میرسند؟ مشکلات قراردادهای هوشمند چیست؟ وعدههای قراردادهای هوشمند برای آینده بشر چیست و این وعدهها تا چه حد عملی هستند؟ قراردادهای هوشمند بر چه بستری کار میکنند؟ لازمه استفاده از قراردادهای هوشمند چیست؟ همگی اینها سوالاتی هستند که در صورت عدم آشنایی با مفهوم و شیوه کار قراردادهای هوشمند، ممکن است ذهن شما را به خود درگیر کنند؛ علیالخصوص که پیشرفت روزافزون تکنولوژی، همه جنبههای زندگی بشر را تحت تأثیر قرار داده و در چند سال اخیر، به صورت عینی شاهد تغییر سبک زندگی انسانها پس از پذیرش عمومی تکنولوژیهای جدید مانند اینترنت، ماهوارهها، شبکههای اجتماعی و … بودهایم. اگر شما نیز جزء آن دسته از افراد هستید که نمیخواهید از پیشرفت تکنولوژی عقب بمانید و از طرفی سوالاتی مانند سوالات ذکر شده را در مورد قراردادهای هوشمند در ذهن دارید، در این مقاله با ما همراه باشید.
فهرست مطالب
- پیشینه تاریخی قراردادهای هوشمند
- مشکلات قراردادهای سنتی و غیر هوشمند
- قرارداد هوشمند: جایگزین قدرتمند قراردادهای سنتی
- سازوکار قراردادهای هوشمند به زبان ساده
- ایده اولیه قراردادهای هوشمند
- به کارگیری قراردادهای هوشمند در بلاک چین اتریوم
- ساز و کار بلاک چین اتریوم برای اجرای قراردادهای هوشمند
- انواع حسابها در شبکه اتریوم
- نحوه برنامه نویسی قراردادهای هوشمند اتریوم
- ماشین مجازی اتریوم (EVM)؛ اجرا کننده قراردادهای هوشمند
- گس چیست؟
- دستاوردهای انقلابی که بدون وجود قراردادهای هوشمند میسر نبود
- سایر پلتفرم های بلاک چینی با قابلیت اجرای قراردادهای هوشمند
- کاربردهای قرارداد هوشمند
- مشکلات و چالش های قراردادهای هوشمند
- ناگفتههایی درباره قراردادهای هوشمند
- جمعبندی
پیشینه تاریخی قراردادهای هوشمند
گویی همه تجربیات شگفتانگیز امروز دنیای فناوری، روایتگر مفهوم «متاورس» در رمان «تصادف در برف» نیل استفنسن (۱۹۹۲) است. متاورس تصویری از یک دنیای مجازیست که در دل دنیای حقیقی وجود دارد. آنچه که استفنسون ربع قرن پیش با تکیه بر تخیلات خود آفرید، امروزه الهام بخش بسیاری از پیشروان فناوریست:
نیل استفنسون نویسنده رمانهای علمی تخیلی
هنگامی که ۱۰ سال پیش هیرو (شخصیت اصلی رمان) نخستین بار این مکان را دید، نرمافزار مونوریل هنوز نوشته نشده بود. او و دوستانش برای این که بتوانند به جاهای مختلف سفر کنند، مجبور بودند نرمافزار اتومبیل و موتورسیکلت بنویسند. آنها نرمافزارهای خود را بیرون میبردند و در بیابان تاریکی در شب الکترونیکی با هم مسابقه میدادند.
اگر ادعا کنیم که اکنون در لابلای صفحات میانی رمان استفنسون و درست در بیابانی تاریک در شب الکترونیکی زندگی میکنیم، بیراه نگفتهایم. دنیایی ساخته شده از بیتها و بایتها، بلاکهای داده و هش های کریپتوگرافیک، قراردادهای هوشمند و Dapp ها … که در دل دنیای واقعی جریان داشته و بر آن تأثیر میگذارند.
برای صحبت از قراردادهای هوشمند، لازم است چند قدم به عقب رفته و از ابتدا مفهوم کلی قراردادها را با هم مرور کنیم. احتمالاً همه ما تا کنون حداقل یک بار «بستن قرارداد» را تجربه کردهایم؛ برای مثال یک قرارداد کاری، قرارداد برای خرید یا فروش چیزی، یا حتی یک قرارداد ازدواج.
در دنیای امروز، مفهوم قرارداد از این نیز فراتر رفته و اکنون میتوانیم ادعا کنیم، تقریباً برای هر کاری که از طریق اینترنت انجام میدهیم، در واقع یک قرارداد بین ما و سرویس ارائه دهنده خدمات منعقد میشود. برای مثال وقتی که نرمافزاری را دانلود میکنیم، وقتی که در یک شبکه اجتماعی عضو میشویم و یا وقتی که برای کسب اطلاعات به سایتی مراجعه میکنیم؛ در تمامی این موارد ما درحال بستن یک قرارداد هستیم؛ قراردادی که در طی آن ما در ابتدا قوانین و شرایط مشخصی را تحت عنوان (terms and conditions یا terms of service) مطالعه و تأیید میکنیم (البته در اغلب موارد مثل یک مشتری خوب و حرف گوش کن، بدون مطالعه شرایط دکمه تایید را میزنیم)، سپس اگر نرمافزار یا سرویس شامل هزینهای باشد آن را پرداخت کرده و در قبال آن، از آن سرویس مشخص خدماتی را دریافت میکنیم. برای درک مفهوم قراردادهای اینترنتی لازم نیست راه دوری برویم؛ بسیاری از سرویس هایی که روزانه از آنها استفاده میکنیم، مثل گوگل، اینستاگرام، فیسبوک، اسنپ، تپسی، دیجیکالا و … شامل قراردادهایی از این جنس هستند.
به طور کلی، یک مفهوم مشترک بر همه این قراردادها حاکم است: تعهد به انجام کاری در قبال برآورده شدن یک شرط؛ یا به عبارت دیگر، یک تعهد دو طرفه برای عمل کردن به مجموعهای از شروط و بندها.
قراردادها درمراحل ابتدایی ظهور، بین طرفین معامله به ثبت میرسیدند؛ به این معنی که دو شخص (یا حتی دو گروه از اشخاص) برای انجام تعهدات متقابل، با یکدیگر عهد کرده و این عهد به صورت شفاهی یا کتبی در بین آنها منعقد میشد. اما این شیوه در ذات خود با یک مشکل اساسی مواجه بود: مشکل اعتماد. از آن جایی که هر دو طرف درگیر در این قرارداد ذینفع بودند، هیچ یک از طرفین نمیتوانست به راحتی به طرف دیگر اعتماد کند و مسئولیتها و منافع به صورت عادلانه در بین آنها تقسیم نمیشد. در گذشته انسانها برای حل این مشکل یک راهحل داشتند: رجوع به یک واسطه معتمد. این واسطه معتمد معمولاً شخصی شناخته شده (یا اصطلاحاً ریش سفید) در آن منطقه بود که مورد تأیید اکثریت مردم قرار داشت. این واسطه معتمد بر وظایف و مسئولیتهای هر یک از طرفین و منافع آنها در ازای انجام مسئولیتها و همچنین توزیع عادلانه این وظایف و منافع نظارت داشت و در صورت تخطی هر یک از طرفین، به عنوان یک شاهد موثق عمل میکرد.

همانطور که میدانید، نقش واسطه معتمد در زندگی انسانها از قدمت زیادی برخوردار بوده و پس از گذشت سالیان طولانی، هنوز هم جایگاه خود را از دست نداده است. در دنیای امروزی، واسطههای معتمد تغییر شکل داده و از اشخاص قابل اعتماد به نهادها، سازمانها و بنگاهها تبدیل شدهاند. همچنین طی دو دهه اخیر، با رشد سریع تکنولوژی و همهگیر شدن اینترنت، رفته رفته پلتفرم های اینترنتی به وجود آمده و نقش واسطه معتمد را بر عهده گرفتند.
به عنوان مثال شرکت آمازون یا نمونه وطنی آن، شرکت دیجی کالا را در نظر بگیرید. دیجی کالا یک پلتفرم اینترنتی در حوزه خرید و فروش کالاست که نقش واسطه میان خریدار و فروشنده را ایفا میکند. به این صورت که برای فروشندگان کالا، بستری برای معرفی و فروش اینترنتی محصول فراهم آورده و برای مشتریان، قابلیت مشاهده محصول، بررسی تخصصی، مقایسه، مطالعه نظرات سایر مصرف کنندگان و نهایتاً خرید محصولات را ممکن میسازد.
همانطور که میدانید خرید و فروش اینترنتی، بستر رایجی برای کلاهبرداری مالی بوده و به شدت نیازمند اعتماد میان خریدار و فروشنده است. حال بجای آنکه خریدار به صدها فروشنده گمنام اعتماد کرده و در ازای خرید خود پرداخت اینترنتی انجام دهد، تنها یک بار به دیجی کالا (به عنوان واسطه) اعتماد کرده و همه پرداختهای خود را در درگاه این سایت انجام خواهد داد (که بخش اندکی از آن به عنوان کارمزد به دیجی کالا اختصاص خواهد یافت). سپس مشتری بنا بر اعتمادی که به این پلتفرم دارد، مدت زمان خاصی را (طبق قرارداد) تا دریافت محصول صبر میکند و پس از دریافت محصول نیز در صورت مغایرت آن با توصیفات ذکر شده از سوی فروشنده، تا مدت زمان خاصی (که در قرارداد مشخص شده) قادر به مرجوع کردن کالا و دریافت پول خود است. بنابراین تا به اینجا، پلتفرم دیجی کالا (و همه پلتفرم های مشابه) مشکل بزرگی به نام اعتماد آنلاین را برای طرفین قرارداد رفع کرده است.
اما آیا تا به حال به این موضوع اندیشیدهاید که وجود واسطه، چه معایب و مشکلات بالقوهای را برای قراردادها به همراه دارد؟ در خلاصه ترین حالت ممکن، ضرورت وجود واسطه برای عقد یک قرارداد، مشکلاتی از قبیل هزینه مازاد و اضافی، مشکل اعتماد به خود واسطه، از بین رفتن حریم خصوصی افراد، تجمع قدرت در نهادهای واسطه و … را ایجاد میکند. در ادامه به بررسی این مشکلات خواهیم پرداخت.
مشکلات قراردادهای سنتی و غیر هوشمند
همانطور که در بالا ذکر شد، برای بستن یک قرارداد وجود یک واسطه قانونی ضروری است؛ چرا که به قرارداد بسته شده سندیت و رسمیت میبخشد. اما وجود این واسطهها چندان هم خالی از اشکال نیست. در اینجا قصد داریم به برخی از این مشکلات پرداخته و علل آنها را تحلیل کنیم.
هزینه های اضافی و گزاف
واسطههای عقد قرارداد در دنیای امروزی، دفاتر یا بنگاههای مشخصی هستند که با طی کردن پروتکلهای قانونی خاص، بهعنوان مراکز رسمی این امر شناخته شده و شهادتشان بر بسته شدن یک قرارداد، سندیت قانونی دارد. در همه کشورهای دنیا، تعرفههای مشخصی برای بنگاههایی که این وظیفه را بر عهده دارند در نظر گرفته میشود.
برای مثال، عقد یک قرارداد برای خرید یا فروش یک ملک را در کشور خودمان در نظر بگیرید. برای بسته شدن چنین قراردادی در یک بنگاه معاملات ملکی، هر یک از طرفین قرارداد (خریدار و فروشنده) موظفند مبلغی حدود ۰.۵ درصد از کل مبلغ مورد معامله را به عنوان حق کمیسیون به آن بنگاه مشخص بپردازند. ممکن است در نگاه اول، ۰.۵ درصد مقدار خیلی ناچیزی به نظر برسد؛ اما در عمل اینطور نیست. اگر مبالغ بالایی که در این قراردادهای خرید و فروش ملک رد و بدل میشوند را در نظر بگیرید، متوجه این هزینه سنگین خواهید شد. گاهی برای بسته شدن یک قرارداد، طرفین مجبورند میلیاردها ریال هزینه مازاد بر هزینههای ضروری دیگر را متحمل شوند که همین امر یکی از مشکلات اساسی وجود واسطه در بستن قرارداد (یا اصولاً هر کار دیگری، از جمله انجام تراکنشهای بانکی) میباشد.
مشکل اعتماد به خود واسطه
همانطور که پیشتر گفتیم، دلیل اصلی پیدایش واسطهها، حل مشکل اعتماد میان طرفین معامله بود؛ اما با گذشت زمان رفته رفته مشخص شد که در بسیاری از موارد خود این واسطهها نیز قابل اعتماد نیستند. به عبارت دیگر، همان مشکل اعتمادی که روزی نسبت به طرف دوم قرارداد وجود داشت، اکنون میتواند نسبت به طرف سوم (واسطه) وجود داشته باشد.
کافیست در یک روز خیلی معمولی تلفن همراهتان را بردارید و اخبار روز را چک کنید. تقریباً هر روز در سراسر دنیا خبرهایی درباره خیانت و کلاهبرداری واسطهها منتشر میشود؛ واسطههایی که مبالغ مورد تعهد را از طرفین قرارداد دریافت کرده اما خود به تعهد خویش عمل نمیکنند و بعد از دریافت مبلغ مورد نظر برای همیشه ناپدید میشوند؛ واسطههایی که با یکی از طرفین قرارداد تبانی کرده و با دریافت رشوه به ضرر طرف دیگر اقدام میکنند؛ بانکهایی که تمام سرمایههای مشتریان را به سرقت برده و اثری از خود بجا نمیگذارند؛ بانکهایی که با سرمایههای مشتریان خود به اقداماتی همچون پولشویی و اختلاس میپردازند و …
امنیت و حریم خصوصی
مشکل دیگر قراردادهای واسطه محور، نقض امنیت و حریم خصوصی افراد است. در دنیای امروز، برای عقد یک قرارداد ساده، ضروری است که افراد مراحل احراز هویت مشخصی را طی کرده و اطلاعات شخصی خود از محل زندگی و شماره تلفن گرفته تا اطلاعات بستگان و خویشاوندان را در اختیار سازمانها قرار دهند. حتی در هنگام استفاده از سرویسهای اینترنتی نیز حریم خصوصی شما در معرض خطر خواهد بود.
به عنوان مثال شرکت گوگل، با تکیه بر دیتابیس عظیم و هوش مصنوعی پلتفرمهای خود، تقریباً همه چیز را درباره شما میداند و به خاطر میسپارد. گوگل میداند که نام شما چیست، کجا زندگی میکنید و به چه موضوعاتی علاقه دارید. گوگل با آنالیز دادههای رفتاری شما، میتواند قبل از خودتان حدس بزند که در انتخابات پیش رو به چه کسانی رأی خواهید داد. سادهترین سوء استفاده ممکن احتمالاً این خواهد بود که از این اطلاعات در جهت تبلیغات روانی هدفمند برای خودتان استفاده کند (دفعه بعدی که تبلیغات آغازین ویدئوهای یوتیوب را دیدید، به این فکر کنید که در چند روز اخیر چه موضوعاتی را در گوگل جستجو کردهاید).
در بدترین حالت هم ممکن است واسطه معتمد (!) اطلاعات شخصی شما و میلیونها نفرد دیگر را به دیگر شرکتها بفروشد یا دیتابیس هایش مورد حمله هکرها واقع شود. نظیر اتفاقی که در سال ۲۰۱۶ برای فیسبوک رخ داد و اطلاعات کاربری میلیونها نفر از کاربران آن، به شرکت تحلیل داده کمبریج آنالایتیکا فروخته شد تا با تبلیغات روانی هدفمند، بر نتیجه انتخابات ریاست جمهوری امریکا تأثیر بگذارد.
تجمیع قدرت در نهادهای واسطه
یکی دیگر از خطرات بالقوه قراردادهای سنتی، خطر تجمیع قدرت در نهادهای واسطه است. گاهی این سازمانهای واسطه قدرت و اختیارات خود را از قانون میگیرند (همانند بانک یا بیمه تأمین اجتماعی) و گاهی نیز این قدرت به سبب وابستگی جامعه به آن نهاد یا سازمان شکل میگیرد.
برای درک بهتر این موضوع، سیستمهای هوشمند حمل و نقل شهری (مانند Uber یا اسنپ) را در نظر بگیرید. این شرکتها در آغاز فعالیت خود، تسهیلات و تخفیفهای فراوانی را برای جذب رانندگان و مسافران پیشنهاد کرده و در سالهای ابتدایی فعالیت خود کارمزد بسیار اندکی را از رانندگان طلب میکردند. اما رفته رفته این شرکتها به غولهای بیرقیب صنعت حمل و نقل درون شهری تبدیل شده و اکنون جامعه رانندگان و مسافران را به خود وابسته کردهاند (به این معنی که مسافران و رانندگان چاره دیگری جز استفاده از این سرویسها نخواهند داشت).
این وضعیت درست همان چیزیست که با عنوان تجمیع قدرت در یک نهاد واسطه از آن یاد میکنیم. اکنون شرایط و اختیاراتی محیا شده که این شرکتها میتوانند به راحتی میزان کارمزد دریافتی خود را افزایش و یا قوانین استفاده از پلتفرم را به نفع خود تغییر دهند. همه اینها درحالیست که جامعه کاربران به این پلتفرمها وابسته بوده و به احتمال زیاد مجبور به پذیرش این مقررات جدید هستند.
یک مثال آشنای دیگر (که همه آن را تجربه کردهایم)، بانک ها هستند. بانک ها در ازای تعهداتی که در هنگام افتتاح حساب از متقاضیان دریافت کردهاند، به آنها خدماتی ارائه میدهند. مثلاً ایجاد سرویس پیامکی برای اطلاع از وضعیت حساب بانکی؛ اما درست زمانی که اکثریت مشتریان به این سرویس وابسته شدند، همه بانک ها در اقدامی هماهنگ شروع به کسر مبالغی به عنوان «هزینه سرویس پیامکی» از حساب مشتریان خود نموده و به مشتریان اعلام کردند درصورت عدم تمایل به استفاده از این سرویس، آن را برایتان غیر فعال میکنیم (بله؛ این بانک های دوست داشتنی)!
به نظر شما آیا مشتریان راه حلی عملی برای غلبه بر این مشکل و انجام امور ضروری خود از روشی دیگر را خواهند داشت؟ بیان این مسئله به این معنی نیست که این اقدام لزوماً توسط تمامی نهادهای واسطه روی خواهد داد؛ اما خطر بروز آن در دنیای واقعی نیز قابل انکار نیست.
بروکراسی سازمانهای واسطه
همه شما با سلسله مراتب خسته کننده و بروکراسی در سازمانها آشنایی دارید. برای گرفتن یک وام بانکی دهها صفحه از مدارک خود کپی گرفتهاید و بارها بین مسئولین مختلف بانک پاسکاری شدهاید و احتمالاً روزها یا ماهها در صف انتظار برای بررسی شرایط دریافت وام صبر کردهاید. عجیب نیست؛ بروکراسی یکی از ویژگیهای طبیعی (و عذابآور) قراردادهای سنتی و سازمانهای واسطه است. همه چیز باید چندین بار مورد بررسی قرار گیرد. مکانیزم سنتی ثبت و مدیریت دادهها از سرعت اندکی برخوردار بوده و هماهنگی میان بخشهای مختلف سازمان (و به ویژه سازمانهای دولتی) در اجرای قراردادها، چیزی نزدیک به صفر است. همچنین خطا و اشتباهات انسانی در این سیستمها از جمله موارد گریزناپذیر هستند.
در چنین شرایطی، پیدایش دفترکلهای توزیع شده، فناوری بلاک چین و قراردادهای هوشمند، به هماهنگی و یکپارچه سازی بخشهای گوناگون سیستمهای اطلاعاتی کمک خواهد نمود.
قرارداد هوشمند: جایگزین قدرتمند قراردادهای سنتی
پرسش اینجاست که با وجود تمامی مشکلات ذکر شده برای قراردادهای سنتی و واسطههای معتمد، فناوری بلاک چین چگونه این مشکلات را حل میکند؟ طی سالهای اخیر فناوری بلاک چین با فراهم ساختن بستر قراردادهای هوشمند، افقهای جدیدی را پیش روی ما گشوده است:
سازوکار قراردادهای هوشمند به زبان ساده
بیایید یک چالش ذهنی را تمرین کنیم. یک قرارداد سنتی (از هر نوع ممکن) را در نظر بگیرید و سعی کنید راه حلی برای حذف واسطه از این قرارداد پیدا کنید؛ بدون اینکه مجبور باشید طرف دوم قرارداد را بشناسید یا به او اعتماد کنید.
برای مثال یک قرارداد خرید ملک را در نظر میگیریم. طرفین قرارداد همان خریدار و فروشنده هستند، و واسطه آن نیز بنگاه معاملات ملکی. ابتدا طرفین قرارداد به توافق اولیه میرسند و بعد تمامی شرایط قرارداد، اعم از مشخصات ملک، مبلغ، بیعانه، زمان تحویل، زمان انتقال سند و … را در متن قرارداد ذکر میکنند. حال پس از پرداخت کارمزد دفتر املاک، تقریباً کار تمام است. خریدار مبلغ (یا بخشی از مبلغ) را پرداخت میکند و فروشنده در موعد مقرر خانه را تخلیه میکند. اگر هر یک از طرفین قرارداد در موعد مقرر به تعهداتشان عمل نکنند، طرف دیگر با استناد به متن قرارداد به مراجع قضایی شکایت خواهد کرد (البته به شرطی که خود قرارداد سالم باشد، و ملک از پیش فروخته شده را به شما نفروخته باشند).
حالا چطور میتوانیم نقش واسطه را از پاراگراف بالا حذف کنیم؟ طوری که دیگر نه لازم باشد به طرف دوم اعتماد کنیم، نه حتی لازم باشد او را بشناسیم، نه کارمزد میلیونی به بنگاه املاک پرداخت کنیم و نه نگران کلاهبرداری، جعل یا خطا و اشتباه در متن قرارداد باشیم. قراردادهای هوشمند اینجا وارد بازی میشوند:
تصور کنید که همین قرارداد بر روی یک پلتفرم اینترنتی و به صورت یک کد متن باز اجرا شود که در آن شروط لازم برای نهایی شدن یک قرارداد ذکر شود، مبلغ قابل پرداخت تعیین شود و به محض اجرایی شدن شروط و پرداخت مبلغ، قرارداد نهایی تلقی شده و مالکیت ملک به صورت قطعی و غیر قابل بازگشت از فروشنده به خریدار منتقل شود.
این دقیقاً ساز و کار یک قرارداد هوشمند به زبان ساده است؛ یک قرارداد مطمئن با شرایط کاملاً واضح و مشخص و از همه مهمتر، کم هزینه و بیواسطه. تصویر زیر گویای همه چیز است.
نمونه ابتدایی و شناخته شده قراردادهای هوشمند در دنیای ما، دستگاههای فروش خودکار یا وندینگ ماشینها (vending machines) هستند. عملکرد این دستگاهها این گونه است که شما پولی را وارد آنها میکنید، دستگاه توسط کدهای از پیش نوشته شده، پول را پردازش میکند، میزان ارزش و همچنین اعتبار آن را میسنجد و در نهایت محصول مورد نظر را به شما تحویل میدهد؛ بدون نیاز به فروشنده که در این مثال در واقع نقش همان واسطه را ایفا میکند.
احتمالاً تشبیه معروف قرارداد هوشمند به وندینگ ماشین را از خیلیها شنیدهاید. خوبی این مثال آن است که بدون هیچ توضیح اضافهای، مفهوم کلی یک قرارداد هوشمند را به شما انتقال میدهد؛ و البته بدی آن اینست که بسیاری از افراد را به راحتی قانع کرده و از ادامه جستجو باز میدارد (به این صورت که: قرارداد هوشمند؟ می دونم چیه بابا… ببین یه وندینگ ماشینو تصور کن، قرارداد هوشمندم همونه حالا یه سری کد و اینا هم قاطیشه).پس لطفاً از آنچه که تا به اینجا مطالعه کردید قانع نشوید و مقاله را ادامه دهید تا از سادهترین تعاریف به درکی واقعی و درست از مکانیزم قراردادهای هوشمند برسیم.
حقیقت این است که وقتی از قرارداد هوشمند صحبت میکنیم، منظورمان ابداً این نیست که این قراردادها دارای هوش ذاتی بوده یا اینکه قابلیت یادگیری عمیق دارند؛ خیر. در واقع قراردادهای هوشمند، شبیه به همان برنامههای نرمافزاری کامپیوتر عمل میکنند؛ با این تفاوت که این برنامهها به شکل کاملاً توزیع شده، بدون دخالت هرگونه واسطه یا قدرت متمرکز، به صورت درست و دقیق و غیر قابل توقف اجرا خواهند شد. حتی ناعادلانه بودن یا ظالمانه بودن قرارداد نیز تأثیری در اجرا یا عدم اجرای آن نخواهد داشت؛ چرا که اصولاً قرارداد هوشمند صاحب شعور یا هوش ذاتی نبوده و فقط اجراکننده توافقات اولیه طرفین در قالب کد کامپیوتری است.
تصویر زیر نشان دهنده یکی از توییتهای تاریخی ویتالیک بوترین خالق قراردادهای هوشمند اتریوم است که از بکارگیری واژه «قرارداد هوشمند» ابراز پشیمانی کرده و معادل بهتر برای این قراردادها را «اسکریپتهای پایدار» نامیده است.
به بیان دقیقتر میتوان گفت قراردادهای هوشمند اتریوم، همان برنامههای کامپیوتری هستند که بر روی ماشین مجازی اتریوم (EVM) و در مقیاس جهانی قابل اجرا هستند. در ادامه این مقاله به طور کامل با مفهوم ماشین مجازی اتریوم آشنا خواهید شد.
ایده اولیه قراردادهای هوشمند
ایده اصلی قرارداد هوشمند ابتدا در سال ۱۹۹۴ و توسط یک دانشمند علوم کامپیوتر به نام نیک زابو (Nick Szabo) مطرح شد.
لازمه اجرای قرارداد هوشمند ، فناوری بلاک چین است. به عبارت بهتر، قراردادهای هوشمند بر بستر بلاک چین کار میکنند و خارج از بلاک چین کارایی ندارند. ایده بلاک چین نیز به عنوان یک پایگاه داده غیرمتمرکز در سال ۱۹۹۱ توسط دو دانشمند به نامهای استوارت هابر (Stuart Haber) و اسکات استورنتا (Scott Stornetta) مطرح شد که البته تا سال ۲۰۰۹ قابلیت اجرایی پیدا نکرد. بیت کوین که اولین ارز رمزنگاری شده جهان است، به عنوان اولین پروژهای شناخته میشود که به بلاک چین قابلیت اجرایی بخشید و اهداف خود (یعنی نقل و انتقالات مالی) را تماماً بر روی آن پیادهسازی کرد. به همین دلیل، بسیاری از افراد بلاک چین را مترادف با ارزهای دیجیتال و کاراییهای آن را محدود به خرید و فروش و انتقال این ارزها میدانند؛ اما در حقیقت اینطور نیست. کاربردهای بلاک چین بسیار گستردهتر از نگهداری یا نقل و انتقال ارزهای دیجیتال است. امکان پیادهسازی قراردادهای هوشمند، یکی از همین کاربردهاست.
به کارگیری قراردادهای هوشمند در بلاک چین اتریوم
بلاک چین اتریوم (Ethereum) اولین بلاک چین عمومی و غیرمتمرکز جهان است که ایده اجرای قراردادهای هوشمند را عملی کرده و امکان استفاده از آنها را در اختیار کاربران قرار داد. اتریوم پس از بیت کوین بزرگترین پلتفرم ارز دیجیتال دنیاست که توسط یک جوان ۱۹ ساله روسی-کانادایی به نام ویتالیک بوترین اختراع شد.
با این حال که بیت کوین و اتریوم تفاوتهای زیادی با یکدیگر دارند، اما شاید بتوان گفت بزرگترین نقطه تمایز اتریوم از بیت کوین، قابلیت پیادهسازی قرارداد هوشمند است. بسیاری از افراد اتریوم را نیز مانند بیت کوین به عنوان یک بلاک چین مختص ارز دیجیتال میشناسند؛ اما حقیقت این است که هدف از تأسیس اتریوم از ابتدا، دست یافتن به پلتفرمی برای اجرای قراردادهای هوشمند در کنار تأسیس یک ارز دیجیتال جدید به نام اتر (Ether) بود. به تعبیر خود ویتالیک بوترین:
بیت کوین همانند ماشین حساب سادهایست که تنها چهار عمل اصلی را (به خوبی) انجام میدهد؛ اما اتریوم همانند کامپیوتری بزرگ و جهانیست که از پس اجرای همه برنامههای پیچیده نرم افزاری برمیآید.
ساز و کار بلاک چین اتریوم برای اجرای قراردادهای هوشمند
حال سوال اینجاست که اتریوم برای دستیابی به هدف خود یعنی اجرای قراردادهای هوشمند، از چه سازوکاری استفاده میکند. در ادامه این مقاله قصد داریم به این سوال اساسی پاسخ دهیم؛ از این رو ۴ ویژگی اساسی شبکه اتریوم را مورد بررسی قرار خواهیم داد:
- انواع حسابها در شبکه اتریوم
- زبان برنامه نویسی اتریوم
- ماشین مجازی اتریوم (EVM)
- گس (Gas) یا سوخت شبکه اتریوم
انواع حسابها در شبکه اتریوم
شبکه اتریوم را میتوان متشکل از حسابهای کوچک متعددی در نظر گرفت که قادر به تعامل با یکدیگر هستند. شاید با بکار بردن واژه «حساب» به یاد بانکهای سنتی بیفتید؛ اما منظور ما هم دقیقاً همین است. همه اطلاعات مربوط به تراکنشها و قراردادهای هوشمند در شبکه اتریوم، در حسابها ذخیره میشوند. به بیان دیگر، مکانیزم تراکنشها در شبکه اتریوم، چیزی شبیه به مکانیزم تراکنشهای بانکیست. برای توضیح حسابهای شبکه اتریوم لازم است به این نکته اشاره کنیم که نحوه ذخیره اطلاعات در شبکه اتریوم، به طور کلی با شبکه بیت کوین متفاوت است.
بیت کوین، همانطور که از عنوان وایت پیپر اولیهاش پیداست (بیت کوین: یک سیستم پول نقد الکترونیکی همتا به همتا)،مانند شبکهایست که تنها پول نقد در آن جریان دارد. به این معنی که در شبکه بیت کوین، اطلاعات مربوط به تراکنشها در خود تراکنشها ذخیره میشوند. هر تراکنش (اصطلاحاً هر UTXO) مانند یک اسکناس خرج نشده است، که به محض خرج شدن، دیگر قابل استفاده نیست. ضمن اینکه کاربر، با هر تراکنش بیت کوین آدرسی جدید برای خود تولید میکند. به همین سبب یک کاربر بیت کوین، ممکن است در کیف پول خود صدها تراکنش خرج نشده و صدها آدرس متناظر با آنها را نگهداری کند؛ اما رابط کاربری کیف پولهای بیت کوین، به منظور راحتی استفاده کاربران، مجموع تمامی UTXO ها را به عنوان موجودی حساب کاربر نمایش میدهد. از این رو میتوان معاملات شبکه بیت کوین را به معامله پول نقد تشبیه کرد.
از سوی دیگر در شبکه اتریوم، هر کاربر با آدرس یکتا، یک حساب متعلق به خود را داراست. تمامی اطلاعات از جمله مبلغ و زمان تراکنشها و موجودی آدرس، در «حالت حساب» ذخیره میشود. صحبت درباره حالت حسابها و نحوه دقیق ذخیره اطلاعات در حالتهای حساب، خارج از موضوع این مقاله است؛ اما برای درک بهتر آن، میتوان تراکنشهای شبکه اتریوم را به کارتهای بانکی تشبیه کرد. هر زمان که شما تراکنشی را از کارت بانکی خود انجام دهید، بانک موجودی حساب مبدأ را چک کرده و مبلغ مورد نظر را به حساب مقصد انتقال میدهد؛ درست همانند شبکه اتریوم.
درباره نحوه ذخیره اطلاعات در شبکه اتریوم بیشتر بخوانید:
در کنار حسابهای موجود برای کاربران (حساب های با مالکیت خارجی)، شبکه اتریوم به منظور پشتیبانی از قراردادهای هوشمند، آنها را در حسابهایی تحت عنوان «حسابهای مبتنی بر قرارداد» ذخیره میکند. بنابراین حسابهای شبکه اتریوم را میتوان به دو دسته تقسیم کرد: حسابهای با مالکیت خارجی و حسابهای مبتنی بر قرارداد.
- حسابهای با مالکیت خارجی (Externally owned account): با کلیدهای خصوصی مدیریت میشوند و حاوی کد مخصوصی نیستند.
- حسابهای مبتنی بر قرارداد (Contract account): حاوی کد مرتبط با قرارداد هوشمند بوده و از طریق این کد مدیریت میشوند.
درک تفاوت بنیادین بین حسابهای مالکیت خارجی و حسابهای مبتنی بر قرارداد بسیار مهم است. یک حساب مالکیت خارجی میتواند با استفاده از کلید خصوصیاش یک تراکنش انجام دهد، آن را امضا کند و از این طریق، پیامی را به یک حساب مالکیت خارجی یا حساب مبتنی بر قرارداد دیگر ارسال کند. پیام قابل انتقال بین دو حساب با مالکیت خارجی، یک نوع «انتقال ارزش یا انتقال پول» ساده است. اما پیامی که از یک حساب مالکیت خارجی به حساب مبتنی بر قرارداد فرستاده میشود، فراتر از انتقال ارزش است. این پیام کد آن حساب را فعال کرده و به این ترتیب، حساب مبتنی بر قرارداد میتواند اقدامات مختلفی نظیر انتقال توکنها، نوشتن چیزی روی فضای ذخیرهسازی داخلی، ایجاد توکنهای جدید، انجام یک سری محاسبات و ایجاد قراردادهای جدید را انجام دهد.
به طور خاص در هنگام ایجاد یک قرارداد هوشمند جدید، ابتدا دو شخص یا گروهی از اشخاص بر سر انجام شروط و تعهدات مورد نظر خود توافق میکنند؛ سپس این توافق در قالب یک کد منبع باز (open source) نوشته شده و از طریق یک تراکنش بدون مقصد (یعنی در آن آدرس خروجی یا گیرنده ثبت نشده) در بلاک چین اتریوم قرار میگیرد و آدرسی برای آن ایجاد میشود. سپس با انجام هر تراکنش به این آدرس، بخشی از شروط قرارداد انجام شده و کد قرارداد به آن پاسخ میدهد. به عنوان مثال قرارداد خرید یک خانه را تصور کنید. قرار است یک فروشنده در ازای دریافت مبلغی، مالکیت خانه را به دو نفر (به صورت شریکی) انتقال دهد. بعد از ثبت کد این قرارداد در بلاک چین اتریوم، هر دو نفر خریدار طی تراکنشهایی مجزا، مبلغ تعیین شده را به حساب قرارداد انتقال میدهند و قرارداد هوشمند، با انجام چند تراکنش، پول را به فروشنده، و مالکیت را به نام خریداران تغییر میدهد.
حال که با مکانیزم کلی حسابها در شبکه اتریوم و چگونگی عملکرد قراردادها در آن آشنا شدید، به سراغ اجزای حسابها میرویم. همانطور که در تصویر پایین میبینید، حسابهای اتریوم متشکل از ۴ جزء اساسی هستند که اطلاعات مورد نیاز شبکه (هم مربوط به تراکنش ها و هم مربوط به قراردادهای هوشمند) را در خود ذخیره میکنند:
- نانس (nonce):
اگر حساب از نوع مالکیت خارجی باشد، نانس نشاندهنده تعداد تراکنشهای ارسالشده از آدرس آن حساب است و اگر این حساب مبتنی بر قرارداد باشد، نانس تعداد قراردادهای ایجاد شده توسط این حساب را نشان خواهد داد. پارامتر نانس، به منظور جلوگیری از خرج چندباره داراییها در حسابهای اتریوم ثبت وکنترل میشود. برای درک بهتر نانس به مقاله اتریوم چیست مراجعه کنید.
- موجودی حساب (balance):
نشان دهنده تعداد وِی (Wei) موجود در این آدرس حساب است. وِی نام خردترین واحد اتر است و هر اتر برابر با ۱۰ به توان ۱۸ وی است. کنترل موجودی حساب، از جمله شرایط لازم برای اجرای قراردادهای هوشمند است؛ به عنوان مثال در قراردادهای هوشمند مربوط به وام دهی، موجودی حسابی که اشخاص در آن وثیقه گذاری میکنند، باید همواره توسط قرارداد هوشمند کنترل شود تا در صورت ایجاد تغییری در آن، درباره وام ارائه شده تصمیم گیری شود.
- ریشه ذخیره (storageRoot):
نشان دهنده هش ۲۵۶ بیتی ریشه درخت ذخیره (Storage tree ) است. این درخت نوعی ساختمان داده است که هش تمامی دادههای مرتبط با قراردادهای هوشمند در حسابهای مبتنی بر قرارداد را ذخیره میکند. هش یا هشینگ فرایندی است که در آن به منظور ثبت دائمی مجموعهای از داده ها در بلاک چین، این دادهها را رمزنگاری (به بیان دقیقتر درهمنگاری) کرده و از آن یک خروجی رمزنگاری شده استخراج میکند. در حسابهای مالکیت خارجی، بخش مربوط به «storageRoot» خالی است.
- کدهش (codeHash):
به بیان خیلی ساده، کدهش دربردارنده هشِ درهمنگاری شده کد نهایی قراردادهای هوشمند است که در حسابهای مبتنی بر قرارداد ذخیره میشود. پارامتر کدهش نیز به منظور تغییر ناپذیر بودن قراردادها در حساب قرارداد ثبت میشود؛ به عنوان مثال اگر شخصی بخواهد یک قرارداد هوشمند را هک کرده و کد آن را تغییر دهد، کدهش این قرارداد در حساب مربوطه نیز تغییر خواهد کرد و به این ترتیب، این قرارداد به توسط نودهای شبکه به عنوان یک قرارداد جعلی تلقی خواهد شد. در حسابهای مالکیت خارجی، بخش مربوط به «codeHash» خالی است.
نحوه ایجاد قراردادهای هوشمند در بلاک چین اتریوم
قراردادهای هوشمند از طریق تراکنشها بر روی بلاک چین اتریوم ثبت میشوند؛ بنابراین لازم است ابتدا درباره تراکنشها صحبت کنیم. تراکنشها در شبکه اتریوم ، در واقع دستورالعملهایی هستند که حالت حساب بر اساس آنها تغییر مییابد. این دستورالعملها به صورت رمزنگاری شده امضا شده و توسط یک حساب با مالکیت خارجی ایجاد و به بلاک چین اعلام میشوند. به طور کلی تراکنش ها در شبکه اتریوم سه نوع هستند:
- از یک حساب با مالکیت خارجی به یک حساب با مالکیت خارجی
- از یک حساب با مالکیت خارجی به یک حساب قرارداد هوشمند
- از یک حساب با مالکیت خارجی به یک حساب صفر (Zero account)
هر سه نوع تراکنش در شبکه اتریوم، توسط یک حساب با مالکیت خارجی (انسان) آغاز میشوند. به تعبیر دیگری میتوان گفت تراکنش های اتریوم همچون پلی هستند که اطلاعات دنیای خارجی را به حالت داخلی شبکه اتریوم متصل میکنند. تراکنش های نوع اول میان دو انسان صورت میگیرد؛ تراکنش های نوع دوم میان انسان و یک قرارداد هوشمند؛ و تراکنش نوع سوم توسط یک انسان (حساب با مالکیت خارجی) فرستاده شده و گیرندهای ندارد. این نوع تراکنشها حاوی کد قرارداد هوشمند هستند و در صورت تأیید، قرارداد هوشمند را روی بلاک چین ایجاد میکنند. به محض ثبت شدن این قرارداد در بلاک چین، یک آدرس عمومی به آن اختصاص مییابد و از این پس، قرارداد آماده فعالسازی و استفاده توسط تراکنشهای دیگر خواهد بود.
همچنین قراردادهایی که در بلاک چین اتریوم موجود هستند نیز میتوانند از طریق پیامها (تراکنش های داخلی) با سایر قراردادها صحبت و تعامل داشته باشند. پیامهای رد و بدل شده میان قراردادهای هوشمند را نیز میتوان شبیه به تراکنشها درنظر گرفت؛ با این تفاوت که این تراکنشها توسط اکانتهای با مالکیت خارجی ایجاد نمیشوند بلکه توسط خود قراردادهای هوشمند ایجاد میشوند.
توجه داشته باشید که قرارداد هوشمند هیچگاه به خودی خود کاری انجام نمیدهد و برای فعال شدن، نیازمند ارسال یک تراکنش فعالسازی به آدرس این قرارداد هستیم. نتیجه این تعامل، پس از ماین شدن تراکنش در بلاک چین ثبت میشود. هر تراکنشی که قرارداد هوشمندی را فعال کرده یا از آن استفاده کند، توسط همه نودهای اتریوم اجرا میشود. در نتیجه به منظور ماین کردن یک تراکنش در یک بلاک، باید محاسبات مربوط به قرارداد استفاده شده در این تراکنش نیز توسط همه نودها اجرا شود.
حال که با نحوه ثبت قراردادها در بلاک چین اتریوم آشنا شدیم، میتوانیم به چگونگی کدنویسی این قراردادها بپردازیم.
نحوه برنامه نویسی قراردادهای هوشمند اتریوم
زبان برنامه نویسی قراردادهای هوشمند
زبان برنامهنویسی سالیدیتی (Solidity) که مختص خود اتریوم است، در حال حاضر ایدهآلترین زبان برنامهنویسی برای قراردادهای هوشمند اتریوم است؛ هرچند که در حال حاضر زبانهای دیگری مانند وایپر (Vyper) و سرپِنت (Serpent) نیز وجود دارند که همین هدف را دنبال کرده و زبانهای دیگری نیز در همین راستا در دست توسعه هستند. اما تحقیقات نشان میدهند که بیش از ۹۰ درصد قراردادهای هوشمند اتریوم توسط زبان سالیدیتی نوشته شدهاند؛ بنابراین برای کدنویسی و اجرای یک قرارداد هوشمند در اتریوم، نیاز خواهید داشت که به این زبان مسلط باشید.
زبان برنامهنویسی سالیدیتی الهام گرفته از زبانهای پایتون (Python)، سی پلاس پلاس (C++) و جاوا اسکریپت (Java Script) بوده و یک زبان برنامهنویسی سطح بالا (high-level) میباشد. همین امر قابلیت به کار گیری آن را به نسبت زبانهای برنامهنویسی سطح پایین (low-level) افزایش داده و استفاده از آن برای نگارش قراردادهای هوشمند را راحتتر میکند. به طور کلی زبانهای سطح پایین زبانهایی هستند که به زبان ماشین (۰و۱) نزدیکتر بوده و برای ماشین قابل فهمترند. زبانهای سطح بالا (مثل سالیدیتی ، جاوا اسکریپت و پایتون)، زبانهایی هستند که بیشتر به زبان انسان نزدیک هستند و برای فهم توسط ماشین، نیازمند چند مرحله تفسیر و ترجمه به زبان ماشین هستند.
IDE های سالیدیتی
برای شروع کدنویسی قراردادهای هوشمند، نیازمند به محیط های یکپارچه توسعه یا IDE هستیم. IDE ها محیطهایی هستند که به برنامهنویسان و توسعهدهندگان در کدنویسی برنامهها کمک میکنند و امکانات بسیاری را برای توسعه نرمافزارها در اختیار آنها قرار میدهند. یکی از IDE های شناخته شده سالیدیتی ، ریمیکس (Remix) نام دارد. ریمیکس یک IDE تحت وب و آنلاین است؛ بنابراین برای استفاده از آن شما نیاز به نصب هیچگونه نرمافزاری نخواهید داشت. کافیست که به آدرس remix.ethereum.org مراجعه کرده و از امکانات آن بهرهمند شوید. البته به عقیده برخی از توسعهدهندگان، این IDE فقط برای کدنویسی قراردادهای هوشمند ساده و همینطور برای اهدافی مانند یادگیری و آموزش قابل استفاده بوده و برای انجام کارهای پیچیدهتری مانند توسعه نرمافزارهای غیرمتمرکز و همینطور برای برنامهنویسان حرفهای مناسب نیست.
برای مثال، یکی از نقاط ضعف ریمیکس، عدم توانایی طراحی فرانت اند (Front-End) نرمافزارهاست. بنابراین اگر یک برنامهنویس باتجربه و حرفهای هستید و یا اگر قصد توسعه یک نرمافزار غیرمتمرکز را دارید، بهتر است به یک IDE دیگر به نام ترافل (Truffle) رجوع کنید. ترافل یک محیط توسعه طراحی شده بر پایه جاوا اسکریپت است و مانند ریمیکس ، یک IDE تحت وب و آنلاین نیست؛ بنابراین برای استفاده از آن، نیاز خواهید داشت تا ابتدا پلتفرمی به نام Node.js را نصب کنید. این پلتفرم کدهای نوشته شده توسط زبان جاوا اسکریپ را به اجرا میگذارد و بر روی تمامی سیستم عاملها (ویندوز ، مک و لینوکس) قابل نصب است. پس از نصب Node.js ، تنها کاری که باید انجام دهید نصب ترافل و شروع کدنویسی قرارداد هوشمند است.
کامپایلرهای سالیدیتی
همانطور که پیشتر گفتیم، سالیدیتی یک زبان سطح بالاست؛ بنابراین برای به اجرا در آوردن کد قراردادهای هوشمند نوشته شده توسط آن بر روی بلاک چین اتریوم ، نیاز است که از یک کامپایلر برای تبدیل این کد استفاده شود. کامپایلری که به طور معمول توسط اتریوم برای این کار مورد استفاده قرار میگیرد، سالسی (SolC) نام دارد (لازم به ذکر است که در صورت استفاده از IDE هایی مانند ریمیکس و ترافل، خود این IDE ها وظیفه کامپایل کردن کد ها را نیز انجام میدهند). بنابراین با استفاده از کامپایلر SolC ، کد قرارداد هوشمند نوشته شده توسط سالیدیتی ، به یک بایت کد تبدیل میشود؛ بایت کدی که توسط ماشین مجازی اتریوم (Ethereum Virtual Machine) قابل خوانش و اجراست.
نحوه اتصال به بلاک چین اتریوم و ثبت قراردادهای هوشمند
در گذشته برای متصل شدن به بلاک چین اتریوم و اجرای کد یک قرارداد هوشمند ، کاربران مجبور بودند تا کل بلاک چین اتریوم را دانلود کنند و اصطلاحاً تبدیل به یک فول نود شوند؛ اما با گذر زمان، افزونهای به نام متامسک (Metamask) عرضه شد که به تمامی کامپیوترها و مرورگرها، اجازه تعامل مستقیم با بلاک چین اتریوم را میداد. متامسک امروزه به عنوان یک کیف پول اتریوم نیز مورد استفاده قرار میگیرد (که در قسمت کیف پول های اتریوم به آن اشاره خواهیم کرد)؛ اما چیزی که در حال حاضر قصد صحبت در مورد آن را داریم، کاربرد متامسک به عنوان یک افزونه مرورگر است. متامسک همانطور که اشاره کردیم، افزونهای است که بر روی مرورگرهای گوگل کروم (Google Chrome) ، موزیلا (Mozilla Firefox) ، بریو (Brave) و اپرا (Opera) نصب میشود و به برنامهنویسان و توسعهدهندگان این امکان را میدهد تا بدون تبدیل شدن به یک فول نود و تنها از طریق مرورگرهای خود، به نوشتن قراردادها و قرار دادن آنها بر روی بلاک چین اتریوم بپردازند. بنابراین در صورت تمایل برای کدنویسی و اجرای یک قرارداد هوشمند بر روی بلاک چین اتریوم توسط IDE هایی مانند ریمیکس ، پیش از هر چیزی باید یک افزونه متامسک به مرورگر خود اضافه نمایید. برای نصب این افزونه بر روی مرورگر کروم، میتوانید به این آدرس مراجعه کرده، گزینه Add to Chrome را انتخاب کنید و طبق دستورالعمل پیش بروید.
آیا زبان سالیدیتی یک زبان تورینگ کامل است؟
پیشتر اشاره کردیم که تمایز اصلی شبکه اتریوم و بیت کوین که اتریوم را قادر به اجرای قراردادهای هوشمند میسازد، قابلیتهای فراوان زبان برنامه نویسی آن است؛ اما این قابلیت چیست؟
زبان سالیدیتی (بر خلاف زبان بیت کوین) یک زبان تورینگ کامل (Turing Complete) است. اصطلاح «تورینگ» برگرفته از اسم آلن تورینگ (Alan Turing)، ریاضیدان نابغه قرن بیستم است که وی را به عنوان بنیانگذار علوم کامپیوتر و از پیشگامان هوش مصنوعی میشناسند.
به بیان ساده یک ماشین تورینگ کامل ، ماشینی است که در صورت دریافت دستورالعملهای کامل، و با در اختیار داشتن زمان و منابع پردازشی کافی، میتواند هر گونه مسألهای را حل کند.
این تعریف به مرور زمان به زبانهای برنامه نویسی نیز تعمیم داده شد: یک زبان برنامه نویسی تورینگ کامل، زبانی است که توانایی تعریف و حل هرگونه مسألهای را داشته و دارای قابلیتی به نام حلقههای تکرار باشد؛ حلقه تکرار این امکان را در اختیار زبان های برنامه نویسی قرار میدهد تا یک دستورالعمل را به صورت بینهایت تکرار کنند. اتریوم به منظور تبدیل شدن به پلتفرمی برای اجرای قرارداد هوشمند و اپلیکیشن غیرمتمرکز و تمرکززدایی از همه فرآیندهای موجود، احتیاج به یک زبان تورینگ کامل داشت. به همین دلیل، استفاده از زبان های تورینگ کامل در نقشه راه این بلاک چین قرار گرفت.
در قسمت بعدی، برای آشنایی با چگونگی عملکرد کدهای برنامه نویسی شده در پلتفرماتریوم، به توضیح مفهوم ماشین مجازی اتریوم (Ethereum virtual machine) یا EVM میپردازیم.
درباره برنامه نویسی به زبان سالیدیتی بیشتر بخوانید:
- سالیدیتی چیست؟
- آموزش زبان برنامه نویسی سالیدیتی
- چگونه یک توسعه دهنده بلاک چین شویم؟
- سیستم غیرمتمرکز و برنامه نویسی تابعی در اتریوم
- ۱۰ زبان برنامه نویسی بلاک چین
- چگونه در سالیدیتی قرارداد هوشمند قابل بروزرسانی بنویسیم؟
- نکات و ترفندهای سالیدیتی
- آرایهها در زبان سالیدیتی
- کار با رشتهها در زبان سالیدیتی
ماشین مجازی اتریوم (EVM)؛ اجرا کننده قراردادهای هوشمند
EVM یا ماشین مجازی اتریوم، محیطی مجازیست که کدهای سطح بالای مربوط به قراردادهای هوشمند را به یک فرمت قابل اجرا توسط همه ماشین ها تبدیل کرده و تضمین میکند که همه تراکنشها برای همه نودها به یک صورت اجرا شوند. به بیان دقیقتر، ماشین مجازی اتریوم زیرساختی برای اجرای تراکنشها و قراردادهای هوشمند در شبکه اتریوم است که نودهای شبکه را قادر میسازد درباره نحوه اجرای دستورالعملها به توافق برسند.
همانطور که پیشتر گفتیم، زبان برنامه نویسی قراردادهای هوشمند اتریوم (سالیدیتی)، یک زبان سطح بالا، و بسیار شبیه به زبان جاوا اسکریپت (javascript) است. بنابراین به منظور اجرای کدهای نوشته شده به این زبان، لازم است که این کدهای سطح بالا، ابتدا به زبان سطح ماشین تبدیل شوند. ماشین مجازی اتریوم دقیقاً چنین وظیفهای دارد.
هر زبان برنامه نویسی که بین زبانهای سطح بالا و زبان ماشین قرار میگیرد را میتوان نوعی ماشین مجازی در نظر گرفت. به بیان دیگر ماشین مجازی (VM)، برنامه را به یک فرمت قابل اجرا برای همه سیستمها تبدیل میکند تا به راحتی تفسیر و اجرا شوند. شاید این شعار معروف زبان جاوا به گوشتان آشنا باشد: «یک بار بنویس و همه جا اجرا کن». در واقع این جمله اشارهای به استفاده جاوا از ماشین مجازی خاص خود یعنی JVM است که اجرای کدهای جاوا را روی تمامی سیستم ها (لینوکس، ویندوز و مک) امکانپذیر میسازد.
زمانی که از اجرای غیرمتمرکز و توزیع شده قراردادهای هوشمند صحبت میکنیم، بسیار مهم است که کد این قراردادها نیز همچون جاوا، برای همه نودهای شبکه (با معماریهای گوناگون سیستم) قابل تفسیر و اجرا باشد. به همین دلیل اتریوم از ماشین مجازی خاص خود به نام EVM استفاده میکند. EVM درست قبل از لایه عملیاتی ماشین واقع شده است. زمانی که یک قرارداد هوشمند به زبان سطح بالای سالیدیتی نوشته میشود، ابتدا کد آن به زبان بایت کد (Byte code) که زبان مشترک میان تمامی نودهای اتریوم است تبدیل میشود. سپس این بایت کدها از طریق دستورالعملهای خاص EVM که آپ کد (Op code) نامیده میشوند، به زبان ماشین تبدیل شده و وارد فاز عملیاتی میشوند.
آپ کدهای EVM دستوراتی ساده و قابل فهم برای انسان هستند (مانند ADD برای عمل جمع یا SHA3 برای رمزنگاری با استفاده از الگوریتم Keccak-256 hash) که از آن ها برای محاسبه راحتتر هزینه یا گس (Gas) مورد نیاز برای پردازش کد استفاده میشود. میتوانید همه آپ کدهای EVM را به همراه گس (سوخت) مورد نیاز برای اجرای هریک از آنها، از این آدرس مشاهده نمایید.
علاوه بر وظایف گفته شده، EVM همچنین دو قابلیت اساسی را برای شبکه فراهم میکند:
- جلوگیری از حملات محروم سازی سرویس (DoS) روی شبکه اتریوم با استفاده از مکانیزم گس (Gas)
- ایجاد یک ران تایم (به معنی زمان مورد نیاز برای اجرای برنامه ها) و یک فضای ایزوله برای اجرای برنامه ها بر روی سیستم میزبان. به بیان دیگر ماشین مجازی اتریوم یک سطح جدایی بین «کدهای اجرایی» و «دستگاه اجرا کننده» ایجاد میکند. این لایه جداکننده ایزوله برای توسعهی قابلیتهای جدید نرمافزاری، جدا بودن نرمافزارها از یکدیگر و همچنین اطمینان از جدا بودن از سیستم میزبان، مورد استفاده قرار میگیرد. این محیط ایزوله از طریق شبکههای تست نت اتریوم مانند تست نت Ropsten و Rinkeby به منظور ایجاد یک محیط آزمایش و توسعه، فراهم میگردد.
این عملکرد چندلایه در ماشین مجازی اتریوم، در حقیقت همان قلب تپنده بلاک چین اتریوم است که اجرای هرگونه برنامهای را بر روی آن ممکن ساخته و بلاک چین اتریوم را به یک ماشین تورینگ کامل (Turing-complete) تبدیل میکند. ماشین تورینگ کاملی که تعمداً با پارامتری به نام گس (Gas) محدود شده است. در ادامه درباره مفهوم کارمزد یا گس اتریوم ، توضیحات کاملی را ارائه خواهیم داد اما به عنوان یک تعریف ابتدایی، گس ، مکانیزمی برای پرداخت هزینه پردازش تراکنش ها و کد قراردادهای هوشمند در شبکه اتریوم است که از گیر افتادن شبکه در حلقههای بی نهایت (که منابع شبکه را به هدر میدهد) یا انجام حملات محروم سازی سرویس (DoS) بر روی شبکه جلوگیری میکند.
درباره EVM بیشتر بخوانید:
گس چیست؟
واحدی برای کارمزد محاسبات شبکه
همانطور که پیشتر گفتیم، برای این که قرارداد هوشمند (یا اساساً هر تراکنش دیگری) در بلاک چین اتریوم به اجرا گذاشته شود، کد آن باید برای تمامی اعتبارسنجها یا فول نودها فرستاده شده و مورد تأیید آنها قرار گیرد؛ این روند، همان دستورالعملیست که در الگوریتمهای اجماع مبتنی بر گواه اثبات کار در پیش گرفته میشود. در الگوریتمهای اجماع گواه اثبات کار، توان پردازشی بسیار بالایی از فول نودها یا همان ماینرها برای اعتبارسنجی تراکنشها و پردازش قراردادها صرف میشود.
از یک سو هرچه تعداد این فول نودها بیشتر باشد، توزیع شدگی و امنیت کل شبکه نیز به همان نسبت افزایش مییابد (چرا که هکرها برای حمله به شبکه، توان پردازشی بسیار بیشتری را احتیاج خواهند داشت) و از سوی دیگر تعدد ماینرها باعث مصرف بیشتر منابع پردازشی (شامل سخت افزار و انرژی و زمان) خواهد شد. بنابراین منطقی است که ماینرها برای تأیید هر تراکنش و یا ماین کردن هر بلاک، مبلغی را به عنوان پاداش و کارمزد دریافت کنند؛ تا هم توان پردازشی مصرف شده جبران شود و هم ماینرهای بیشتری برای عضویت در این شبکه ترغیب شوند.
بخشی از این مشوقها به صورت پاداش استخراج بلاک (که در حال حاضر میزان آن ۲ اتر است) به ماینرها تعلق میگیرد؛ اما اعتبارسنجی و ثبت هر تراکنش یا اجرای هر قرارداد هوشمند نیز به نوبه خود مستلزم پرداخت کارمزد (fee) است.
به بیان ساده، گس (Gas) در شبکه اتریوم، واحدی برای پرداخت کارمزد است؛ اما همانطور که پیشتر گفتیم، گس علاوه بر بحث کارمزد، نقش حیاتی دیگری را نیز در شبکه اتریوم ایفا میکند. در واقع گس، محدودیتی است که بر روی محاسبات انجام شده در شبکه اعمال میشود تا از حملات خرابکارانه و یا وجود حلقههای پایان ناپذیر در کد قراردادهای هوشمند جلوگیری کند. به همین منظور فرستنده تراکنش در شبکه اتریوم، باید میزان گس تراکنش را تعیین کرده و معادل آن در حساب خود موجودی داشته باشد. اما سوال اینجاست که گس چگونه تعیین میشود؟
حد گس، قیمت گس و نحوه تعیین آنها
کسی که تراکنش را ارسال میکند، برای تعیین گس باید دو پارامتر را مشخص کند: حد گس (Gas limit) و قیمت گس (Gas Price). پیش از تعریف حد گس و قیمت گس، لطفاً به این مثال توجه کنید:

حال به تعاریف زیر توجه کنید:
- حد گس (Gas limit)*: حداکثر واحد گسی است که برای انجام همه محاسبات یک قرارداد یا یک تراکنش مورد نیاز است و میزان آن به پیچیدگی عملیات بستگی دارد. برای هر آپ کد (Op code) یا دستور عملیاتی خاص در EVM، حد گس مشخص شده و میزان آن ثابت خواهد بود.
*توجه داشته باشید که در وایت پیپر اتریوم، بجای عبارت gas limit ، از start gas استفاده شده که منظور هر دو عبارت همان حد گس است.
- قیمت گس (Gas Price): مقدار اتری است که برای هر واحد گس هزینه میشود و در حقیقت اولویت انجام تراکنش را برای ماینرها مشخص میکند. لازم به ذکر است که قیمت گس بر خلاف حد گس، ثابت نیست و تعیین مقدار آن کاملاً بر عهده فرستنده تراکنش است (مانند کارمزد بیت کوین)؛ اما با توجه به میزان ترافیک موجود در شبکه، استانداردهایی برای تعیین قیمت گس مشخص شده است که میتوانید از سایت info مشاهده کنید. به عنوان مثال، در تصویر زیر ۳ قیمت گس پیشنهادی (در تاریخ ۱۲ شهریور ۹۹) با اولویت حداقل (تأیید تراکنش در ۳۰ دقیقه)، استاندارد (تأیید تراکنش در ۵ دقیقه)، و سریع (تأیید تراکنش در ۲ دقیقه) را مشاهده میکنید.
همانگونه که در تصویر بالا مشاهده میکنید، میزان گس با Gwei (بخوانید گوِی یا جی وِی) بیان میشود. وِی (wei) واحد خرد شده اتر است (مانند ساتوشی برای بیت کوین) و رابطه آن با اتر به صورت زیر بیان میشود:
چنانچه برای انجام تراکنش اتریوم از کیف پولهایی همچون اگزودوس یا کوینومی استفاده کنید، کیف پول به طور خودکار کارمزد حداقلی یا استاندارد را برای تراکنش تعیین میکند و چنانچه از کیف پولهای مخصوص اتریوم مثل مای اتر والت (myetherwallet) یا متا مسک (metamask) استفاده کنید، میتوانید به صورت دستی قیمت گس را تعیین کنید.
در نهایت مقدار کل کارمزد پرداخت شده (مانند مثال خودرو و بنزین) از حاصلضرب حد گس در قیمت گس به دست میآید:
برای تعیین حد گس نیز دقت داشته باشید که حد گس باید برابر یا بیشتر از حداقل گس مورد نیاز برای انجام محاسبات باشد. به عنوان مثال حد گس لازم برای انجام یک تراکنش ساده، ۲۱۰۰۰ گس است. در صورتی که این تراکنش قرارداد هوشمندی را فعال کند یا خود شامل کد یک قرارداد هوشمند باشد، باید گس مربوط به محاسبات انجام شده نیز در این تراکنش لحاظ شود:
در تصویر زیر نمونه یک تراکنش فعال کننده قرارداد هوشمند را مشاهده میکنید:
چنانچه حد گس از حداقل میزان لازم برای انجام محاسبات کمتر باشد، تراکنش (و پردازشهای مربوط به آن) تا لحظه پایان یافتن گس ادامه مییابد؛ سپس با اتمام گس، تراکنش ناموفق اعلام شده، تمامی مبالغ منتقل شده به حساب فرستنده بازگردانده میشود، و حالت حساب ها نیز به حالت قبلی باز میگردد. اما گس مصرف شده به حساب نود ماینر فرستاده شده و دیگر قابل بازگشت نیست. در صورتی که حد گس از حداقل گس لازم برای انجام محاسبات (actual gas) بیشتر باشد، تراکنش با موفقیت اجرا شده و در نهایت، گس اضافی به حساب فرستنده تراکنش بازگشت داده میشود.
دستاوردهای انقلابی که بدون وجود قراردادهای هوشمند میسر نبود
ظهور بلاک چین در جهان، انقلابی بود که تمام ابعاد زندگی بشر را تحت تأثیر خود قرار داد. تأثیر ظهور بلاک چین بر جامعه بشری اگر بیشتر از تأثیر ظهور اینترنت نباشد، کمتر هم نیست. در حال حاضر بسیاری از افراد این فناوری را شکلدهنده آینده جهان و بر هم زننده کل نظم موجود و حاکم بر آن میدانند. اما این فناوری نیز مانند هر فناوری نوظهور دیگری، برای این که بتواند جای اصلی خود را در میان انسانها پیدا کرده و قابلیتهای حداکثری خود را به رخ بکشد، نیازمند زمان است.
یکی از امکاناتی که امروزه به واسطه پیدایش بلاک چین در دسترس بشر قرار گرفته، امکان استفاده از قراردادهای هوشمند است. در مورد قابلیتهای قراردادهای هوشمند، دلایل به وجود آمدن آنها و مشکلاتی که بهوسیله آنها از زندگی بشر رفع شد صحبت کردیم. اما قابلیتهای قراردادهای هوشمند فقط محدود به همینها نیست. قراردادهای هوشمند با ظهور خود عرصه را برای دستاوردهایی جدید و انقلابی مهیا کرده و بهعنوان بستری برای اجرای بسیاری از آنها عمل کردند. در ادامه قصد داریم به چهار مورد از این دستاوردها یعنی «اپلیکیشن های غیرمتمرکز(dapps) ، صنعت مالی غیرمتمرکز (DeFi) ، سازمان های خودمختار غیرمتمرکز (DAO) و عرضه اولیه سکه (ICO)» بپردازیم.
اپلیکیشن های غیرمتمرکز یا Decentralized Apps (dApps)
یکی از مهمترین و اساسیترین دستاوردهای قراردادهای هوشمند ، اپلیکیشنهای غیرمتمرکز یا dapp ها هستند. برای درک بهتر مفهوم اپلیکیشن غیر متمرکز ، بهتر است ابتدا عملکرد اپلیکیشن های متمرکز را بررسی کنیم. تقریباً تمامی وبسایتها و اپلیکیشن هایی که هر روزه با آنها تعامل داشته و از آنها استفاده میکنیم، از نوع متمرکز و تحت وب معمولی هستند. منظور از متمرکز بودن، این است در تمامی این پلتفرمها، پایگاههای داده به طور کامل تحت اختیار و حاکمیت یک نهاد واسطه همچون گوگل، آمازون، فیسبوک، اوبر، اسنپ یا دیجی کالاست.
اگرچه پیدایش این پلتفرمهای متمرکز تا کنون منافع بسیاری را برای کاربران به همراه داشته، اما این به معنی عاری از مشکل بودن آنها نیست. به طور مثال عملکرد گوگل را در نظر بگیرید؛ روزانه میلیونها کاربر در حال جستجوی موضوعات گوناگون در گوگل هستند و از سوی دیگر هزاران کسب و کار گوناگون نیز در در حال تولید محتوا فضای اینترنت میباشند. همه ما (به دلایلی که معلوم نیست چرا!) به الگوریتم سرچ و جستجوی گوگل اعتماد کامل داریم (در حالی که میدانیم بسیاری از محتواهای ما سانسور میشوند)؛ همه ما به امنیت ایمیلهایمان در سرویس Gmail اعتماد داریم (در حالی که میدانیم حسابهای کاربریمان هک میشوند)؛ همگی حاضریم تبلیغات هدفمند گوگل در ابتدای ویدئوهای یوتیوب (Youtube) را تحمل کنیم؛ همه ما گوگل را محرم حریم خصوصی خود دانسته و اجازه میدهیم که مرورگر کروم (Google Chrome) کوکیهای سوابق سرچ ما را ذخیره کند؛ در نهایت نیز همه با اشتیاق اجازه میدهیم گوگل از محتوایی که خودمان تولید میکنیم، کسب درآمد کند! چگونگی شکل گیری این روند، امری طبیعیست. گوگل در ابتدا خدمتی حیاتی (موتور جستجو) به کاربران خود پیشنهاد کرده و رفته رفته بندهایی را به قرارداد میان ما و خودش افزوده است. کاربران هم که اکنون محتاج خدمات گوگل هستند، چارهای جز پذیرش حاکمیت بی چون و چرای گوگل ندارند. همین داستان تقریباً درباره اکثر پلتفرمهای متمرکز دیگر نیز صدق میکند.
اما آیا تا به حال به جایگزینی برای این پلتفرمهای واسطه فکر کردهاید؟ مثلاً پلتفرمی که به شما اجازه دهد خودتان مستقیماً از فروش محتوایتان کسب درآمد کنید؛ پلتفرمی که در آن هیچ قدرت متمرکزی امکان سانسور محتوای شما را نداشته باشد؛ یا اینکه حتی در ازای تماشای تبلیغات در این پلتفرم پول دریافت کنید؛ پلتفرمی که کوکیهای شما را ذخیره نکند و اختیار تمامی دادهها و اطلاعات شخصی شما (نظیر پروفایل کاربری، ایمیلها، کوکیها، سوابق سرچ، پسوردها و …) را به خودتان واگذار کند. شاید چنین چیزی در ظاهر عجیب به نظر برسد اما خبر خوش این که امروزه اپلیکیشن های غیرمتمرکز این امکان را برای ما محیا ساختهاند.
از منظر تخصصیتر، اپلیکیشن غیرمتمرکز یک وبسایت مبتنی بر پلتفرم های بلاک چینی متن باز است که توسط قرارداد هوشمند به شبکه بلاک چین متصل میشود. در وبسایت های متمرکز، کاربران توسط یک رابط کاربری به نام ای پی آی (API) به دیتابیس وبسایت متصل میشوند؛ در حالیکه در اپلیکیشن های غیرمتمرکز، کاربران توسط قرارداد هوشمند به شبکه بلاک چین متصل خواهند شد. بنابراین در نرم افزارهای غیرمتمرکز، قرارداد هوشمند نقش ای پی آی و بلاک چین نقش دیتابیس های سنتی را ایفا کرده و وجود هر دوی آنها ضروری خواهد بود. ظاهر نرم افزارهای غیرمتمرکز با انواع متمرکز تفاوتی نداشته و فرانت اند (frontend) آنها یکسان است. نقطه تمایز این دو در استفاده نرم افزارهای غیرمتمرکز از بلاک چین در قسمت بک اند (backend) است. امروزه بسیاری از توسعهدهندگان علاقهمند به راهاندازی اپلیکیشن غیرمتمرکز خود بوده و از پلتفرمهای بلاک چینی مختلف با قابلیت اجرای قرارداد هوشمند (که در قسمت بعد به برخی از آنها اشاره میکنیم) برای این کار استفاده میکنند. اتریوم، ترون، EOS و بلاک استک (Blockstack) از جمله پلتفرمهای بلاک چینی پرطرفدار در میان توسعه دهندگان، برای ساخت اپلیکیشنهای غیرمتمرکز هستند.
چین لینک (Chainlink)، بریو (Brave) ، آگر (Augur) ، استورج (storj) و چین یارد (Chainyard) نمونههایی موفق از اپلیکیشن های غیرمتمرکز بلاک چینی هستند. در ایران نیز سامانه کارچین (Carchain) از جمله اپلیکیشن های غیرمتمرکز در دست توسعه در حوزه خدمات حمل و نقل است. در اینجا به معرفی دو نمونه از اپلیکیشنهای غیرمتمرکز اتریوم میپردازیم.
اپلیکیشن شرطبندی و پیشبینی آگر (Augur)
یکی از شناختهشدهترین dapp ها در دنیای امروز، پلتفرم شرطبندی و پیشبینی مبتنی بر بلاک چین آگر (Augur) است. این پلتفرم کاربران را قادر میسازد تا بر روی نتیجه نامعلوم یک اتفاق شرطبندی کنند. در نهایت و پس از مشخص شدن نتیجه این اتفاق، افرادی که پیشبینی درست را انجام داده بودند مبلغی را به عنوان جایزه دریافت کرده و افرادی که پیشبینی آنها درست از آب در نیامده است، مبلغی را به عنوان جریمه از دست میدهند. آگر یکی از نمونههای واضح و آشکار حاکمیتزدایی و خارج کردن کنترل فعالیتهای افراد جامعه از دست دولتهاست؛ چرا که در حالت معمول، بازارهای پیشبینی توسط دولتها به عنوان نوعی از قمار و شرطبندی تلقی میشوند و فعالیت در آنها ممنوع است؛ اما ذات غیرمتمرکز بلاک چین ، امکان مخالفت با این اپلیکیشن و منع فعالیت آن را از دولتها سلب میکند.
اپلیکیشن ذخیره ابری توزیع شده استورج (storj)
یکی دیگر از dapp های معروفی که در حال حاضر مشغول به فعالیت است، اپلیکیشنی به نام storj است. storj نرمافزار غیر متمرکز و منبع بازی است که برای ذخیرهسازی ابری (Cloud Storage) طراحی شده و قصد دارد فرآیند ذخیرهسازی ابری را به فرآیندی سریعتر، کمهزینهتر و امنتر تبدیل کند. نرمافزارهای ذخیرهسازی ابری متمرکزی مانند Google Drive ، از تمامی مشکلات ذکر شده در بالا (در خصوص اپلیکیشن های متمرکز) رنج میبرند. این نرمافزارها به شکل بیرویهای از اطلاعات شما نسخه پشتیبان (backup) تهیه میکنند و همین امر باعث اشغال شدن پهنای باند پایگاه داده و اختلال در دسترسی شما به برخی از اطلاعات مورد نیازتان میگردد. همینطور مسئله امنیت اطلاعات و دسترسی توسعهدهندگان این نرمافزارها به اطلاعات و فایلهای شخصی شما نیز مطرح است. storj برای حل این مشکلات، از بلاک چین و روشهای رمزنگارانه منحصر بفرد آن بهره میگیرد. عملکرد این این نرمافزار به این شکل است که هر فایل رمزنگاری شدهای را به قطعات کوچکتر تقسیم میکند و آن را در بین تمامی نودها یا گرههای شبکه بلاک چین توزیع مینماید. استفاده از این روش، از اشغال شدن پهنای باند جلوگیری خواهد کرد و این اطمینان را نیز به شما خواهد داد که اطلاعات شما هرگز مورد حملاتی مانند هک قرار نمیگیرد. همچنین استفاده از روشهای رمزنگارانه مختص بلاک چین ، به هیچ شخص دیگری بجز شما اجازه دسترسی به اطلاعاتتان را نخواهد داد.
نمودار زیر سهم کاربردهای گوناگون را در میان اپلیکیشنهای غیرمتمرکز نشان میدهد.
میتوانید تمامی اپلیکیشنهای غیر متمرکز فعال بر روی بلاک چین اتریوم را از اینجا ببینید.
درباره اپلیکیشن های غیرمتمرکز بیشتر بخوانید:
صنعت مالی غیرمتمرکز یا Decentralized Finance (DeFi)
DeFi (بخوانید دیفای) از نظر لغوی، مخفف عبارت Decentralized Finance یا صنعت مالی غیرمتمرکز است. همانطور که از اسمش پیداست، دیفای در برابر صنعت مالی یا اقتصاد متمرکز (Centralized Finance/CeFi) قرار میگیرد؛ یعنی دقیقاً اقتصادی که امروزه بر جهان حاکم است. defi را شاید بتوان در حال حاضر، بزرگترین دستاورد اتریوم و بزرگترین گام آن در جهت دستیابی به اهدافی دانست که ویتالیک بوترین از ابتدا در سر داشت. به طور کلی هر فعالیتی که به امور مالی و اقتصادی مرتبط باشد، قابلیت تمرکززدایی داشته و میتوان آن را در زمره کاربردهای DeFi به شمار آورد. در تصویر زیر برخی از مهمترین کاربردهای DeFi و همچنین نمونههایی از اپلیکیشنهای ساخته شده در این حوزه را مشاهده میکنید.
در میان تمامی این کاربردهای ذکر شده، پلتفرمهای وام دهی غیرمتمرکز و صرافی های غیرمتمرکز از اهمیت ویژهای برخوردارند که در ادامه توضیحاتی درباره آنها ارائه خواهیم داد:
پلتفرمهای وام دهی غیرمتمرکز
اپلیکیشن های وامدهی و وامگیری (lending and borrowing) اتریوم به معنای حقیقی کلمه، انقلابی را در صنعت مالی در جهان به پا کردند. امروزه ما در اتریوم با پروژههایی روبهرو هستیم که دقیقاً مانند بانکها اما با شرایط خیلی راحتتر از آنها، به کاربران خود وام میدهند. دریافت وام از این اپلیکیشنها (بر خلاف بانکها) نیازمند هیچگونه ضامن معتبر، فیش حقوقی و یا بروکراسی اداری نیست و همینطور در مدت زمان خیلی کوتاهتری به انجام میرسد. هر شخصی میتواند در ازای سپردهگذاری مقدار مشخصی از سرمایه، n برابر آن را تحت عنوان وام از این پلتفرمها دریافت کند و سپس در هنگام تسویه، مبلغی را به عنوان سود به آنها بپردازد (مقدار n ، متغیری است که در اپلیکیشنهای مختلف متفاوت است و از ابتدا در کد قرارداد هوشمند هر اپلیکیشن مشخص میگردد).
همچنین شخصی که مقدار مشخصی از یک رمز ارز را خریداری کرده و قصد فروش آن را نیز ندارد، میتواند به جای صرفاً نگهداری دارایی خود، آن را به تأمین نقدینگی پلتفرمهای وام دهی اختصاص دهد تا از طریق آن، به افراد متقاضی، وام ارائه شود. این شخص سپس در ازای سپردهگذاری سرمایه خود، مبلغ مشخصی را تحت عنوان سود دریافت خواهد کرد. این فرآیند تقریباً چیزی شبیه به سپردهگذاری بلند مدت سرمایه در بانکهاست؛ با این تفاوت که سپردهگذاران هیچ تعهدی برای عدم بازپسگیری سپرده خود در یک مدت زمان مشخص ندارند و در هر زمان دلخواه، میتوانند سرمایه خود را از این پلتفرم جدا کنند. چنین پروژههایی، هیچ تفاوتی در بین افراد مختلف جامعه قائل نمیشوند و هر شخصی با هر شغل، حرفه و سنی میتواند از آنها استفاده کند؛ در حالی که در سیستم مالی متمرکز حاکم بر جامعه، برای مثال افراد زیر سنین قانونی توانایی بازگشایی حساب و دریافت خدمات بانکی را نخواهد داشت.
یکی از همین پروژه های دیفای مختص وام دهی که در حال حاضر به شدت نیز با استقبال کاربران مواجه شده است، اپلیکیشن غیرمتمرکزی به نام MakerDAO (میکردائو) است. MakerDAO یک اپلیکیشن مختص وام دهی با دو توکن منحصر بفرد به نامهای DAI و MKR است. در اپلیکیشن MakerDAO ، از توکن DAI برای ارائه وام به کاربران و همچنین تسویه آن استفاده میشود. DAI یک استیبل کوین با پشتوانه رمز ارز است که قیمت آن همواره یک دلار است؛ هر شخصی در صورت تمایل برای دریافت مقدار مشخصی از DAI ، باید ابتدا ۱.۵ برابر مبلغ درخواستی را در قالب اتر (و یا رمز ارز دیگری به نام BAT) در این اپلیکیشن سپردهگذاری کند. سپس هنگامی که میزان DAI دریافت شده به علاوه میزان سود از پیش تعیین شده توسط این شخص پرداخت شد و اصطلاحاً وام تسویه گردید، میزان اتر (یا BAT) سپردهگذاری شده نیز آزاد شده و به حساب شخص بازگردانده میشود (در خصوص کارایی توکن MKR در قسمت «سازمان خودگردان غیرمتمرکز یا DAO» همین مقاله توضیح خواهیم داد). MakerDAO در زمان نگارش این مقاله دومین پروژه defi از لحاظ حجم بازار و میزان سرمایه قفل شده توسط کاربران است. در صورت تمایل برای مشاهده تمامی پروژه های defi به علاوه رتبهبندی و حجم بازار آنها، میتوانید به این سایت مراجعه کنید: defipulse.com .
صرافی های غیرمتمرکز
همانطور که پیشتر اشاره کردیم، یکی دیگر از انواع پروژه های defi که با استقبال کاربران مواجه شده است، اپلیکیشن های غیرمتمرکز تبدیل ارز دیجیتال و یا اصطلاحاً صرافی های غیرمتمرکز هستند. دلیل این نامگذاری این است که این اپلیکیشنها نیز دقیقاً مانند صرافی های متمرکز ، وظیفه تبدیل ارزهای دیجیتال را بر عهده دارند؛ اما تفاوت این صرافی های غیر متمرکز یا اصطلاحاً DEX ها (Decentralized Exchanges) با انواع متمرکز آنها در این است که این صرافی ها قراردادهای هوشمندی بر پایه بلاک چین هستند، نه سازمانهایی متمرکز با یک تیم مدیریتی مشخص و از پیش تعیین شده. استفاده از چنین صرافیهایی به دلیل حذف واسطه، کارمزد انجام تراکنش های تبدیل را به طور چشمگیری کاهش میدهد و نیاز به اعتماد به یک شخص سوم را مرتفع مینماید.
یکی از همین صرافی های غیرمتمرکز که مختص بلاک چین اتریوم است و امکانات خوبی را نیز در اختیار کاربران خود قرار میدهد، صرافی غیرمتمرکز یونی سواپ (Uniswap) است. یونی سواپ امکان تبدیل توکنهای ERC-20 به یکدیگر و به اتر را فراهم میکند و نسبت به سایر صرافی های غیرمتمرکز، میزان گس کمتری را نیز از کاربران خود دریافت مینماید.
اپلیکیشن غیرمتمرکز یونی سواپ متشکل از دو قرارداد هوشمند بر روی اتریوم و یک فرانتاند مختص کاربران است که کار با آن را به فرآیند بسیار راحتی تبدیل کرده است. یونی سواپ در زمان نگارش این مقاله، در ردهبندی پروژههای دیفای سایت defipulse.com از لحاظ حجم بازار، در جایگاه ششم قرار دارد.
پروژه های دیفای در دنیای امروز ما، بیش از آن چه که تصور کنید با یک سیر صعودی و تصاعدی از استقبال کاربران مواجه شدهاند. طبق اطلاعات سایت دیفای پالس ، تاکنون ۸.۳۵ میلیارد دلار سرمایه توسط افراد از جای جای جهان در این پروژهها قفل شده است؛ در حالی که این مقدار تا ماه های می و ژوئن ۲۰۲۰ (سه الی چهار ماه پیش) ، چیزی حدود ۱ میلیارد دلار بود. پیشبینیها حاکی از آن است که این روند صعودی ادامه خواهد داشت و به همین علت است که بسیاری از متخصصین و افراد فعال در حوزه بلاک چین و کریپتو ، سال ۲۰۲۰ را سال دیفای میخوانند.
لازم به ذکر است که defi یک مفهوم جدید است و مانند هر نوآوری دیگری، ممکن است مشکلات خاص خود را داشته باشد. محبوبیت ناگهانی defi ممکن است باعث روی آوردن بسیاری از افراد با پروژههای نه چندان منطقی به این نوآوری شود و به همین دلیل است که به عقیده برخی، بخشی از سرمایه قفل شده در آن میتواند تنها یک حباب باشد. تمامی پروژه های دیفای ، پروژه های موفقی نیستند و ممکن است بسیاری از آنها دیر یا زود با شکست مواجه شوند؛ اما مسئلهای که وجود دارد این است که گذشت زمان و مقبولیت گستردهتر این پروژه ها در بین افراد جامعه، این کاستیها و مشکلات را نیز تا حد زیادی برطرف خواهد کرد، حبابها و پروژههای غیرواقعی را از پروژههای کاربردی تمییز خواهد داد و باعث حرکت بیش از پیش جامعه به سمت اهدافی خواهد شد که ویتالیک بوترین در هنگام راهاندازی اتریوم برای خود متصور بود.
درباره DeFi بیشتر بخوانید:
سازمان های خودمختار غیرمتمرکز یا DAO ها
عملکرد یک سازمان خودمختار غیرمتمرکز یا Decentralized Autonomous Organization (DAO) از جهت غیرمتمرکز بودن، غیرقابل تغییر یا سانسور بودن اطلاعات، مشارکت همگانی در اتخاذ تصمیمات، شفافیت و امنیت دقیقاً مشابه سایر فناوریهای مبتنی بر بلاک چین است. به طور خیلی خلاصه، DAO سازمان یا شرکتیست که هیچ رییس یا مدیر مشخصی نداشته و از سلسله مراتب مدیریتی تبعیت نمیکند. در این نوع سازمانها، قوانین از پیش نوشته شده که در قالب کد در درون بلاک چین وجود دارند، نقش مدیریتی را ایفا میکنند. طبق این تعریف نیز میتوان گفت بیت کوین اولین سازمان خودمختار و غیرمتمرکز دنیاست که قوانین آن در قالب کد تبیین شده است، به صورت خودگردان و بدون نظارت و کنترل قدرتهای خارجی اداره میشود و همگی اعضایی که در ادبیات شبکه بیت کوین آنها را فول نود مینامیم، به یک اندازه در تصمیمگیریها ایفای نقش میکنند. اما فناوری قرارداد هوشمند که با ظهور اتریوم در اختیار همگان قرار گرفت، راه را برای جذب عموم مردم به راهاندازی و توسعه DAO ها باز کرده و این مفهوم را بیش از پیش به شکلی که امروزه از آن میبینیم نزدیک کرد.
تأسیس یک DAO پیش از هر چیزی به یک قرارداد هوشمند برای کدنویسی و تنظیم قوانین و مقررات این سازمان یا شرکت خاص احتیاج دارد. وقتی که قوانین و مقررات و شیوه عملکرد DAO نوشته شد و در قالب کد در قرارداد هوشمند قرار گرفت، نوبت به مرحله جمعآوری بودجه اولیه میرسد. جذب سرمایه اولیه مرحله بسیار مهمی از تأسیس یکDAO به شمار میرود؛ چرا که هم بودجه اولیه و مورد نیاز برای تأسیس آن را فراهم کرده و هم سهامدارانی که مانند اعضای هیئت مدیره در تعیین سرنوشت و آینده آن نقش دارند را مشخص میکند (افرادی که برای تأسیس یک DAO سرمایهگذاری میکنند، به سهامداران آن تبدیل میشوند). زمانی که مرحله جذب سرمایه سپری شد و یک DAO رسماً تأسیس گردید، با یک سازمان کاملاً خودمختار و مستقل روبرو هستیم که در آن تصمیمات با رأی اکثریت اتخاد شده و تمامی این تصمیمات و تراکنشهای انجام شده به صورت واضح و غیرقابل تغییر بر روی شبکه بلاک چین آن ثبت میشوند. هر یک از اعضای یک DAO که قصد مطرح کردن پیشنهادی در رابطه با عملکرد و یا آینده آن را داشته باشد، پیشنهاد خود را در قالب یک پروپوزال (proposal) کدنویسی کرده و بر روی شبکه بلاک چین آن قرار میدهد. این پیشنهاد سپس به رأی گذاشته شده و در صورت تأیید اکثریت اعضا، به مرحله اجرا میرسد. درصدی از اعضا که تأییدشان برای عملی شدن یک پیشنهاد در DAO ضروری است میتواند متغیر باشد. این درصد باید در کد اولیهای که مربوط به قوانین و مقررات DAO است ذکر شود. میتوانید نمونههایی از مطرحترین DAOها را در اینجا مشاهده کنید.
درباره DAO بیشتر بخوانید:
ICO ها
در قسمتهای قبل اشاره کردیم که یکی از عواملی که ویتالیک بوترین را به فکر راهاندازی پلتفرمی مانند اتریوم انداخت، عدم وجود یک بلاک چین مرجع برای راهاندازی رمز ارز های جدید بود. تا پیش از ظهور اتریوم ، هر شخص یا سازمانی برای تأسیس یک رمز ارز جدید، نیاز داشت تا بلاک چین منحصر بفرد خود را راهاندازی کند؛ و راهاندازی یک بلاک چین نیز کار کمهزینه و کم دردسری نیست. بنابراین ویتالیک تصمیم گرفت تا پلتفرم خود را طوری طراحی کند که به همگان این امکان را بدهد تا رمز ارز های جدید خود را با بهرهگیری از قرارداد هوشمند ، بر روی آن راهاندازی کنند. این اتفاق، در نهایت به وقوع پیوست و با موفقیت گسترده و چشمگیری نیز روبهرو شد.
چرا به ICOها نیاز داریم؟
در حال حاضر، برای راهاندازی یک رمز ارز جدید دو راه وجود دارد؛ اول اینکه یک بلاک چین مجزا از سایر بلاک چینهای موجود راهاندازی شود و رمز ارز مورد نظر بر روی این بلاک چین تعریف شود. چنین راهکاری مسلماً ریسکهای مالی زیادی را به همراه دارد. چرا که راهاندازی یک بلاک چین مستقل، مستلزم طی مراحل پژوهشی، آزمایشی و اجراییست که خود پروسه زمانبر و پرهزینهای است. ضمن اینکه پس از راهاندازی چنین بلاک چینی، باید به دنبال بازاریابی آن و معرفی آن به جامعه توسعه دهندگان و کاربران بود. در صورتی که این پروژه به اهداف نهایی خود نرسیده و شکست بخورد، تمامی این هزینهها به هدر خواهد رفت.
راهکار دوم، ایجاد یک توکن بر بستر بلاک چینهای موجود فعلیست. در این حالت، شخص یا شرکت سازنده رمز ارز ، میتواند رمز ارز خود را برای مدتی در قالب یک توکن بر روی بلاک چین اتریوم (یا سایر پلتفرمهایی که قابلیت اجرای قراردادهای هوشمند را دارند) پیادهسازی کند و در طول این مدت، سرمایه لازم برای تأسیس بلاک چین خود را با پیشفروش بخشی از توکنها جمعآوری نماید. مسلماً راهکار دوم صرفه مالی قابل توجهی برای سازندگان این رمز ارز به همراه خواهد داشت؛ چرا که با هزینه بسیار کمتر (در مقایسه با حالت اول) و بدون نیاز به بلاک چین مستقل، به جامعه کاربران و توسعه دهندگان بلاک چین میزبان دسترسی یافته و از آن بهره میبرد. ضمناً در صورت عدم موفقیت پروژه در پیشفروش توکنها، صاحبان پروژه پیش از پرداخت ضررهای هنگفت از این موضوع اطلاع یافته و گامهای بعدی را متناسب با نتایج کسب شده برمیدارند.
به عنوان مثال میتوان از پروژه بلاک چین TON (telegram open network) که به منظور ایجاد رمز ارز گرام (Gram) توسط شرکت تلگرام توسعه داده شده بود یاد کرد. این پروژه علی رغم محبوبیت فراوان، تیم فنی قوی و وایت پیپر قابل دفاع، در مراحل کسب مجوز از نهادهای قانون گذار امریکایی (SEC) ناکام ماند و همین موضوع باعث ضرر هنگفت صاحبان پروژه شد.
این راهکار صرفهجویانه، امروزه با عنوان ICO (Initial Coin Offering) یا عرضه اولیه سکه شناخته میشود. صاحبان پروژههای رمز ارز برای راهاندازی یک ICO ، ابتدا باید طرح توجیهی خود برای عموم کاربران را در قالب یک وایت پیپر در وبسایت رسمی خود ارائه دهند. سپس توکنهای رمز ارز خود را در قالب قرارداد هوشمندی در پلتفرم اتریوم (یا سایر پلتفرمهای ممکن) تعریف کرده و جزئیات پیشفروش آن از جمله حجم عرضه، قیمت اولیه، میزان پیشفروش از کل توکنها، و سهم تیم توسعه دهندگان از توکنها را به صورت شفاف اعلام کنند.
شاید جالب باشد که بدانید بسیاری از رمز ارز های موفق و نامآشنایی که امروزه در بازار کریپتو در حال فعالیت هستند نیز در ابتدا توکنی بر روی بلاک چین اتریوم بودهاند. رمز ارز ترونیکس (TRX) که در زمان نگارش این مطلب (شهریور ۹۹) در ردهبندی سایت کوینمارکتکپ در جایگاه ۱۵ قرار دارد، یکی از همین نمونههاست. این رمز ارز در تاریخ ۲۵ ژوئن سال ۲۰۱۸ به طور رسمی استقلال خود از اتریوم را اعلام کرد و اولین بلاک (بلاک جنسیس) از بلاک چین مستقل خود یعنی ترون (Tron) را استخراج نمود. ترون به مدیریت جاستین سان (Justin Sun)، در حال حاضر یکی از رقبای اتریوم محسوب میشود. در تصویر زیر بخشی از توکنهای مبتنی بر استاندارد ERC20 راه اندازی شده بر روی بلاک چین اتریوم را مشاهده میکنید.
درباره ICOها بیشتر بخوانید:
سایر پلتفرم های بلاک چینی با قابلیت اجرای قراردادهای هوشمند
علاوه بر اتریوم، پلتفرمهای دیگری نیز امکان پیادهسازی قراردادهای هوشمند بلاک چینی را برای توسعه دهندگان فراهم میکنند؛ اما هر آنچه که تا به این جا در مورد قراردادهای هوشمند گفتیم، مربوط به بلاک چین اتریوم بود. دلیل آن نیز واضح است: اتریوم اولین بلاک چین دنیاست که قابلیت اجرای قراردادهای هوشمند را فراهم کرده و از بسیاری جهات محیط فوقالعادهای را برای اجرای این قراردادها در اختیار کاربران قرار میدهد. با این وجود، مشکلی که اتریوم (همانند بیت کوین) همواره از آن رنج میبرد، مسئله مقیاسپذیری است؛ به این معنی که تعداد زیاد کاربران آن و استفاده از الگوریتم اجماع اثبات کار، در غالب مواقع منجر به کندی انجام فعالیت در آن میشود. به علاوه، مسئله دیگری که ممکن است برخی را به فکر استفاده از بلاک چین های دیگر به جای اتریوم برای اجرای قرارداد هوشمند بیاندازد، مسئله کارمزد اجرای قرارداد یا همان قیمت گس است. در حال حاضر برخی از پلتفرم های بلاک چینی قابلیت پیادهسازی و اجرای قراردادهای هوشمند را بدون نیاز به پرداخت کارمزد فراهم میسازند (هرچند که ممکن است از بسیاری جهات دیگر، ضعفهایی را نسبت به اتریوم داشته باشند). در ادامه قصد داریم به بررسی جدیترین رقبای اتریوم در این زمینه بپردازیم.
EOS
EOS یک بلاک چین طراحی و عرضه شده توسط شرکت Block.one به مدیریت برندن بلومر (Brendan Blumer) و دن لاریمر (Dan Larimer) است. یکی از تفاوتهای اساسی بلاک چین EOS با بلاک چین اتریوم، استفاده EOS از یک مکانیزم اجماع منحصر بفرد به نام اثبات سهام محول شده یا Delegated Proof of Stake (DPOS) است که برای اولین بار توسط دن لاریمر به دنیای بلاک چین معرفی شد. به طور کلی در مکانیزم های اجماع اثبات سهام ، نیازی به قدرت پردازشی بالا برای حل مسائل پیچیده ریاضی و محاسباتی نیست. در روش اثبات سهام هر کسی که قصد تبدیل شدن به یک نود اعتبارسنج را دارد، باید ابتدا مقداری دارایی را در پلتفرم بلاک چین مورد نظر به عنوان سهام اولیه سپردهگذاری یا اصطلاحاً استیک کرده و سپس نسبت به میزان سهام خود و مدت زمان سپردهگذاری، در فرآیند اعتبارسنجی مشارکت کند.
تفاوت روش اثبات سهام محول شده با روش اثبات سهام در این است که در روش DPoS، هر کسی که ارز یا توکن دیجیتالی بر روی این بلاک چین داشته باشد میتواند در طی یک رأیگیری که به طور مداوم در حال انجام است به ۲۱ نماینده برای اعتبارسنجی بلاکها رأی بدهد؛ قدرت رأیدهی کاربران متناسب با میزان کوینهای سپردهگذاری شده است. از آن جایی که در این بلاک چین مسئولیت اعتبارسنجی تراکنش ها و قراردادها بر عهده فقط ۲۱ نماینده میباشد، سرعت به تأیید رسیدن و اجرا شدن آنها به طرز چشمگیری بیشتر از سایر بلاک چین هاست؛ همین مسأله موجب برتری کلیدی اجرای قراردادهای هوشمند بر روی بلاک چین EOS شده است. طبق ادعای EOS ، این بلاک چین قادر است در هر ثانیه ۴۰۰۰ تراکنش به ثبت برساند.
یکی دیگر از قابلیتهای EOS که ممکن است باعث شود برخی برای پیادهسازی قرارداد هوشمند استفاده از آن را به اتریوم ترجیح دهند، عدم نیاز به پرداخت کارمزد است. دلیل این مسئله نیز به کار گیری روش اثبات سهام واگذار شده است. در واقع در بلاک چین اتریوم به دلیل استفاده از روش اثبات کار ، توان پردازشی ماینرها به صورت اجارهای در اختیار توسعه دهندگان قرار داده شده و دقیقاً به همین علت است که توسعه دهندگان موظفند در ازای استفاده از این توان پردازشی، مبلغی را به عنوان کارمزد به آنها بپردازند؛ در حالی که در بلاک چین EOS ، کاربران به اندازه سهام استیک کرده در بلاک چین ، بر روی توان پردازشی شبکه مالکیت پیدا میکنند و دیگر احتیاجی به پرداخت یک مبلغ مشخص به عنوان کارمزد نیست. برای مثال اگر ۱۰ درصد سهام موجود در بلاک چین EOS متعلق به شما باشد، در این صورت ۱۰ درصد توان پردازشی شبکه نیز به شما تعلق خواهد داشت و شما میتوانید به اندازه این توان پردازشی، به انجام تراکنش و اجرای قراردادهای هوشمند بپردازید.
لازم به ذکر است که زبان برنامهنویسی استفاده شده برای اجرای قرارداد هوشمند بر روی بلاک چین EOS زبان WASM بوده که از ویژگیهای آن میتوان به سرعت، امنیت و قابلیت دیباگ کردن اشاره کرد.
با وجود همه نکات ذکر شده، این نکته را نیز نباید فراموش کرد که بلاک چین EOS به اندازه اتریوم از ویژگی توزیع شدگی و غیرمتمرکز بودن که ذات اصلی فناوری بلاک چین است برخوردار نیست؛ بنابراین میتواند تا حدی مشکلات سیستمهای سنتی و متمرکز را با خود به همراه داشته باشد (البته مسلماً نه به اندازه سیستمهای کاملاً متمرکز.(
ترون (TRON)
بلاک چین ترون ، یکی دیگر از بلاک چین هاییست که از قراردادهای هوشمند پشتیبانی میکند. ترون در ابتدا یک توکن بر روی بلاک چین اتریوم بود؛ اما در تاریخ ۲۵ ژوئن ۲۰۱۸ توسط جاستین سان (Justin Sun) بنیانگذار و مدیر عامل این شرکت، به طور رسمی از اتریوم جدا شد و بلاک جنسیس (اولین بلاک) خود را بر روی بلاک چین مستقل ترون ایجاد کرد. ترون برای اجرای قراردادهای هوشمند از ماشین مجازی مخصوص خود به نام TRON Virtual Machine یا TVM استفاده میکند. ماشین مجازی ترون نیز یک ماشین تورینگ کامل بوده که برای اکوسیستم ترون طراحی شده است. البته لازم به ذکر است که این ماشین مجازی با ماشین مجازی اتریوم کاملاً منطبق بوده و تمامی قراردادهای هوشمند نوشته شده بر روی اتریوم ، توسط ماشین مجازی ترون نیز قابل اجرا هستند. تطبیقپذیری ماشین مجازی ترون و اتریوم نیاز توسعهدهندگان برای تسلط به یک زبان برنامهنویسی جدید را مرتفع کرده است. تمامی توسعهدهندگان میتوانند توسط محیطهای توسعه زبان برنامهنویسی سالیدیتی (که در بالا ذکر کردیم، مانند Remix)، قرارداد هوشمند خود را کدنویسی کرده و سپس آن را بر روی بلاک چین ترون به اجرا در بیاورند. شاید بتوان گفت تنها تفاوت بلاک چین های ترون و اتریوم که بر نحوه اجرای قراردادهای هوشمند در آنها تأثیرگذار است، استفاده ترون از مکانیزم اجماع اثبات سهام محول شده است. ترون نیز مانند EOS از الگوریتم اجماع اثبات سهام محول شده (DPOS) بهره میبرد؛ که همین مسئله این بلاک چین را از نظر مزایا و معایب اجرای قراردادهای هوشمند به بلاک چین EOS نزدیک میکند. استفاده ترون از این مکانیزم اجماع باعث افزایش چشمگیر مقیاسپذیری این بلاک چین نسبت به اتریوم شده است؛ تا به حدی که طبق ادعای وبسایت رسمی ترون، این بلاک چین قادر است چیزی حدود ۲۰۰۰ تراکنش را در ثانیه انجام دهد. این مقدار برای اتریوم و بیت کوین به ترتیب ۲۵ و ۳ الی ۶ تراکنش در ثانیه است.
کاردانو (Cardano)
یکی دیگر از بلاک چین های با قابلیت اجرای قراردادهای هوشمند و اپلیکیشن های غیرمتمرکز ، بلاک چین کاردانو است که توسط یکی از همبنیانگذاران اتریوم به نام چارلز هاسکینسون (Charles Hoskinson) راهاندازی شد. کاردانو ویژگیهای جالب و منحصر بفردی را با خود به همراه دارد. امنیت و مقیاس پذیری در بلاک چین کاردانو بوسیله ساختار و طراحی چند لایه آن تأمین شده و روش اثبات سهام منحصر به فرد آن به نام اروبروس (Ouroboros) نیز به افزایش مقیاس پذیری در آن میانجامد. از دیگر نقاط قوت کاردانو، میتوان به تیم توسعه دهندگان آکادمیک این پروژه اشاره کرد.
زبان برنامهنویسی مورد نیاز برای کدنویسی قرارداد هوشمند بر روی بلاک چین کاردانو، زبان پلوتوس (Plutus) است که یک زبان برنامهنویسی طراحی شده بر پایه هاسکل (Haskell) میباشد. هاسکل زبان استفاده شده برای کدنویسی بلاک چین کاردانو است. پلوتوس و هاسکل هر دو زبانهای برنامهنویسی تابعگرا یا فانکشنال (functional) هستند. زبانهای برنامهنویسی تابعگرا نسبت به انواع دستوری (imperative) امنیت شبکه را افزایش میدهند، از خوانایی بالایی برخوردارند، تغییر دادن کدها در آنها راحتتر است که همین مسئله میتواند به سهولت توسعه در آنها بینجامد و همینطور قابلیت جداسازی تابعها در آنها، به آزمایش و دیباگ کردن تابعهای مختلف کمک میکند.
مدیران بلاک چین کاردانو در طی یک کنفرانس مطبوعاتی آنلاین که در تاریخ ۲ و ۳ ژوئن ۲۰۲۰ برگزار کردند، از پلتفرم قرارداد هوشمند این بلاک چین به نام گوگن (Goguen) خبر داده و آن را پلتفرم قرارداد هوشمندتر کاردانو خواندند؛ که همین مسئله از رقابت جدی کاردانو و اتریوم در آینده نزدیک خبر میدهد.
تزوس (Tezos)
بلاک چین تزوس نیز یکی از بلاک چین هاییست که قابلیت پیادهسازی قراردادهای هوشمند و اپلیکیشن های غیرمتمرکز را در اختیار کاربران قرار میدهد. تزوس از یک مکانیزم اجماع منحصر بفرد به نام اثبات سهام سیال استفاده میکند. تفاوت اثبات سهام سیال با اثبات سهام محول شده در این است که در روش اثبات سهام سیال ، هیچ اجباری برای محول کردن مسئولیت اعتبارسنجی به تعداد مشخصی از اعتبارسنجها وجود نداشته و دارندگان توکن ها در صورت تمایل، میتوانند این کار را انجام دهند. در این روش، مالکیت و مسئولیت توکن ها در اختیار دارندگان آنها باقی مانده و همچنین در صورت بروز مشکل امنیتی، فقط نمایندگان مجازات خواهند شد. مکانیزم اجماع اثبات سهام سیال برای اولین بار توسط تزوس و بنیانگذاران آن یعنی کتلین و آرتور بریتمن (Kathleen and Arthur Breitman) به دنیای ارزهای دیجیتال معرفی شد.
زبان برنامهنویسی مورد استفاده برای کدنویسی قرارداد هوشمند بر روی بلاک چین تزوس ، زبان مایکلسون (Michelson) است. این زبان نیز مختص خود تزوس است؛ اما این بلاک چین این امکان را به شما میدهد که در صورت تمایل از زبانهای دیگری مانند پاسکال (Pascal)، پایتون (Python) و هاسکل (Haskell) نیز استفاده کنید. کد قرارداد هوشمند نوشته شده توسط این زبانها سپس به مایکلسون بازگردانی شده و آماده ثبت بر روی بلاک چین میشود.
نئو (Neo)
نئو یک پلتفرم بلاک چینی است که پیشتر انت شیرز (Antshares) نام داشت و اکنون از آن به عنوان اتریوم چینی یاد میشود. نئو توسط یک شرکت تحقیق و توسعه بلاک چین محور واقع در شانگهای چین به نام OnChain توسعه داده شد. هدف اصلی نئو تبدیل شدن به یک شبکه توزیع شده برای دستیابی به «اقتصاد هوشمند» است. در وبسایت رسمی این بلاک چین این جمله را میبینیم:
«اقتصاد هوشمند = قراردادهای هوشمند + هویت دیجیتال + داراییهای دیجیتال»
هدف نئو در واقع ایجاد یک پلتفرم قرارداد هوشمند است که از تمامی مزیتهای اتریوم برخوردار بوده؛ اما در عین حال توسعهدهندگان را به یک زبان برنامهنویسی مشخص محدود نکند. همانطور که قبلاً گفتیم، برای پیادهسازی قرارداد هوشمند بر روی بلاک چین اتریوم لازم است که کاربران به زبان برنامهنویسی سالیدیتی مسلط باشند؛ در حالی که اجرای یک قرارداد هوشمند بر روی بلاک چین نئو توسط زبانهایی مانند جاوا اسکریپت (Java Script) ، سی شارپ (C#) و پایتون (Python) نیز میسر است.
کاربردهای قرارداد هوشمند
تا به این جا درباره مفهوم اولیه قراردادهای هوشمند ، ساز و کار آنها و دستاوردهایی که این قراردادها برای جامعه بشری به همراه داشتهاند به تفصیل سخن گفتیم. قراردادهای هوشمند با همه امکانات و ویژگیهایی که در اختیار دارند، این قابلیت را دارند که در صورت وجود زیرساختهای لازم، در همه ابعاد زندگی بشر مورد استفاده قرار بگیرند. برخی از حوزههایی که قراردادهای هوشمند میتوانند به طور گسترده در آنها مورد استفاده قرار گرفته و موجب بروز تحولی عظیم در آنها شوند عبارتند از:
هویت دیجیتال
یکی از شاخصترین کاربردهای قرارداد هوشمند، کاربرد آن در حیطه هویت دیجیتال است. هویت هر شخصی، یکی از باارزشترین داراییهای اوست؛ و هویت دیجیتال (در صورتی که به نحو صحیح مورد استفاده قرار بگیرد) میتواند فرصتهای فوقالعادهای را در اختیار افراد قرار دهد. برای مثال در دنیای امروز، همه ما در حال استفاده از سایتهای اینترنتی هستیم که خدمات مختلفی را به کاربران ارائه میدهند. اما نکتهای که باید به آن توجه کنیم این است که تمامی این سایتها (خواسته یا ناخواسته) هویت و اطلاعات ما را در اختیار شرکتهایی قرار میدهند که به این اطلاعات برای پیشبرد برخی از اهداف خود نیاز دارند. در چنین شرایطی، هویت دیجیتالی که با استفاده از قرارداد هوشمند برای افراد ساخته میشود به کمک آنها آمده و به سایتها و شرکتهای خدماتی نیز این امکان را میدهد که بدون دسترسی به هویت واقعی اشخاص، از هویت دیجیتال مشتریان خود برای شناخت آنها استفاده کنند.
معاملات بینالمللی و پرداخت های برون مرزی
معاملات بینالمللی و برون مرزی یکی از حوزههاییست که استفاده از قرارداد هوشمند در آن میتواند موجب بروز یک انقلاب و تحول عظیم شود. وجود قرارداد هوشمند، نقل و انتقال بینالمللی پول و کالا را به شدت تسهیل میکند، موجب افزایش نقدشوندگی داراییها میشود و قدرت مالی تأمینکنندگان، خریداران و موسسات را بهبود میبخشد.
البته لازم به ذکر است که استفاده از قرارداد هوشمند برای انجام معاملات بینالمللی و پرداختهای برونمرزی مستلزم دستیابی به یک استاندارد جهانی و به کار گیری آن است. در صورت دستیابی به این استاندارد، پیچیدگیهای قانونی موجود نیز بر طرف خواهد شد و یک معیار جهانی برای حل و فصل اختلافها به دست خواهد آمد.
سرویس های خدمات مالی (مانند سیستمهای وامدهی و رهن و اجاره)
یکی از کاربردهای مهم و اساسی قرارداد هوشمند، بهبود سرویسهای خدمات مالی از جمله سیستمهای وامدهی و سیستمهای رهن و اجاره است. قرارداد هوشمند این قابلیت را دارد که طرفین قرارداد را به صورت مستقیم و بیواسطه به یکدیگر متصل کرده و از برآورده شدن شروط و ضوابط و تکمیل فرآیند قرارداد اطمینان حاصل کند. همچنین فرآیند قراردادی که به صورت هوشمند منعقد شود، یک فرآیند دقیق و عاری از خطا خواهد بود. برای مثال زمانی که از یک قرارداد هوشمند برای رهن یک ملک استفاده شود، این قرارداد توانایی پیگیری تمامی پرداختها و انتقال مالکیت ملک به شخص مورد نظر در یک برهه زمانی خاص را خواهد داشت.
ضبط و نگهداری اطلاعات مالی
اطلاعات مالی برای سازمانها از اهمیت بسیار بالایی برخودار است؛ قرارداد هوشمند امکان ضبط و نگهداری از اطلاعات مالی را به طور دقیق و شفاف در اختیار سازمانها قرار میدهد. با استفاده از قرارداد هوشمند ، تمامی کارکنان یک شرکت یا سازمان میتوانند به طور هماهنگ و همزمان اطلاعات مالی مورد نیاز را ثبت کرده و همین امر به آنها در کاهش هزینهها (برای مثال هزینههای حسابداری) کمک میکند.
حاکمیت و امور دولتی
به طور خلاصه، قراردادهای هوشمند گام مهمی در جهت اتوماسیون فرآیندها هستند؛ به همین علت استفاده از آنها میتواند برای دولتها و حکومتها بسیار مطلوب باشد. یکی از کاربردهای قرارداد هوشمند در سیستم دولتی، استفاده از آن برای انتخابات و رأیگیری الکترونیک است. سایر قابلیتهای قرارداد هوشمند (از جمله هویت دیجیتال که در بالا به آن اشاره کردیم) نیز میتوانند برای دستیابی به این هدف مورد استفاده قرار بگیرند.
مدیریت زنجیره تأمین
قرارداد هوشمند به طرق مختلفی به بهبود زنجیره تأمین در صنایع کمک میکند. برای مثال، با استفاده از قرارداد هوشمند میتوانیم تعداد موجود از یک محصول خاص را در یک زنجیره تأمین به طور دقیق مشخص کرده و همچنین کمبودها را کشف و پیگیری نماییم.
قرارداد هوشمند به بهبود وضعیت سایر کسب و کارهایی که به نحوی با زنجیره تأمین در ارتباط هستند نیز کمک کرده و با افزایش امنیت و شفافیت، به کاهش خطر فعالیتهای کلاهبردارانه میانجامد. البته لازم به ذکر است که استفاده از قرارداد هوشمند برای زنجیره تأمین در کسب و کارها نیازمند امکانات و تجهیزات خاصی مانند اضافه کردن سنسورها و اوراکلهای دقیق به زنجیره است.
بیمه
یکی از کارکردهای مهم قرارداد هوشمند، کارکرد آن در صنعت بیمه است. صنعت بیمه یکی از بخشهاییست که در غالب مواقع اختلافات زیادی در آن به وقوع میپیوندد. قرارداد هوشمند یکی از امکاناتیست که میتواند به رفع این اختلافات کمک کند. برای مثال یک صحنه تصادف را در نظر بگیرید. اگر در این شرایط قرارداد هوشمندی داشته باشیم که تمامی اطلاعات طرفین مانند اطلاعات گواهینامه و سابقه بیمه آنها در آن ثبت شده باشد، قرارداد هوشمند میتواند به پرداخت آنی و خودکار خسارت به شخص مورد نظر بیانجامد.
خدمات درمانی
افزایش تعامل پذیری در بین مراکز درمانی مختلف و ایجاد امکان به اشتراکگذاری اطلاعات در آنها، یکی از مهمترین دلایلی است که قرارداد هوشمند را به گزینه مناسبی برای بهبود خدمات درمانی تبدیل میکند. همچنین همانطور که میدانیم، عملکرد قرارداد هوشمند به نحوی است که امنیت اطلاعات و حریم خصوصی را به طور کامل حفظ میکند؛ بنابراین نیازی به نگرانی در مورد از بین رفتن محرمانگی اطلاعات بیماران و مراجعهکنندگان نیست.
سیستمهای وام دهی
همانگونه که در بخش Defi اشاره کردیم، یکی از حوزه های اصلی کاربرد قراردادهای هوشمند، سیستم ها و پلتفرم های وام دهی هستند. قراردادهای هوشمند در این میان، قواعد و قوانین دریافت وام، بازپرداخت وام و نحوه محاسبه و دریافت سود را به صورت خودکار اجرا میکنند.
خرید و فروش و معاملات
خرید و فروش رمز ارزها در حال حاضر، غالباً از طریق صرافیهای متمرکز ارزهای دیجیتال صورت میپذیرد که خود موجب تمرکزگرایی در اصلیترین فرایند رمز ارزها یعنی معاملات آنهاست. با تکیه بر سازوکار قراردادهای هوشمند، میتوان صرافیهای غیرمتمرکزی را توسعه داد که قوانین خرید و فروش در آنها به صورت خودکار توسط کد قراردادهای هوشمند انجام میشود.
حسابهای امانی (escrow)
حساب امانی نوعی ابزار پولی است که توسط شخص ثالث در راستای منافع طرفین معامله نگهداری میشود و شامل هر چیز باارزشی مانند سند رسمی، اوراق بهادار و پول است که شخص ثالث تا زمان ایفای تعهدات طرفین معامله آن را نزد خود نگهداری میکند. با استفاده از قراردادهای هوشمند، به راحتی میتوان شخص ثالث یا واسطه را از این سیستم حذف نمود.
مشکلات و چالش های قراردادهای هوشمند
علیرغم تمام مزایایی که قراردادهای هوشمند به همراه دارند، باید به نقایص فعلی این سیستم نیز اشاره کرد؛ بلاک چینها، ابزارهای فنی جانبی، روندهای قانونی و تجربیات توسعه دهندگان هنوز به اندازهای کامل نیستند که بتوان از قراردادهای هوشمند در سطح وسیع استفاده کرد و آنها را به تمامی بخشهای جامعه بسط داد.
در حقیقت اسم قرارداد هوشمند کمی گمراه کننده است؛ همانطور که ویتالیک بوترین میگوید، این قراردادها نوعی اسکریپت پایدار هستند و نه هوشمند! این قراردادها نه بهمعنای واقعی کلمه هوشمند و نه بهمعنای حقوقی آن قرارداد هستند. قراردادهای هوشمند تنها به اندازهای که برنامهنویسان آن هوشمند هستند، توانایی بروز هوش و استعداد دارند. از طرفی از منظر حقوقی، بسیاری از شاخصهای یک قرارداد را ندارند. در اینجا به چند مورد از اساسیترین مشکلات و چالشهای قراردادهای هوشمند اشاره میکنیم:
خطای انسانی
اتوماسیون و مکانیزه شدن فرایندها، از لحظه اجرای کد آغاز میشود؛ اما باید این نکته را مدنظر داشت که کدها همیشه توسط انسانها (برنامه نویسان) نوشته میشوند؛ بنابراین احتمال اشتباه و خطا همیشه وجود دارد.
به عنوان مثال پروژه DAO و پروژه دیفای YAM، از جمله مواردی هستند که به دلیل وجود یک باگ امنیتی در قرارداد هوشمندشان هک شدند و میلیونها دلار از سرمایههای موجود در آنها به سرقت رفت.
مشکل اوراکلها
واژه اوراکل در علوم کامپیوتر، به جعبه سیاهی اطلاق میشود که همیشه حاوی جواب صحیح است. در بحث بلاک چین و قراردادهای هوشمند، اوراکل منبعی است که وظیفه دارد دادههای خارجی صحیح را به عنوان ورودی، در قرارداد هوشمند وارد کند. مسأله اینجاست که اوراکلها نیز نقطه ضعف این سیستم محسوب میشوند؛ چرا که اوراکل ها نیز خطا پذیرند و حتی ممکن است به عنوان یک پایگاه داده متمرکز هک و دستکاری شوند. برای درک بهتر این موضوع به یک مثال توجه کنید:
فرض کنید قرارداد هوشمندی برای فروش آنلاین خانه، بر روی بلاک چین ثبت شده و فروشنده در شروط قرارداد ذکر کرده است که این خانه به قیمت روز فروخته میشود. به این معنی که در کد قرارداد، بندی تعریف شده که قیمت لحظهای املاک را از سایت های آنلاین چک کرده و مطابق آن، قیمت خانه را در قرارداد بروزرسانی کند؛ سایتهای آنلاین قیمت املاک، نوعی اوراکل هستند که دادههای خارجی را به عنوان ورودی به قرارداد میدهند. نکته اینجاست که هک کردن و تغییر قیمت ها در سایت های آنلاین کار چندان سختی نیست؛ یک خریدار میتواند ابتدا با نفوذ به یک وبسایت متمرکز تعیین قیمت، داده های آن را دستکاری کرده و بلافاصله پس از بروزرسانی قیمت های جعلی در قرارداد هوشمند، مبلغ را به قرارداد انتقال دهد تا مالکیت خانه را از آن خود کند.
عدم رسمیت قانونی
با توجه به ماهیت نوظهور و ناشناخته فناوری بلاک چین و قراردادهای هوشمند برای دولت ها، این گونه قراردادها هنوز فاقد وجاهت قانونی هستند. بنابراین قراردادهای هوشمند مربوط به حوزه حقوقی (نظیر مالکیت املاک، مالکیت معنوی آثار هنری و …) هنوز توسط نهادهای قانونی به رسمیت شناخته نمیشوند؛ پس نمیتوان به مالکیت یک کالا یا یک اثر هنری روی قرارداد هوشمند استناد کرد؛ چرا که اسناد مالکیت هنوز شکل و شمایل دیجیتالی ندارند؛ بلکه فیزیکی هستند. ضمن اینکه در سایر حوزه ها همچون سیستمهای وام دهی، صرافی های غیرمتمرکز، حسابهای امانی و … نیز در صورت وقوع هرگونه کلاهبرداری، نمیتوان از دولت یا قانون انتظار رسیدگی داشت؛ چرا که اساساً هنوز قانونی برای این حوزه وجود ندارد.
هزینههای پیادهسازی
استفاده از قراردادهای هوشمند در حال حاضر اولویت هیچ یک از کسب و کارهای سنتی نیست. چرا که پیادهسازی قراردادهای هوشمند بلاک چینی، مستلزم صرف هزینههای اولیه است. این هزینهها را میتوان از دو جنبه بررسی کرد؛ اول هزینههایی که شرکتها برای تغییر سیستمهای مالی و تجاری خود و سازگاری با سیستم قراردادهای هوشمند متحمل شوند و دوم هزینههایی که بر عهده سیستم قضایی قرار میگیرد تا با سیستم قراردادهای هوشمند آشنا شده و قوانین و مقررات خود را مطابق با این قراردادها تغییر دهند.
مشکل حریم خصوصی
یکی دیگر از مشکلات قراردادهای هوشمند، عمومی بودن آنهاست. اگرچه این عمومی بودن قراردادها نوعی مزیت نیز محسوب شده و باعث افزایش شفافیت در قرارداد میشود، اما از طرفی حریم خصوصی را نیز نقض میکند. اگر دو شخص نیاز به انعقاد یک قرارداد مخفیانه با یکدیگر داشته باشند، قرارداد هوشمند گزینه مناسبی برای این کار نیست. البته لازم به ذکر است که منظور ما از شفافیت و عمومی بودن، افشای مستقیم هویت کاربران نیست. همانطور که میدانید، فناوری بلاک چین با استفاده از رمزنگاری نامتقارن و آدرس های کریپتوگرافیک، در عین حفظ شفافیت، سطحی از حریم خصوصی و ناشناس بودن را برای کاربران به ارمغان آورده است؛ با این حال این به معنای غیرقابل پیگیری بودن تمامی تراکنشها نیست؛ چرا که امروزه برخی شرکتها نظیر chainalysis ، با پیگیری زنجیره تراکنشها و تحلیل دادهها ، تا حدی امکان ردیابی هویت کاربران را ایجاد کردهاند.
مقیاس پذیری
در نهایت، آخرین مشکلی که میتوان برای قراردادهای هوشمند فعلی متصور شد، مشکل مقیاس پذیری بلاک چین است. مقیاس پذیری به بیان ساده یعنی اینکه یک شبکه بلاک چینی توانایی مدیریت چند تراکنش بر ثانیه را دارد. اهمیت این موضوع از آنجا نشأت میگیرد که در شبکه بلاک چین ، تمامی داده ها از طریق تراکنش مبادله و ثبت میشوند. اگر با افزایش میزان استفاده مردم از قراردادهای هوشمند و بالا رفتن ترافیک شبکه ، عملکرد بلاک چین مختل شده یا با تأخیر همراه باشد، قراردادهای هوشمند عملاً هیچگاه مورد پذیرش عموم جامعه واقع نخواهند شد.
در حال حاضر بلاک چین های ارائه دهنده قراردادهای هوشمند همچون اتریوم، ترون، نئو، EOS ، تزوس و … در بحث مقیاس پذیری در حال رقابت با یکدیگر هستند؛ اما مقیاس پذیرترین بلاک چین ها نیز هنوز با شبکه های پرداخت متمرکزی همچون ویزا (Visa) قابل رقابت نیستند.
ناگفتههایی درباره قراردادهای هوشمند
تکنولوژی بلاک چین و قراردادهای هوشمند، به راستی تغییری شگرف را در نحوه نگاه ما نسبت به سیستمهای سنتی ایجاد کردهاند. از زمان پیدایش قراردادهای هوشمند تا کنون، استقبال کاربران و میزان استفاده از این قراردادها همواره رو به افزایش بوده است. صنعت مالی غیرمتمرکز (DeFi) تا به امروز بخش قابل توجهی از سرمایه های فعال در سراسر جهان را به خود اختصاص داده و این روند همچنان رو به افزایش است. با این همه، معتقدیم که در مواجهه با فناوری های نوین، همواره باید هیجانات کاذب را کنترل کرد. اجازه دهید این موضع را از چند جهت بررسی و تشریح کنیم:
قرار نیست از فردا همه کسب و کارها از قرارداد هوشمند استفاده کنند!
پیاده سازی سیستم های بلاک چینی و قراردادهای هوشمند در هر کسب و کار و هر حوزهای، مستلزم درک صحیح نیاز آن کسب و کار و بررسی و امکان سنجی تغییرات آن است. آنچه مسلم است، اینکه بسیاری از کسب و کارها (در حوزه های مالی، حقوقی، حمل و نقل، زنجیره تأمین، بهداشت و درمان و …) هیچ نیازی به بلاک چینی شدن ندارند! چرا که اساساً از مشکلاتی که برای سیستمهای سنتی برشمردیم (نظیر تمرکزگرایی، تجمیع قدرت، دستکاری و سانسور و …) رنج نمیبرند. بنابراین نباید فریب بزرگنمایی عدهای محدود را خورد؛ قرار نیست بلاک چین تمام ابعاد زندگی ما را در بر بگیرد.
ابزار را با هدف اشتباه نگیریم!
تکنولوژی بلاک چین و قراردادهای هوشمند، در ادامه فناوریهای آزادی خواهانهای همچون اینترنت ظهور کردهاند. مقایسه روند پذیرش عمومی اینترنت با بلاک چین، مقایسه اشتباهی نیست؛ اما باید دقت داشت که همه اینها، ابزارهایی برای تمرکززدایی هستند و نه هدف!
هدف از توسعه بلاک چین و قراردادهای هوشمند، براندازی دولتها یا به حاشیه راندن آن نیست؛ همچنین قراردادهای هوشمند قرار نیست هیچگاه جای نهادهای قانونی را بگیرند؛ همه اینها در کنار یکدیگر ابزارهایی هستند که میتوان از آنها، برای بازگشت حقوق اولیه انسانها نظیر حفظ حریم خصوصی، کنترل بر داده ها و اطلاعات شخصی، کنترل کامل بر داراییهای مالی و … بهره برد. اگرچه برخی دولتها در ابتدای امر مخالفتهایی را با این روند نشان خواهند داد، اما در نهایت بهترین راه برای مقبولیت فناوریهای نوین، همزیستی آنها با قوانین، و مجاب کردن نهادهای قانونگذار به پذیرش و قانون گذاری این فناوریهاست. بنابراین علیرغم احترام به ویتالیک بوترین و همه فعالان عرصه قراردادهای هوشمند، ما نیز همچون کریگ رایت معتقدیم: «کد، قانون نیست!»
مراقب سوءاستفادهها و کلاهبرداری ها باشید!
یکی از آفتهای همیشگی تکنولوژیهای جدید، رشد جریانهای سوءاستفادهگر و بازارهای کلاهبرداری، در کنار بازار تکنولوژی است. در حال حاضر بسیاری از پروژههای کلاهبرداری پانزی و هرمی (به ویژه در کشور ما)، در حال فعالیتهای کلاهبردارانه با اسم قراردادهای هوشمند هستند. به عنوان مثال میتوان به پروژههایی همچون دابل وی (Double Way) ، اکو اسمارت (Eco Smart) و بنک آو ترون (Bank of Tron) اشاره کرد که متأسفانه در کشور ما نیز بیشترین طرفدار را دارند. بنابراین در مواجهه با هر پروژه جدیدی با عنوان قرارداد هوشمند (که البته بسیاری از آن ها نیز اصلاً قرارداد هوشمند محسوب نمیشوند)، انجام تحقیقات ابتدایی و مشاوره با صاحبنظران این حوزه امری ضروریست.
مراقب حوزه های پرریسک باشید!
از زمانی که اصطلاحاتی مانند دیفای بر سر زبانها افتاده، شاهد شکلگیری هزاران پروژه جدید در این حوزه هستیم. در این میان، گهگاهی پروژههایی همچون کامپوند (campound) و YFI با استقبال عظیم کاربران و سودهای نجومی یک شبه مواجه میشوند که همین امر موجب هجوم گسترده کاربران ناآگاه، به سوی این بازارها میشود. نکته قابل توجه این است که بازار دیفای علیرغم کاربردهای واقعی خود، میتواند مستعد حبابهای مالی باشد؛ بنابراین در صورت تمایل به سرمایه گذاری در این بازارها، حتماً با چشمان کاملاً باز وارد شوید. ابتدا درباره پروژه ها و نحوه سرمایه گذاری و کسب سود در آنها تحقیق کنید، و اصول سرمایه گذاری و مدیریت ریسک در بازارهای مالی را فراگیرید.
جمعبندی
در این مقاله سعی کردیم به طور خلاصه درباره ماهیت قرارداد هوشمند، چگونگی پیادهسازی آن در بلاک چین اتریوم، دستاوردها و کاربردها، و همچنین مشکلات و کاستیهای فعلی آن صحبت کنیم. پذیرش قراردادهای هوشمند و محصولات آن (همچون اپلیکیشنهای غیرمتمرکز) در میان جامعه رمز ارزها، تا به امروز با رشد امیدوارکنندهای همراه بوده است. اما این به معنی موفقیت کامل این تکنولوژی نیست. به دلیل همان مشکلات و چالشهایی که در این مقاله به آن اشاره شد، این فناوری هنوز تا دستیابی به هدف اصلی خود یعنی جلب نظر عامه مردم، کسب و کارها، سرمایه گذاران و قانون گذاران راه زیادی را پیش رو دارد. اگرچه این اتفاق امری بسیار طبیعی و معمول است؛ چرا که فناوریهای نوین و تحولگرایانه پیش از رسیدن به مرحله کاربرد، نیاز به آزمایش و چکشکاری دارند. بنابراین باید منتظر بود و دید، این قراردادها در آینده دستخوش چه تغییر و تحولاتی خواهند شد.
گردآوری و تألیف: فینمگ
سلام
بسیار عالی
متشکرم.
خیلی دوست دارم نمونه قرارداد هوشمند را ببینم.
همچنین با ساختار زبان برنامه نویسی سالیدیتی را آشنا شوم.