الگوریتم اجماع چیست؟ با الگوریتمهای اجماع بیشتر آشنا شوید
در بلاکچین، اطلاعات تراکنش در دیتابیسی به نام دفتر کل توزیعشده (DLT) ذخیره میشوند و گرههای شبکه یک نسخه از آن را در اختیار دارند. همانگونه که اطلاع دارید ماهیت بلاکچین نامتمرکز است و در نتیجه اغلب مخاطبان با این سؤال مواجه میشوند: این گرهها چگونه با هم همکاری میکنند که شبکه با مشکل مواجه نمیشود؟ برای اینکه به این سؤال پاسخ دهیم ابتدا باید با مفهومی بهنام الگوریتم اجماع آشنا شوید. الگوریتمهای اجماع وظیفه هماهنگی گرهها، جلوگیری از خطا و تأمین امنیت شبکه را برعهده دارند. علاوه بر این، ویژگیهایی مثل سرعت، قابلیت اطمینان و مقیاسپذیری بلاکچین هم به نوع الگوریتم مورد استفاده بستگی دارد. گواه اثبات کار یکی از معروفترین و قدیمیترین الگوریتم های بلاکچین است که احتمالاً با آن آشنا هستید. قبل از اینکه بهسراغ انواع الگوریتم های بلاکچین برویم ابتدا باید ببینیم الگوریتم اجماع چیست.
الگوریتم اجماع چیست؟
به توافق کلی بر روی یک موضوع اصطلاحاً اجماع میگویند. پس به زبان ساده، الگوریتم های اجماع به مجموعهای از مکانیزمها، پروتکلها و محرکهای انگیزشی میگویند که چند گره (Node) نامتمرکز در بلاکچین، به کمک آنها میتوانند به توافق برسند. بلاکچینها الگوریتم های اجماع خاص خودشان را دارند. برای مثال در گواه اثبات کار، گرهها بر سر حل یک معمای رمزنگاریشده رقابت میکنند و اولین گرهای که به پاسخ برسد میتواند بلاک بعدی را ایجاد کند و پاداش بگیرد.
برای اینکه موضوع سادهتر شود یک مثال میزنیم. در بسیاری از رمزارزها، موجودی کاربران روی یک پایگاه داده که همان دفتر کل توزیعشده است ذخیره میشود. تمام گرههای بلاکچین یک کپی از این دیتابیس را دارند تا از تداخل اطلاعات در شبکه جلوگیری کنند. به این کپی اصطلاحاً لجر (Ledger) هم میگوییم. قبل از اینکه یک تراکنش به لجر اضافه شود ابتدا باید گرهها بر سر آن به توافق برسند. اینجاست که گرهها برای رسیدن به این توافق از الگوریتم های بلاکچین استفاده میکنند.
با اینکه مسئله توافق حل شد اما هنوز یک مشکل پابرجاست. در عمل، همه گرهها نمیتوانند همیشه در شبکه حاضر باشند و در نتیجه باید یک حداقل برای رسیدن به توافق تعریف شود. برای مثال در بلاکچین اتریوم وقتی حداقل ۶۶ درصد یا به طور دقیقتر، دو سوم از گرههای شبکه روی یک وضعیت به توافق برسند میگوییم اجماع بین گرهها حاصل شده است (منبع). حالا که با الگوریتم های اجماع آشنا شدید بد نیست کمی هم در مورد تاریخچه آن بدانید.
تاریخچه پیدایش الگوریتم های اجماع
اکثر افراد فعال در حوزه ارز دیجیتال تصور میکنند اولین الگوریتم اجماع توسط ساتوشی ناکاموتو ایجاد شد. در حقیقت اولین نسخه از الگوریتم اثبات کار (PoW) در سال ۱۹۹۷ متولد شد. در آن زمان فردی به نام آدام بک (Adam Back) نسخهای ابتدایی از الگوریتم اثبات کار فعلی را به نام هشکش (Hashcash) پیشنهاد داد. هدف اصلی این الگوریتم، کاهش هرزنامه (اسپم) در ایمیلها و انجمنهای اینترنتی بود.
در سال ۲۰۰۲، آدام بک این مفهوم را به شکلی رسمیتر در مقالهای به نام «هشکش: اقدام متقابل علیه حمله منع سرویس(A Denial of Service Counter-Measure)» منتشر کرد. در این مقاله عنوان شد که تمام کاربران قبل از ارسال ایمیل یا ایجاد پست در انجمنها باید معادله پیچیدهای را حل کند. منطق آدام این بود که اگر افراد زمان زیادی را صرف حل معادلات کنند، زمان کمتری برای ارسال هرزنامه باقی میماند.
اصطلاح «اثبات کار» اولین بار در سال ۱۹۹۹ در مقالهای از مارکوس جیکوبسون (Markus Jakobsson) و آری جوئلز (Ari Juels) به کار رفت. بعدها ساتوشی ناکاموتو از مفهوم هشکش در بلاکچین استفاده کرد و به این ترتیب، الگوریتم PoW فعلی ایجاد شد. البته توجه داشته باشید که قدمت بعضی از الگوریتم های اجماع به قبل از سال ۲۰۰۰ برمیگردد که از نمونههای آن میتوانیم به الگوریتمهای تحمل خطای بیزانس عملی (PBFT) و پکسوس (Paxos) اشاره کنیم.
آشنایی با انواع الگوریتم های اجماع
تنوع در الگوریتم های اجماع بسیار زیاد است و هر کدام از آنها مکانیزم خاصی دارند. در این قسمت به معرفی پرکاربردترین الگوریتم های بلاکچین و سازوکار آنها خواهیم پرداخت. این الگوریتمها علاوه بر مزایایی که برای شبکه دارند، معایب ذاتی هم دارند که پس از معرفی هر الگوریتم به آنها اشاره خواهیم کرد. ابتدا بهسراغ الگوریتم مورد استفاده در بیت کوین، یعنی گواه اثبات کار میرویم.
الگوریتم اثبات کار (PoW)
الگوریتم اثبات کار یا گواه اثبات کار (Proof of Work) از قدیمیترین الگوریتم های اجماع مورد استفاده در بلاکچین است. ساتوشی ناکاموتو اولین بار از الگوریتم اثبات کار در بلاکچین بیت کوین استفاده کرد و در حال حاضر بلاکچینهای زیادی مثل لایت کوین، بیت کوین کش و مونرو از آن استفاده میکنند. این نوع الگوریتم های بلاکچین برای رمزنگاری از پروتکلهایی مثل SHA-256، Scrypt یا SHA-3 استفاده میکنند.
در الگوریتم PoW، گرهها که در واقع همان ماینرها هستند باید معماهای رمزنگاریشده را حل کنند. به دلیل اینکه این معماها به روش آزمونوخطا حل میشوند، ماینرها به توان محاسباتی بالایی نیاز دارند تا بتوانند به پاسخ برسند. اولین ماینری که بتواند به پاسخ برسد، آن را در شبکه منتشر میکند تا بقیه ماینرها هم آن را تأیید کنند. اگر پاسخ تأیید شود، ماینر برنده میتواند بلاک جدیدی در بلاکچین ایجاد و پاداش بلاک را دریافت کند. پاسخ بدست آمده در پروتکل SHA-256 یک عدد هگزادسیمال ۶۴ رقمی است که اصطلاحاً به آن هش (Hash) میگویند.
سختی معماهایی که ماینرها حل میکنند بر اساس توان محاسباتی شبکه تنظیم میشود. برای مثال اگر توان محاسباتی شبکه افزایش یابد، سختی معماهای رمزنگاریشده هم بیشتر میشود تا مدتزمان لازم برای ایجاد بلاک جدید تغییر نکند. میانگین زمان حل معما در بلاکچین بیت کوین ۱۰ دقیقه است و در نتیجه هر ۱۰ دقیقه یک بلاک به بلاکچین بیت کوین اضافه میشود. به این مدت زمان اصطلاحاً زمان بلاک یا بلاک تایم (Block Time) میگویند.
الگوریتم اجماع اثبات کار مزایا و معایبی هم دارد که در ادامه به آنها اشاره میکنیم.
مزایای الگوریتم اثبات کار:
- امنیت بسیار بالا در مقابل حمله ۵۱ درصدی بهدلیل نیاز به توان محاسباتی زیاد
- تمرکززدایی عالی بهدلیل تشویق کاربران سراسر دنیا به شرکت در فرایند استخراج
- ارائه پاداش به ماینرها بدون نیاز به خرید ارز بومی شبکه
معایب الگوریتم اثبات کار:
- مصرف انرژی بسیار زیاد و ایجاد مشکلات زیستمحیطی
- مقیاسپذیری کم و افزایش زمان و کارمزد تراکنشها با گسترش شبکه
- نیاز به تجهیزات گرانقیمت برای شرکت در فرایند استخراج
الگوریتم اثبات سهام (PoS)
در بخش قبل اشاره کردیم که الگوریتم اثبات کار با مشکلاتی مثل مقیاسپذیری و مصرف انرژی همراه است. در سال ۲۰۱۱ برای رفع این مشکلات، الگوریتمی بهنام الگوریتم اثبات سهام یا گواه اثبات سهام (Proof of Stake) در انجمن بیت کوین تاک (Bitcointalk) پیشنهاد شد. در این الگوریتم به گرههای شبکه اصطلاحاً اعتبارسنج یا ولیدیتور (Validator) میگوییم. هرکدام از این اعتبارسنجها مقداری ارز بومی بلاکچین را بهعنوان وثیقه در شبکه قفل کردهاند که اصطلاحاً به این کار استیک کردن (Staking) میگوییم.
برای تأیید تراکنش در الگوریتم های اجماع اثبات سهام یک اعتبارسنج بهصورت تصادفی انتخاب میشود. هر چقدر اعتبارسنج ارز بیشتری را به مدتزمان طولانیتری استیک کرده باشد، احتمال انتخاب شدن آن هم افزایش مییابد. اعتبارسنج پیروز میتواند بلاک بعدی را ایجاد کند که در گواه اثبات سهام به آن مینت کردن (Mint) میگوییم. این اعتبارسنج، کارمزد تراکنش بلاک مینتشده یا کوین بومی شبکه را به عنوان پاداش دریافت میکند. اتریوم و تزوس دو پروژه مشهوری هستند که از این الگوریتم استفاده میکنند.
الگوریتم PoS هم مثل الگوریتم اثبات کار مزایا و معایبی دارد که در ادامه به آنها اشاره میکنیم.
مزایای الگوریتم اثبات سهام:
- امنیت بهتر در برابر حملاتی مثل حمله ۵۱ درصدی نسبت به الگوریتم های بلاکچین اثبات کار
- بدون نیاز به مصرف انرژی زیاد و سازگاری با محیط زیست
- مقیاسپذیری و سرعت تراکنش بالا بهدلیل عدم نیاز به حل مسائل پیچیده
معایب الگوریتم اثبات سهام:
- احتمال بدست گرفتن شبکه توسط سرمایهگذاران بزرگتر و ناسازگاری با ماهیت نامتمرکز بلاکچین
- نیاز به مکانیزمهای پیچیده برای انتخاب اعتبارسنجها و مدیریت داراییهای استیکشده
- تشویق کاربران به انباشت ارز دیجیتال و احتمال کاهش فعالیت گرهها
الگوریتم اثبات سهام نیابتی (DPoS)
الگوریتم اثبات سهام نیابتی (Delegated Proof of Stake) که به اثبات سهام واگذار شده هم شهرت دارد، بر اساس الگوریتم PoS شکل گرفت. در الگوریتم DPoS، تعدادی اعتبارسنج برای تأیید تراکنشها و ایجاد بلاکهای جدید در بلاکچین انتخاب میشوند که به آنها شاهد (Witness) یا نماینده (Delegate) میگوییم. افرادی که دارایی خودشان را در شبکه استیک کردهاند با شرکت در فرایندی به نام رأیگیری (Voting)، این اعتبارسنجها را انتخاب میکنند. البته وزن رأی شرکتکنندگان، با دارایی استیکشده در شبکه نسبت مستقیم دارد. در نهایت هر اعتبارسنجی که بیشترین رأی را بدست آورد، برای تأیید تراکنشها و ایجاد بلاکهای جدید انتخاب میشود.
الگوریتم های اجماع DPoS به اعتبارسنجها مزایای انگیزشی مانند کارمزد تراکنش اهدا میکنند تا در راستای اهداف شبکه فعالیت کنند. همچنین اگر اقدام خرابکارانهای از این اعتبارسنجها سر بزند، موقعیت خودشان را از دست خواهند داد. با این کار تا حد زیادی امنیت شبکه در مقابل اقدامهای خرابکارانه بیشتر میشود. پروژههای مشهوری مثل ترون و ایاس از الگوریتم DPoS استفاده میکنند.
الگوریتم DPoS مزایا و معایب خاص خودش را دارد که به چند نمونه از آنها اشاره میکنیم.
مزایای الگوریتم اثبات سهام نیابتی:
- نظارت مداوم روی امنیت شبکه با مکانیزم رأیگیری
- مصرف انرژی و کارمزد کمتر نسبت به سایر الگوریتمها (حتی الگوریتم اثبات سهام)
- مقیاسپذیری و سرعت بالای تراکنش شبکه (۲۰۰۰ تا ۸۰۰۰ تراکنش بر ثانیه)
معایب الگوریتم اثبات سهام نیابتی:
- آسیبپذیری نسبتاً زیاد در مقابل حمله ۵۱ درصدی بهدلیل تعداد پایین شرکتکنندگان
- احتمال همدستی نمایندگان (اصطلاحاً تشکیل کارتل) برای بدست گرفتن شبکه
- کارکرد نامناسب در شبکههای کوچک و با کاربران محدود
الگوریتم اثبات اعتبار (PoA)
الگوریتم اثبات اعتبار (Proof of Authority) از جمله الگوریتمهای بلاکچین مبتنی بر اعتبار است. گرهها در این الگوریتم نیازی به استیک رمزارز ندارند و بهجای آن باید اعتبارشان را در گرو شبکه قرار دهند. این گرهها که به آنها اعتبارسنج هم میگوییم با کلید عمومی و اعتبارشان قابل شناسایی هستند. در این الگوریتم وظیفه انتخاب اعتبارسنجها برعهده یک مقام مرکزی یا گروهی از افراد قابل اعتماد است. انتخاب این اعتبارسنجها بر اساس اعتبار و توانایی در اداره شبکه تعیین میشود.
اعتبارسنجهای انتخابشده وظیفه تأیید تراکنشها و ایجاد بلاک جدید را برعهده دارند. برای اینکه این اعتبارسنجها در راستای اهداف شبکه عمل کنند، مزایای انگیزشی هم در نظر گرفته میشود. این نوع الگوریتم های اجماع بیشتر در شبکههای خصوصی کاربرد دارند و نسبت به برخی الگوریتم های بلاکچین مثل گواه اثبات سهام عملکرد بهتری دارند. پروژههایی مثل بیت گرت، پالم نتورک و ویچین از الگوریتم PoA استفاده میکنند. این الگوریتم مزایا و معایبی هم دارد.
مزایای الگوریتم اثبات اعتبار:
- سرعت تراکنش بالا و قابل پیشبینی
- احتمال پایین حمله بهدلیل معتبر بودن گرههای انتخابشده
- نیاز به توان محاسباتی کم
معایب الگوریتم اثبات اعتبار:
- قابلیت شناسایی اعتبارسنجها و در نتیجه احتمال دستکاری در سیستم
- متمرکز شدن شبکه بهدلیل انتخاب اعتبارسنجها توسط یک مقام یا گروه مشخص
- کارکرد نامناسب در شبکههای بزرگ و عمومی
الگوریتم اثبات شهرت (PoR)
هنگام معرفی الگوریتم اثبات اعتبار به چند مورد از معایب آن هم اشاره کردیم. الگوریتم اثبات شهرت (Proof of Reputation) در واقع نسخه بهبود یافته الگوریتم اثبات اعتبار است که قصد دارد مشکلات این نوع الگوریتم های اجماع را از بین ببرد. به شرکتکنندگان این نوع شبکهها امضاکننده بلاک (Block Signer) یا کمپانی (Company) میگوییم. این شرکتکنندگان باید امتیاز شهرت (Reputation Score) خودشان را افزایش دهند تا حق رأی دادن در شبکه را بدست آورند و بتوانند تراکنشها را تأیید کنند.
امتیاز شهرت بر اساس عواملی مثل تعداد تراکنشهای موفق در شبکه و میزان مشارکت تعیین میشود. شبکه گو چین (GoChain) یکی از نمونه پروژههای بزرگی است که از الگوریتم اثبات شهرت استفاده میکند. در ادامه به چند مزیت و مشکل الگوریتم های بلاکچین اثبات شهرت میپردازیم.
مزایای الگوریتم اثبات شهرت:
- ایجاد انگیزه کافی در گرهها برای شرکت در فعالیتهای شبکه
- مقیاسپذیری عالی
معایب الگوریتم اثبات شهرت:
- آسیبپذیری در برابر حمله سیبیل
- احتمال تبانی کمپانیها بر ضد شبکه
الگوریتم اثبات ظرفیت (PoC)
در الگوریتم اثبات ظرفیت (Proof of Capacity) هم مثل الگوریتم اثبات کار مفهوم استخراج وجود دارد اما اینبار به جای توان پردازشی، از فضای خالی هارد دستگاه برای استخراج و تأیید تراکنشها استفاده میشود. این الگوریتم برای رفع مشکل مصرف انرژی در الگوریتم PoW و مشکل انباشت ارز دیجیتال در الگوریتم PoS ایجاد شد. در الگوریتم PoC از فرایندهای پلاتینگ (Plotting) و ماینینگ (Mining) استفاده میشود.
به زبان ساده، به محاسبه تعداد زیادی هش و ذخیره آن روی هارد ماینر پلاتینگ میگوییم. در این فرایند، ابتدا ماینر تعدادی عدد نانس (Nonce) تولید میکند که برای ایجاد تعداد زیادی هش مورد استفاده قرار میگیرد. سپس این هشها به صورت فایل پلات (Plot) روی هارد ماینر ذخیره میشوند. سایز این فایل بر اساس فضای خالی هارد ماینر تعیین میشود. پس از تکمیل فرایند پلاتینگ، نوبت به ماینینگ میرسد. در این فرایند، ماینر در فایل پلات بهدنبال پاسخ معتبر میگردد. اگر ماینر به پاسخ برسد، آن را بهعنوان گواه اثبات کار به شبکه ارسال میکند و پاداش میگیرد.
در الگوریتم های اجماع اثبات ظرفیت هر چه ظرفیت هارد شما بیشتر باشد، احتمال ذخیره پاسخ احتمالی روی آن بیشتر میشود و در نتیجه با احتمال بیشتری به پاداش استخراج دست پیدا میکنید. جالب است بدانید دو پروژه مشهور استورج و چیا از الگوریتم اثبات ظرفیت استفاده میکنند. در ادامه به مزایا و معایب الگوریتم PoC میپردازیم.
مزایای الگوریتم اثبات ظرفیت:
- مصرف انرژی بسیار پایین تا یک سیام الگوریتم اثبات کار
- سازگاری با دستگاههای مختلف، حتی دستگاههای اندرویدی
- قابلیت حذف دادههای استخراج و استفاده مجدد از آن
- بدون نیاز به هارد اختصاصی
معایب الگوریتم اثبات ظرفیت:
- احتمال سوء استفاده هکرها با استخراج بدافزار
- احتمال بالا رفتن تقاضا برای هارد و در نتیجه کمبود محصول یا افزایش زبالههای الکترونیکی
- عدم پذیرش همگانی
الگوریتم اثبات مکان (PoL)
یکی از الگوریتم های بلاکچین که از پارامتر مکان استفاده میکنند، الگوریتم اثبات مکان (Proof of Location) است. در این الگوریتم کاربر یا دستگاه باید ثابت کند که در زمان مشخص، در یک مکان معین قرار دارد. این افراد یا دستگاهها برای ارسال مکان فیزیکی از تجهیزاتی مثل جیپیاس یا سنسورهای خاص استفاده میکنند.
هرگاه کاربران یا دستگاهها که گرههای شبکه محسوب میشوند ثابت کنند که در مکان مشخصشده قرار دارند، میتوانند در فرایند اعتبارسنجی شرکت کنند و پاداش بگیرند. این گرهها براساس موقعیت جغرافیایی یا مجاورت به یک نقطه جغرافیایی خاص تعیین میشوند. به همین دلیل این الگوریتم در حوزههایی مثل مدیریت زنجیره تأمین کاربرد زیادی دارند. پروژههای بزرگی مثل هلیوم و فوم از الگوریتم PoL استفاده میکنند.
این الگوریتم هم مثل الگوریتمهای دیگر مزایا و معایبی دارد که به آنها اشاره میکنیم.
مزایای الگوریتم اثبات مکان:
- امنیت بالا بهدلیل اتکا به اطلاعات جغرافیایی دستگاههای متعدد
- کاربردهای متعدد مثل مدیریت زنجیره تأمین، ردیابی کالا و مانیتورینگ محیط
معایب الگوریتم اثبات مکان:
- امکان تداخل با قوانین حریم خصوصی بهدلیل جمعآوری اطلاعات کاربران
- دشواری در تشخیص اعتبار و دقت مکان ارسالشده
الگوریتم اثبات اهمیت (PoI)
در بخشهای قبل گفتیم که الگوریتم اثبات سهام با مشکل انباشت ارز دیجیتال مواجه است. به همین دلیل یکی از الگوریتم های اجماع به نام الگوریتم اثبات اهمیت (Proof of Importance) متولد شد تا گرهها بیشتر فعالیت کنند و انباشت ارز به حداقل برسد. در شبکههایی که از الگوریتم PoI استفاده میکنند، گرهها بر اساس میزان فعالیت و تعداد تراکنش در شبکه امتیاز میگیرند. هرچه امتیاز یک گره بیشتر باشد، احتمال اینکه برای تأیید تراکنش و ایجاد بلاک جدید انتخاب شود هم بیشتر میشود.
امتیاز گره در الگوریتم های بلاکچین اثبات اهمیت به جز تعداد و اندازه تراکنش، به عامل مهمی به نام وستینگ (Vesting) هم بستگی دارد. وستینگ به این معناست که قبل از انجام کارهایی مثل تأیید تراکنش، باید ارز دیجیتال بومی را به مدتزمان مشخصی در شبکه قفل کنید. با اینکار هم تعهد گرهها به شبکه بیشتر میشود و هم سفتهبازی کاهش مییابد. یکی از پروژههای پیشگام در الگوریتم اثبات اهمیت، پروژه نِم است. در پایان بد نیست در مورد مزایا و معایب الگوریتم PoI هم بدانید.
مزایای الگوریتم اثبات اهمیت:
- کاهش انباشت کوین و تشویق گرهها به فعالیت بیشتر
- جلوگیری از فورک بیش از حد بهدلیل نیاز به اثبات فعالیت در شبکههای فورک
- مصرف انرژی بسیار کم
معایب الگوریتم اثبات اهمیت:
- افزایش قدرت سرمایهداران بزرگ شبکه و احتمال متمرکز شدن آن
الگوریتم اثبات زمان سپری شده (PoET)
اثبات زمان سپری شده (Proof of Elapsed Time) یکی از الگوریتم های بلاکچین است که کمپانی اینتل در سال ۲۰۱۶ آن را توسعه داد. این الگوریتم اجماع بر اساس مجموعه دستورات پردازندهای به نام SGX توسعه یافت. الگوریتم PoET بهصورت تصادفی به هر گره درون شبکه یک زمان انتظار (Wait Time) اختصاص میدهد. گرهها در این بازه زمانی اصطلاحاً به خواب (Sleep) میروند و اولین گرهای که زودتر بیدار شود میتواند بلاک بعدی بلاکچین را ایجاد کند.
یکی از مزایای الگوریتم های اجماع اثبات زمان سپری شده، انتخاب تصادفی گرههاست که به افزایش عدالت در شبکه کمک میکند. این الگوریتم اغلب در بلاکچینهای مجوزمحور (Permissioned) استفاده میشود. به زبان سادهتر، اعضا قبل از اینکه عضو شبکه شوند باید مجوز بگیرند. در حال حاضر هایپرلجر ساتوث (Sawtooth) از این الگوریتم استفاده میکند. در ادامه به چند مورد از مزایا و معایب الگوریتم PoET میپردازیم.
مزایای الگوریتم اثبات زمان سپری شده:
- رعایت عدالت در انتخاب گرههای شبکه
- مصرف انرژی کمتر نسبت به الگوریتم PoW
- امنیت بالا بهدلیل حضور گرههای تأیید شده در شبکه
معایب الگوریتم اثبات زمان سپری شده:
- نیاز به پردازندههای SGX اینتل
- اتکا به تکنولوژیهای اینتل و در نتیجه انتقال آسیبپذیریهای احتمالی آن به بلاکچین
الگوریتم اثبات سوزاندن (PoB)
الگوریتم اثبات سوزاندن (Proof of Burn) یکی از انواع الگوریتم های اجماع است که قصد دارد معایب الگوریتم های بلاکچین اثبات کار و اثبات سهام را برطرف کند. در این الگوریتم، گرههای شبکه با سوزاندن مقداری ارز دیجیتال، حق ایجاد بلاک جدید و تأیید تراکنشها را دریافت میکنند. آین استورات (Iain Stewart)، مبدع الگوریتم اثبات سوزاندن، کوینهای سوخته را به ریگهای ماینینگ تشبیه میکند.
در الگوریتم PoB ابتدا گرهها ارز دیجیتال خودشان را به یک آدرس عمومی که کلید خصوصی ندارد ارسال میکنند. به این آدرس اصطلاحاً آدرس غیر قابل خرج کردن (Unspendable) میگوییم و کوینهای ارسالشده به آن از چرخه خارج میشوند. این کوین الزاماً کوین بومی شبکه نیست و بسته به ساختار شبکه، میتواند از بلاکچینهای دیگر هم باشد. گرهها برای افزایش شانس ایجاد بلاک جدید در بلاکچین باید کوین بیشتری را بسوزانند.
الگوریتم اثبات سوزاندن برای جلوگیری از سوء استفاده تازهواردان شبکه، از مکانیزم سوزاندن دورهای استفاده میکند. به بیان سادهتر، هر بار بلاک جدیدی استخراج شود، قدرت کوینهای سوزانده شده هم کمتر میشود. در نتیجه گرهها مجبورند فعالیت خودشان را در شبکه بیشتر کنند. جالب است بدانید پروژه اسلیم کوین از ترکیب سه الگوریتم PoW، PoS و PoB استفاده میکند. در ادامه به مزایا و معایب الگوریتم PoB هم اشاره میکنیم.
مزایای الگوریتم اثبات سوزاندن:
- کاهش کوینهای در گردش
- تشویق گرهها به تعهد بلندمدت به شبکه
- عدم نیاز به سختافزارهای پیچیده
معایب الگوریتم اثبات سوزاندن:
- شفاف نبودن فرایند سوزاندن کوینها
- تأخیر زیاد در تأیید بلاک تراکنشها نسبت به الگوریتم های اجماع اثبات کار
الگوریتم اثبات اعتماد (PoT)
در الگوریتم های اجماع اثبات اعتماد (Proof of Trust)، گرهها بر اساس میزان فعالیت در شبکه انتخاب میشوند. گرههای شبکه در این الگوریتم میتوانند با تأیید تراکنشها امتیاز اعتماد (Trust Score) بگیرند. هر چه این امتیاز اعتماد بیشتر شود، شانس انتخاب گره برای تأیید تراکنشهای شبکه هم بیشتر میشود. البته ارزش تراکنشها هم با امتیاز اعتماد گره نسبت مستقیم دارد. همچنین امتیاز اعتماد گرههایی که دست به کارهای خرابکارانه بزنند کاهش میيابد و در نتیجه امنیت شبکه هم بیشتر میشود.
الگوریتم اثبات اعتماد برای ایجاد کانالهای پرداخت همتا به همتا مناسب است. برای مثال، شبکه پرداخت نامتمرکز COTI در کنار ساختار داده DAG از این الگوریتم هم استفاده میکند که به آن تراست چین (Trustchain) میگویند. جالب است بدانید که این شبکه پرداخت میتواند با کمترین کارمزد ممکن تا ۱۰۰.۰۰۰ تراکنش در ثانیه را بهراحتی پردازش کند. در ادامه به چند نقطه قوت و ضعف الگوریتم های بلاکچین اثبات اعتماد میپردازیم.
مزایای الگوریتم اثبات اعتماد:
- سرعت بسیار بالا در پردازش تراکنش و در نتیجه افزایش مقیاسپذیری
- افزایش امنیت شبکه با افزایش و کاهش امتیاز اعتماد
معایب الگوریتم اثبات اعتماد:
- مشخص نبودن کارکرد الگوریتم در شبکههای بزرگ
الگوریتم اثبات تاریخ (PoH)
الگوریتم اثبات تاریخ (Proof of History) با ورود پروژه سولانا متولد شد و به الگوریتم اثبات زمان سپری شده هم شباهت دارد. در الگوریتم اثبات تاریخ برای هر تراکنش یا رویدادی که در شبکه انجام میشود یک برچسب زمانی قابل تأیید ایجاد میشود. وظیفه ایجاد این برچسب زمانی برعهده یک منبع معتمد است که اصطلاحاً به آن ساعت (Clock) میگوییم. این ساعت وظیفه دارد دنبالهای از هشها را برای تأیید ترتیب و زمان رویدادها ایجاد کند. بعد از اینکه برچسب زمانی ایجاد شد، همراه با اطلاعات تراکنش یا رویداد به بلاکچین اضافه میشود. سپس گرههای شبکه برای تأیید ترتیب و زمان رویدادها از دنباله برچسبهای زمانی استفاده میکنند.
برای اینکه ساعت در الگوریتم های بلاکچین اثبات تاریخ بتواند هشهای غیرقابل پیشبینی و غیرقابل دستکاری ایجاد کند از تابعی بهنام تابع تأخیر قابل تأیید (VDF) استفاده میکند. این ساعت میتواند چند برچسب زمانی را به صورت موازی ایجاد کند و در نتیجه مقیاسپذیری شبکههای مبتنی بر الگوریتم های اجماع اثبات تاریخ هم بیشتر میشود. در پایان بد نیست کمی هم با مزایا و معایب الگوریتم PoH آشنا شوید.
مزایای الگوریتم اثبات تاریخ:
- ظرفیت و مقیاسپذیری بسیار بالا
- کاهش بار روی شبکه بهدلیل استفاده از تابع VDF
معایب الگوریتم اثبات تاریخ:
- افزایش ریسک خرابی شبکه بهدلیل اتکا به یک منبع برای ایجاد برچسب زمانی
- نیاز به سختافزارهای گرانقیمت برای تبدیل شدن به گره در شبکه
الگوریتم اثبات فعالیت (PoA)
الگوریتم اثبات فعالیت (Proof of Activity) در سال ۲۰۱۴ متولد شد و ترکیبی از الگوریتم های اجماع اثبات کار و اثبات سهام است. ایده اصلی الگوریتم PoA، استفاده از مزایای دو الگوریتم PoW و PoS بود. در این الگوریتم، فرایند استخراج مثل الگوریتم اثبات کار شروع میشود و ماینرها برای حل معمای رمزنگاریشده با هم رقابت میکنند. بلاک استخراجشده حاوی یک هدر (Header) و آدرس پاداش ماینر است. بعد از اینکه استخراج بلاک انجام شد، شبکه شبیه به الگوریتم اثبات سهام عمل میکند.
پس از آن بر اساس اطلاعات هدر، گروهی از اعتبارسنجها بهصورت تصادفی انتخاب میشوند تا بلاک جدید را تأیید یا امضا کنند. در اینجا هم مانند گواه اثبات سهام، هر اعتبارسنجی که سرمایه بیشتری داشته باشد شانس بیشتری برای انتخاب شدن دارد. پس از اینکه بلاک به تأیید اعتبارسنجها رسید به بلاکچین اضافه میشود. در پایان، پاداش بلاک میان ماینرها و اعتبارسنجهای شرکتکننده تقسیم میشود. پروژههای Decred (DCR) و Espers (ESP) از الگوریتم PoA استفاده میکنند. این الگوریتم هم تواناییها و مشکلات خاص خودش را دارد.
مزایای الگوریتم اثبات فعالیت:
- مقاومت عالی در برابر حمله ۵۱ درصدی بهدلیل مکانیزم ترکیبی هشینگ و امضای دیجیتال
- سرعت بالاتر نسبت به مکانیزم اثبات کار و امنیت بیشتر نسبت به مکانیزم اثبات سهام
- تحمل بالای شبکه در مقابل خطا
- امکان کسب درآمد گسترده برای ماینرها و اعتبارسنجها
معایب الگوریتم اثبات فعالیت:
- حذف نشدن کامل مشکل توان پردازشی بالا و انباشت کوین
- در نظر نگرفتن مجازات برای ماینرها و اعتبارسنجها
الگوریتم اثبات فضا-زمان (PoST)
یکی از الگوریتم های بلاکچین که به الگوریتم اثبات ظرفیت هم شباهت دارد، الگوریتم اثبات فضا-زمان (Proof of Spacetime) است. البته در اینجا علاوه بر ظرفیت، عامل زمان هم به الگوریتم اضافه شده است. به زبان ساده در الگوریتم های اجماع اثبات فضا-زمان، شرکتکنندگان باید حجم مشخصی از فضای ذخیرهسازی را در بازه زمانی تعیینشده در اختیار شبکه قرار دهند. منطق سازنده الگوریتم اثبات فضا-زمان این بود که هزینه ذخیرهسازی فقط به حجم محدود نیست و باید مدتزمان استفاده از آن را هم در نظر گرفت.
در این نوع الگوریتم های اجماع، شرکتکنندگان شبکه ابتدا باید گواه فضای ذخیرهسازی (Storage Proof) خود را ارائه کنند. گواه ذخیرهسازی از هش دادههایی مثل حافظه در دسترس و زمان فعلی تولید میشود. با این کار احتمال تقلب در شبکه کاهش مییابد. سپس گرههای دیگر شبکه این گواه را اعتبارسنجی میکنند. هر چه گواه ذخیرهسازی یک گره بیشتر باشد، شانس انتخابشدن آن هم بیشتر میشود.
این الگوریتم اجماع انرژی کمتری مصرف میکند، چون میتواند سختی شبکه را با افزایش بازه زمانی بیشتر کند. در نتیجه مانند بیت کوین نیازی به افزایش توان محاسباتی نیست و انرژی اضافی مصرف نمیشود. فایل کوین (Filecoin) یکی از پروژههای مشهوری است که از الگوریتم PoST استفاده میکند. در ادامه به مزایا و معایب الگوریتم اثبات فضا-زمان میپردازیم.
مزایای الگوریتم اثبات فضا-زمان:
- قابلیت افزایش سختی شبکه با بیشتر کردن بازه زمانی و بدون نیاز به افزایش توان محاسباتی
- مقاومت در برابر حملاتی مانند حمله سیبیل (Sybil)
- مصرف انرژی بسیار کم بهدلیل استفاده از گواه ذخیرهسازی بهجای گواه اثبات کار
معایب الگوریتم اثبات فضا-زمان:
- کاهش مقیاسپذیری بهدلیل استفاده از حجم و تعداد زیاد گواه ذخیرهسازی در شبکه
- احتمال متمرکز شدن شبکه روی گرههای دارای حافظه زیاد
الگوریتم اثبات وزن (PoWeight)
یکی از انواع الگوریتم های بلاکچین که شباهت زیادی به الگوریتم اثبات سهام دارد، الگوریتم اثبات وزن (Proof of Weight) است. شش محقق دانشگاه ام آی تی (MIT) این الگوریتم را برای بلاکچین الگوراند (Algorand) توسعه دادند. الگوریتم PoWeight به هر گره شبکه یک وزن اختصاص میدهد. وزن گرهها بر اساس مقدار ارزی که هولد کردهاند تعیین میشود.
هنگام انجام هر تراکنش در شبکه، الگوریتم اثبات وزن بهصورت تصادفی کمیتهای متشکل از چند گره را ایجاد میکند تا تراکنشها را تأیید کنند. هر گرهای که وزن بیشتری داشته باشد، احتمال عضویت آن در کمیته هم بیشتر میشود. این کمیته دو مشکل اساسی دارد. اول اینکه برای اعضای این کمیته هیچ مزیت انگیزشی برای فعالیت بیشتر در شبکه در نظر گرفته نشده است. دومین مشکل هم اینجاست که تشکیل کمیته، کمی با ماهیت نامتمرکز بلاکچین تضاد دارد. در نتیجه احتمال همدستی و خرابکاری اعضای این کمیته وجود دارد. در ادامه به چند مورد از نقاط قوت و ضعف الگوریتم های اجماع اثبات وزن میپردازیم.
مزایای الگوریتم اثبات وزن:
- مقیاسپذیری و قابلیت سفارشیسازی بالا
- مقاوم در برابر حملاتی مثل حمله دوبار خرج کردن بهدلیل مکانیزم تخصیص وزن
- سرعت بالا در تأیید تراکنشها
معایب الگوریتم اثبات وزن:
- ناتوانی در ایجاد انگیزه در گرهها یا اعضای کمیته برای شرکت در فعالیتهای شبکه
- ماهیت نیمهمتمرکز بهدلیل تشکیل کمیته با اعضای محدود
الگوریتم تحمل خطای بیزانس (BFT)
داستان الگوریتم تحمل خطای بیزانس (Byzantine Fault Tolerance) به سالها قبل برمیگردد. در سال ۱۹۸۲ مسئله فرماندهان بیزانس (Byzantine Generals’ Problem) شکل گرفت. این مسئله سؤال مهمی را مطرح میکند: فرماندهان بیزانس با احتمال وجود یک یا چند نفر خیانتکار در میان خودشان، چگونه میتوانند بر دشمن غلبه کنند؟ شبکههای مبتنی بر الگوریتم BFT نیز با الهام از این مسئله، حتی در صورت بروز مشکل برای چند گره یا بروز رفتار مخرب از سمت آنها، باز هم به کار خودشان ادامه میدهند.
بهدلیل اینکه مسئله فرماندهان بیزانس بیش از یک پاسخ دارد، ساخت سیستم مبتنی بر تحمل خطای بیزانس هم به روشهای مختلف امکانپذیر است. با بهینهسازی الگوریتم تحمل خطای بیزانس، الگوریتم های بلاکچین دیگری ایجاد شدهاند که در ادامه به آنها خواهیم پرداخت. جالب است بدانید که کاربرد تحمل خطای بیزانس فراتر از بلاکچین است و در حوزههایی مثل هوافضا و انرژی هستهای هم کاربرد زیادی دارد. این الگوریتم مزایا و معایبی هم دارد که به آنها میپردازیم.
مزایای الگوریتم تحمل خطای بیزانس:
- عملکرد مداوم شبکه حتی با وجود گرههای معیوب یا خرابکار
- توانایی تصحیح دادهها و اطلاعات در شبکه
- استفاده بهینه از منابع پردازشی
معایب الگوریتم تحمل خطای بیزانس:
- آسیبپذیری در برابر حملاتی مثل حمله سیبیل در صورت پیکربندی نادرست
- پیچیدگی بیشتر نسبت به سایر الگوریتم های بلاکچین
- مقیاسپذیری کمتر در مقایسه با الگوریتم های اجماع دیگر
الگوریتم تحمل خطای بیزانس عملی (PBFT)
در سال ۱۹۹۹ دو نفر به نامهای باربارا لیسکف (Barbara Liskov) و میگل کسترو (Miguel Castro) الگوریتمی به نام الگوریتم تحمل خطای بیزانس عملی (Practical Byzantine Fault Tolerance) را معرفی کردند. شبکههایی که از این الگوریتم استفاده میکنند میتوانند تا زمانی که حداکثر یکسوم گرهها معیوب یا مخرب باشند به کار خودشان ادامه دهند. در این نوع الگوریتمها دو نوع گره به نامهای گره رهبر (Leader Node) و گره پشتیبان (Backup Node) وجود دارد.
سه مرحله در الگوریتم های اجماع تحمل خطای بیزانس وجود دارد. فرض کنید کلاینت یک درخواست به شبکه ارسال میکند. در مرحله اول، گره رهبر درخواست تأیید تراکنش را به گرههای پشتیبان ارسال میکند. سپس تمام گرههای پشتیبان روی درخواست کار میکنند و نتیجه را به کلاینت میفرستند. کلاینت منتظر میماند تا (f+1) پاسخ با همان نتیجه را دریافت کند تا تراکنش را مورد تأیید قرار دهد. در این فرمول f بهمعنای تعداد گرههای معیوب یا مخرب احتمالی است. الگوریتم PBFT هم مثل سایر الگوریتم های بلاکچین مزایا و معایبی دارد.
مزایای الگوریتم تحمل خطای بیزانس عملی:
- ظرفیت بالاتر نسبت به تحمل خطای بیزانس
- تأخیر بسیار کم بهدلیل عدم نیاز به تأیید چندباره توسط گرهها
- رعایت عدالت در توزیع پاداش میان گرهها
معایب الگوریتم تحمل خطای بیزانس عملی:
- مقیاسپذیری پایین بهدلیل تعداد زیاد پیامهای درون شبکه
- ناسازگاری با بلاکچینهای بدون مجوز (Permissionless)
- آسیبپذیری در برابر حملات سیبیل
الگوریتم تحمل خطای بیزانس سادهشده (SBFT)
اولین بار در سال ۲۰۱۵ تیمی از محققین دانشگاه کرنل الگوریتم تحمل خطای بیزانس سادهشده (Simplified Byzantine Fault Tolerance) را معرفی کردند. این الگوریتم نسخه بهینهتر الگوریتم تحمل خطای بیزانس عملی است. در این الگوریتم هم مثل بیزانس عملی سه مرحله وجود دارد که در ادامه به آنها اشاره میکنیم.
در مرحله اول، گرهها به چند گروه نماینده (Delegation) تقسیم میشوند و هرکدام از آنها وظیفه تأیید بلاک تراکنشها را برعهده دارند. هر بلاک بههمراه برچسب زمانی باز (Open) و بسته (Close) به یک گروه تخصیص داده میشود و تمام گرههای درون گروه این اطلاعات را دریافت میکنند. در گام سوم هر گره برای انجام وظایف تعیینشده، از زمانبندی داخلی و دستورالعملهای دریافتی استفاده میکند. در ادامه به چند مزیت و مشکل الگوریتم SBFT میپردازیم.
مزایای الگوریتم تحمل خطای بیزانس سادهشده:
- سرعت بالا بهدلیل عدم نیاز به ارسال پیامهای متعدد میان گرهها
- نیاز به توان محاسباتی کمتر نسبت به الگوریتم تحمل خطای بیزانس عملی
معایب الگوریتم تحمل خطای بیزانس سادهشده:
- ناسازگاری با بلاکچینهای عمومی
- تحمل خطای کمتر نسبت به الگوریتم تحمل خطای بیزانس عملی
الگوریتم تحمل خطای بیزانس نیابتی (DBFT)
یکی از الگوریتم های اجماع که تا حدی به الگوریتم اثبات سهام نیابتی هم شباهت دارد، الگوریتم تحمل خطای بیزانس نیابتی (Delegated Byzantine Fault Tolerance) است. الگوریتم DBFT در پروژه مشهور نئو (NEO) مورد استفاده قرار گرفته است. در این الگوریتم سه نوع گره به نام شهروند (Citizens)، نماینده (Delegate) و سخنگو (Speaker) وجود دارد. گرههای نماینده و سخنگو با مکانیزم رأیگیری (Voting) انتخاب میشوند. شهروندان هم در واقع هولدرهای توکن NEO هستند.
شهروندان، صرف نظر از مقدار توکنی که هولد کردهاند، میتوانند برای انتخاب نماینده رأی دهند. یکی از این نمایندگان هم بهصورت تصادفی به عنوان سخنگو انتخاب میشود. وظیفه نمایندگان این است که به درخواستهای شهروندان که همان پردازش تراکنش است پاسخ دهند. علاوه بر این، وظیفه ردیابی تراکنشهای شبکه و ثبت آنها در لجر برعهده نمایندگان است. هنگام تأیید بلاک، سخنگو وارد عمل میشود. سخنگو قبل از تأیید بلاک باید آن را به نمایندگان ارسال کند تا مورد تأیید آنها قرار گیرد. اگر حداقل دو سوم نمایندگان این بلاک را تأیید کنند، این بلاک به بلاکچین اضافه میشود. در ادامه به چند مزیت و مشکل الگوریتم DBFT اشاره میکنیم.
مزایای الگوریتم تحمل خطای بیزانس نیابتی:
- جلوگیری از فورک در شبکه
- سرعت بسیار بالا در تأیید تراکنشها
- مقاومت عالی در برابر حمله ۵۱ درصدی
معایب الگوریتم تحمل خطای بیزانس نیابتی:
- خطر متمرکزشدن شبکه بهدلیل تعداد پایین گرهها
الگوریتم دگ یا گراف جهتدار غیرمدور (DAG)
گراف جهتدار غیرمدور (Directed Acyclic Graph) ساختار دادهای است که برای تأیید تراکنشها و رسیدن به توافق میان گرهها استفاده میشود. الگوریتم دگ (DAG) برخلاف بلاکچین ساختار خطی ندارد و شبیه به درخت است. این درخت از چند رأس (Vertex) و یال (Edge) تشکیل میشود و یالها وظیفه ایجاد رابطه یکطرفه میان رأسها برعهده دارند.
فرض کنید تراکنشی در یک گره از شبکه DAG ثبت میشود. این گره قبل از تأیید تراکنش، ابتدا باید دو تراکنش دیگر شبکه را تأیید کند. الگوریتم دگ وظیفه انتخاب این دو تراکنش را برعهده دارد. گره مورد نظر باید ابتدا بررسی کند که دو تراکنش با هم تداخل نداشته باشند. سپس این گره یک معما را حل میکند تا بتواند تراکنش را تأیید کند.
الگوریتم دگ بهدلیل کارایی عالی در پردازش تراکنشها و ذخیره اطلاعات، یک رقیب جدی برای بلاکچین محسوب میشود. در این الگوریتم خبری از بلاک و در نتیجه استخراج نیست و در نتیجه به توان پردازشی بالایی نیاز ندارد. پروژههای مشهوری مانند آیوتا و نانو از الگوریتم های اجماع مبتنی بر گراف جهتدار غیرمدور استفاده میکنند. الگوریتم دگ چند مزیت و مشکل عمده دارد.
مزایای الگوریتم گراف جهتدار غیرمدور:
- تأیید تراکنشها با سرعت بسیار بالا و بهصورت موازی
- مقیاسپذیری عالی
- مقاومت خوب در برابر حمله دوبار خرج کردن
- بدون نیاز به فرایند استخراج و توان پردازشی بالا
معایب الگوریتم گراف جهتدار غیرمدور:
- عدم استقبال همگانی
- نامشخص بودن عملکرد الگوریتم در شبکههای بزرگ
جمعبندی
الگوریتم های اجماع نقش مهمی در عملکرد صحیح بلاکچین دارند. هرکدام از این الگوریتمها مزایا و معایب خاصی دارند و کاربرد آنها متفاوت است. اگر الگوریتمی که برای بلاکچین انتخاب میکنید با کاربری آن تناسب نداشته باشد با مشکلاتی مثل آسیبپذیری در برابر حملات، تأخیر در پردازش تراکنشها، افت مقیاسپذیری یا حتی نابودی کل شبکه مواجه خواهید شد.
هنگام انتخاب الگوریتم های بلاکچین باید به نکاتی مثل عمومی یا خصوصی بودن بلاکچین، سرعت مورد نیاز و امنیت شبکه توجه داشته باشید. برای مثال اگر تعداد کاربران بلاکچین شما زیاد است و به سرعت بالایی نیاز دارید، الگوریتم های اجماع اثبات سهام، اثبات سهام نیابتی یا اثبات تاریخ مناسب هستند. همچنین اگر سازگاری بلاکچین با محیط زیست در اولویت شماست، بهتر است بهسراغ گواه اثبات کار نروید. بهطور کلی هنگام انتخاب بلاکچین مناسب بهتر است نیازهای خودتان و مخاطبین شبکه را در اولویت قرار دهید.