الگوریتم تحمل خطای بیزانس یا به اختصار BFT، الگوریتمی در شبکههای بلاک چین و ارز دیجیتال است که مورد بررسی قرار می دهیم. از زمان پیدایش ارز دیجیتال بیت کوین در سال 2008 به عنوان یک سیستم پول الکترونیکی همتا به همتا تا به امروز، بسیاری از ارزهای رمزپایه مجهز به مکانیزم های ویژه ایجاد شده اند. بلاک چین به عنوان ویژگی مشترک تقریباً همه ارزهای دیجیتال، به عنوان عنصر مرکزی ساختار آنها است.
آشنایی با الگوریتم تحمل خطای بیزانس
الگوریتم تحمل خطای بیزانس یا به اختصار BFT در پاسخ به مسئله فرماندهان معروف بیزانسی پیشنهاد شد که می خواهیم در این مقاله به بررسی آن بپردازیم. البته بلاک چین ها، به استثنای تعدادی، به روشی غیرمتمرکز طراحی می شوند و مانند یک دفتر کل دیجیتالی که توسط شبکه غیرمتمرکز گره های محاسباتی مدیریت می شود، عمل می کنند.
به همین دلیل، فناوری بلاک چین امکان ساخت سیستمهای اقتصادی غیرقابل اعتمادی را فراهم کرده است که در آن تراکنشهای مالی شفاف و قابل اعتماد بدون نیاز به واسطهها قابل اجرا باشد. ارزهای دیجیتال به عنوان یک جایگزین مناسب برای سیستم های بانکی و پرداخت سنتی که به شدت به اعتماد متکی هستند، پذیرفته شده اند.
برای آشنایی با ارزهای پامپی، دوره غیرحضوری کریپتو پامپ را مشاهده کنید.
درست مانند اکثر سیستمهای محاسباتی توزیع شده، شرکت کنندگان در یک شبکه ارزهای دیجیتال باید دائماً در مورد وضعیت فعلی بلاک چین به توافق برسند و این همان چیزی است که ما آن را «دستیابی به اجماع» مینامیم. با این حال، دستیابی به اجماع در شبکه های توزیع شده به شیوه ای ایمن و کارآمد کار آسانی نیست.
حال اگر احتمال خرابی یک یا چند گره وجود داشته باشد، چگونه می توانیم در یک شبکه توزیع شده از گره های محاسباتی در مورد تصمیم گیری به توافق برسیم؟ این سؤال، سؤال اساسی مسئله فرماندهان معروف بیزانسی است که مفهوم الگوریتم تحمل خطای بیزانس را به وجود آورد.
بررسی مشکل دو فرمانده چیست؟
این مشکل که در سال 1975 منتشر شد و در سال 1978 نامگذاری شد، سناریویی را به تصویر می کشد که در آن دو فرمانده در حال حمله به دشمن مشترک هستند. فرمانده 1 رهبر و فرمانده 2 پیرو در نظر گرفته می شود. ارتش هر فرمانده به تنهایی برای شکست دادن موفقیت آمیز ارتش دشمن کافی نیست، بنابراین این فرماندهان نیاز به همکاری و حملات همزمان دارند. این سناریو ساده به نظر می رسد اما یک مشکل وجود دارد:
برای آشنایی با دوره آموزش ارز دیجیتال بر روی لینک کلیک کنید.
فرمانده 1 باید یک پیام رسان از طرف دشمن بفرستد تا با فرمانده 2 ارتباط برقرار کند و زمان حمله را مشخص کند. بنابراین ممکن است پیام رسان توسط دشمن دستگیر شود و پیام به فرمانده 2 نرسد. این امر فرمانده 1 را مجبور به حمله می کند اما فرمانده 2 و ارتشش همچنان موقعیت خود را حفظ می کنند.
حتی اگر اولین پیام ارسال شود، Commander 2 باید دریافت خود را به Commander 1 اطلاع دهد (این ویژگی در الگوریتم تحمل خطای بیزانس به عنوان Acknowledgment یا ACK شناخته می شود، شبیه به دست دادن در 3 مرحله در TCP)، بنابراین با ارسال یک پیام رسان، دوباره همان سناریو قبلی و گرفتن پیام رسان را می توان تکرار کرد. این به ACK های بی نهایت، گسترش می یابد. بنابراین فرماندهان نمی توانند به توافق برسند.
هیچ راهی برای تضمین شرط دوم و موافقت فرمانده دیگر در مورد زمان حمله وجود ندارد. دو فرمانده همیشه در مورد موفقیت در انتقال آخرین پیام خود نامطمئن خواهند بود. از آنجایی که احتمال از دست دادن یک پیام همیشه > 0 است، فرماندهان هرگز با اطمینان 100٪ موافقت نمی کنند.
برای یادگیری روش معاملاتی دکس تریدینگ کافیست بر روی لینک کلیک کنید.
بنابراین، برای ایجاد یک پروتکل اجماع، این پروتکل باید تحمل خطا داشته باشد. در این مقاله ابتدا مسئله حل نشدنی دو فرمانده (مسئله دو عمومی) و سپس مسئله فرماندهان بیزانس و الگوریتم تحمل خطای بیزانس در سیستم های غیرمتمرکز و توزیع شده را بررسی می کنیم.
بنابراین مشکل لاینحل دو فرمانده ثابت شده است. با افزایش تعداد فرماندهان در مشکل فرماندهان بیزانسی و گسترش آن به شبکه های بلاک چین ارز دیجیتال، الگوریتم تحمل خطای بیزانس متولد شد که در ادامه به بررسی آن می پردازیم.
مشکل فرماندهان بیزانسی چیست؟
مسئله فرماندهان بیزانس که توسط لامپورت، شوستاک و پیز در سال 1982 به عنوان یک مسئله سه گانه منطقی مطرح شد، در واقع نسخه کلی تری از مسئله دو فرمانده با اندکی تغییر است. در اینجا پارادایم رهبر-رهبر در مسئله دو فرمانده جای ستوان-فرمانده را گرفته است.
در این شماره همان سناریو اما با بیش از دو ارتش (شامل فرمانده و ستوان) برای توافق بر سر زمان حمله پیشنهاد شده است. در این سناریو فرض بر این است که هر فرمانده و ستوان ارتش خود را دارد و هر گروه برای حمله در منطقه متفاوتی از شهر قرار می گیرد. این ستوان ها باید در مورد حمله یا عقب نشینی توافق کنند. مهم حمله یا عقب نشینی نیست، بلکه دستیابی به اجماع همه فرماندهان، یعنی توافق بر یک تصمیم مشترک برای اجرای هماهنگ آن مهم است.
بنابراین، الزامات زیر باید در نظر گرفته شود:
- هر ستوان باید تصمیم بگیرد که حمله کند یا عقب نشینی کند (بله یا خیر).
- وقتی تصمیمی گرفته می شود، نمی توان آن را تغییر داد.
- همه ستوان ها باید بر روی یک تصمیم توافق کنند و آن را به صورت هماهنگ اجرا کنند.
برای آشنایی با امور مالی متمرکز، کافیست بر روی لینک کلیک کنید.
در مشکل ارتباطی بالا، یک فرمانده یا ستوان تنها با ارسال پیام از طریق پیام رسان می تواند با سایر ستوانها ارتباط برقرار کند. بنابراین، چالش اصلی فرماندهان بیزانسی، تاخیر، نابودی یا از دست دادن پیام ها است. علاوه بر این، حتی اگر پیام به درستی ارسال شود، احتمال رفتار مخرب یک یا چند فرمانده یا ستوان (به هر دلیل) و ارسال پیام گمراه کننده برای سردرگمی دیگران وجود دارد که منجر به شکست کامل خواهد شد.
اکنون سؤال فرماندهان بیزانسی دو فرض دارد:
IC1: همه ستوان های وفادار از یک دستور پیروی می کنند.
IC2: اگر ژنرال فرمانده وفادار باشد، تمام ستوان های وفادار دستورات او را اجرا می کنند.
اما با توجه به فرضیه IC2 فوق، نکته جالب این است که اگر خود فرمانده خائن باشد، هنوز اجماع حاصل نشده است و بنابراین همه ستوان ها از رای اکثریت پیروی می کنند. در این حالت الگوریتم مورد نظر برای رسیدن به اجماع بر اساس ارزش اکثریت تصمیماتی است که یک ستوان مشاهده می کند.
با گسترش این مشکل به دامنه بلاک چین، هر فرمانده یک گره را در شبکه نشان می دهد و این گره ها باید در مورد وضعیت فعلی سیستم به توافق برسند. به عبارت دیگر، اکثریت شرکت کنندگان در یک شبکه توزیع شده توافق می کنند و اقدامی را برای جلوگیری از شکست کامل اجرا می کنند. بنابراین، تنها راه دستیابی به اجماع در این نوع سیستم های توزیع شده، داشتن دو سوم از نود صادق و قابل اعتماد یا بیشتر است. این بدان معنی است که اگر اکثریت شبکه تصمیم به اقدام مخرب داشته باشند، سیستم در معرض شکست و حمله (مانند حمله 51٪) قرار می گیرد.
الگوریتم تحمل خطای بیزانس (BFT) چیست؟
به طور خلاصه، الگوریتم تحمل خطای بیزانس یکی از ویژگیهای یک سیستم است که آن را قادر میسازد در برابر نوعی شکست و خرابی ناشی از مشکل فرماندهان بیزانسی مقاومت کند. خطای بیزانسی جدی ترین نوع شکست برای یک سیستم است اما نشان می دهد که یک سیستم BFT می تواند به عملکرد خود ادامه دهد حتی اگر برخی از گره ها از کار بیفتند یا به طور مخرب کار کنند.
برای آشنایی با مفهوم تجمیع کننده دیفای کافیست بر روی لینک کلیک کنید.
بیش از یک راه ممکن برای حل مشکل فرماندهان بیزانس وجود دارد و بنابراین، راههای مختلفی برای ساخت یک سیستم BFT وجود دارد. به طور مشابه، رویکردهای مختلفی برای یک بلاک چین برای دستیابی به الگوریتم تحمل خطای بیزانس وجود دارد که ما را به الگوریتمهای اجماع معروف میرساند.
الگوریتم BFT در سیستمهای موتور هواپیما، نیروگاههای هستهای و بسیاری از سیستمهای دیگر استفاده شده است که عملکرد آنها به نتایج مقادیر زیادی از حسگرهای مختلف بستگی دارد. حتی اسپیس ایکس الگوریتم تحمل خطای بیزانس را به عنوان یکی از الزامات بالقوه سیستم های خود در نظر گرفت.
تا زمانی که تعداد خائنان از یک سوم فرماندهان تجاوز نکند، الگوریتم ذکر شده در قسمت قبل به صورت BFT عمل می کند. راه های دیگری برای حل این مشکل وجود دارد، مانند استفاده از امضای دیجیتال یا اعمال محدودیت های ارتباطی بین همتایان شبکه.
الگوریتم های اجماع در بلاک چین و تحمل خطای بیزانس
الگوریتم اجماع را می توان به عنوان مکانیزمی تعریف کرد که توسط آن شبکه بلاک چین به اجماع دست می یابد. رایج ترین انواع این الگوریتم ها اثبات کار و اثبات سهام هستند اما مثالی از شبکه بیت کوین را در نظر بگیرید. اگرچه پروتکل بیت کوین قوانین اساسی سیستم را تجویز می کند، الگوریتم اجماع PoW چیزی است که نحوه رعایت این قوانین را برای دستیابی به اجماع (مثلاً هنگام تأیید تراکنش ها) تعریف می کند. اگرچه مفهوم اثبات کار از ارزهای دیجیتال جان سالم به در برد اما ساتوشی ناکاموتو نسخه بهبود یافته ای از مدل را توسعه داد که به بیت کوین اجازه ساخت به عنوان یک سیستم BFT را می داد.
لازم به ذکر است که الگوریتم PoW به طور کامل در برابر خطاهای بیزانسی مقاوم نیست اما به دلیل هزینه بالای فرآیند استخراج و تکنیک های رمزگذاری مرتبط، به یکی از امن ترین و قابل اطمینان ترین پیاده سازی ها تبدیل شده است و برای شبکه های بلاک چین قابل اعتمادتر است. در این مورد، الگوریتم اجماع اثبات کار طراحی شده توسط ساتوشی ناکاموتو توسط بسیاری به عنوان هوشمندانه ترین راه حل برای خطای بیزانسی در نظر گرفته می شود.
کلام آخر
مشکل فرماندهان بیزانس یک معضل جذاب است که در نهایت منجر به ظهور سیستم های BFT شد. فراتر از صنعت بلاک چین، برخی از کاربردهای BFT در صنایع هوافضا و هسته ای است. در زمینه ارزهای دیجیتال، داشتن یک ارتباط شبکه کارآمد و همچنین مکانیزم اجماع خوب برای هر اکوسیستم بلاک چین بسیار مهم است.
ایمن سازی این سیستم ها یک فعالیت مداوم است و الگوریتم های اجماع موجود هنوز در تلاش برای غلبه بر محدودیت های خاص (مانند مقیاس پذیری) هستند. با این حال، الگوریتمهای PoW و PoS از جمله رویکردهای جذاب سیستمهای بیزانسی مبتنی بر تحمل خطا هستند و کاربردهای بالقوه آنها الهامبخش بسیاری از نوآوریها بوده است.