الگوریتم اجماع چیست؟ – همه چیز در مورد Consensus Algorithm
پیشرفته
شاید شما هم اسم الگوریتمهای اجماع را شنیده باشید اما برایتان این سؤال پیش آمده باشد که این الگوریتمها دقیقاً چه هستند و در دنیای بلاکچین چه نقشی بر عهده دارند. امروز میخواهیم این الگوریتمهای رازآلود را بررسی کنیم تا به تصویری شفاف از آنها برسیم.
همه بلاکچینها بر اساس الگوریتمهای اجماع ساخته شدهاند و درواقع این الگوریتمها جز اصلی هر بلاکچینی هستند. همین الگوریتمها هستند که پروتکلهای مختلف بلاکچین را از هم متمایز میکنند. درواقع اگر الگوریتمهای اجماع وجود نداشته باشند، بلاکچینی هم وجود نخواهد داشت، چراکه بدون این الگوریتمها، بلاکچین به پایگاه دادهای غیرقابل انعطاف تبدیل میشود که دیگر قابلیتهایی را که از یک بلاکچین انتظار داریم برآورده نمیکند.
حال سوال پیش میآید که این الگوریتمهای مهم و حیاتی دقیقاً چه هستند؟
الگوریتم اجماع یا Consensus Algorithm چیست؟
الگوریتم اجماع درواقع فرآیندی است که به کاربران اجازه میدهد بر روی یک مقدار داده واحد در بین فرآیندها یا سیستمهای توزیعشده توافق کنند. با استفاده از الگوریتمهای اجماع، کاربران میتوانند درباره یک بخش خاص اطلاعاتی به توافق برسند. همین به توافق رسیدن بر سر بخشی از اطلاعات است که پروتکلهای بلاکچین را همواره قابلاعتماد و اتکا کرده است. جذابترین ویژگی شبکههای بلاکچین، غیرمتمرکز بودنشان است. در سیستمهای متمرکز، همه تصمیمات شبکه را فقط یک طرف معامله اتخاذ میکند. طرفی که تصمیمات را اتخاذ کرده میتواند هر طور که دلش میخواهد دادهها را تغییر دهد اما در سیستمهای غیرمتمرکز اینگونه نیست.
در سیستمهای غیرمتمرکز، دادهها در یک پایگاه داده که همان شبکه بلاک چین است ثبت میشود. البته همه افراد در شبکه بلاکچین باید یک نسخه مشابه از پایگاه داده داشته باشند تا اطلاعات متناقضی ارائه نشود. رمزنگاری کلید عمومی هم سبب میشود که کاربران شبکه نتوانند سکههای همدیگر را خرج کنند. بااینحال، باید یک مرجع حقیقت سنج وجود داشته باشد که کاربران شبکه بتوانند به آن استناد کنند.
به همین دلیل بود که ساتوشی ناکاموتو، خالق بیت کوین، الگوریتم اجماع «اثبات کار» را پیشنهاد کرد. این الگوریتم کاربرانی را که میخواهند بلوکهایی در شبکه داشته باشند وادار میکند تا سهمی ارائه دهند و درواقع بخشی از دارایی دیجیتالشان را استیک (stake) کنند. استیک نوعی ارزش است که اعتبارسنج یا ولیدیتور (validator) آن را فراهم میکند. این ارزش که توسط شبکه ضبط میشود، ضامن رفتار صادقانه آن اعتبارسنج در شبکه بلاکچین است. اگر اعتبارسنج تقلب کند، استیک خود را از دست میدهند. استیک ممکن است قدرت محاسباتی، ارز دیجیتال یا شهرت او باشد.
شاید بگویید که اصلاً چرا کسی باید بخواهد در یک شبکه بلاکچین استیکینگ انجام دهد؟
دلیل این کار این است که حل مسائل ریاضی در شبکه بلاکچین برای اعتبارسنجها سود به همراه خواهد داشت. همچنین، این فرایند سبب شفافیت سازوکار شبکههای غیرمتمرکز میشود که یکی دیگر از ویژگیهای اصلی شبکههای بلاکچین است. الگوریتمهای اجماع به مشخص کردن مواردی ازجمله موارد زیر کمک میکنند:
- تعیین اینکه آیا کاربران میتوانند تراکنش توزیعشدهای را در پایگاه داده انجام دهند یا خیر
- تعیین یک گره یا نود (node) برای مدیریت برخی وظایف توزیعشده در شبکه
بیش از ۲۰ الگوریتم اجماع وجود دارد اما در این مقاله فقط درباره شش تا از مهمترین الگوریتمهای اجماع صحبت خواهیم کرد.
انواع الگوریتمهای اجماع
الگوریتم اثبات کار یا Proof of Work
الگوریتم اجماع اثبات کار (PoW) پدر تمام الگوریتمهای اجماع بلاکچین است. نخستین شبکهای که الگوریتم اثبات کار را بهکار گرفت، شبکه بیتکوین بود. در الگوریتم اثبات کار، اعتبارسنجها، که ماینر نام دارند، تا زمان رسیدن به راهحلی مشخص، دادههایی را که میخواهند اضافه کنند بهاصطلاح هش (hash) میکنند. هش یک رشته تصادفی از حروف و اعداد است که هنگام اجرای دادهها از طریق یک تابع هش ایجاد میشود. حتی اگر کوچکترین تغییری در جزئیترین دادههای شبکه بلاکچین ایجاد شود، خروجی دادهها متفاوت از آب در میآید. در الگوریتم اثبات کار، این پروتکل است که شرایط لازم برای معتبر شمرده شدن بلوکها را تعیین میکند. بااینحال، مشکل الگوریتم اجماع اثبات کار این است که برای اجرای آنها به قدرت استخراج یا بهاصطلاح ماینینگ زیادی نیاز است.
الگوریتم اثبات کار بیشتر بر دادهها و اطلاعات دقیق متکی است و ازنظر سرعت تراکنش بههیچوجه مناسب نیست و سرعت پایین تراکنش در این الگوریتم یکی از نقطهضعفهای آن محسوب میشود. اگر مشکل خیلی پیچیده باشد، تولید یک بلوک زمان زیادی میبرد و درنتیجه تراکنشها را به تأخیر میاندازد. در حقیقت، همین مسئله مقیاسپذیری بود که سبب ایجاد الگوریتمهای اجماع متعدد دیگری شد که امروز از آنها استفاده میکنیم.
الگوریتم اثبات سهام یا Proof of Stake
الگوریتم اجماع اثبات سهام بهعنوان جایگزینی برای الگوریتم اثبات کار یا PoW پیشنهاد شد. برای اجرای الگوریتم اثبات سهام (PoS) و ماینینگ از این طریق، نیازی به تجهیزات بسیار قوی که الگوریتم اثبات کار به آن نیاز دارد، نیست. تنها چیزی که لازم است یک سیستم کامپیوتری سالم و یک اتصال اینترنت پایدار است. در الگوریتم PoS، یک میزان حداقلی برای سرمایه موردنیاز جهت استیکینگ تعیین میشود. این وجوه در یک کیف پول قفل میشوند و تا پایان زمان استیکنگ نمیتوان آنها را جابهجا کرد.
معمولاً اعتبارسنجها در مورد اینکه کدام تراکنشها در بلوک بعدی گنجانده خواهند شد، توافق میکنند. درواقع، اعتبارسنجها بهصورت تصادفی روی اینکه کدام بلوک انتخاب میشود شرطبندی میکنند و درنهایت پروتکل، یک بلوک را انتخاب میکند. اگر بلوک مدنظر یک اعتبارسنج انتخاب شود، درصدی از کارمزد تراکنش بر اساس استیک آن اعتبارسنج به او پرداخت خواهد شد. هرچه میزان وجوه استیکشده اعتبارسنج بیشتر باشد، سود بیشتری کسب خواهد کرد. اگر بخواهید با پیشنهاد معاملات جعلی تقلب کنید، بخشی یا تمام وجهی را که استیک کردهاید از دست خواهید داد. علاوه بر این، دو مزیت بزرگ الگوریتم اثبات سهام این است که خطر حمله را ۵۱ درصد کاهش میدهد و سرعت تراکنش آن هم از الگوریتم اجماع اثبات کار سریعتر است.
الگوریتم اجماع اثبات سهام واگذارشده (DPoS)
الگوریتم اجماع اثبات سهام واگذارشده یا اعطایی نوعی الگوریتم سنتی اثبات سهام است. این سیستم بسیار قابلاعتماد است و سطح جدیدی از انعطافپذیری را به ارمغان میآورد. اگر به دنبال یک الگوریتم اجماع سریع، کارآمد و غیرمتمرکز هستید، الگوریتم اثبات سهام واگذارشده بهترین راهحل است. با استفاده از این الگوریتم، مشکل ذینفعان بهصورت کاملاً دموکراتیک حل میشود. با استفاده از الگوریتم اجماع اثبات سهام واگذارشده، هر جزء شبکه میتواند به یک «نماینده» تبدیل شود. در این حالت نودها، بهجای ماینر یا اعتبارسنج، «نماینده» خطاب میشوند. این سیستم با تعیین تولید بلوک میتواند در کمتر از یک ثانیه تراکنش انجام دهد.
با استفاده از الگوریتم DPoS شاهدها میتوانند بلوکهای اطلاعاتی تولید کنند. همچنین ممکن است برای انتخاب شاهدان برتر رأیگیری انجام شود. البته رأیگیری تنها زمانی اتفاق میافتد که سیستم از غیرمتمرکز بودن خود اطمینان کامل حاصل کند. علاوه بر این، سود همه شاهدان بلافاصله پس از تولید بلوک پرداخت میشود. این نرخ از پیش و از طریق سیستم رأیگیری تعیین میگردد.
الگوریتم گواه اثبات سهام استیجاری (LPoS)
نوع دیگری از الگوریتم اثبات سهام، الگوریتم گواه اثبات سهام استیجاری است. این الگوریتم اجماع جدید را پلتفرم بلاکچین وِیوز (Waves) معرفی کرد. درست مانند هر پلتفرم دیگر فناوری بلاکچین، ویوز هم ادعا میکند که میتواند با مصرف انرژی محدودتر، امکانات بهتری ارائه دهد. الگوریتم اثبات سهام اولیه محدودیتهایی برای استیکینگ داشت. در الگوریتم اولیه ممکن بود کسانی که تعداد سکه محدودی دارند، هرگز نتوانند در فرایند استیکینگ شرکت کنند. برای حفظ کارایی شبکه، تنها تعداد انگشتشماری از افراد که دارای وجوه بیشتری برای استیکینگ بودند باقی میماندند. این فرآیند به سیستم اجازه میدهد تا یک جامعه متمرکز در یک پلتفرم غیرمتمرکز ایجاد کند که اصلاً خوشایند نیست. با استفاده از الگوریتم گواه اثبات سهام استیجاری یا LPoS، مالکان خرد هم بالاخره میتوانند شانسی برای استیکینگ داشته باشند. در این الگوریتم، چنین افرادی میتوانند سکههای خود را به شبکه اجاره دهند و از این طریق سود ببرند.
الگوریتم اجماع اثبات زمان سپریشده (PoET)
الگوریتم اثبات زمان سپریشده یا PoET یکی از بهترین الگوریتمهای اجماع است. این الگوریتم خاص عمدتاً در شبکههای بلاکچین مجاز استفاده میشود که در آنها باید برای دسترسی به شبکه مجوز دریافت کنید. این شبکههای مجوز باید در مورد حقوق استخراج (ماینینگ) یا اصول رأیگیری تصمیم بگیرند. الگوریتمهای PoET، برای اطمینان از اجرای مناسب قوانین از یک تاکتیک خاص برای ایجاد شفافیت در کل شبکه استفاده میکنند. این الگوریتمهای اجماع ورود امن به سیستم را هم تضمین میکنند، چراکه شبکه قبل از اینکه به ماینرها دسترسی بدهد از آنها میخواهد مراحل احراز هویت را طی کنند.
الگوریتم اجماع اثبات زمان سپریشده، برندهها را تنها با استفاده از ابزارهای منصفانه انتخاب میکند. با اجرای این الگوریتم، همه با هم برابر خواهند بود و شرایط یکسانی خواهند داشت. هر فردی در شبکه باید مدتی منتظر بماند؛ بااینحال، این محدودیت زمانی تصادفی است. سهامداری که سهم عادلانهای از زمان انتظار خود را به پایان رسانده است، در لیست دفتر کل یا لجر قرار میگیرد تا بتواند یک بلوک جدید ایجاد کند. برای توجیه این سناریوها، الگوریتم باید دو فاکتور را در نظر بگیرد:
- در وهله اول، آیا برنده عدد تصادفی را انتخاب کرده است؟ فرد ممکن است یک زمان کوتاه تصادفی را انتخاب کند و اول برنده شود.
- آیا آن شخص واقعاً آن مدتزمان مشخص را منتظر مانده است؟
PoET مستلزم وجود یک اکستنشن خاص در CPU است که Intel Software Guard Extension نام دارد. این Software Guard Extension به اجرای کدهای منحصربهفرد در شبکه کمک میکند. PoET از این سیستم استفاده میکند تا مطمئن شود که برنده کاملاً منصفانه انتخاب شده است.
الگوریتم اجماع اثبات اعتبار (PoA)
آخرین الگوریتم اجماعی که در این مقاله به آن میپردازیم، الگوریتم اثبات اعتبار یا PoA است. الگوریتم اثبات اعتبار در سیستمهای متمرکز مورداستفاده قرار میگیرد. این بدان معناست که اعتبارسنجی را حسابهای تائیدشده (که مدیران سیستم آنها را انتخاب میکنند) در سراسر شبکه به انجام میرسانند. ماهیت متمرکز الگوریتم اجماع اثبات اعتبار، به دلیل ماهیتی که دارد عمدتاً در شبکههای خصوصی بهکار میرود
الگوریتم اجماع اثبات وزنی (POWeight)
الگوریتم اثبات وزن یا Proof of Weight (PoWeight) یک مکانیسم اجماع در بلاک چین است که به کاربران بر اساس مقدار ارز دیجیتالی که دارند، «وزن» میدهد! رویکرد وزن به این معنی است که شما از ترکیبی از اطلاعات از چندین منبع مستقل برای ارائه شواهد کافی برای برآوردن یک نیاز اطلاعاتی استفاده میکنید.
در شبکهای که از اثبات وزن استفاده میکند، کاربران وزندار نقش مهمی در فرآیند دستیابی به اجماع دارند. به هر کاربر یک “وزن” اختصاص داده می شود، که نسبت به مقدار انتخاب شده ای است که نشان دهنده مشارکت کاربر در شبکه است. برای جلوگیری از حملات دوگانه خرج کردن و سایر بازی های ناپسند در بلاک چین، اکثریت (بیش از دو سوم) کسر وزن شده باید متعلق به کاربران صادق باشد.
اثبات توکن سوزی (POB)
کاربران توکنها را به یک آدرس توکن سوزی ارسال میکنند که امکان برگشت انها وجود ندارد و بسته به میزان توکنها پاداش میگیرند.
در این مکانیسم همانند مکانیسم گواهی سپرده یا اثبات سهام، کاربران توکنها را استیک یا سپرده گذاری میکنند؛ اما بر خلاف PoS توکنهای سپرده گذاری شده به کاربران باز نمیگردد. توکنها در این مکانیسم به یک آدرس عمومی که بهطور تصادفی و بدون کلید خصوصی تولید میشود، ارسال میشوند و قابل برگشت نیستند. توکنهای ارسال شده به این آدرس غیرقابل دسترس هستند و از چرخه خارج میشوند.
همچنین مانند گواه اثبات سهام هیچ سختافزار پردازشی خریداری نمیشود. همچنین حمله ۵۱ درصد در این الگوریتم هیچ صرفه اقتصادی ندارد؛ زیرا در الگوریتم اثبات سوزاندن، نودها هرچه توکنهای بیشتری بسوزانند، احتمال برنده شدنشان برای ایجاد یک بلاک جدید بیشتر میشود.
الگوریتم اجماع تاب آور خطای بیزانس عملی (PBFT)
الگوریتم تاب آور خطای بیزانس عملی (Practical Byzantine Fault Tolerance) یک الگوریتم اجماع است که در اواخر دهه ۱۹۹۰ ابداع شد. PBFT به منظور اجرای سیستم های غیرهمزمان طراحی شده است. کاربرد این الگوریتم رسیدن به اجماع در یک شبکه توزیع شده (مانند بلاکچین) است.
مکانیزم PBFT روشی برای دستیابی به اجماع در شبکه توزیع شده حتی در زمانی است که بعضی از نودهای شبکه از کار بیفتند یا اطلاعات جعلی (تراکنشهای نامعتبر) به بقیه شبکه ارسال کنند. هدف مکانیزم PBFT محافطت از شبکه در مقابل خطای سیستمی است و این کار را با تصمیم گیری جمعی محقق میسازد. هدف از تصمیم گیری جمعی، کاهش تاثیر نودهای ناکارآمد و متقلب است.
الگوریتم اجماع SBFT
SBFT یک نسخه جدید از الگوریتم BF (تحمل خطای بیزانس (است که به چالش های مقیاس پذیری و غیرمتمرکز بودن می پردازد. بر خلاف بسیاری از سیستمهای BFT قبلی که فقط در صورت متمرکز بودن شبکه خوب عمل میکردند، SBFT برای یک شبکه کاملا غیرمتمرکز بهینه شده است. SBFT یک محیط اجرای قرارداد هوشمند بر اساس کد ماشین مجازی اتریوم (EVM) ارائه می کند.
الگوریتم اجماع DBFT
DBFT نسخه بهبود یافته PBFT است و برای سیستم های بلاکچین عمومی مناسب است، چراکه از مقایس پذیری بالایی برخوردار است.
الگوریتم تحمل خطای بیزانس (DBFT) یک الگوریتم اجماع است که در بلاک چین NEO استفاده میشود. الگوریتم DBFT امکان رسیدن به اجماع از طریق رأی دادن به یک نماینده را فراهم میکند. در اکوسیستم NEO، این نمایندگان به عنوان دفتردار نامگذاری میشوند. از آنجا که در DBFT وکالت به یک نماینده داده میشود و اجماع بین تعداد کمی از نمایندگان صورت میگیرد، این الگوریتم در مقایسه با PBFT کارآمدتر عمل میکند.
الگوریتم دگ (DAG)
در رمزنگاری مبتنی بر دگ، هر کره در ساختار، یک تراکنش را نشان میدهد. در اینجا هیچ مفهومی از بلوک وجود ندارد و مانند بلاک چین، به استخراج برای تداوم شبکه نیازی نیست. بنابراین به جای تجمیع تراکنشها در بلوکها، هر تراکنش روی دیگری ایجاد میشود. البته یک عملیات گواهی کار(POW) کوچک در دگ وجود دارد که وقتی یک نود تراکنشی را ارسال میکند، میبایست تراکنش قبلی را تایید کند تا ثبت آن انجام شود. این کار تضمین کننده پایداری شبکه بوده و تراکنشهای قبلی را نیز اعتبار میبخشد.
الگوریتم اجماع اثبات اهمیت (POI)
اثبات اهمیت (POI) یک الگوریتم اجماع در بلاکچین است که برای اولین بار توسط NEM معرفی شد. اثبات اهمیت مکانیزمی است برای تعیین اینکه کدام ذینفعان شبکه (گرهها) واجد شرایط افزودن بلوک به بلاک چین هستند.
فرایند تایید بلاک در NEM برداشت یا هاروست (Harvest) نامیده میشود. به کسی که عمل هاروست یا برداشت را انجام میدهد هاروستر (Harvester) گفته میشود. در ازای برداشت یک بلاک، گرهها قادر به جمع آوری کارمزدهای تراکنش در آن بلاک هستند. حسابهایی که دارای نمره اهمیت بیشتری هستند احتمال بیشتری برای انتخاب یک بلاک دارند.
الگوریتم اجماع اثبات ظرفیت (POC)
گواه اثبات ظرفیت یا Proof of Capacity (POC) یک الگوریتم استخراج نسبتا جدید است که در آن ماینرها از فضای خالی هارد استفاده میکنند و آن را برای مشارکت در شبکه پلات (Plot) میکنند. هر پلات به نوعی یک راه برای حل مسئله ماین بوده و فرآیند پلاتکردن پیچیده و زمانبر است؛ در نتیجه ماینرها با توجه به زمان ایجاد هر بلاک که تقریبا ۴ دقیقه و کوتاه است، پیش از شروع فرآیند ماین راهحلهای مسئلهها را محاسبه و ذخیره میکنند. در هر دور از اجماع، راهحلی که زودتر به نتیجه برسد برنده است و آن ماینر بلاک را نوشته و پاداش را به دست میآورد.
امیدواریم با خواندن این مقاله اطلاعات کافی درباره الگوریتمهای اجماع و انواع مختلف آن کسب کرده باشید.
دیدگاهها