در دنیای غیرمتمرکز بلاکچین که خبری از نهاد مرکزی برای کنترل و تأیید تراکنشها نیست، الگوریتمهای اجماع ستون فقرات شبکههای توزیعشده به شمار میآیند. این الگوریتمها مکانیزمهایی هستند که به گرههای مختلف شبکه اجازه میدهند بدون نیاز به اعتماد متقابل، بر سر وضعیت صحیح دادهها به توافق برسند. به عبارت دیگر، الگوریتم اجماع تضمین میکند که همه اعضای شبکه درباره صحت تراکنشها و ترتیب بلاکها به اجماع برسند. در این مقاله بررسی میکنیم که الگوریتم اجماع چیست و با انواع مختلف آن مانند اثبات کار، اثبات سهام، اثبات ظرفیت، و سایر روشهای رایج آشنا خواهیم شد.
مقدمه
ما میدانیم که بلاکچین یک شبکه توزیعشده و غیرمتمرکز است که ویژگیهایی مانند تغییرناپذیری، حریم خصوصی، امنیت و شفافیت را فراهم میکند. هیچ مرجع مرکزی برای اعتبارسنجی و تأیید تراکنشها وجود ندارد، با این حال هر تراکنش در بلاکچین کاملاً ایمن و معتبر در نظر گرفته میشود. این امر تنها به دلیل وجود پروتکل اجماع که بخش اصلی هر شبکه بلاکچین است، امکانپذیر شده است.
الگوریتمهای اجماع نقش بسیار مهمی در شبکههای توزیعشده و بلاکچینها دارند، زیرا به سیستمها اجازه میدهند تا بدون نیاز به اعتماد به یک مرجع مرکزی، به اجماع برسند. این الگوریتمها فرآیندهایی هستند که برای دستیابی به توافق بر سر یک مقدار داده واحد بین گرههای مختلف در یک شبکه توزیعشده استفاده میشوند. در دنیای امروز، با گسترش ارزهای دیجیتال و بلاکچینها، الگوریتمهای اجماع به ابزاری حیاتی برای تضمین امنیت و اعتبار تراکنشها تبدیل شدهاند.
الگوریتم اجماع چیست؟
الگوریتم اجماع (Consensus Algorithms) فرایندی است که طی آن تمامی گرههای شبکه بلاکچین درباره وضعیت فعلی دفتر کل توزیعشده به توافق مشترک میرسند. به این ترتیب، الگوریتمهای اجماع قابلیت اطمینان را در شبکه بلاکچین ایجاد کرده و اعتماد بین گرههای ناشناس را در یک محیط محاسباتی توزیعشده برقرار میکنند.
اساساً، پروتکل اجماع اطمینان حاصل میکند که هر بلوک جدیدی که به بلاکچین اضافه میشود، تنها نسخه مورد توافق همه گرههای بلاکچین از حقیقت است.
پروتکل اجماع بلاکچین شامل اهداف خاصی همچون دستیابی به توافق، همکاری، مشارکت، حقوق برابر برای هر گره و مشارکت اجباری هر گره در فرایند اجماع میشود. بنابراین، یک الگوریتم اجماع با هدف یافتن توافقی مشترک که به نفع کل شبکه باشد، طراحی شده است.
الگوریتم اجماع یک فرایند در علم کامپیوتر است که برای دستیابی به توافق بر روی یک مقدار داده واحد در میان فرآیندها یا سیستمهای توزیعشده استفاده میشود. این الگوریتمها برای دستیابی به قابلیت اطمینان در یک شبکه که شامل چندین کاربر یا گره است طراحی شدهاند. حل این مسئله که به آن مشکل اجماع گفته میشود، در محاسبات توزیعشده و سیستمهای چندعاملی مانند شبکههای بلاکچین ارزهای دیجیتال اهمیت زیادی دارد.
چگونه الگوریتمهای اجماع کار میکنند؟
الگوریتمهای اجماع در سیستمهای مقیاسپذیر و مقاوم به خطا حیاتی هستند زیرا این الگوریتمها به مجموعهای از ماشینها یا سرورهای توزیعشده/تکراری این امکان را میدهند که به عنوان یک گروه هماهنگ عمل کنند و بر روی وضعیت سیستم توافق کنند، حتی در حضور خطاها یا خرابیها. برای دستیابی به این هدف، الگوریتم یک آستانه تعیین میکند یا تعداد ماشینهای عضو که باید به توافق یا اجماع برسند.
هنگامی که این الگوریتمها مشکل اجماع را حل میکنند، فرض میکنند که برخی فرآیندها و سیستمها در دسترس نخواهند بود و تنها بخشی از گرهها پاسخ خواهند داد. همچنین فرض میشود که برخی از ارتباطات در حین انتقال از دست خواهند رفت. با این حال، یک پاسخ از گرههای در دسترس لازم است. برای مثال، یک الگوریتم ممکن است نیاز داشته باشد که حداقل ۵۱٪ از گرهها برای دستیابی به اجماع یا توافق بر روی یک مقدار داده یا وضعیت شبکه پاسخ دهند.
این امر اطمینان حاصل میکند که اجماع با حداقل منابع به دست میآید، حتی اگر سایر منابع در دسترس نباشند یا خراب شوند. این مکانیزم همچنین یکپارچگی تصمیمات گرفتهشده توسط گرههای موافق در سیستم مقاوم به خطا را حفظ میکند.
کاربرد الگوریتم اجماع چیست؟
بر اساس یک مکانیزم زیرین، الگوریتمهای اجماع تصمیم میگیرند که آیا یک تراکنش توزیعشده باید به یک پایگاه داده اضافه شود یا نه. این الگوریتمها همچنین به طور معمول برای هماهنگسازی دادهها در یک شبکه غیرمتمرکز و اطمینان از سازگاری و شفافیت در تراکنشها استفاده میشوند. الگوریتمهای اجماع همچنین برای اختصاص وضعیت رهبر به یک گره مورد استفاده قرار میگیرند.
الگوریتمهای اجماع نسخههای ماشین حالت را هماهنگ میکنند و از سازگاری بین آنها اطمینان حاصل میکنند. آنها اغلب برای دستیابی به اعتماد و امنیت در یک شبکه کامپیوتری غیرمتمرکز، مانند بلاکچین، استفاده میشوند و برای ثبت سوابق بسیار مفید هستند.
علاوه بر بلاکچین و ارزهای دیجیتال، این الگوریتمها از بسیاری از سیستمهای محاسباتی و دیجیتال دنیای واقعی پشتیبانی میکنند، از جمله:
- تکثیر ماشینهای حالت
- PageRank گوگل
- تعادل بار
- شبکههای برق هوشمند
- هماهنگسازی ساعت و
- کنترل وسایل نقلیه هوایی بدون سرنشین مانند پهپادها.
انواع الگوریتم اجماع
پس از پاسخ به این سوال که الگوریتم اجماع چیست؟ در ادامه این مقاله از مجموعه مقالات پی استور، انواع مختلف این الگوریتم و نحوه عملکرد آنها را بررسی خواهیم کرد.
الگوریتم اثبات کار (Proof of Work)
الگوریتم PoW یکی از قدیمیترین انواع الگوریتمهای اجماع است. این الگوریتم ابتدا در سال ۱۹۹۳ معرفی شد و در سال ۲۰۰۸ توسط بنیانگذار بیتکوین، ساتوشی ناکاموتو، دوباره معرفی گردید. ایده اصلی PoW این است که گرهها باید معماهای ریاضی پیچیدهای را حل کنند و به سریعترین شکل ممکن بیشترین حدسهای ممکن را بزنند.
در بلاکچینهای ارزهای دیجیتال که از الگوریتم PoW استفاده میکنند، ماینرها یا اعتبارسنجها — که به آنها گرههای شرکتکننده نیز گفته میشود — باید اثبات کنند که کاری که انجام دادهاند و ارسال کردهاند به آنها حق افزودن تراکنشهای جدید به بلاکچین را میدهد. آنها باید یک مشکل ریاضی پیچیده را با پیدا کردن هش رمزنگاری شده یک بلوک خاص حل کنند.
این کار با استفاده از دادههای هدر بلوک به عنوان ورودی انجام میشود و این دادهها به طور مداوم از طریق یک تابع هش رمزنگاری عبور داده میشوند. هر بار که این کار انجام میشود، تغییرات کوچکی به دادههای ورودی ایجاد میشود که با افزودن یک عدد دلخواه به نام نانس (nonce) انجام میشود. این نسخه بلاکچین از حدس زدن برای پیدا کردن راهحل است.
در نهایت، زمانی که ماینر راهحلی پیدا میکند که منجر به اجماع میشود، به عنوان پاداش ارز دیجیتال دریافت میکند. با این حال، تمام این اقدامات نیاز به تکرارهای متعدد دارند که مقدار زیادی از قدرت محاسباتی را مصرف میکنند. به همین دلیل است که PoW به عنوان یک مکانیزم اجماع ناکارآمد در نظر گرفته میشود.
با این حال، الگوریتم PoW همچنان محبوب است زیرا امنیت شبکه را حفظ میکند و در برابر حملات سایبری مانند حملات DDoS مقاومت قابل توجهی دارد. همچنین این الگوریتم قدیمیترین الگوریتم اجماع است و شناخته شده است که به خوبی در بلاکچینها عمل میکند.
این الگوریتم اجماع برای انتخاب یک ماینر جهت تولید بلوک بعدی استفاده میشود. بیتکوین از این الگوریتم اجماع PoW استفاده میکند. ایده اصلی پشت این الگوریتم، حل یک معمای پیچیده ریاضی و ارائه سریع یک راهحل است. این معمای ریاضی به توان محاسباتی زیادی نیاز دارد و بنابراین، گرهای که زودتر این معما را حل کند، اجازه استخراج بلوک بعدی را به دست میآورد.
الگوریتم اثبات سهام (Proof of Stake)
این الگوریتم رایجترین جایگزین برای PoW است. اتریوم از اجماع PoW به PoS تغییر یافته است. در این نوع الگوریتم اجماع، به جای سرمایهگذاری در سختافزار گرانقیمت برای حل یک معمای پیچیده، اعتبارسنجها (Validators) در سکههای سیستم سرمایهگذاری میکنند و بخشی از سکههای خود را به عنوان سهام قفل میکنند.
پس از آن، همه اعتبارسنجها شروع به اعتبارسنجی بلوکها میکنند. اعتبارسنجها در صورت کشف بلوکی که فکر میکنند میتواند به زنجیره اضافه شود، روی آن بلوک شرطبندی میکنند. بر اساس بلوکهایی که واقعاً به بلاکچین اضافه میشوند، همه اعتبارسنجها به نسبت شرطبندیهای خود پاداش دریافت میکنند و سهام آنها به همان نسبت افزایش مییابد. در نهایت، یک اعتبارسنج بر اساس سهم اقتصادیاش در شبکه برای تولید بلوک جدید انتخاب میشود. بنابراین، PoS از طریق یک مکانیزم تشویقی اعتبارسنجها را به دستیابی به توافق ترغیب میکند.
به عنوان جایگزینی برای PoW در نظر گرفته میشود. بر خلاف PoW، PoS به منابع سختافزاری یا نرمافزاری خاصی برای استخراج ارزهای دیجیتال نیاز ندارد، زیرا شامل حل مسائل محاسباتی پیچیده نمیشود. در عوض، اعتبارسنجهای کریپتو مقداری از سکههای خود را در یک کیف پول قفل کرده یا استیک میکنند. سپس، آنها بلوکها را اعتبارسنجی میکنند اگر بلوکی پیدا کنند که قابل افزودن به بلاکچین باشد.
اعتبارسنجها پاداش میگیرند — یا سهم آنها افزایش مییابد — متناسب با شرطبندیهایی که بر اساس بلوکهای افزوده شده به بلاکچین انجام میدهند. از آنجا که این الگوریتم مبتنی بر مشوقها است، انرژی محاسباتی کمتری نسبت به PoW مصرف میکند.
با وجود این مزیت، الگوریتم PoS یک معایب جدی دارد. ظرفیت استخراج یک اعتبارسنج بستگی به تعداد توکنهایی دارد که در اختیار دارد، بنابراین یک ماینری که با سکههای بیشتر شروع میکند، کنترل بیشتری بر روی مکانیزم اجماع دارد. علاوه بر این، برخی از ماینرها میتوانند سکههای زیادی خریداری کنند که باعث رقیق شدن مکانیزم و کاهش ویژگی غیرمتمرکز بودن سیستم میشود.
الگوریتم اثبات سهام نمایندگی شده (Delegated Proof of Stake)
اثبات سهام نمایندگی شده (DPoS) به عنوان نسخهای کارآمدتر و دموکراتیکتر از PoS در نظر گرفته میشود. این الگوریتم بر اساس یک سیستم رأیگیری است که در آن نمایندگان یا شاهدان برای اعتبارسنجهای مورد علاقه خود رأی میدهند تا در طول تولید و اعتبارسنجی بلوکها به اجماع برسند. علاوه بر اعتبارسنجی تراکنشها، نمایندگان همچنین به حفظ یکپارچگی، قابلیت اطمینان و شفافیت شبکه بلاکچین کمک میکنند.
قدرت رأی هر نماینده متناسب با تعداد سکههای در دسترس است. آنها پاداشهای خود را به صورت هزینههای تراکنش دریافت میکنند که با انتخابکنندگان خود به اشتراک گذاشته میشود.
سیستم رأیگیری الگوریتم DPoS و بنابراین مکانیزم اجماع آن بستگی به شهرت نمایندگان دارد. این مکانیزم از PoW یا PoS مقیاسپذیرتر است زیرا میتواند تراکنشهای بیشتری را در هر ثانیه پردازش کرده و زمان تأیید سریعتری ارائه دهد.
اثبات سوزاندن (Proof of Burn)
در الگوریتم PoB، به جای سرمایهگذاری روی تجهیزات سختافزاری گرانقیمت، اعتبارسنجها با ارسال سکهها به آدرسی غیرقابل بازیابی، سکههای خود را «میسوزانند». با تعهد سکهها به یک آدرس غیرقابل دسترسی، اعتبارسنجها بر اساس یک فرایند انتخاب تصادفی، حق استخراج در سیستم را به دست میآورند. بنابراین، سوزاندن سکهها به این معناست که اعتبارسنجها برای از دست دادن کوتاهمدت خود، تعهد بلندمدتی ارائه میدهند.
بسته به نحوه پیادهسازی PoB، ماینرها ممکن است ارز بومی برنامه بلاکچین یا ارز یک زنجیره جایگزین مانند بیتکوین را بسوزانند. هرچه سکههای بیشتری بسوزانند، شانس بیشتری برای انتخاب شدن جهت استخراج بلوک بعدی خواهند داشت. اگرچه PoB جایگزین جالبی برای PoW است، اما این پروتکل همچنان منابع را بیهوده هدر میدهد. همچنین این موضوع مطرح شده که قدرت استخراج صرفاً نصیب کسانی میشود که حاضرند پول بیشتری بسوزانند.
الگوریتم اثبات ظرفیت (Proof of Capacity)
در الگوریتم اجماع اثبات ظرفیت، اعتبارسنجها باید به جای سرمایهگذاری روی سختافزار گرانقیمت یا سوزاندن سکهها، در فضای هارد دیسک خود سرمایهگذاری کنند. هرچه فضای ذخیرهسازی بیشتری در اختیار اعتبارسنج باشد، شانس بیشتری برای انتخاب شدن جهت استخراج بلوک بعدی و دریافت پاداش بلوک خواهد داشت.
الگوریتم اثبات زمان سپریشده (Proof of Elapsed Time)
PoET یکی از عادلانهترین الگوریتمهای اجماع است که بلوک بعدی را تنها با روشهای منصفانه انتخاب میکند. این الگوریتم به طور گسترده در بلاکچینهای مجوزدار (Permissioned Blockchain) استفاده میشود. در این الگوریتم، هر اعتبارسنج در شبکه شانس برابری برای ایجاد بلوک خود دارد. تمام گرهها این کار را با انتظار برای مدت زمان تصادفی و افزودن مدرک این انتظار به بلوک انجام میدهند. بلوکهای ایجاد شده برای بررسی به شبکه منتشر میشوند. برنده، اعتبارسنجی است که کمترین مقدار زمان انتظار را در بخش مدرک خود داشته باشد. بلوک گره اعتبارسنج برنده به بلاکچین اضافه میشود.
همچنین در این الگوریتم بررسیهای اضافی صورت میگیرد تا از پیروزی دائمی یک گره یا تولید مکرر کمترین مقدار زمان انتظار جلوگیری شود.
الگوریتمهای اجماع دیگری نیز وجود دارند مانند اثبات فعالیت «Proof of Activity»، اثبات وزن «Proof of Weight»، اثبات اهمیت «Proof of Importance»، اثبات سهام اجارهای «Leased Proof of Stake» و غیره. بنابراین انتخاب هوشمندانه الگوریتم اجماع بر اساس نیازهای شبکه کسبوکار اهمیت زیادی دارد، زیرا شبکههای بلاکچین بدون وجود الگوریتمهای اجماع برای تأیید هر تراکنشی که انجام میشود، نمیتوانند به درستی عمل کنند.
نتیجه گیری
در این مقاله به این پرسش پاسخ دادیم که الگوریتم اجماع چیست و چرا نقش حیاتی در ساختار شبکههای بلاکچین ایفا میکند. همانطور که مشاهده کردیم، بدون وجود الگوریتمهای اجماع، شبکههای غیرمتمرکز قادر به تأیید تراکنشها و حفظ امنیت و شفافیت خود نخواهند بود. الگوریتم اجماع با ایجاد توافق میان گرههای مختلف شبکه، بستر قابل اعتمادی برای ثبت دادهها فراهم میکند.
انواع مختلفی از الگوریتمهای اجماع وجود دارد که هرکدام ویژگیها، مزایا و معایب خاص خود را دارند؛ از اثبات کار (PoW) و اثبات سهام (PoS) گرفته تا اثبات ظرفیت (PoC) و اثبات زمان سپریشده (PoET). انتخاب صحیح الگوریتم اجماع بر اساس نیازهای شبکه، یکی از مهمترین تصمیمات در طراحی هر سیستم بلاکچینی است.
در نهایت، درک این که الگوریتم اجماع چیست و آشنایی با انواع آن، میتواند به توسعهدهندگان، کسبوکارها و علاقهمندان به بلاکچین کمک کند تا شبکههایی امنتر، سریعتر و کارآمدتر ایجاد نمایند.