از زمان پیدایش بیت کوین، بهعنوان یک سیستم پول الکترونیک همتابههمتا، ارزهای دیجیتال متعددی با مکانیزمهایی مختلف ایجاد شدهاند؛ اما تقریباً همه این ارزها دارای یک عنصر مشترک، با نام فناوری «بلاکچین» هستند. بلاکچین بهصورت یک دفترکل دیجیتال غیرمتمرکز عمل میکند که توسط شبکهای توزیعشده از گرههای کامپیوتری نگهداری میشود و امکان ایجاد سیستمهای اقتصادی را بدون نیاز به اعتماد فراهم میکند. این فناوری انقلابی، انجام تراکنشهای مالی شفاف و قابل اعتماد را بدون نیاز به واسطهها امکانپذیر کرده است. در این سیستمها، مکانیزمهای اجماع، مانند تحمل خطای بیزانس (Byzantine Fault Tolerance) اهمیت فراوانی دارند. ازاینرو، در این مطلب از دلتا کالج، بهسراغ تحمل خطای بیزانس رفتهایم تا جنبههای فنی الگوریتم BFT را مورد بررسی قرار دهیم.
مسئله ژنرالهای بیزانس
برای درک بهتر مطلب، ابتدا باید ببینیم که الگوریتم تحمل خطای بیزانس بهدنبال حل چه مسئلهای است. مسئله ژنرالهای بیزانس که در سال ۱۹۸۲ مطرح شد، یک معضل کلاسیک در سیستمهای توزیعشده است. این مسئله به چالشهایی اشاره دارد که احتمالاً گروهی از ژنرالهای بیزانس، هنگام تلاش برای توافق بر روی یک تصمیم مشترک، با آنها مواجه میشوند. فرض کنید که هر ژنرال فرمانده یک ارتش است و هرکدام از آنها در نقاط مختلف اطراف شهر (محلی که میخواهند به آن حمله کنند)، مستقر شدهاند. آنها باید بر سر حمله یا عقبنشینی توافق کنند و مهم این است که همه ژنرالها به یک تصمیم مشترک برسند تا این تصمیم بهصورت هماهنگ اجرا شود.
در این صورت، شرایطی که باید برقرار باشد، شامل: موارد زیر است:
- هر ژنرال باید تصمیم مشخصی را درباره حمله یا عقبنشینی اتخاذ کند.
- پس از اتخاذ تصمیم، تغییر آن امکانپذیر نیست.
- همه ژنرالها باید بهصورت هماهنگ یک تصمیم واحد را اجرا کنند.
بااینوجود، چالش بزرگ زمانی رخ میدهد که این ژنرالها فقط ازطریق پیامهایی که توسط پیک ارسال میشود، با یکدیگر در ارتباط باشند. بنابراین، احتمال دارد که این پیامها با تأخیر به مقصد برسند، صدمه ببینند یا مفقود شوند. علاوهبر آن، حتی اگر پیام با موفقیت به مقصد برسد، ممکن است که یکی از ژنرالها عمداً پیام اشتباهی را بفرستد تا دیگران را گمراه کند و در نتیجه، منجر به شکست کل عملیات شود.
در فناوری بلاکچین، هر ژنرال معادل یک گره شبکه است و این گرهها باید در مورد وضعیت کنونی سیستم به اجماع برسند؛ یعنی اکثریت شرکتکنندگان در یک شبکه توزیعشده باید به توافق دست یابند تا از شکست کامل سیستم جلوگیری شود. به عبارت دیگر، برای رسیدن به اجماع در این سیستمها، حداقل دوسِوم از گرهها باید قابل اعتماد و صادق باشند. ازاینرو، اگر اکثریت شبکه تصمیم به انجام عمل نادرست بگیرند، سیستم در معرض شکست و حملات قرار خواهد گرفت.
تحمل خطای بیزانس چیست؟
تحمل خطای بیزانس (Byzantine Fault Tolerance یا BFT) یک ویژگی اساسی در سیستمهای توزیعشده است که به آنها اجازه میدهد تا حتی در صورت وجود گرههای معیوب یا خرابکار، عملکرد صحیح خود را حفظ کنند. خرابی بیزانس (Byzantine Failure) زمانی رخ میدهد که یک گره در سیستم توزیعشده، اطلاعاتی نادرست یا گمراهکننده را به سایر گرهها ارسال کند؛ بهگونهای که تشخیص گرههای معیوب از گرههای سالم دشوار باشد.
برای مواجهه با خرابی بیزانس، الگوریتمهای BFT بهشکلی طراحی شدهاند تا سیستم بتواند به اجماع برسد؛ حتی اگر برخی از گرهها اطلاعاتی نادرست را ارائه دهند. این الگوریتمها گرههای شبکه را به گروههایی تقسیم میکنند که باید با یکدیگر در تبادل اطلاعات و پیامها باشند. ازطریق این تبادلِ پیامها، گرهها میتوانند اطلاعات سایر گرهها را تأیید کرده و مطمئن شوند که همه آنها در مورد وضعیت کنونی سیستم توافق دارند.
تحمل خطای بیزانس چگونه کار میکند؟
سیستمهای توزیعشده برای حفظ کارکرد صحیح خود، حتی در حضور گرههای معیوب یا خرابکار، نیاز به مکانیزمهای اجماع دارند. هر مکانیزم اجماع بهنوعی مسئله ژنرالهای بیزانس را حل میکند. ازاینرو، در این بخش، به بررسی چند مکانیزم اجماع محبوب و نحوه حل این مسئله توسط آنها میپردازیم.
تحمل خطای بیزانس در شبکههای اثبات کار (Proof-of-Work)؛ مانند بیت کوین
مکانیزم اجماع اثبات کار (Proof-of-Work یا PoW) توسط ساتوشی ناکاموتو (Satoshi Nakamoto) در وایتپیپر بیت کوین معرفی شد. در این سیستم، گرهها که به نام ماینر (Miner) شناخته میشوند، برای اضافهکردن بلوکهای جدید به بلاکچین، با حل مسائل پیچیده ریاضی، با یکدیگر رقابت میکنند. این مسائل طوری طراحی شدهاند که حل آنها به سرمایهگذاری و نگهداری از سختافزارهایی خاص نیاز دارد. اصولاً این سختافزارها انرژی زیادی را مصرف میکنند. ماینرها پس از حل این مسائل، کد هش (Hash) مخصوصی را تولید خواهند کرد که نشاندهنده انجام کار لازم بر روی بلوک است. این فرایند، انگیزهای قوی را برای ماینرها ایجاد میکند تا در حفظ امنیت شبکه کوشا باشند.
تحمل خطای بیزانس در شبکههای اثبات سهام (Proof-of-Stake)؛ مانند اتریوم
اثبات سهام (Proof-of-Stake یا PoS) مکانیزم اجماع دیگری است که برای حل مسئله ژنرالهای بیزانس کاربرد دارد. در این سیستم، اعتبارسنجها (Validators) باید مقدار قابل توجهی از ارز دیجیتال را بهعنوان وثیقه قفل کنند تا بتوانند در تأیید تراکنشها و ساخت بلوکها مشارکت داشته باشند. این فرایند که به نام استیکینگ (Staking) شناخته میشود، از نظر مالی، انجام تقلب را غیرممکن میسازد. برای مثال، اعتبارسنجهای شبکه اتریوم باید ۳۲ اتر (ETH) را استیک کنند که مقدار قابل توجهی است.
همچنین، بسیاری از شبکههای مبتنی بر اثبات سهام از مکانیزمهای مجازاتی، مانند اسلشینگ (Slashing)، بهره میبرند که در صورت عملکرد نادرست، اعتبارسنجها را جریمه میکنند.
سایر مکانیزمهای اجماع با تحمل خطای بیزانس
برخی دیگر از مکانیزمهای اجماع، شامل اثبات اعتبار (Proof-of-Authority یا PoA) و اثبات هویت (Proof-of-Identity یا PoI) هستند که هرکدام با روشهای خاص خود، مسئله ژنرالهای بیزانس را حل میکنند و اطمینان میدهند که شبکه در حضور گرههای معیوب، بهدرستی عمل میکند.
انواع خرابی یا خطای بیزانس
اصولاً الگوریتم تحمل خطای بیزانس باید بر دو دسته از خرابیها غلبه کند. در ادامه، این دو نوع خطا را توضیح میدهیم.
خرابی توقف (Fail-stop Failure)
در این نوع از خرابی، گره (Node) دچار مشکل میشود و به کلی از کار میافتد. معمولاً خطای توقف بهسادگی قابل شناسایی است؛ زیرا گره کاملاً خاموش یا قطع میشود و دیگر هیچ پاسخی نمیدهد.
خرابی گرههای دلخواه (Arbitrary-node Failure)
این نوع از خرابیها شامل مجموعهای از رفتارهای غیرقابل پیشبینی و مخرب هستند که میتواند عملکرد کلی سیستم را به خطر بیندازد. نمونههایی از خطای گرههای دلخواه عبارتاند از:
- عدم بازگشت نتیجه (Failure to return a result): گره به درخواستهای ارسالشده پاسخ نمیدهد و هیچ نتیجهای را برنمیگرداند.
- پاسخ نادرست (Respond with an incorrect result): گره اطلاعات نادرستی را به سیستم ارسال میکند که میتواند باعث بروز خطاهای جدی شود.
- پاسخ گمراهکننده (Respond with a deliberately misleading result): گره بهصورت عامدانه اطلاعات اشتباهی را ارسال میکند تا سایر گرهها را به اشتباه بیندازد.
- پاسخهای متفاوت به بخشهای مختلف سیستم (Respond with different results to different parts of the system): گره به بخشهای مختلف سیستم، نتایج متفاوت و گمراهکنندهای را ارسال میکند که میتواند هماهنگی کل شبکه را مختل سازد.
انواع الگوریتم تحمل خطای بیزانس
تحمل خطای بیزانس شامل مجموعهای از الگوریتمها است که بهدنبال تضمین عملکرد صحیح سیستمهای توزیعشده، حتی در حضور گرههای خرابکار یا نادرست هستند. به همین خاطر، در این بخش، مهمترین الگوریتمهای BFT را برای شما شرح میدهیم.
تحمل خطای بیزانس عملی (Practical Byzantine Fault Tolerance)
تحمل خطای بیزانس عملی (PBFT) یکی از مهمترین الگوریتمهای BFT است که در فناوری بلاکچین به کار گرفته میشود. این الگوریتم با هدف دستیابی به اجماعی سریع و کارآمد در حضور گرههای معیوب یا خرابکار طراحی شده است. در PBFT، گرههای شبکه در سه گروه گره رهبر، گرههای پشتیبان و گرههای کلاینت دستهبندی میشوند.
ساختار و عملکرد تحمل خطای بیزانس عملی
وظایف و عملکرد گرهها در الگوریتم تحمل خطای بیزانس عملی بهصورت زیر است:
- گره رهبر: این گره مسئول پیشنهاد تراکنشها یا بلوکهای جدید به شبکه است.
- گرههای پشتیبان: این گرهها با تبادل پیامها با یکدیگر، پیشنهادهای گره رهبر را اعتبارسنجی میکنند. اگر دوسِوم از گرههای پشتیبان با پیشنهاد موافقت کنند، آن پیشنهاد معتبر تلقی میشود و گره رهبر آن را به بلاکچین اضافه میکند.
- گرههای کلاینت یا مشتری: این گرهها درخواستهای خود را به شبکه ارسال میکنند و انتظار پاسخ دارند.
مزایای الگوریتم تحمل خطای بیزانس عملی
مزایای این الگوریتم عبارتاند از:
- بهرهوری انرژی: تحمل خطای بیزانس عملی، برخلاف الگوریتم اثبات کار، نیازی به محاسبات پیچیده و مصرف انرژی بالا ندارد. این ویژگی باعث پایداری بلندمدت یک بلاکچین میشود.
- نهاییسازی سریع تراکنشها: در تحمل خطای بیزانس عملی، تراکنشها پس از توافق نهایی، نیازی به تأییدیههای متعدد ندارند. این مسئله باعث میشود که تراکنشها سریعتر نهایی شوند.
- کاهش نوسانات پاداشدهی: تمامی گرههای شبکه در فرایند اجماع شرکت کرده و پاداشی را متناسب با مشارکت خود دریافت میکنند. این مسئله منجر به کاهش نوسانات پاداشدهی میشود.
- افزایش امنیت: PBFT میتواند تعداد زیادی از گرههای معیوب یا خرابکار را تحمل کند که این فرایند به افزایش امنیت و پایداری شبکه میانجامد.
معایب تحمل خطای بیزانس عملی
علیرغم مزایای گسترده تحمل خطای بیزانس عملی، باید به معایب آن نیز اشاره کنیم:
- نیاز به ارتباطات قوی: تحمل خطای بیزانس عملی به سطح بالایی از تعامل بین گرهها نیاز دارد. اگر گرهها نتوانند بهسرعت و بهطور قابلاعتماد، با یکدیگر ارتباط برقرار کنند، احتمال دارد که اجماع حاصل نشود.
- مشکل مقیاسپذیری: تعداد پیامهای مورد نیاز برای رسیدن به اجماع در PBFT بهطور نمایی با افزایش تعداد گرهها بیشتر میشود. این مسئله شبکههای بزرگ و گسترده را با چالش مقیاسپذیری مواجه میکند.
توافق بیزانس فدرال (Federated Byzantine Agreement)
توافق بیزانس فدرال یا متحد (FBA) الگوریتمی است که برای دستیابی به انعطافپذیری و مقیاسپذیری بیشتر نسبت به PBFT طراحی شد. این الگوریتم بر اساس ایده فدرالسازی گروههای گرهها به زیرشبکههای کوچکتر با مکانیزم اجماع خاص خود، عمل میکند. در این مدل از تحمل خطای بیزانس، گرههای یک زیرشبکه با یکدیگر در ارتباط هستند تا به اجماع درباره وضعیت شبکه برسند و سپس، زیرشبکهها با یکدیگر تعامل برقرار میکنند تا بر سر وضعیت کلی شبکه به توافق دست یابند.
ویژگیها و عملکرد توافق بیزانس فدرال
این الگوریتم تحمل خطای بیزانس دارای ویژگیهای زیر است:
- انعطافپذیری بالا: این الگوریتم امکان انتخاب زیرشبکهها را برای گرهها فراهم میکند. این انتخاب به گرهها اجازه میدهد تا بهطور همزمان در چندین زیرشبکه شرکت داشته باشند یا فقط در یک زیرشبکه خاص فعالیت کنند.
- مقیاسپذیری: الگوریتم FBA نسبت به تحمل خطای بیزانس عملی مقیاسپذیرتر است؛ زیرا نیازی به ارتباط مستقیم تمام گرهها با یکدیگر ندارد؛ بهجای آن، گرهها با زیرمجموعهای از گرههای دیگر ارتباط برقرار میکنند. این امر باعث کاهش میزان ارتباطات مورد نیاز برای رسیدن به اجماع میشود.
محدودیتهای توافق بیزانس فدرال
با وجود مزایای متعدد، FBA نیز دارای چالشها و محدودیتهایی است. برای مثال، توافق بیزانس فدرال نسبت به PBFT پیچیدهتر بوده و به مدیریت چندین زیرشبکه و مکانیزمهای اجماع متعدد نیاز دارد. این پیچیدگی میتواند پیادهسازی و نگهداری این الگوریتم را بهخصوص برای شبکههای کوچکتر با منابع محدود، دشوارتر کند.
علاوهبر آن، توافق بیزانس فدرال هنوز یک فناوری نسبتاً جدید است و بلاکچینهای بزرگی از آن استفاده نکردهاند. بنابراین، هنوز مشخص نیست که FBA در عمل چگونه خواهد بود؛ بهویژه در بلاکچینهایی با تعداد زیادی گره یا در شبکههایی با ترافیک بالا.
مقایسه تحمل خطای بیزانس عملی، اثبات کار و اثبات سهام
اصولاً همه الگوریتمهای اجماع به تحمل خطای بیزانس وابسته هستند؛ اما این فرایند در PBFT بهشکلی کاربردیتر پیادهسازی شده است. ازاینرو، در این بخش، ۳ الگوریتم سرشناس بلاکچین را که از BFT استفاده میکنند، با یکدیگر مقایسه خواهیم کرد:
| ویژگی | PBFT | PoW | PoS |
| پایه و اساس | اجماع مبتنی بر رأیگیری | حل مسئله ریاضی پیچیده و ایجاد بلوکهای جدید | سهامگذاری توکنها |
| مصرف انرژی | کم | زیاد | کم |
| مقاومت در برابر حملات | ایمنی در صورت صادقبودن اکثریت گرهها | اصولاً ماینرها صادق هستند. | ایمنی توسط اکثریت سهامگذاران |
| سرعت تراکنش | سریع | آهسته | سریعتر از PoW و وابسته به نحوه اجرا |
| خطرات تمرکز | اگر گرهها توسط چند نفر اداره شوند، خطر تمرکز دارد. | غیرمتمرکز است؛ اما همچنان خطرات متمرکزسازی توسط استخرها وجود دارد. | غیرمتمرکزتر از POW است؛ اما همچنان با خطراتی مواجه میشود. |
| مدل پاداشدهی | ارائه کارمزد تراکنشها به اعتبارسنجها | دریافت پاداش استخراج توسط ماینرها | دریافت پاداش ایجاد بلوک و تأیید تراکنش |
کدام بلاکچینها از تحمل خطای بیزانس عملی استفاده میکنند؟
حالا که با روش کاربردی تحمل خطای بیزانس آشنا شدید، باید ببینیم که کدام شبکهها از این الگوریتم استفاده کردهاند. ازاینطریق، با استفاده عملیتر از PBFT آشنا خواهید شد:
۱. نئو (NEO): نئو یکی از بلاکچینهای محبوب است که از یک نسخه بهینهشده الگوریتم PBFT به نام تحمل خطای بیزانس تفویضشده (Delegated Byzantine Fault Tolerance) یا dBFT استفاده میکند. این الگوریتم ترکیبی از PBFT و سیستم نمایندگی برای دستیابی به اجماع سریع و ایمن است.
۲. آیوتا (IOTA): آیوتا بهمنظور بهبود مقیاسپذیری و کارایی، از یک الگوریتم مشابه PBFT به نام تنگل (Tangle) استفاده میکند. این الگوریتم نیز از مفاهیم تحمل خطای بیزانس بهره میبرد و برای اینترنت اشیا (IoT) طراحی شده است.
۳. استلار (Stellar): استلار از الگوریتم توافق بیزانس فدرال (FBA) استفاده میکند که نسخهای پیشرفتهتر و مقیاسپذیرتر از PBFT است. این الگوریتم برای تراکنشهای مالی سریع و کمهزینه طراحی شده و توسط چندین بانک و مؤسسه مالی استفاده میشود.
۴. کاردانو (Cardano): کاردانو یکی دیگر از بلاکچینهای پیشرفتهای است که از الگوریتم اوروبروس (Ouroboros) بهره میبرد. اگرچه این الگوریتم بهطور مستقیم تحمل خطای بیزانس عملی نیست، اما از مفاهیمی مشابه برای دستیابی به اجماع در شبکههای توزیعشده استفاده میکند.
جمعبندی
تحمل خطای بیزانس (BFT) بهعنوان یکی از مفاهیم بنیادین در طراحی سیستمهای توزیعشده و بلاکچینها، نقشی اساسی در تضمین امنیت، پایداری و کارایی این شبکهها دارد. الگوریتمهای تحمل خطای بیزانس، مانند PBFT و FBA، با ارائه راهحلهایی برای مشکلات پیچیده ناشی از وجود گرههای معیوب یا خرابکار، به ایجاد اعتماد و افزایش کارایی شبکههای توزیعشده کمک میکنند.
هر الگوریتم تحمل خطای بیزانس ویژگیها، مزایا و معایب خاص خود را دارد که آن را برای کاربردهایی خاص مناسب میسازد. بهعنوان مثال، PBFT با ارائه سرعت بالا و نهاییسازی سریع تراکنشها، برای شبکههای کوچک و متوسط مناسب است؛ درحالیکه FBA با انعطافپذیری و مقیاسپذیری بالا، گزینهای مطلوب برای شبکههای بزرگتر و پیچیدهتر به حساب میآید.
در نهایت، باید به این نکته توجه داشت که شناخت ویژگیهای هر بلاکچین، ازجمله مقیاسپذیری، سرعت، امنیت و… ، برای کاربران و سرمایهگذاران ضروری است و به آنها کمک میکند تا شبکه و ارز دیجیتال مناسب خود را پیدا کنند. ازاینرو، در این مطلب از دلتا کالج، به جنبههای مختلف تحمل خطای بیزانس پرداختیم و ویژگیهای BFT را برایتان شرح دادیم.
سؤالات متداول
تحمل خطای بیزانس چیست؟
تحمل خطای بیزانس (Byzantine Fault Tolerance یا BFT) یک ویژگی در سیستمهای توزیعشده است که به آنها اجازه میدهد که حتی در صورت وجود گرههای معیوب یا خرابکار، بهدرستی عمل کنند.
الگوریتم PBFT چیست و چگونه کار میکند؟
تحمل خطای بیزانس عملی (Practical Byzantine Fault Tolerance) یک الگوریتم اجماع است که برای دستیابی به توافق سریع و کارآمد در شبکههای توزیعشده استفاده میشود. PBFT با استفاده از یک گره رهبر و تعدادی گره پشتیبان، پیشنهادات تراکنشها را اعتبارسنجی کرده و آنها را به بلاکچین اضافه میکند.
تفاوت بین PBFT و FBA چیست؟
تحمل خطای بیزانس عملی (PBFT) و توافق بیزانس فدرال (FBA)، دو الگوریتم مبتنی بر BFT هستند. الگوریتم PBFT بیشتر در شبکههای کوچک و متوسط کاربرد دارد؛ درحالیکه FBA با انعطافپذیری و مقیاسپذیری بالا، برای شبکههای بزرگتر طراحی شده است.
مزایای استفاده از تحمل خطای بیزانس در بلاکچین چیست؟
الگوریتم BFT امنیت و پایداری شبکههای بلاکچین را افزایش میدهد، مصرف انرژی را بهینه میکند، زمان نهاییسازی تراکنشها را کاهش میدهد و توزیع پاداشها را در بین گرههای شرکتکننده عادلانهتر میکند.
کدام بلاکچینها از الگوریتمهای تحمل خطای بیزانس استفاده میکنند؟
برخی از بلاکچینهای معروف، مانند زیلیکا (Zilliqa)، نئو (NEO) و استلار (Stellar) از الگوریتم تحمل خطای بیزانس عملی استفاده میکنند.









