چالش واقعی در برابر سیستمی مانند آنچه در مقاله قبلی توضیح داده شد، مسئلهای به نام مشکل ژنرال های بیزانس است. این نظریه که در دهه 1980 مطرح شد، معضلی را توصیف می کند که در آن شرکت کنندگان منزوی باید برای هماهنگ کردن اقدامات خود ارتباط برقرار کنند. این معضل خاص شامل تعداد انگشت شماری از ژنرال های ارتش است که یک شهر را احاطه کرده اند و تصمیم می گیرند که آیا به آن حمله کنند یا خیر. این ژنرال ها فقط از طریق پیام رسان می توانند ارتباط برقرار کنند.
هر کدام باید تصمیم بگیرند که حمله یا عقب نشینی کنند. مهم نیست که حمله یا عقب نشینی کنند، تا زمانی که همه ژنرال ها بر یک تصمیم مشترک توافق کنند. اگر تصمیم به حمله بگیرند، تنها در صورتی موفق خواهند شد که همزمان برای حمله اقدام نمایند. بنابراین چگونه می توانیم اطمینان حاصل کنیم که آنها می توانند این کار را انجام دهند؟
مطمئناً، آنها می توانند از طریق پیامرسان ارتباط برقرار کنند. اما اگر پیامرسان با پیامی رهگیری شود که می گوید "ما در سپیده دم حمله می کنیم" و آن پیام با "امشب حمله می کنیم" جایگزین شود، چه اتفاقی میافتد؟اگر یکی از ژنرال ها بدخواه باشد و عمداً دیگران را گمراه کند تا مطمئن شود که شکست میخورند، چه؟
eae85162df7a4cef862043ff1cdc0925.png
همه ژنرال ها هنگام حمله موفق هستند (چپ). هنگامی که برخی عقب نشینی کنند و برخی دیگر حمله کنند، شکست خواهند خورد (راست).
ما به یک استراتژی نیاز داریم که در آن بتوان به اجماع رسید، حتی اگر شرکتکنندگان به بدخواهانی تبدیل شده یا پیامها رهگیری شوند. ناتوانی در نگهداری پایگاه داده وضعیتی سرنوشتساز مانند حمله به یک شهر بدون نیروی کمکی نیست، اما همین اصل در مورد آن صادق است. اگر کسی وجود نداشته باشد که بر بلاک چین نظارت داشته باشد و اطلاعات «صحیح» را به کاربران بدهد، کاربران باید بتوانند بین خودشان ارتباط برقرار کنند.
برای غلبه بر شکست بالقوه یک (یا چند) کاربر، مکانیسمهای بلاک چین باید به دقت مهندسی شوند تا در برابر چنین موانعی مقاوم باشند. سیستمی که بتواند به این امر دست یابد به عنوان تحمل خطای بیزانس (Byzantine fault-tolerant) نامیده می شود. همانطور که به زودی خواهیم دید، الگوریتمهای اجماع برای اجرای قوانین محکم استفاده میشوند.
منبع
هر کدام باید تصمیم بگیرند که حمله یا عقب نشینی کنند. مهم نیست که حمله یا عقب نشینی کنند، تا زمانی که همه ژنرال ها بر یک تصمیم مشترک توافق کنند. اگر تصمیم به حمله بگیرند، تنها در صورتی موفق خواهند شد که همزمان برای حمله اقدام نمایند. بنابراین چگونه می توانیم اطمینان حاصل کنیم که آنها می توانند این کار را انجام دهند؟
مطمئناً، آنها می توانند از طریق پیامرسان ارتباط برقرار کنند. اما اگر پیامرسان با پیامی رهگیری شود که می گوید "ما در سپیده دم حمله می کنیم" و آن پیام با "امشب حمله می کنیم" جایگزین شود، چه اتفاقی میافتد؟اگر یکی از ژنرال ها بدخواه باشد و عمداً دیگران را گمراه کند تا مطمئن شود که شکست میخورند، چه؟
eae85162df7a4cef862043ff1cdc0925.png
همه ژنرال ها هنگام حمله موفق هستند (چپ). هنگامی که برخی عقب نشینی کنند و برخی دیگر حمله کنند، شکست خواهند خورد (راست).
ما به یک استراتژی نیاز داریم که در آن بتوان به اجماع رسید، حتی اگر شرکتکنندگان به بدخواهانی تبدیل شده یا پیامها رهگیری شوند. ناتوانی در نگهداری پایگاه داده وضعیتی سرنوشتساز مانند حمله به یک شهر بدون نیروی کمکی نیست، اما همین اصل در مورد آن صادق است. اگر کسی وجود نداشته باشد که بر بلاک چین نظارت داشته باشد و اطلاعات «صحیح» را به کاربران بدهد، کاربران باید بتوانند بین خودشان ارتباط برقرار کنند.
برای غلبه بر شکست بالقوه یک (یا چند) کاربر، مکانیسمهای بلاک چین باید به دقت مهندسی شوند تا در برابر چنین موانعی مقاوم باشند. سیستمی که بتواند به این امر دست یابد به عنوان تحمل خطای بیزانس (Byzantine fault-tolerant) نامیده می شود. همانطور که به زودی خواهیم دید، الگوریتمهای اجماع برای اجرای قوانین محکم استفاده میشوند.
منبع