تحمل خطای بیزانس

در سامانه‌های رایانه‌ای عیب‌تاب (fault-tolerant computer systems)، مخصوصا در سامانه‌های محاسباتی توزیع شده، عیب‌تابی بیزانسی Byzantine fault tolerance -مخفف (BFT)- آن ویژگی‌ سامانه است که امکان تحمل مجموعه‌ای از خطاهای خاص را می‌دهد. این دسته از خطاها در "مسئله فرماندهان بیزانسی" تعریف می‌شوند که خود حالتی کلی‌تر از مسئله "‌دو فرمانده" است.

خرابی‌های ممکن در سامانه توزیعی انواع مختلف دارند. ساده‌ترین آن‌ها خطای-توقف (fail-stop) است که در آن تنها راه خرابی سامانه از کار افتادن یکی از گره‌ها است. در مقابل بدترین نوع خرابی که در سامانه ممکن است به وجود بیاید خرابی بیزانسی (‌Byzantine failure) است. در این نوع خرابی، ممکن است یکی از گره‌های سامانه که خراب/آلوده شده‌است اطلاعات مغلوطی تولید کند و خود را به جای  گره سالم معرفی کند، که امکان عیب‌تابی را سخت می‌کند.

پیش‌زمینه 
خطای بیزانسی، خطایی است که به مشاهده/معاینه‌کنندگان متفاوت علائم متفاوت نشان می‌دهد. خرابی بیزانسی، از دست دادن امکان خدمات دهی یک سامانه به دلیل وجود خطای بیزانسی است.

هدف عیب‌تابی بیزانسی مقابله با خطای بیزانسی است. در سامانه‌ای که نیاز به توافق جمعی بین اجزاء دارد، یک یا چند جزء از سامانه به گونه‌ای خراب می‌شوند که امکان رسیدن به یک توافق جمعی بین اجزاء را می‌گیرد. در صورتی که سامانه دارای عیب‌تابی باشد، اجزاء سالم آن به فرض اینکه اجزای خراب سیستم خیلی زیاد نباشند، امکان انجام خدمات را خواهند داشت و سامانه از کار نخواهد افتاد.

مسئله فرماندهان بیزانسی 
در سال ۱۳۶۱ش/۱۹۸۲م مقاله‌ای منتشر شد که در آن مسئله‌ای با عنوان مذکور شد که از تمثیل زیر استفاده کرده است.
گروهی از فرماندهان بیزانس  شهری را محاصره  کرده‌اند و هر کدام بخشی از ارتش بیزانس را رهبری می‌کنند و هر یک در مکانی مختلف مستقرند. راه دسترسی بین آن با پیک و چاپار است. فرماندهان قصد دارند در مورد حمله به شهر یا عقب‌نشینی تصمیم بگیرند. گروهی ممکن است میل به حمله و گروهی ممکن است میل به عقب‌نشینی داشته باشند. اگر بخشی از فرماندهان گروه حمله‌کنندگان شکست خواهند خورد و از بین خواهند رفت.پس مهم این است که همه فرماندهان تصمیمی واحد اتخاذ کنند. حمله بخشی از فرماندهان و نیروهای تحت امرشان خطری بیش از حمله مشترک یا  عقب‌نشینی سازمان‌یافته دارد.

مشکل اول، وجود فرماندهان خائن است  که قصدشان برهم زدن این هماهنگیست. آن‌ها ممکن است به گروهی از فرماندهان اطلاع حمله دهند و به گروهی دیگر اطلاع عقب‌نشینی. یا اینکه زمان متفاوتی برای حمله به فرماندهان دیگر ابلاغ کنند. با این خدعه هماهنگی از بین می‌‌رود.
مشکل دوم دوری فرماندهان  از یکدیگر است و قابل اعتماد نبودن پیک‌ها.گونه‌ای که هر کدام از پیک‌ها ممکن است نتوانند پیام را به مقصد برسانند.
رسیدن به عیب‌تابی بیزانسی در صورتی که فرماندهان از قبل هماهنگ باشند که پیام‌های نرسیده به معنی خاصی هستند (مثلا عدم دریافت پیام به معنی رای به عقب نشینی است) ممکن است.

پیاده سازی 
یکی از نمونه‌های پیاده‌سازی‌شده عیب‌تابی‌ بیزانسی BFT بیت‌کوین است.  بیت‌کوین بر شبکه همتا به همتا استوار است و تلاش دارد که زنجیره‌ای یکسان از تمامی تصمیم‌گیری‌ها و تراکنش‌ها را در تمامی گره‌های شبکه به قرار دهد. گواه انجام کار proof of work  این وظیفه را بر عهده دارد تا از پس خرابی بیزانسی برآید و سیستم یکنواخت و هماهنگ ایجاد کند که در آن همه گره‌های درستکار هم نظرند.

منابع 

تحمل خطا
خرابی
رمزنگاری کلید عمومی
سامانه‌های تحمل خطای رایانه‌ای
مسئله‌های رایانش توزیع‌شده
نظریه محاسبات