الگوریتم اجماع تحمل خطای بیزانس چیست؟

برای ایجاد هر نوع اعتماد در بلاکچین ، گره ها باید در مورد پذیرش بلاک ها، در دفترکل توزیع شده ، به توافق برسند.در این مقاله به بررسی الگوریتم تحمل خطای بیزانس  می پردازیم:

به طور کلی الگوریتم های اجماع به دو دسته تقسیم می شوند:

  • الگوریتم های مبتنی بر اثبات
  • الگوریتم های مبتنی بر تحمل خطای بیزانس مانند BPFT ، Ripple، Tendermind

الگوریتم های مبتنی بر اثبات

در الگوریتم های مبتنی بر اثبات ، استخراج کنندگان باید ثابت کنند که آنها می توانند یک بلاک جدید ایجاد کنند. اثبات باید توسط گره های دیگر قابل تأیید باشد. الگوریتم های مبتنی بر اثبات مانند POW ، POS  ،DPOS ،POA،POE

الگوریتم های مبتنی بر تحمل خطای  بیزانس

الگوریتم های مبتنی بر تحمل خطای  بیزانس مانند BPFT ، Ripple،  Tendermind

مساله ژنرال های بیزانس مشکلی در علوم رایانه است که دشواری رسیدن چندین گره در یک سیستم توزیع شده برای رسیدن به توافق را توصیف می کند.

مساله ژنرال های بیزانس به شرح زیر است:

چندین ژنرال یک شهر را محاصره کرده اند. هر ژنرال ارتش خاص خود را دارد. چالش این است که ژنرال ها باید در مورد چگونگی حمله به شهر به اتفاق نظر برسند. اگر آنها به توافق نرسند ، حمله آنها ناموفق خواهد بود. ژنرال ها باید با پیام ارتباط برقرار کنند ، با این حال ، این پیام ها قابل اعتماد نیستند زیرا ممکن است پیام به ژنرال دیگر نرسد یا پیام جعل شود.

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

روش های حل مساله ژنرال های بیزانس:

  • تحمل خطای بیزانس عملی Practical Byzantine Fault Tolerance (PBFT)
  • Federated Byzantine Agreement (FBA)
  • Delegated Byzantine Fault Tolerance  (DBFT)

Practical Byzantine Fault Tolerance

تحمل خطای بیزانس عملی (PBFT) یکی از اولین راه حل ها برای مسئله ژنرال های بیزانس است. مدل PBFT با ارائه یک مکانیزم تقسیم کار که گره های مخرب را می پذیرد ، کار می کند. این الگوریتم برای کار در سیستم های ناهمگام طراحی شده است.

PBFT تحت فرضیات زیر کار می کند:

  • سیستم توزیع شده ناهمزمان است: شبکه ممکن است در ارسال پیام ، تأخیر در آنها ، تکثیر آنها شکست بخورد.
  • گره های معیوب ممکن است خودسرانه رفتار کنند.
  • دشمن قوی می تواند گره های معیوب را هماهنگ کند ، ارتباط را به تأخیر بیندازد یا گره های صحیح را به تأخیر بیندازد تا بیشترین آسیب را به سرویس وارد کند.

گره های موجود در یک شبکه PBFT ، که Replica یا کپی نامیده می شوند ، از یک گره اصلی تشکیل می شوند که رهبر یا leader نامیده می شوند و بقیه گره های پشتیبان هستند. همه گره ها به طور مداوم با یکدیگر ارتباط برقرار می کنند و تلاش می کنند تا به یک وضعیت اجماع برسند. برای انتشار پیام ، هر گره باید ثابت کند که پیام از یک گره همتا خاص با استفاده از امضاهای کلید عمومی دریافت شده و یکپارچگی پیام با استفاده از کدهای تأیید پیام (MAC) حاصل شده است.

پیام رسانی بین لیدر و نودهای دیگر در الگوریتم BPFT
پیام رسانی بین لیدر و نودهای دیگر در الگوریتم BPFT


الگوریتم PBFT مطابق مراحل زیر  با توجه به شکل عمل می کند:

  • کلاینت C درخواستی را به لیدر(شماره صفر) ارسال می کند تا عملیاتی را فراخوانی کند. با این کار یک پروتکل سه مرحله ای شامل pre-prepare ، prepare و commit شروع می شود.
  • در مرحله قبل از آماده سازی(pre-prepare) ، نود رهبر درخواست را به نود های دیگر می فرستد.
  • در مرحله آماده سازی(prepare) ، نودهای پشتیبان تقاضا را اجرا می کنند و سپس پاسخ را به یکدیگر و لیدر ارائه می دهند.
  • پس از مرحله آماده سازی،  گره ها پیام commit را برای سایر گره ها ارسال می کنند. اگر گره ها بیش از دو سوم پیام تایید دریافت کنند ، درخواست مشتری را انجام می دهند و پاسخ را برای مشتری ارسال می کنند.
بیشتر بخوانید : چگونه دیفای می تواند تجارت الکترونیکی را بهبود بخشد

تصویری از این فرآیند در شکل بالا مشاهده می شود که گره 3 گره معیوب است.

این مدل فقط با گروه کوچکی از گره ها به طور موثر عمل می کند زیرا گره ها به طور مداوم در ارتباط هستند ، بنابراین یک الگوریتم اجماعی است که برای سیستم های بلاکچین مجاز مناسب است.

الگوریتم توافق نامه بیزانس فدرال یا متحد(Federated Byzantine Agreement)

FBA برای سیستم های غیرمتمرکز طراحی شده است ، و هیچ مرجع واحدی تصمیم نمی گیرد که چه گره هایی مجاز به پیوستن به روند توافق هستند. بنابراین استفاده از FBA در هر دو شبکه بلاکچین مجاز و غیرمجاز امکان پذیر است ، این مناسب ترین روش برای سیستم هایی است که به اعتبارسنجهای زیادی نیاز دارند.

Delegated Byzantine Fault Tolerance

DBFT نسخه بهبود یافته PBFT است ، بنابراین به عنوان PBFT ، برای سیستم های بلاکچین مجاز مناسب است. DBFT برای بلاکچین های مجاز که دارای گره های زیادی هستند ترجیح داده می شود زیرا مقیاس خوبی دارند.

تحمل خطای بیزانس (DBFT) یک الگوریتم اجماع است که در بلاک چین NEO استفاده می شود. DBFT امکان شرکت در اجماع از طریق رأی دادن به نماینده را فراهم می کند. در اکوسیستم NEO ، این نمایندگان به عنوان دفتردار نامگذاری می شوند. از آنجا که تفویض اختیار وجود دارد و توافق بین تعداد کمی از نمایندگان حاصل می شود ، الگوریتم در مقایسه با PBFT کارآمد عمل می کند.

مدل های اعتماد بین گره ها

قبل از اینکه افراد و سازمان ها از شبکه بلاکچین استفاده کنند ، باید به توانایی شبکه در حفظ و تأیید صحیح معاملات اعتماد داشته باشند.

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

در DBFT ، گره ها رای می دهند که کدام گره های اعتبار سنج را شایسته می دانند. به این ترتیب ، گره ها کنترل بیشتری بر گره های معتمد ، دارند.

در الگوریتم های مبتنی بر FBA ، همه گره ها می توانند در روند اجماع شرکت کنند. هر گره لیست اعتبار سنجی مورد اعتماد خود را دارد. به این ترتیب همه گره ها کاملاً قادر به کنترل  اینکه به چه گره هایی  اعتماد دارند و چه گره هایی را قابل اعتماد نمی دانند،هستند. به جای اعتماد به همه گره ها در شبکه ای که توسط یک تنظیم کننده مرکزی به آنها دسترسی داده می شود ، هر گره به طور جداگانه درمورد اینکه کدام گره ها مورد اعتماد هستند، تصمیم می گیرد.

منبع: factcoins.com