
-
Authorسهیل شاطری
-
نظر ها0 Comments
-
Category
قرارداد هوشمند چیست؟
قراردادهای هوشمند لایهای از فناوری بلاکچین هستند که به کاربران اجازه میدهند تا از طریق یک «واسطه روباتیک» با یکدیگر تعامل برقرار کرده و با یکدیگر تراکنش انجام دهند. یک قرارداد هوشمند را میتوان کدهای برنامهنویسی خود اجرا شونده ای (self-executing) در نظر گرفت که میتوانند دستورات خاصی را اجرا کنند.
حال، اهمیت قراردادهای هوشمند چیست؟ آنها «عدم نیاز به اعتماد» را که یکی از نیازهای بلاک چینها است، فراهم میکنند. آیا میتوانید برای پیگیری یک تراکنش آنلاین به یک فرد ناشناس اعتماد کنید؟ قطعاً خیر.
علاوه بر این، قراردادهای هوشمند قادر به خودکارسازی وظایف و میزبانی از اپلیکیشنهای غیرمتمرکز (دپها) هستند. به همین دلیل، توسعه دهنگان دیفای اغلب از آنها برای خودکارسازی وامهای فلش، وامهای استاندارد، استیکینگ و دیگر قابلیتهای منحصر به فرد استفاده میکنند.
توسعه دهنگان میتوانند اپلیکیشنهای قرارداد هوشمند را با استفاده از رابطهای ساده روی پلتفرمهای مبتنی بر بلاکچین ایجاد کنند. پلتفرمهای بلاکچینی متعددی وجود دارد که قادر به پشتیبانی از قراردادهای هوشمند هستند. این مقاله پنج پلتفرم برجسته قرارداد هوشمند Ethereum، Hyperledger Fabric، Corda، Stellar و Rootstock را با یکدیگر مقایسه کرده و همچنین بلوغ فنی آنها را بررسی میکند.
پلتفرمهای توسعه قرارداد هوشمند
پنج پلتفرم معروف قرارداد هوشمند، اتریوم، هایپر لجر فابریک، کوردا، استلار و روت استاک در این بخش مورد بحث و بررسی قرار میگیرند.
اتریوم چیست؟
اتریوم یک پلتفرم غیرمتمرکز است که امکان اجرای قراردادهای هوشمند را فراهم میکند. در مقابل سیستم اسکریپت تورینگ کاملِ (Turing Complete) بیتکوین، اتریوم زبانهای برنانهنویسیِ تورینگ کاملِ سرپنت (Serpent)، سالیدیتی (Solidity)، (Lisp-like Language) LLL و موتان (Mutan) را برای تأمین نیازهای کاربران غیر کریپتو ایجاد کرده است.
اتریوم قراردادهای هوشمند Solidity، Serpent، LLL و Mutan را به کد ماشینی تبدیل میکند که پس از آن در ماشین مجازی اتریوم (EVM) بارگذاری شده و اجرا میشود. از سوی دیگر، قراردادهای هوشمند اتریوم دارای یک فرمت دیتای (Data Format) مبتنی بر حساب (Account) هستند که در آن هر فرد فعال در شبکه توسط کیف پول دیجیتال خود شناسایی میشود.
اتریوم مانند بیتکوین از مکانیزم اجماع اثبات کار (PoW) استفاده میکند که از نظر محاسباتی پر هزینه است. با این حال، الگوریتم اجماع اتریوم به زودی از PoW به اثبات سهام (PoS) تغییر خواهد کرد. این انتقال همیشه هدف این شبکه بوده و یکی از برنامههای اساسی کامیونیتی برای رشد اتریوم به روز رسانی Eth2 بوده است. برای دادن پاداش به ماینرها در بلاکچین اتریوم، به جای بیتکوین (BTC) از اتر (ETH) استفاده میشود. همچنین، گس (Gas) به عنوان یک کارمزد داخلی برای تکمیل تراکنشها در شبکه اتریوم عمل میکند، چرا که ETH به دلیل نوسان قیمت، گزینه مناسبی برای پرداخت کارمزد نیست.
میتوان هزینه کل یک تراکنش را با استفاده از فرمول gas limit x gas price به طور غیررسمی تخمین زد، که در آن gas limit به حداکثر مقدار گسی که میتوان برای ساخت یک بلاک استفاده کرد و gas price به هزینه یک واحد گس (در ETH) اشاره دارد.
کاربران میتوانند مقادیر متفاوتی از گس را پرداخت کنند تا تراکنشهای آنها تائید شود (هر چه مقدار گس بیشتری پرداخت شود، تراکنش سریعتر تائید میشود). از آنجایی که مکانیزم PoW از نظر محاسباتی پیچیده است، ممکن است انرژی زیادی را برای استخراج بلاک هدر دهد. اما اگر این مصرف انرژی برای فعالیتهای ارزشمند مانند کمک به حل معادلات ریاضی و انجام یادگیری ماشینی (machine learning) به کار گرفته شود، قابل قبول است.
هایپرلجر فابریک چیست؟
هایپرلجر فابریک (Hyperledger Fabric) یک فناوری دفتر کل توزیع شده (بلاکچین) است که میتواند برای اجرای قراردادهای هوشمند نیز مورد استفاده قرار گیرد. برخلاف اتریوم که از ماشینهای مجازی (EVM) برای اجرای قراردادهای هوشمند استفاده میکند، قراردادهای هوشمندِ هایپرلجر فابریک از یک داکر کانتینِر (Docker container) برای اجرای کدها استفاده میکنند. برخلاف ماشینهای مجازی، کانتینرها میتوانند برنامههای قرارداد هوشمند را با هزینه کمتر و بدون به خطر انداختن Isolation اجرا کنند (به عنوان مثال، اپلیکیشنها در یک کانتینر بر روی «یک» سیستم عامل اجرا میشوند).
بنیاد لینوکس بر روی پروژه Hyperledger Fabric نظارت دارد. با این حال، آنها سرمایه گذاری قابل توجهی از IBM دریافت کردند. در هر صورت، ممکن است برخی از شما این پروژه را به عنوان بلاکچین IBM بشناسید. Fabric از زبآنهای برنامه نویسی سنتی سطح بالا مانند Java و Go به جای زبانهای قرارداد هوشمند اتریوم (معروف به Golang) استفاده میکند.
علاوه بر این، Fabric تورینگ کامل (Turing Complete) است و دیتا مدل استفاده شده توسط فابریک key-value است. یک مثال برای جفت key-value مورد زیر است: “car”: “Mercedes”. در اینجا ماشین کلید (KEY) است و مرسدس مبلغ (Value) است.
شبکه بلاکچین فابریک خصوصی است (permissioned یا کنسرسیومی) چراکه کاربردهای سازمانی گستردهای در این شبکه وجود دارد. مراجع تائید اعتبار (Certificate authorities یا CA ها) باید کاربران را قبل از پیوستن به این شبکه تائید اعتبار کنند. در این شبکه چندین نوع CA وجود دارد زیرا مسئولیتهای متنوعی وجود دارند. به عنوان مثال، مرجع تایید ثبت نام، به کاربران اجازه میدهد تا در بلاک چین ثبت نام کنند. علاوه بر این، کاربر باید پس از ثبت نام، گواهی تراکنش را از مرجع صدور گواهی تراکنش دریافت کند. در یک شبکه بلاک چین خصوصی، میتوان به سرعت به اجماع رسید.
کوردا چیست؟
برخلاف اتریوم که کاربردهای گستردهای دارد، کوردا (Corda) بر روی اپلیکیشنهای ارز دیجیتال متمرکز شده است. کوردا یک پلت فرم دفتر کل توزیع شده برای ذخیره و پردازش دادههای گذشته دارایی دیجیتال است. اما آیا کوردا از قراردادهای هوشمند پشتیبانی میکند؟ قراردادهای هوشمند Corda بر روی ماشین مجازی جاوا (JVM) کار میکنند و از زبآنهای برنامه نویسی سطح بالا مانند جاوا و کاتلین (Kotlin) استفاده میکنند. در همین حال، Corda به منظور فعال کردن قابلیت تائید اعتبار، تورینگ ناقص (Turing incomplete) است. علاوه بر این، دیتا مدلِ کوردا مبتنی بر تراکنش است.
Corda اغلب برای پلتفرمهای خصوصی استفاده میشود، که در آن کسبوکارها شبکه خود را برای تبادل امن داراییهای دیجیتال ایجاد میکنند. در پلتفرمهای بلاکچین خصوصی میتوان به سرعت به اجماع رسید. الگوریتم اجماع در کوردا Raft است.
Raft یک سرویس سفارش دهی با قابلیت تحمل خطا (CFT) است که بر مبنای «لیدر و دنبال کننده« عمل میکند، یعنی یک گره لیدر (leader Node) انتخاب میشود (در هر کانال) و گرههای دنبال کننده (follower Nodes) تصمیمات آن را تکرار میکنند. CFT پایداری پروتکل را افزایش میدهد و به الگوریتم اجازه میدهد تا فرآیند را ادامه داده و به اجماع دست یابد، حتی اگر برخی گرهها دچار مشکل شوند.
انتخاب لیدر، کپی گزارش (log replication) و تضمین ایمنی شبکه همگی از راههای دستیابی به اجماع در Raft محسوب میشوند. کوردا از یک سیستم پیامرسانی نقطه به نقطه (point-to-point) به جای مخابره جهانی (worldwide broadcasting) در بلاکچین استفاده میکند. گیرندگان پیام و اطلاعات خاصی که قرار است ارسال شود باید توسط کاربران مشخص شود.
استلار چیست؟
استلار ((Stellar مشابه کوردا یک پلتفرم تخصصی برای اپلیکیشنهای ارز دیجیتال است. استلار یک ارز دیجیتال ساده تر و قابل دسترستر از اتریوم است. از سوی دیگر، استلار از طیف گستردهای از زبانهای برنامه نویسی از جمله Python، JavaScript، Golang و PHP پشتیبانی میکند. اما آیا استلار قرارداد هوشمندی دارد؟
بله، استلار از قراردادهای هوشمند پشتیبانی میکند، اما قراردادهای استلار «تورینگ کامل» نیستند، پس قرارداد هوشمند استلار چگونه ایجاد میشود؟ قرارداد هوشمند استلار مجموعهای از تراکنشهای متصل بهم و تکمیل شده است که از محدودیتهای مختلفی استفاده میکند و برای ارسال، ذخیره و جابجایی مبالغ طراحی شده است.
Multisignature (نیاز به امضای چندین طرف برای تائید تراکنشها) و Batching/Atomicity (ترکیب عملیاتهای مختلف در یک تراکنش) دو نمونه از محدودیتها در قراردادهای هوشمند استلار هستند. با ویژگی Atomicity، اگر یکی از عملیاتها (operation) با خطا مواجه شود، بقیه تراکنش همچنان کار خواهد کرد.
استلار، مانند فابریک، کدهای برنامهنویسی را بر روی داک کانتینرها (Docker containers) اجرا میکند و در نتیجه سربار کمتری دارد. برای مثال هزینه اجرای یک تراکنش در استلار تنها 0.0000002 دلار است که تقریباً ناچیز است. علاوه بر این، انجام یک تراکنش در استلار به طور متوسط تقریباً 5 ثانیه طول میکشد، در حالی که این فرآیند در اتریوم 3.5 دقیقه زمان میبرد.
بنابراین استلار یک پلت فرم عالی برای اپلیکیشنهای ارز دیجیتال محسوب میشود. استلار مانند اتریوم از رویکرد مبتنی بر حساب (account-based) به عنوان مدل داده خود استفاده میکند. پروتکل اجماع استلار (SCP) الگوریتم اجماع این شرکت است. SCP به طرفین اجازه میدهد بدون اتکا به یک سیستم بسته برای پیگیری تراکنشهای مالی توافق برسند. از آنجا که استلار خصوصی است، رسیدن به اجماع فرآیند ساده است.
Rootstock یا RSK چیست؟
RSK در بلاکچین بیتکوین به کار میرود و امکان پردازش سریعتر تراکنشها را فراهم میکند. برای مثال RSK ممکن است یک تراکنش را در کمتر از 20 ثانیه تائید کند. در همین حال، RSK با اتریوم سازگار است (به عنوان مثال، از سالیدیتی برای اجرای قراردادها استفاده میکند). قراردادهای هوشمند Rootstock نیز تورینگ کامل است. RSK نیز ماشین مجازی اختصاصی خود را برای اجرای قراردادهای هوشمند ایجاد کرده است. مدل داده RSK نیز مبتنی بر حساب است، اگرچه RSK یک سیستم بلاک چین عمومی است.
RSK یک مکانیزم اجماع مبتنی بر PoW ساخته و آن را به صورت سبک اجرا کرده است و هزینههای سربار را کاهش داد. RSK، مانند کوردا و استلار، برای اپلیکیشنهای ارز دیجیتال طراحی شده است.
RSK از سیستمهایی که بر پایه بلاکچین نیستند بسیار امنتر است، زیرا بر روی بیتکوین ساخته شده است. با این حال، این شبکه ممکن است فشار بیشتری روی بلاک چین بیتکوین وارد کند. RSK باید راهی برای اصلاح این وضعیت پیدا کند.
مقایسه پلتفرمهای قرارداد هوشمند
جنبههای اصلی پلتفرمهای قرارداد هوشمند فوق در این بخش توضیح داده شده است.
محیط اجرا
EVM برای اجرای قراردادهای اتریوم استفاده میشود. ماشینهای مجازی JVM و RSK به ترتیب توسط Corda و Rootstock استفاده میشوند. از سوی دیگر، Fabric و Stellar قراردادهای هوشمند را روی کانتینرهای Docker اجرا میکنند و در عین حال جداسازی (ایزوله بودن) اپلیکیشنها را به خطر میاندازند.
تورینگ کامل
اتریوم، فابریک و RSK همگی دارای قراردادهای هوشمند تورینگ کامل هستند. با این حال، کوردا و استلار از قراردادهای هوشمند تورینگ ناقص استفاده میکنند. قراردادهایی که تورینگ کامل هستند معمولاً شفافتر از قراردادهایی هستند که تورینگ ناقص هستند. با این حال، تورینگ کامل بودن احتمال آسیب پذیر شدن نرمافزار در برابر حملات مخرب را افزایش میدهد.
کاربردهای قراردادهای هوشمند
برخلاف کوردا، Stellar و RSK به طور انحصاری از پول دیجیتال پشتیبانی میکنند، در حالی که اتریوم و فابریک طیف گستردهتری از کاربردها از جمله ارز دیجیتال، مدیریت دارایی دیجیتال، سرمایهگذاری، حاکمیت و اقتصاد اشتراکی را ارائه میکنند. Corda، Stellar، RSK ممکن است در آینده از کاربردهای عمومی بیشتری پشتیبانی کنند.
زبآنهای پشتیبانی شده
اتریوم از زبآنهای برنامه نویسی خاص خود یعنی Solidity، Serpent و Mutan پشتیبانی میکند. Fabric در حال حاضر از زبان Golang پشتیبانی میشوند، در حالی که Corda از جاوا و کاتلین استفاده میکند. Python، Javascript، Golang و PHP تنها چند زبان است که Stellar میتواند از آنها پشتیبانی کند. RSK از سالیدیتی به عنوان زبان قرارداد هوشمند خود برای تعامل با اتریوم استفاده میکند.
خصوصی یا عمومی بودن
Etherium و RSK پلتفرمهای قرارداد هوشمند عمومی (بدون نیاز به مجوز) هستند، به این معنی که هر کسی میتواند در هر زمانی به این شبکهها بپیوندد. در مقابل، Corda و Hyperledger پلتفرمهای خصوصی هستند که فقط کاربران احراز هویت شده میتوانند به آنها دسترسی داشته باشند. Stellar یک کنسرسیوم بلاکچینی است که چندین بخش سازمانی را در بر میگیرد و بین بلاکچینهای عمومی و خصوصی (یا سازمانها) قرار میگیرد.
الگوریتمهای اجماع
Etherium و RSK از مکانیزم POW استفاده میکنند، یعنی تائید اعتبار تراکنشها در این شبکهها با حل یک مشکل محاسباتی چالش برانگیز (یک معادله ریاضی) انجام میشود. اکثر الگوریتمهای اجماع PoW از نظر محاسباتی هزینهبر دارند.
Fabric از مکانیسم اجماع PBFT استفاده میکند، یعنی اجماع با رأیگیریهای متعدد در بین گرههای تائید اعتبار شده به دست میآید. در نتیجه، PBFT نیاز به منابع محاسباتی بالایی دارد. کوردا به جای یک سیستم جهانی، از یک مکانیزم اجماع ساده به نام Raft برای دستیابی به اجماع بین بخشهای مختلف در سطح معاملات فردی استفاده میکند. از سوی دیگر، استلار از یک مکانیزم اجماع ساده به نام SCP برای دستیابی به اجماع استفاده میکند.
مدل داده
کوردا همانند بیتکوین از مکانیزم خروجی تراکنش خرج نشده (UTXO) استفاده میکند. هر پرداخت در مدل UTXO باید تراکنش خرج نشده قبلی را به عنوان ورودی عنوان کند. پس از آن تراکنش عنوان شده تکمیل میشود. سپس تنظیمات روی تراکنشهای خرج نشده جدید، انجام خواهد شد.
در مقابل، اتریوم، استلار و RSK از مدلهای مبتنی بر حساب استفاده میکنند. در مدلهای مبتنی بر حساب، بهجای محاسبه تمام مبالغ تراکنشهای خرج نشده، مانده حساب یک آدرس به طور مستقیم ثبت میشود. Fabric از مفهوم key-value استفاده میکند که در آن دادهها در بلاکچینها به عنوان جفت key-value ذخیره میشوند.
ویژگیهای پلتفرمهای قرارداد هوشمند فوق در جدول زیر خلاصه شده است.
مقایسه پلتفرمهای قرارداد هوشمند
چرا توسعه قراردادهای هوشمند برای شرکت ها مهم است؟
یکی از مهم ترین مسائلی که شرکت ها با آن مواجه هستند، عدم اعتماد در برخورد با طرفهای ثالث است. سازمانها با احتیاط عمل میکنند و به دلیل عدم اعتماد و شفافیت، زمان و هزینه قابل توجهی را برای واسطهها صرف میکنند.
وقتی شرایط قرارداد به صورت عمومی قابل مشاهده باشد، قراردادهای هوشمند میتوانند با حذف واسطهها به شرکت کمک کنند. با استفاده از فناوری بلاک چین، این قراردادها باعث افزایش اعتماد و شفافیت بین دو طرف میشود. علاوه بر این، آنها ایجاد قراردادهای غیرقابل تغییر و در دسترس را امکان پذیر میکنند.
قراردادهای هوشمند فناوری جدیدی هستند که میتوانند بهرهوری را در صنایع مختلف افزایش دهند. با پیشرفت فناوری، کسب و کارهای بیشتری از آن برای کاهش هزینهها و تسهیل تراکنشهای سریع و امن استفاده خواهند کرد. زمانی که جزئیات توافقنامه به صورت عمومی و دیجیتالی قابل مشاهده باشد، قراردادهای هوشمند میتوانند جای نهادهای واسطه در توافقنامهها را بگیرند. به عنوان مثال، قراردادهای هوشمند میتوانند با خودکار کردن کارهای پرزحمت، جایگزین وکلا در فرآیندهای حقوقی مرتبط با جرائم سنتی، اموال، آیین دادرسی مدنی، شواهد یا تحلیل قرارداد شوند.
نهایی شدن یک قرارداد به دلیل وجود واسطهها و کاغذبازیهای موجود در قراردادهای معمولی، فرآیندی زمانبر است. با این حال، قراردادهای هوشمند را میتوان با سرعت بیشتری منعقد کرد، زیرا آنها نیازی به واسطه ندارند. همچنین، از آنجایی که قراردادهای هوشمند با کدهای برنامه نویسی نوشته میشوند، طرفین در طول فرآیند تنظیم قرارداد مرتکب اشتباهات دستی کمتری خواهند شد.
علاوه بر این، فناوری بلاک چین به دلیل ساختار غیرمتمرکز خود، تراکنشها را امنتر میکند. برای مثال، اگر هکرها بخواهند مبلغ دلار را در یک تراکنش تغییر دهند، باید حداقل نیمی از قدرت محاسباتی بلاک چین را به دست بگیرند. گرچه این فناوری سیستم را غیرقابل نفوذ نمیکند، اما این فرآیند را دشوار مینماید.