(PRACTICAL BYZANTINE FAULT TOLERANCE (PBFT یک الگوریتم اجماع است که در اواخر دهه ۹۰ توسط باربارا لیسکوف و میگل کاسترو معرفی شد.
(PRACTICAL BYZANTINE FAULT TOLERANCE (PBFT _ تحمل خطای بیزانسی عملی به گونه ای طراحی شده است که در سیستم های ناهمزمان (بدون حد بالایی در زمان دریافت پاسخ به درخواست) کارآمد باشد. برای زمان سربار کم بهینه شده است. هدف آن حل بسیاری از مشکلات مرتبط با راهحلهای تحمل خطای بیزانسی بود. حوزه های کاربردی شامل محاسبات توزیع شده و بلاکچین است.
تحمل خطای بیزانس چیست؟
تحمل خطا بیزانس (BFT) ویژگی یک شبکه توزیع شده برای دستیابی به اجماع (توافق در مورد مقدار یکسان) است، حتی زمانی که برخی از گره های شبکه نتوانند پاسخ دهند یا با اطلاعات نادرست پاسخ دهند. هدف مکانیزم BFT محافظت در برابر خرابی سیستم با استفاده از تصمیم گیری جمعی (هر دو گره صحیح و معیوب) است که هدف آن کاهش تأثیر گره های معیوب است. BFT از مسئله ژنرال های بیزانسی گرفته شده است.
مشکل ژنرال های بیزانسی
این مشکل در مقاله ای توسط لسلی لمپورت، رابرت شوستاک و مارشال پیز در تحقیقات مایکروسافت در سال ۱۹۸۲ به درستی توضیح داده شد:
تصور کنید که چندین لشکر از ارتش بیزانس در خارج از یک شهر دشمن اردو زده اند و هر لشکر توسط ژنرال خود فرماندهی می شود. ژنرال ها فقط از طریق پیام رسان می توانند با یکدیگر ارتباط برقرار کنند. پس از مشاهده دشمن، آنها باید در مورد یک برنامه اقدام مشترک تصمیم بگیرند. با این حال، برخی از ژنرال ها ممکن است خائن باشند و سعی کنند از دستیابی ژنرال های وفادار به توافق جلوگیری کنند.
ژنرال ها باید در مورد زمان حمله به شهر تصمیم بگیرند، اما برای حمله همزمان به اکثریت قوی ارتش خود نیاز دارند. ژنرالها باید الگوریتمی داشته باشند که تضمین کند (الف) همه ژنرالهای وفادار در مورد یک برنامه عمل تصمیم میگیرند، و (ب) تعداد کمی از خائنان نمیتوانند باعث شوند که ژنرالهای وفادار برنامه بدی اتخاذ کنند. ژنرالهای وفادار همه آنچه را که الگوریتم میگوید انجام میدهند، اما خائنان ممکن است هر کاری که بخواهند انجام دهند. الگوریتم باید شرط (الف) را بدون توجه به کاری که خائنان انجام می دهند تضمین کند. ژنرال های وفادار نه تنها باید به توافق برسند، بلکه باید بر روی یک برنامه معقول توافق کنند.
تحمل خطا بیزانسی را می توان در صورتی به دست آورد که گره های به درستی کار در شبکه بر روی مقادیر خود به توافق برسند. ممکن است یک مقدار رأی پیشفرض به پیامهای از دست رفته داده شود، یعنی اگر پیام در یک محدودیت زمانی خاص دریافت نشود، میتوانیم فرض کنیم که پیام یک گره خاص «عیب» است. علاوه بر این، اگر اکثر گره ها با یک مقدار صحیح پاسخ دهند، می توانیم یک پاسخ پیش فرض را نیز اختصاص دهیم.
لزلی لمپورت ثابت کرد که اگر پردازندههای ۳+۱ به درستی کار میکنند، میتوان به اجماع (توافق در مورد همان حالت) دست یافت، اگر حداقل m پردازندهها معیوب باشند، به این معنی که بیش از دو سوم از تعداد کل پردازندهها باید صادق باشند.
انواع شکست های بیزانس:
دو دسته از شکست ها در نظر گرفته می شوند. یکی Fail-stop (که در آن گره از کار می افتد و از کار می افتد) و دیگری شکست دلخواه گره است.
برخی از خرابی های گره دلخواه در زیر آورده شده است:
- عدم بازگشت نتیجه
- با نتیجه نادرست پاسخ دهید
- با نتیجه ای عمدا گمراه کننده پاسخ دهید
- به قسمت های مختلف سیستم با نتیجه متفاوتی پاسخ دهید
مزایای PBFT :
*بهره وری انرژی:
pBFT می تواند بدون انجام محاسبات پیچیده ریاضی (مانند PoW) به اجماع توزیع شده دست یابد. Zilliqa از pBFT در ترکیب با دور محاسبات پیچیده شبیه به PoW برای هر ۱۰۰ بلوک استفاده می کند.
*نهایی شدن تراکنش:
تراکنش ها نیازی به تایید چندگانه ندارند (مانند مکانیسم PoW در بیت کوین که در آن هر گره به طور جداگانه تمام تراکنش ها را قبل از افزودن بلاک جدید به بلاکچین تایید می کند؛ تایید می تواند بین ۱۰ تا ۶۰ دقیقه بسته به تعداد نهادها تایید شود. بلاک جدید) پس از نهایی شدن و توافق بر روی آنها.
*واریانس پاداش کم:
هر گره در شبکه در پاسخ به درخواست مشتری شرکت می کند و از این رو هر گره را می توان انگیزه داد که منجر به واریانس کم در پاداش دادن به گره هایی می شود که در تصمیم گیری کمک می کنند.
چگونه کار می کند؟
pBFT تلاش میکند تا یک شبیهسازی عملی ماشین حالت بیزانسی ارائه دهد که میتواند حتی زمانی که گرههای مخرب در سیستم کار میکنند، کار کند.
گرهها در یک سیستم توزیعشده با قابلیت pBFT بهطور متوالی مرتب میشوند که یک گره اصلی (یا گره رهبر) است و بقیه به عنوان گرههای ثانویه (یا گرههای پشتیبان) شناخته میشوند.
در اینجا توجه داشته باشید که هر گره واجد شرایط در سیستم می تواند با انتقال از ثانویه به اولیه (معمولاً در صورت شکست گره اولیه) به عنوان اصلی تبدیل شود. هدف این است که همه گرههای صادقانه به دستیابی به اجماع در مورد وضعیت سیستم با استفاده از قانون اکثریت کمک کنند.
یک سیستم عملی بیزانس Fault Tolerant میتواند به شرطی عمل کند که حداکثر تعداد گرههای مخرب نباید بیشتر یا مساوی یک سوم تمام گرههای سیستم باشد. با افزایش تعداد گره ها، سیستم امن تر می شود.
دور اجماع PBFT به ۴ مرحله تقسیم می شود :
- مشتری درخواستی را به گره اصلی (رهبر) ارسال می کند.
- گره اصلی (رهبر) درخواست را به تمام گره های ثانویه (پشتیبان) ارسال می کند.
- گره ها (اولیه و ثانویه) سرویس درخواستی را انجام می دهند و سپس یک پاسخ را به مشتری ارسال می کنند.
- درخواست زمانی با موفقیت انجام می شود که مشتری پاسخ های ‘m+1’ را از گره های مختلف در شبکه با نتیجه یکسان دریافت کند، جایی که m حداکثر تعداد مجاز گره های معیوب است.
گره اصلی (رهبر) در طول هر view تغییر میکند (دورهای اجماع pBFT) و میتوان آن را با یک پروتکل تغییر نما جایگزین کرد اگر مدت زمان از پیش تعریفشدهای سپری شده باشد بدون اینکه گره پیشرو درخواستی را برای پشتیبانها ارسال کند (ثانویه). در صورت نیاز، اکثریت گره های صادق می توانند به مشروعیت گره اصلی فعلی رأی دهند و آن را با گره پیشرو بعدی در ردیف جایگزین کنند.
محدودیت های PRACTICAL BYZANTINE FAULT TOLERANCE :
مدل اجماع pBFT تنها زمانی کارآمد عمل می کند که تعداد گره ها در شبکه توزیع شده به دلیل سربار ارتباطی بالا که به طور تصاعدی با هر گره اضافی در شبکه افزایش می یابد، کم باشد.
*حملات Sybil:
مکانیسمهای pBFT مستعد حملات Sybil هستند، جایی که یک نهاد (حزب) هویتهای زیادی را کنترل میکند. با افزایش تعداد گره ها در شبکه، انجام حملات سیبیل به طور فزاینده ای دشوار می شود. اما از آنجایی که مکانیسمهای pBFT دارای مشکلات مقیاسپذیری نیز هستند، مکانیسم pBFT در ترکیب با مکانیسم(های) دیگر استفاده میشود.
*مقیاس بندی:
pBFT به دلیل ارتباط آن (با تمام گره های دیگر در هر مرحله) به خوبی مقیاس نمی شود. با افزایش تعداد گره ها در شبکه ، که در آن n پیام ها و k تعداد گره ها است، زمان صرف شده برای پاسخ به درخواست نیز افزایش می یابد.
پلتفرم هایی که از انواع PBFT استفاده می کنند:
- Zilliqa – pBFT در ترکیب با اجماع PoW
- Hyperledger Fabric – نسخه مجاز pBFT
- Tendermint – pBFT + DPoS (اثبات سهام واگذار شده)
دیدگاهتان را بنویسید