تحمل خطای بیزانس چیست و چه کاربردی در ارز دیجیتال دارد؟

تحمل خطای بیزانس که بیشتر با نماد اختصاری BFT در دنیای ارزهای دیجیتال شناخته میشود، راهحل یکی از مهمترین مسائلی است که شبکههای غیرمتمرکزی نظیر بلاکچینها با آن دست و پنجه نرم میکنند. با توجه به نقش حیاتی بلاکچینها در دنیای ارزهای دیجیتال و اهمیت بسیار بالای این مقوله برای بلاکچینها، در این مقاله از بلاگ اکسچنج سیتکس قصد داریم به معنا و مفهوم آن بپردازیم.
توجه داشته باشید که مقوله تحمل خطای بیزانس یکی از پیچیدهترین مسائل موجود در دنیای ارزهای دیجیتال و شبکههای بلاکچینی است و با اینکه قرار نیست بهصورت کاملاً تخصصی و فنی به بررسی آن بپردازیم؛ اما در این مطلب مجبور خواهیم بود قبل از پرداختن به تعریف خودِ تحمل خطای بیزانس، یک یا دو موضوع دیگر را توضیح دهیم. این مقدمهچینی در نهایت درک تحمل خطای بیزانس را سادهتر خواهد کرد.
فهرست عناوین
مسئله فرماندهان بیزانس چیست؟
پیش از پرداختن به تحمل خطای بیزانس، بهتر است نگاهی به «مشکل فرماندهان بیزانس» یا Byzantine General’s Problem داشته و آن را مورد بررسی قرار دهیم؛ چراکه تحمل خطای بیزانس، راهحلی برای مشکل مذکور بهشمار میرود.
برای درک مشکل فرماندهان بیزانس، شرایطی را فرض کنید که ارتش امپراتوری بیزانس، یک شهر دشمن را محاصره کرده است؛ در این شرایط، ارتش مذکور میتواند دست به یک حمله همهجانبه زده یا عقبنشی کند.
مسئله اینجاست که هر دو گزینه حمله و عقبنشینی نیازمند هماهنگی میان گروهانها و بخشهای مختلف ارتش بیزانس است و با توجه به این نکته که در آن زمان خبری از ارتباطات الکترونیکی نبود، فرماندهان بخشها و گروهانهای مختلف ارتش بیزانس باید با استفاده از چاپار یا نامهرسان با یکدیگر ارتباط برقرار میکردند.
به بیان دیگر، فرماندهان ارتش بیزانس قبل از هرگونه اقدام، باید باید در خصوص حمله یا عقبنشینی تصمیمگیری کرده و به اجماع (Consensus) میرسیدند.
اما این موضوع دو مشکل را بههمراه دارد، از کجا معلوم که یکی از فرماندهان یا حتی نامهرسانها با دشمن دست به یکی نکرده و قصد خیانت به ارتش بیزانس را ندارند؟ در واقع، فرماندهان بیزانس نیازمند راهی بودند تا بتوانند فرماندهان و پیامرسانهای خیانتکاران را شناسایی کرده و بدون آنکه تحت تأثیر این افراد قرار بگیرند، نقشه خود را عملی سازند.
فرایض مسئله فرماندهان بیزانس
بدین ترتیب، میتوان کلیت مسئله فرماندهان بیزانس و فرضیات مرتبط به آن را بهصورت ذیل خلاصه کرد:
- هر فرمانده وظیفه رهبری یک گروهان یا دسته از سربازان را دارد.
- فرماندهان میتوانند با استفاده از نامهرسانها با یکدیگر ارتباط برقرار کنند.
- برای اجرای موفق عملیات حمله یا عقبنشینی، این فرماندهان باید بهصورت هماهنگ با یکدیگر فعالیت کرده و بر سر نقشه پیش رو توافق کنند.
- اگر تمام فرماندهان حمله یا عقبنشینی کنند مشکلی پیش نمیآید. اما اگر یک فرمانده حمله کرده و سایرین عقبنشینی کنند یا بقیه حمله کرده و یک فرمانده عقبنشینی کند، عملیات شکست خواهد خورد.
- وجود احتمال خیانتکاربودن برخی از فرماندهان نیز یکی دیگر از مسائل مهم دیگر در مشکل فرماندهان بیزانس است. این فرماندهان ممکن است اقدام به انتشار اطلاعات غلط کرده و عملیات را بههم بزنند.
با توجه به این فرضیات، تحمل خطای بیزانس یا راهحل مد نظر برای حل مسئله مذکور باید بهگونهای طراحی و ساخته شود که بتواند صرف نظر تعداد فرماندهان و نامهرسانهای خیانتکار، امکان اجرای یک عملیات نظامی موفق را فراهم کند. بهصورت کلی، تحمل خطای بیزانس باید بتواند شرایط زیر را فراهم کند:
- تمام فرماندهان وفادار باید بر اساس نقشه مورد توافق عمل کنند.
- اتخاذ تصمیمات اشتباه توسط فرماندهان وفادار ارتش بیزانس، تحت تأثیر فرماندهان خیانتکار باید غیرممکن باشد.
- تمام فرماندهان وفادار باید تمام قوانین الگوریتم و راهحل ارائهشده را رعایت کنند.
- از همه مهمتر، فرماندهان وفادار باید بتوانند در فضای راهحل ارائهشده در خصوص یک نقشه منطقی و مشخص به توافق برسند.
ممکن است از خود سوال کنید که مشکل فرماندهان یک امپراتوری کهن چه ارتباطی با ارزهای دیجیتال و فناوری بلاکچین دارد؟ در ادامه با جزئیات بیشتری به ارتباط این دو موضوع خواهیم پرداخت.
نود در شبکه بلاکچینی چیست؟
هر چند که قبلاً با جزئیات بیشتری به مفهوم نود و انواع آن پرداختهایم، اما از آنجایی که آشنایی با آن برای درک تحمل خطای بیزانس ضروری است، بهصورت کوتاه به تعریف آن میپردازیم.
بهصورت کلی، نود یا گره به کامپیوترهایی گفته میشود که وظیفه نگهداری یا پردازش دادهها را در یک مجموعه از کامپیوترها بر عهده دارند؛ برای مثال شرکت گوگل باید توانایی ارائه خدمات در نقاط مختلف جهان را داشته باشد، به همین سبب سرورهای این شرکت در بخشهای مخلتف جهان حضور دارند و هر دسته از آنها یک نود به حساب میآید.
در شبکههای بلاکچینی نیز نود همین معنا را دارد؛ یعنی نودهای این شبکهها نیز وظیفه نگهداری یا پردازش دادهها را بر عهده داشته و با همکاری با یکدیگر فعالیت شبکه بلاکچینی را ممکن میسازند. تفاوت نودهای شبکههای بلاکچینی با نودهای شرکتهایی نظیر گوگل یا مایکروسافت و… در این است که نودهای شبکههعای بلاکچینی بهصورت غیرمتمرکز فعالیت کرده و تحت مالکیت یک سازمان یا شرکت واحد نیستند.
یعنی برخلاف نودهای گوگل و مایکروسافت و… که تحت فرمان یک شرکت فعالیت میکنند و عملکرد آنها نیز توسط همین شرکتها مورد بررسی قرار میگیرد، نودهای شبکههای بلاکچینی بهصورت ناشناس فعالیت کرده و عملکرد آنها توسط هیچ فرد یا گروه خاصی کنترل نمیشود.
بدین ترتیب، برای عملکرد موفق نودهای شبکههای بلاکچینی، باید شرایطی فراهم شود که این نودها بتوانند بدون نیاز به اعتماد به یکدیگر فعالیت کرده و شبکه بلاکچینی را فعال نگهدارند.
گرچه در شبکههای بلاکچینی نودهای مختلفی فعالیت داشته و هر کدام وظایف مخصوص به خود را دارند؛ اما برای سادهسازی، در این مقاله از تمامی آنها بهعنوان نود یاد خواهیم کرد.
تحمل خطای بیزانس چیست؟
تا اینجای مقاله، بیشتر به مقدمهچینی و آشنایی با مقولههای لازم برای درک تحمل خطای بیزانس پرداختهایم؛ اما زین پس نگاه جدیتری به تحمل خطای بیزانس یا BFT خواهیم داشت. اما پیش از آن، بهتر است به سوال ارتباط میان مسئله فرماندهان و شبکههای بلاکچینی پاسخ دهیم.
برای درک ارتباط میان مسئله فرماندهان بیزانس و شبکههای بلاکچینی، کافی است جای فرماندهان را با نودهای شبکههای بلاکچینی جابجا کرده و نامهرسانها را نیز تراکنشهای این شبکه بلاکچینی در نظر بگیرید.
بدین ترتیب، درست همانطور که فرماندهان ارتش بیزانس به روشی برای ادامهدادن فعالیت عادی خود بدون تأثیر فرماندهان و نامهرسانهای خیانتکار نیاز دارند، نودهای یک شبکه بلاکچینی نیز باید بهدنبال روشی باشند تا بتوانند علیرغم فعالیت نودهای خرابکار یا آفلاین، به فعالیت عادی خود ادامه دهند.
تحمل خطای بیزانس نیز برای همین مسئله ایجاد شده است؛ یعنی نودهای شبکههای بلاکچینی (و همچنین فرماندهان ارتش بیزانس!) میتوانند با استفاده از تحمل خطای بیزانس عملکرد خود را حفظ کرده و شبکههای بلاکچینی را فعال نگه دارند.
به بیان کلی و ساده، تحمل خطای بیزانس به یکی از ویژگیهای یک سیستم غیرمتمرکز مانند بلاکچین اشاره دارد که به آن شبکه کمک میکند مشکل فرماندهان بیزانس را حل کرده و علیرغم خرابکاری برخی نودها، همواره بتواند میان نودهای وفادار خود اجماع ایجاد کند. برای کسب چنین نتیجهای، راههای متعددی وجود دارد که الگوریتم اثبات کار یا Proof of Work یکی از معروفترین آنهاست.
اما بهصورت دقیقتر و ریاضی، تحمل خطای بیزانس به شکل زیر نیز توصیف میشود:
اگر n تعداد از اعضای یک سیستم توزیعشده مانند نودهای یک شبکه بلاکچینی داشته باشیم و یکی از اعضای آن به نام A بخواهد پیامی به شکل X را به سایرین ابلاغ کند، سایر اعضای آن شبکه میتوانند پس از بررسی پیام ارسالی، خروجی Y را بهعنوان پاسخ نهایی بپذیرند. در این حالت، سیستم مذکور در شرایط زیر میتواند از خطاهای بیزانسی جلوگیری کند:
- اگر A خرابکار نبوده و صادق باشد، پس پاسخ ارائهشده توسط سایر اعضای شبکه (Y) برابر با X خواهد بود.
- اگر A خرابکار باشد نیز سایر اعضای شبکه بر سر پاسخ مشابه دیگری توافق خواهند کرد و در نتیجه، Y مخالف X خواهد بود.
همانطور که مشاهده میکنید، تحمل خطای بیزانس بیانگر یک شرایط است و راهحل واحدی را ارائه نمیکند؛ بدین ترتیب راههای متعددی برای رسیدن به این شرایط وجود دارد. برای مثال و همانطور که در ابتدای مقاله به آن اشاره کردیم، استفاده از الگوریتم اثبات کار (PoW) یکی از رایجترین این روشها در دنیای ارزهای دیجیتال بهمار میرود.
انواع تحمل خطای بیزانس در شبکههای بلاکچینی
دیدیم که تحمل خطای بیزانس به شرایطی اشاره دارد که نودهای یک شبکه بلاکچینی بتوانند صرف نظر از فعالیت نودهای خرابکار یا آفلاین، عملکرد خود را حفظ کرده و شبکه بلاکچینی را پیش ببرند. همچنین، دیدیم که راههای مختلفی برای رسیدن به این شرایط وجود دارد که الگوریتم اثبات کار یا الگوریتم اثبات سهام از رایجترین آنها در دنیای شبکههای بلاکچینی هستند.
اما در کنار این دو الگوریتم معروف و پرکاربرد، الگوریتمهای دیگری در دنیای ارزهای دیجیتال و شبکههای بلاکچینی معرفی شدهاند که نام تحمل خطای بیزانس یا BFT را یدک میکشند. در ادامه به معرفی این الگوریتمها خواهیم پرداخت.
الگوریتم تحمل خطای بیزانس نمایندگیشده (dBFT)
تحمل خطای بیزانس نمایندگیشده یا Delegated Byzantine Fault Tolerance یکی از الگوریتمهای اجماع جدید است که برای اولین بار در شبکه بلاکچینی نئو (NEO) بهکار گرفته شد. همانطور که از نام آن پیداست، این الگوریتم اجماع شباهت زیادی به الگوریتم اثبات سهام نمایندگیشده یا dPoS دارد.
الگوریتم dBFT بهگونهای ساخته شده که در آن دارندگان توکنهای نئو میتوانند توکنهای خود را در اختیار «نمایندههای» شبکه یا Delegatorها قرار داده و از این طریق، به آنها رأی دهند. این نمایندهها نیز که بهعنوان نود در شبکه بلاکچینی فعالیت میکنند با استفاده از تحمل خطای بیزانس به اجماع رسیده و بلوکهای جدید شبکه بلاکچین را میسازند.
به بیان دیگر، دارندگان نئو توکنهای خود را استیک (Stake) کرده و در ازای آن، مقداری توکن نئوی جدید بهعنوان پاداش دریافت میکنند. نمایندگان نیز که بهصورت کاملاً شناختهشده در شبکه فعالیت میکنند بهدلیل این فعالیت مقداری پاداش دریافت خواهند کرد.
الگوریتم تحمل خطای بیزانس عملی (pBFT)
تحمل خطای بیزانس عملی یا Practical Byzantine Fault Tolerance یک برداشت دیگر از تحمل خطای بیزانس است که سعی دارد شرایط مناسب فعالیت نودهای شبکه بلاکچینی را فراهم کند.
در این الگوریتم، یک نود بهعنوان نود اصلی یا رهبر انتخابشده و سایر نودها بهعنوان نود ثانویه به فعالیت میپردازند. سپس کاربر یا کلاینت (Client) درخواستی را به نود رهبر ارسال میکند؛ این درخواست میتواند بسته به نوع شبکه مورد استفاده متفاوت باشد. سپس نود اصلی یا رهبر نیز این درخواست را به نودهای ثانویه یا پشتیبان میفرستد و نودهای پشتیبان نیز آن درخواست را عملی میکنند.
این درخواست زمانی پذیرفته خواهد شد که کاربر به تعداد m+1 پاسخ دریافت کند که در آن m به تعداد نودهای خرابکار مجاز در شبکه اشاره دارد. بعد از انجام هر درخواست نیز نود اصلی مورد ارزیابی قرار گرفته و در صورت نیاز، یکی از نودهای ثانویه جای آن را میگیرد.
شبکه بلاکچینی زیلیکا (Ziliqa) یکی از معروفترین شبکههای بلاکچینی است که از این الگوریتم بهصورت ترکیبی با الگوریتم اثبات کار استفاده میکند.
سخن آخر
با توجه به ماهیت توزیعشده و غیرمتمرکز شبکههای بلاکچینی و فضای بدون اعتمادی (Trustless) که این شبکهها در آن فعالیت میکنند باعث شده تا فعالان این فضا همواره بهدنبال روشهای مخلتفی برای جلوگیری از بروز مشکلات و سوء استفاده خرابکاران باشند. تحمل خطای بیزانس که یکی از قدیمیترین مسائل مطرحشده در دنیای شبکهها و گروههای توزیعشده بهشمار میرود نیز توانسته جای خود را در این میان، پیدا کند.
در واقع با گذر زمان شاهد افزایش استفاده از این مقوله در شبکههای بلاکچینی بودهایم و هماکنون شبکههای بلاکچینی BNB، کازموس (ATOM) و نئو (NEO) از این فناوری برای تأمین امنیت شبکه خود استفاده میکنند.