تحمل خطای بیزانس (Byzantine fault tolerance) چیست؟
معرفی فناوری بلاکچین در سال 2008 با یک وایت پیپر در مورد سیستمهای نقدی الکترونیکی همتا به همتا توسط ساتوشی ناکاموتو، درک فناوری را تغییر داد. در طول سالها، فناوری بلاکچین کاربردهای قابل توجهی در بخشهای مختلف غیر از امور مالی پیدا کرده است. جدا از استثنائات خاص، راه حلهای بلاکچین اساسا به صورت غیرمتمرکز طراحی شدهاند. نودهای مختلفی که در یک شبکه توزیع شده مرتب شدهاند، از یک دفتر کل دیجیتال مراقبت میکنند که تمام تراکنشهای شبکه را ثبت میکند. همه شرکت کنندگان باید در مورد اعتبار معاملات خاص توافق کنند، بنابراین نیاز به مکانیسمهای توافقی مانند تحمل خطای بیزانس یا BFT را نشان میدهد.
اگرچه معمولاً در بحثهای مختلف در مورد بلاکچین با ذکر BFT مواجه میشوید، اما عملکرد دقیق آن برای بسیاری ناشناخته است. این مقاله به شما کمک میکند تا اصول اولیه BFT، از جمله پایه، فواید و موارد استفاده آن را کشف کنید.
چرا درباره تحمل خطای بیزانس بدانیم؟
مدلهای اجماع اجزای اصلی در سیستمهای بلاکچین توزیع شده هستند. آنها افزودههای مهمی در اکوسیستم بلاکچین برای ارائه یک عملکرد مهم هستند که با فناوری بلاکچین وعده داده شده است. اساسا، آنها به عنوان پایهای برای ارتقای تعامل بین کاربران در یک شبکه بلاکچین در یک محیط غیر قابل اعتماد عمل میکنند.
تحمل خطای بیزانس یک نمونه برجسته از یکی از رایجترین مکانیسمهای اجماع با مزایای امیدوارکننده است. اجرای مناسب مکانیسمهای اجماع در پلتفرمهای ارزهای دیجیتال میتواند منجر به ایجاد انواع مختلفی از شبکهها با پتانسیل استثنایی شود.
بنابراین، کاملاً واضح است که بلاکچین به افراد و رایانهها کمک میکند تا بدون نیاز به اعتماد به یکدیگر، در مورد مسائل به توافق برسند. مکانیسمهای اجماع مجموعهای از قوانین را ایجاد میکنند که شبکه افراد و رایانهها میتوانند به راحتی به آنها اعتماد کنند. تحمل خطای بیزانس یک مداخله برجسته در چشم انداز بلاکچین است که امکان ایجاد قوانین و پروتکلهای معتبر بلاکچین را فراهم میکند.
دانش قبلی برای یادگیری در مورد تحمل خطای بیزانس
اگر میخواهید در مورد تحمل خطای بیزانس در بلاکچین بیاموزید، مهم است که با اصول اولیه شروع کنید. اول از همه، اجازه دهید تصور دقیقی از نحوه کار اجماع داشته باشیم. متعاقبا، میتوانیم دریابیم که چگونه تاکتیکهای نظامی در معادله فناوری بلاکچین و کاربردهای آن قرار میگیرند.
همتایان و نودها در بلاکچین
راه حلهای بلاکچین به شکل شبکههایی اجرا میشوند که دسترسی و حقوق برابر را به همه رایانههای موجود در شبکه اختصاص میدهند. نودها میتوانند به طور مستقیم با یکدیگر ارتباط برقرار کنند. بنابراین، یک نود چیست؟ هر کامپیوتر در شبکه بلاکچین به عنوان همتا یا نود شناخته میشود. در یک راه حل غیرمتمرکز کامل، هیچ همتا یا نودی قدرت بیشتری نسبت به همتاها یا نودهای دیگر ندارد.
بنابراین، یک بلاکچین هماهنگ کننده، مدیری برای اجرای قوانین و تعیین مجازات رفتار غیر قابل قبول ندارد. برعکس، سیستم به واقعیتی بستگی دارد که نشان میدهد همه نودها از قوانین یا پروتکل مشابهی برای ورود به توافق پیروی میکنند.
اجماع اصطلاحی است که وقتی به دنبال توافق در میان همه نودها میگردید، پیدا میکنید و به معنای واقعی کلمه به معنای «توافق عمومی» است. اجماع مهمترین اما دشوارترین کار در یک سیستم غیرمتمرکز بدون هیچ مجوزی است. بخش عمدهای از نودها باید در مورد صحت یا اعتبار اطلاعات یا تراکنشها به توافق برسند و از این طریق عملکرد مناسب سیستم یا شبکه را تضمین کنند.
شبکه بلاکچین باید در فواصل زمانی منظم اجماع را انجام دهد. با این حال، مکانیسمهای اجماع مانند تحمل خطای بیزانس برای مقابله با عدم قطعیت خرابی یا بد رفتاری برخی نودها الزامی است. علاوه بر این، برخی از نودها میتوانند با اجماع نودهای دیگر مخالف باشند. بنابراین، مهم است که اطمینان حاصل شود که طراحی سیستم میتواند به راحتی بر چنین آسیب پذیریهایی غلبه کند.
تحمل خطای بیزانس چیست؟
باربارا لیسکوف و میگل کاسترو الگوریتم BFT را در اواخر دهه 90 معرفی کردند که برای کارایی به طور موثر به عنوان تحمل خطای بیزانس ناهمزمان بدون هیچ محدودیت بالایی در زمان دریافت پاسخ به درخواست مربوطه طراحی شده است. برنامه کاربردی BFT برای پرداختن به مسائل قابل توجه در مدل BFT موجود توسعه یافته است. با این حال، مهم است که مدل BFT را بدانیم زیرا در ابتدا برای درک BFT عملی یا ناهمزمان ایجاد شده است.
خاستگاه الگوریتم تحمل خطای بیزانس به سال 1982 و با پایه گذاری مسئله ژنرال بیزانسی باز میگردد. لزلی لمپورت، مارشال پیز و رابرت شوستاک مشکل ژنرال بیزانسی را ایجاد کردند و متعاقباً باعث ایجاد BFT شدند. مفهوم BFT رابطه امیدوارکنندهای با تاکتیکهای نظامی دارد در سناریویی که ژنرالهای مختلف بیزانسی قبل از حمله به شهر دشمن در اطراف آن جمع میشوند.
برخی از نکات برجسته مسئله ژنرال بیزانسی میتواند به درک کار واقعی اجماع تحمل خطای بیزانس کمک کند.
- ژنرالهای مختلف بیزانسی واحدهای مربوطه خود را در مواضع مختلف خارج از شهری که قرار است به آن حمله کنند، فرماندهی میکنند.
- ژنرالها میتوانند از طریق پیام رسانها با یکدیگر ارتباط برقرار کنند و هر بار یک پیام ارسال کنند.
- ژنرالهای بیزانسی باید هماهنگی و توافق بر سر یک برنامه اقدام خاص برای حمله یا عقب نشینی موفقیت آمیز داشته باشند.
- اگر همه ژنرالها در یک زمان حمله یا همه آنها در یک زمان عقب نشینی کنند، اشکالی ندارد. با این حال، اگر یک ژنرال عقب نشینی کند در حالی که دیگران حمله کنند یا یک ژنرال حمه کند در حالی که دیگران عقب نشینی کنند، ژنرال در نهایت شکست میخورد. بنابراین، نتیجه برای همه ژنرالها و واحدهای آنها بد خواهد بود.
- نکته مهم دیگر در مسئله ژنرال بیزانس این واقعیت است که برخی از ژنرالها وفادار نیستند. این ژنرالها میتوانند اطلاعات اشتباه یا دستکاری شده را برای ژنرالهای دیگر ارسال کنند تا آنها را گیج کنند.
بنابراین، مدل تحمل خطای بیزانس میتواند به حل مشکل کمک کند. کلیات به الگوریتمی نیاز دارند که بتواند شرایط زیر را تضمین کند.
- همه ژنرالهای وفادار عمل میکنند و بر روی یک برنامه عمل به توافق میرسند.
- ژنرالهای وفادار ارتش بیزانس نقشه بد ژنرالهای خائن را دنبال نمیکنند.
- ژنرالهای وفادار از تمام قوانین مشخص شده در الگوریتم پیروی میکنند.
- همه ژنرالهای وفادار ارتش بیزانس باید بدون توجه به اقدامات خائنان به اجماع برسند.
- مهمتر از همه، ژنرالهای وفادار نیز باید بر سر یک برنامه مشخص و معقول به توافق برسند.
چگونه BFT در بلاکچین اعمال می شود؟
اکنون، مهم است که بفهمیم مشکل ژنرال بیزانس چگونه در مورد بلاکچین قابل اجرا است. در مورد یک شبکه همتا به همتا، توافق یکپارچه بین نودهای وفادار و غیر معیوب میتواند در دستیابی به اجماع کمک کند. اساس تحمل خطای بیزانس در سناریویی قابل مشاهده است که در آن همه نودها یک پیام دریافتی را تکرار میکنند.
اگر یک نود پیام دریافتی را تکرار کند، به وضوح نشان میدهد که هیچ مشکل یا نقصی ندارد. از سوی دیگر، اگر گیرندگان پیام دریافتی را تکرار کنند، شبکه میتواند به راحتی امکان نودهای بیزانس را رد کند. نود بیزانس چیست؟
نود بیزانس به نود خائن اطلاق میشود که میتواند به طور عمدی نودهای دیگر را در شبکه کذب یا گمراه کند. نود بیزانس همچنین میتواند نودهایی را که در پروتکل اجماع دخیل هستند گمراه کند یا به آنها دروغ بگوید. یک شبکه بلاکچین کاملا عملیاتی تضمین میکند که تحمل خطای بیزانس در بلاکچین به آن در غلبه بر شکست کمک میکند. نودهای بیزانسی یا نودهای مخرب میتوانند منجر به مشکلات خاصی شوند که به نام شکستهای بیزانس شناخته میشوند.
کاربران میتوانند با دو نوع متمایز از شکستهای بیزانس مواجه شوند که اولین مورد کاملا فنی است. یک خطای فنی جزئی در نود میتواند بر عملکرد آن تاثیر بگذارد و در برخی موارد ممکن است به طور کلی پاسخ یا کار را متوقف کند. نوع دیگر شکست بیزانس به شکست دلخواه نود اشاره دارد. در مورد شکست دلخواه نود، یک نود ممکن است ویژگیهای زیر را نشان دهد:
- عدم بازگشت نتیجه
- ارائه پاسخهایی با نتایج نادرست
- پاسخ دادن با نتایج عمدا گمراه کننده برای پرس و جوها
- ارائه پاسخ به یک پرس و جو با نتایج متفاوت به اجزای مختلف سیستم
Bizantine Fault Tolerance یا BFT با کاهش تأثیر نودهای مخرب به غلبه بر همه این چالشها کمک میکند که میتواند شبکه را از خرابیهای خطرناک سیستم محافظت کند و عملکرد ایده آل شبکه را تضمین کند. اساساً، به نودهای صادق و نودهای مخرب اجازه میدهد کار خود را بدون تاثیر بر عملکرد شبکه انجام دهند. در طول سالهای متمادی، تحقیقات گسترده در مورد مسئله ژنرال بیزانس و بهینهسازی با مجموعهای از راه حلهای عملی متنوع، منجر به معرفی بسیاری از پیشرفتها نسبت به BFT معمولی شده است.
اجماع عملی BFT چیست؟
تحمل خطای عملی بیزانس به عنوان یکی از بهینه سازیهای برجسته BFT در سال 1999 توسط باربارا لیسکوف و میگل کاسترو در مقاله آکادمیک خود با عنوان “تحمل خطای عملی بیزانس” پدیدار شد. هدف اولیه از BFT عملی حل اختلافات مشهود در مکانیسم اجماع اصلی BFT بود.
مکانیسم اجماع pBFT میخواهد از تکرار عملی ماشین حالت بیزانس برای تحمل نودها یا شکستهای بیزانس اطمینان حاصل کند. مفهوم اولیه زیربنای مکانیسم عملی BFT به این فرض در مورد وجود خرابی نود مستقل اشاره دارد. BFT عملی همچنین فرض میکند که نودهای مستقل خاص مسئول انتشار پیامهای دستکاری شده هستند.
برجسته ترین مکانیسم عملی BFT به این واقعیت اشاره دارد که برای سیستمهای ناهمزمان ایده آل است. علاوه بر این، همچنین قادر به ارائه عملکرد بالا در کنار زمان اجرا سربار استثنایی است. کاربران باید فقط با رشد جزئی تاخیر با BFT عملی مواجه شوند.
نکات برجسته BFT عملی
اگر میخواهید در مورد تحمل خطای عملی یا ناهمزمان بیزانس بیشتر بدانید، باید ویژگیهای آن را درک کنید. در اینجا برخی از جنبههای مهم وجود دارد که به وضوح مکانیسم اجماع BFT ناهمزمان را دیکته میکند.
- اساسا، تمام نودها در مدل ناهمزمان یا عملی BFT در یک دنباله مرتب شدهاند. یک نود در شبکه به عنوان نود اصلی یا نود رهبر عمل میکند و نودهای دیگر به عنوان نودهای پشتیبان شناخته میشوند.
- تمام نودهای سیستم امکان ارتباط بین نودها را فراهم میکنند. هدف اصلی این ارتباط بر حصول اطمینان از اینکه نودهای صادق در شبکه میتوانند به توافق خاصی در مورد وضعیت سیستم بلاکچین بر اساس اکثریت برسند، تمرکز دارد.
- نودها این قابلیت را دارند که به طور یکپارچه و پیوسته با یکدیگر ارتباط برقرار کنند. BFT عملی تضمین میکند که نودها نه تنها پیام را تأیید میکنند، بلکه تضمین میکنند که پیام در طول انتقال دستخوش هیچ گونه تغییری نشده است.
کار pBFT
عملکرد مدل عملی تحمل خطای بیزانس عمیقا بر فرضیات خاصی متکی است. برجسته ترین فرض در مورد BFT عملی به این واقعیت اشاره دارد که تعداد نودهای مخرب در شبکه نمیتواند برابر یا بیشتر از یک سوم کل نودها در سیستم برای یک پنجره آسیب پذیری خاص باشد.
نودهای اضافی در سیستم، احتمال ریاضی تعدادی از نودها را که تقریبا یک سوم کل نودهای سیستم هستند، کاهش میدهد. الگوریتم عملی BFT تسهیلات ایمنی و همچنین زنده بودن تعدادی از نودها را تا 3/1/(n-1) تضمین میکند. در این مورد، n تعداد کل نودهایی را نشان میدهد که به طور همزمان مخرب یا معیوب هستند. نتیجه به دست آمده در نهایت به صحت پاسخهایی اشاره میکند که مشتریان برای درخواستهای خود بر اساس خطی سازی دریافت میکنند.
مراحل اجماع در BFT عملی
برای درک نوع عملی الگوریتم تحمل خطای بیزانس، باید مراحل توافق آن را درک کنید. همه راندها در اجماع عملی BFT معمولاً تقریبا 4 مرحله را شامل میشوند. این مدل با اتخاذ رویکرد “فرمانده و ستوان” اندکی از مشکل ژنرال بیزانس خالص منحرف میشود. بنابراین، متوجه نمیشوید که همه کلیات در BFT خصوصی برابر هستند. مراحل مهم برای درک نحوه عملکرد BFT به شرح زیر است:
- کلاینتها درخواستهایی را برای فراخوانی یک عملیات سرویس خاص به نود رهبر ارسال میکنند.
- سپس نود رهبر میتواند درخواست را به نودهای پشتیبان در شبکه ارسال کند.
- نودها همچنین میتوانند از اجرای درخواستهای اختصاص یافته و سپس ارسال یک پاسخ مربوط به مشتری اطمینان حاصل کنند.
- سپس مشتری منتظر پاسخهای (f+1) از نودهای مختلف با نتیجه مشابه میماند. در این حالت، «f» نشاندهنده حداکثر تعداد نودها با احتمال خطا است. نتیجه اساسا منعکس کننده نتیجه عملیات است.
همچنین مهم است اطمینان حاصل شود که نودها الزامات مهم برای تحمل خطای بیزانس در بلاکچین را برآورده میکنند. نودها باید قطعی باشند و برای BFT عملی با همان حالت شروع شوند. نتیجه نهایی به این معنی است که همه نودهای صادق میتوانند در مورد ترتیب رکورد به توافق برسند. نودها میتوانند رکورد را در نتیجه نهایی بپذیرند یا رد کنند. جالب توجه است، BFT عملی از یک فرمت نوع گرد رابین برای اصلاح نود رهبر در هر نما استفاده میکند.
علاوه بر این، امکان جایگزینی نود رهبر با پروتکلی به نام تغییر view نیز وجود دارد. چنین پروتکلی در مواردی مناسب است که نود رهبر درخواست را برای مدت زمان خاصی چند پخشی نکرده باشد. علاوه بر این، تحمل خطای بیزانس عملی یا ناهمزمان تضمین میکند که اکثریت بزرگی از نودهای صادق میتوانند با هم در مورد ماهیت معیوب یک رهبر تصمیم بگیرند. نودهای صادق همچنین میتوانند به عنوان جایگزین، رهبر معیوب را با نود رهبر بعدی جایگزین کنند.
مزایا و معایب BFT عملی
مدل عملی BFT برای اجماع بلاکچین برای کاربردهای عملی طراحی شده است. تحمل خطای بیزانسی عملی میتواند به اطمینان از مزایای زیر کمک کند.
انعطاف پذیری و سرعت معاملات
اول از همه، تحمل خطای بیزانس عملی میتواند بدون نیاز به تاییدیههایی مانند اثبات کار، تضمین نهایی بودن معامله را ارائه دهد. شما میتوانید تفاوت قابل توجهی با مدل اثبات کار به کارگرفته شده توسط بیت کوین با BFT عملی پیدا کنید. هنگامی که نودها در یک مدل BFT عملی بر روی یک بلاک مربوطه توافق دارند، بلاک نهایی در نظر گرفته میشود. نهایی بودن به این واقعیت متکی است که همه نودهای صادق در مورد وضعیت سیستم در یک زمان خاص توافق دارند. ارتباط بین نودهای صادق به حصول اطمینان از توافق معتبر در مورد وضعیت سیستم کمک میکند.
مصرف کم انرژی
مزیت مهم بعدی با این الگوریتم تحمل خطا بیزانس در مقایسه با اجماع اثبات کاهش مصرف انرژی است. مدل اثبات کار به کار رفته در بیت کوین مستلزم نیاز یک دور اثبات کار برای هر بلاک است. به تدریج، ماینرها در شبکه بیت کوین مصرف برق را افزایش میدهند که میتواند از مصرف برق سالانه کشورهای کوچک بهتر عمل کند.
BFT عملی شامل تلاشهای محاسباتی فشرده نیست، در نتیجه منجر به کاهش شدید مصرف انرژی الکتریکی میشود. با BFT عملی، ماینرها مجبور نیستند الگوریتمهای هش اثبات کار را برای هر بلاک با نیاز به منابع محاسباتی فشرده حل کنند.
با این حال، BFT عملی نیز مقدار معینی از معایب را دارد. به عنوان مثال، مدل عملی BFT فقط در شکل کلاسیک آن قابل اجرا است. بنابراین، شما محدود به اندازههای گروه اجماع کوچک هستید تا از حجم زیاد ارتباطات مورد نیاز بین نودها جلوگیری کنید. علاوه بر این، استفاده از امضای دیجیتال و روش کدهای احراز هویت برای احراز هویت پیام میتواند نگرانیهای ناکارآمدی را ایجاد کند.
در نکته پایانی، کاملاً واضح است که تحمل خطای بیزانس نقش مهمی در تغییر رویکردهای اجماع دارد. برنامههای بلاکچین به آرامی در بخشهای مختلف شتاب بیشتری به دست میآورند. با این حال، نگرانیهای زیادی در شبکههای بلاکچین مدرن در حال ظهور است.
بنابراین، مهم است که به BFT به عنوان ابزاری حیاتی برای اطمینان از عملکرد عادی شبکه با وجود عوامل مخرب نگاه کنیم. بلاکچین در دسترس و شفاف است و بنابراین میتواند بسیاری از شرکتکنندگان ناخواسته را که میخواهند منافع خصوصی خود را دنبال کنند، دعوت کند. بنابراین، درک روشنی از مکانیسمهای اجماع مانند BFT و بداهههایی مانند BFT عملی ضروری میشود.