در ساختار بلاکچین هیچ نهاد کنترلکننده مرکزی وجود ندارد و همهچیز با توافق اکثریت صورت میگیرد و این مسئله یکی از جذابترین ویژگیهای بلاکچین است. اما چگونه میتوان در این ساختار به صداقت غریبههای رأیدهنده اعتماد کرد؟ اینجاست که الگوریتم اجماع وارد عمل شده و امنیت مورد انتظار را تضمین میکند.
پیش از آن که به سراغ تعریف الگوریتم اجماع برویم، بد نیست کمی درباره تحمل خطا و نیازهایی که مکانیسم اجماع در بلاکچین را به ضرورت تبدیل میکند، بیشتر بدانیم:
ویژگی تحمل خطا
تحمل خطا یکی از ویژگیهایی است که یک ماشین، شرکت و بهطورکلی یک سیستم را نسبت به هر خطایی که ادامه فعالیت را مختل کرده مقاومتر میکند.
بهعنوانمثال هواپیما با دو موتور یک سیستم تحمل خطاست. چرا که اگر حتی یکی از موتورها در هنگام پرواز توانایی خود را از دست بدهد، موتور دیگر این مسئله را پوشش داده و هواپیما بدون مشکل به پرواز ادامه خواهد داد.
سیستم تحمل خطا
همانطور که گفتیم یک سیستم مجهز به تحمل خطا میتواند در شرایط بحرانی جان سالم به در ببرد و بدون مشکل به فعالیت ادامه دهد. اما آیا همه سیستمها به ویژگی تحمل خطا نیاز دارند؟ بله. هر سیستم یا مجموعهای که نمیخواهد در صورت بروز مشکل از ادامه کار محروم شود باید تا حدودی این ویژگی را در خود داشته باشند.
کافی است به مثال هواپیمای دو موتوره دقت کنیم تا متوجه ضرورت ویژگی تحمل خطا در ماشینی که از کار افتادن آن با جان انسانهای زیادی بازی میکند؛ بشویم. اما ضرورت ویژگی تحمل خطا تنها متوجه سیستمهای مکانیکی نیست. بهعنوانمثال چنین امکانی در یک شرکت میتواند از به هدر رفتن سرمایه و مشاغل زیادی جلوگیری کند.
برای شرکتها و مؤسسات مالی، به جای حفظ قطعات مکانیکی، حفظ پایگاه اطلاعات نقشی حیاتی دارد. در این مؤسسات اطلاعات باید بدون خطا باشند. بروز هر خطایی در حساب و کتاب مشتریان یا شرکت، میتواند منجر به ورشکستگی و صدها مشکل دیگر شود.
بهعنوانمثال بانکها علاوه بر اتوماسیون اداری به کارمندهای انسانی نیاز دارند تا گردش، بهروزرسانی و صحت اطلاعات را زیر نظر داشته و تائید کنند. در بانک بهعنوان یک سیستم مالی سنتی و متمرکز، تنها افراد محدودی به اطلاعات دسترسی دارند. محدودیت افراد و نظرات در مواقعی درستی اطلاعات را زیر سؤال میبرد. به همین خاطر تعداد سیستمهای مالی فاسد و یا کلاهبردار بههیچعنوان انگشتشمار نیست.
از سویی دیگر چالش و حسن همزمان یک سیستم غیرمتمرکز، نبود یک نهاد مرکزی است و اینکه افراد بیشتری اطلاعات را در این شبکه تائید میکنند. البته که غیرمتمرکز نبودن سیستم شفافیت اطلاعات را بالابرده و احتمال فساد را کاهش میدهد، اما در شرایط بحرانی هیچ مرکز یا رئیسی برای مقابله با مشکل وجود ندارد. در اینجاست یک مکانیسم مقاوم در برابر خطا میتواند حرفهای زیادی برای گفتن داشته باشد و مشکلات زیادی را از سر راه بردارد.
به همین خاطر است که ویژگی تحمل خطا در شبکههای کامپیوتری و بلاکچین اهمیت بسیار زیادی دارد و مکانیسم اجماع یکی از راهحلهای مشهور این حوزه است که در ادامه میتوانید بیشتر با آن آشنا شوید.
الگوریتم اجماع و تحمل خطا
الگوریتم اجماع یکی از پرکاربردترین مکانیسمهای تحمل خطاست که برای نخستین بار در حوزه کامپیوتر و شبکه مورداستفاده قرار گرفت. سادهتر بگوییم؛ اجماع نقش موتور دوم هواپیما در شبکه بلاکچین را ایفا میکند. شما در خریدوفروش بیت کوین با این الگوریتم سروکار نخواهید داشت اما اگر بخواهید ماینر یا استخراجکننده باشید، شما هم یکی از هزاران مهره کلیدی و تأثیرگذار در مکانیسم اجماع بلاکچین خواهید بود.
همانطور که گفتیم توزیع اختیارات و امکانات برای عموم در بلاکچین بهاندازه مزایایی که دارد، میتواند دردسرآفرین باشد و مکانیسم اجماع در بلاکچین برای مقاومت در برابر چنین دردسرهایی دستبهکار شده است. تحمل خطا با مکانیسم اجماع راهحلی است که به کمک آن میتوان مطمئن شد که افراد، دستگاهها و داراییها در مسیری درست و صادقانه حرکت میکنند. بهعنوانمثال اگر تعدادی از ماینرها دستگاه خود را خاموش کنند، سیستم بدون مشکل درست مانند هواپیمایی که با یک موتور میتواند به مسیر ادامه دهد، کار کند.
مکانیسم اجماع چیست و چگونه کار میکند؟
اجماع مکانیسمی است که به کمک آن، امکان هماهنگی و یکپارچگی کاربران یا ماشینها در یک محیط توزیعشده ایجاد میشود. این مکانیسم مطمئن خواهد شد که همه عوامل در مورد اتفاقات و رویدادها به توافق رسیدهاند، حتی اگر در این میان برخی از عوامل هم از کار بیفتند. بهعبارتدیگر، سیستم باید توانایی تحمل خطا را داشته باشد و همچنان به فعالیت خود ادامه دهد.
در ساختار متمرکز ، یک نهاد واحد، کنترل کل سیستم را بر عهده دارد. در اکثر موارد، آنها هر طور که مایلاند تغییراتی در سیستم ایجاد میکنند. بهعبارتیدیگر در سیستم حاکمیت مرکزی، یک نهاد یا یک شخص ممکن است نظرش بر نظر همه مدیران حاضر در آن ساختار دیکته شود و بهطورکلی اجماع نظر اهمیتی ندارد. اما در ساختار غیرمتمرکز ، این داستان کاملاً متفاوت است و همهچیز با توافق اکثریت صورت میگیرد.
فرض کنید روی یک پایگاه داده توزیعشده کار میکنید، ازآنجاییکه نظر هر فرد اهمیت دارد؛ چگونه میتوانیم در مورد اتفاقات و امکانات جدید به توافق برسیم؟
غلبه بر این چالش در محیطی که غریبهها به یکدیگر اعتماد ندارند، شاید مهمترین تحولی باشد که راه را برای بلاکچینها هموار میکند. در این مقاله ، نگاهی خواهیم انداخت که چطور الگوریتمهای اجماع برای عملکرد رمزارزها و دفتر کلهای توزیعشده بسیار حیاتی هستند.
الگوریتمهای اجماع و رمزارزها
در رمزارزها، اطلاعات حساب یا میزان ماندهحساب کاربران در یک پایگاه داده به نام بلاکچین ثبت میشود. بنابراین ضروری است که همه افراد یا به عبارت دقیقتر هر گره یا نود، کپی یکسانی از اطلاعات درون پایگاه داده داشته باشند. چرا که در غیر این صورت خیلی زود با اطلاعات متناقضی روبرو خواهید شد و کل هدف شبکه رمزارزها تضعیفشده و به خطر میافتد.
رمزنگاری کلید عمومی مانع از این میشود که کاربران اموال یکدیگر را خرج کنند. اما هنوز هم باید منبع واحدی از حقیقت وجود داشته باشد که افراد درون شبکه به آن اعتماد کنند و بتوان تعیین کرد که آیا این داراییها قبلاً خرج شدهاند یا خیر. الگوریتم اجماع برای تأمین چنین نیازی آغاز به کار کرد.
برای مثال ساتوشی ناکاموتو، خالق بیت کوین، یک سیستم اثبات کار برای ایجاد هماهنگی میان افراد حاضر در شبکه بیت کوین پیشنهاد داد. این اجماع به نامهای سیستم “گواه کار”، و الگوریتم اثبات کار هم شناخته میشود که در ادامه بیشتر با آن آشنا خواهیم شد اما پیش از آن بهتر است به بررسی برخی صفات مشترک الگوریتمهای اجماع اشاره کنیم.
برخی از صفات مشترک الگوریتمهای اجماع
۱- نیاز به اعتبارسنج
۲- سیستم جریمه یا پاداش
۳- شفافیت
در ادامه به توضیح هر یک از موارد میپردازیم:
۱– نیاز به اعتبارسنج
در مرحله اول، ما نیاز به کاربرانی داریم که در اضافه کردن بلوک مشارکت کنند. این افراد بهطورکلی اعتبارسنج نامیده میشوند. در اسامیای مانند Node، گره یا ماینر هم مقصود همین اعتبارسنجها هستند. بهطورکلی نام این افراد در اجماعهای مختلف متفاوت است.
این افراد باید یک نوع سهم (Stake) ارائه داده تا بتوانند وارد این سازوکار شوند. منظور از سهم نوعی ارزش است که یک اعتبارسنج باید در گرو شبکه قرار دهد، چیزی شبیه به یک ضمانت. این سهم قفلشده، نیت صادقانه این افراد را تضمین میکند و باعث شده که به فکر خرابکاری یا اقدام نادرست در شبکه نباشند.
۲– سازوکار جریمه یا پاداش: برای جلوگیری از خطا و تقلب
روش ساده است؛ درستکار باشید پاداش دریافت میکنید، به فکر خرابکاری و تقلب باشید جریمه میشوید!
شاید این سؤال پیش بیاید که چرا یک سری افراد باید منابع خود را تحت عنوان ضمانت برای اعتبار سنجی به خطر بیندازند یا قفل کنند؟ پاسخ این سؤال پاداشی است که در انتظار این افراد است. معمولاً رمزارزهای بومی شبکه بهعنوان پاداش به اعتبارسنجها تعلق میگیرد. این پرداختها از کارمزد پرداختی توسط سایر کاربران، سکههای تازه تولیدشده یا هر دو حاصل میشود.
البته فراموش نکنید در صورت تقلب افراد جریمه میشوند. اگر اعتبارسنجها تقلب کنند، این جریمه بسته به نوع اجماع میتواند متفاوت باشد مثلاً در سازوکار اثبات کار ممکن است قدرت محاسباتی از دست برود و یا در سازوکار اجماع سهام، آنچه بهعنوان سهم در کیف پول قفلشده است از آنها گرفته شود. این جریمه معمولاً میزان مشخصی از رمزارز بومی همان شبکه است یا حتی شهرت این افراد باشد که از بین میرود.
۳– تضمین درست کار کردن شبکه با ایجاد شفافیت
هرکسی باید قادر به شناسایی متقلب باشد. در حالت ایده آل، با هزینهبر بودن تولید بلوک، خرابکاری سودی برای افراد ندارد یا حداقل هزینه گزافی برای آنها ایجاد میکند. اما اعتبارسنجی برای هرکسی ارزان است. این ارزانی باعث شفافیت میشود چرا که کاربران عادی همواره اعتبارسنجها را رصد میکنند.
انواع الگوریتمهای اجماع
اثبات کار (PoW)
اثبات کار پدرخوانده الگوریتمهای اجماع بلاکچین است و نخستین بار در بیت کوین پیادهسازی شد. اما مفهوم واقعی آن چیز تازهای نیست. اگر بخواهیم به زبان ساده توضیح دهیم؛ در اثبات کار، اعتبارسنجها یا ماینرها، دادههایی را که قصد اضافه شدن دارند تا زمانی که یک راهحل مخصوص تولید کنند، هش میکنند.
در اثبات کار، پروتکل شرایطی را برای اعتبار بخشیدن به یک بلوک تعیین میکند. بهعنوانمثال، فقط بلوکی که هش آن با ۰۰ شروع میشود معتبر است. تنها راهی که ماینر میتواند این ترکیب را به دست آورد، استفاده از روش جستوجو فراگیر (Brute force input) است. آنها میتوانند با تغییر یک پارامتر در دادههای خود، نتیجه متفاوتی را برای هر حدس ایجاد کنند تا زمانی که نهایتاً این تغییرات به هش درست ختم شود.
البته در بلاکچینهای بزرگ حدس زدن، نیازمند به یک انبار پر از سختافزار ویژه ماینینگ (ASIC) است تا نهایتاً بتوان یک بلوک معتبر تولید کرد. البته راهکاری تحت عنوان استخر استخراج هم وجود دارد که در آن قدرت محاسباتی چندین استخراجکننده در یک جا جمع شده و در نتیجه امکان حل مسئله و ساخت بلوک معتبر جدید برای این گروه بیشتر خواهد شد.
شرط ورود شما به جمع استخراجکنندگان تهیه و سرمایهگذاری روی دستگاههای ماینینگ است. این موضوع نشان از حسن نیت شما دارد. میزان مخارجی که متحمل میشوید، ضمانت میکند که در جهت منافع شبکه عمل خواهید کرد چرا که دستگاههای ASIC به جز استخراج رمزارز هیچ کاربرد دیگری ندارند. تنها راه بازگشت سرمایهگذاری اولیه شما این است که دستگاههای شما موفق به اضافه کردن یک بلوک جدید به بلاکچین شوند، در این صورت پاداش قابلتوجهی به شما تعلق میگیرد.
اشکال وارده بر این روش اجماع در این است که بههیچعنوان با محیطزیست سازگار نیست. دستگاههای استخراج، قاتل بیستوچهارساعته انرژیاند. علاوه بر این گرما و صدای زیادی تولید میکنند و هزینه تعمیر و نگهداری این دستگاهها زیاد است.
اثبات سهام (PoS)
در روزهای اولیه معرفی بیت کوین به جهان، اثبات سهام بهعنوان جایگزینی مناسب برای اثبات کار معرفی شد. در این سازوکار، اثری از استخراجکننده، سختافزار تخصصی یا مصرف زیاد انرژی وجود ندارد. تمام آنچه شما نیاز دارید یک کامپیوتر شخصی معمولی است.
درست است که در این الگوریتم اجماع هیچ خبری از دستگاه استخراج نیست اما بهطورکلی، شما باید یکمیزان دارایی حداقلی که معمولاً یک رمزارز است را بهعنوان ضمانت در شبکه قرار داده تا واجد شرایط کسب سهم (staking) شوید. وجوه شما در حین staking در یک کیف پول قفل شده و امکان جا به جایی آن وجود ندارد. در اینجا شما بهعنوان یکی از اعتبارسنجها با سایرین، در مورد اینکه کدام تراکنش به بلوک بعدی میرود به توافق میرسید. در واقع شما بلوک بعدی را حدس زده و پروتکل را انتخاب میکند.
اگر بلوک حدس زده شما انتخاب شود، بسته به میزان سهم خود، درصدی از هزینه معاملات را دریافت خواهید کرد. هرچه دارایی بیشتری را قفل کنید، میزان پاداش شما بیشتر میشود. اگر شما بخواهید تا با پیشنهاد تراکنشهای نامعتبر تقلب کنید، بخشی (یا کل) سهام(Stake) خود را از دست خواهید داد. در این مکانیسم هم مانند اثبات کار، صادقانه عمل کردن سودآوری بیشتری نسبت به عمل غیر صادقانه دارد.
اشکال عمدهای که به این روش وارد است پیچیدگیهای الگوریتمی و اجرای صحیح آن در یک شبکه توزیعشده است. اساساً چه در این اجماع و چه در اجماع اثبات کار تعداد مشارکتکنندگان پراهمیت است چرا که همچنان به روشهایی امکان خرابکاری در این دو وجود دارد.
بااینوجود این دو الگوریتم اجماع مقبولیت بیشتری بین طرفداران رمزارزها دارد، اما اجماعهای دیگری نیز وجود دارد مانند:
سخن پایانی
همانطور که دیدیم الگوریتم اجماع درست مانند تکه آخر پازل یک شبکه غیرمتمرکز عمل میکند. این شبکهها مزایای بیشماری دارند و در جنبههای متفاوتی زندگی ما را به سمتی دموکرات تر و ایده آل پیش میبرند. اما همه این ایده آلها و آرمانها بههیچعنوان بدون الگوریتم اجماع امنیت و توان محقق شدن را نخواهند داشت. ماجرای الگوریتم اجماع با اثبات کار شروع شد اما در اینجا پایان نیافت. حالا با گذشت زمان و فعالیت متخصصان، الگوریتمهای خلاقی به این حوزه اضافهشده و هرکدام از آنها در دل خود دنیایی از امکانات و فرصتهای بیشمار را فراهم کردهاند.