0

مفهوم و کارکرد الگوریتم تحمل خطای بیزانس (BFT) چیست؟

بیزانس (BFT)
بازدید 661

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

ما به آشنایی با الگوریتم تحمل خطای بیزانس می‌پردازیم

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

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

مانند بیشتر سیستم‌های محاسباتی توزیع شده، در شبکه‌های ارزهای دیجیتال، شرکت‌کنندگان باید همواره به توافق درباره وضعیت فعلی بلاکچین برسند. این فرآیند، که به آن «دستیابی به اجماع» می‌گویند، در شبکه‌های توزیع شده به روشی ایمن و کارآمد انجام می‌شود. با این حال، دستیابی به اجماع در شبکه‌های توزیع شده به راحتی انجام نمی‌شود.

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

پس از بررسی مشکل دو فرمانده چیست؟

فرمانده 1 مسئول ارسال یک پیام به نماینده دشمن است تا با فرمانده 2 ارتباط برقرار کند و زمان حمله را تعیین کند. اما وجود دارد احتمالی که پیام توسط دشمن تصاحب شود و به فرمانده 2 نرسد. این باعث می‌شود فرمانده 1 مجبور به حمله شود، اما فرمانده 2 و نیروهایش همچنان در وضعیت اولیه خود باقی می‌مانند.

بیشتر بخوانید  نکات مهم پروتکل های ارتباطی بلاکچین

حتی در صورتی که پیام اولیه ارسال شود، فرمانده 2 باید از دریافت خود به فرمانده 1 باخبر شود (این ویژگی در الگوریتم تحمل خطای بیزانس به عنوان “تأیید” یا ACK شناخته می‌شود، مشابه مکانیزم سه مرحله‌ای در TCP). بنابراین با ارسال یک پیام، همان سناریو قبلی و دریافت نشدن پیام تکرار می‌شود. این موضوع به ACK‌های بی‌نهایت منجر می‌شود و فرماندهان قادر به توافق نخواهند بود.

روشی برای تضمین دومین شرط و رضایت فرمانده دیگر درباره زمان حمله وجود ندارد. دو فرمانده همواره در مورد موفقیت در انتقال آخرین پیام خود شک دار خواهند بود. با توجه به اینکه احتمال از دست دادن یک پیام همیشه بیشتر از 0 است، فرماندهان هرگز به طور قطعی و با اطمینان 100٪ موافقت نمی‌کنند.

بنابراین، به منظور ایجاد یک پروتکل اجماع، ضروری است که این پروتکل قابلیت تحمل خطا را داشته باشد. در این مقاله، ابتدا به مسئله‌ای که به عنوان “مسئله دو عمومی” شناخته می‌شود و حل نشدنی است، و سپس به مسئله فرماندهان بیزانسی و الگوریتم تحمل خطای بیزانس در سیستم‌های غیرمتمرکز و توزیع شده می‌پردازیم.

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

مشکل فرماندهان بیزانسی به چه معناست؟

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

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

بنابراین، باید در نظر داشت که الزامات زیر وجود دارند:

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

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

اکنون سؤال مسئله فرماندهان بیزانسی دو فرض دارد:

  • IC1: همه ستوان‌های وفادار از یک دستور پیروی می‌کنند.
  • IC2: اگر فرمانده ژنرال وفادار باشد، تمام ستوان‌های وفادار دستورات او را اجرا می‌کنند.

اما با توجه به فرضیه IC2 فوق، نکته جالب این است که اگر خود فرمانده خائن باشد، هنوز اجماع حاصل نمی‌شود و بنابراین همه ستوان‌ها به رای اکثریت پیروی می‌کنند. در این حالت، الگوریتم مورد نظر برای رسیدن به اجماع بر اساس ارزش اکثریت تصمیماتی است که یک ستوان مشاهده می‌کند.

با گسترش این مسئله به دامنه بلاکچین، هر فرمانده یک گره در شبکه را نمایان می‌کند و این گره‌ها باید درباره وضعیت فعلی سیستم به توافق برسند. به عبارت دیگر، اکثریت شرکت‌کنندگان در یک شبکه توزیع شده توافق می‌کنند و اقدامی را برای جلوگیری از شکست کامل اجرا می‌کنند. بنابراین، تنها راه برای دستیابی به اجماع در این نوع سیستم‌های توزیع شده، داشتن دو سوم یا بیشتر از نودهای صادق و قابل اعتماد است. این به این معنی است که اگر اکثریت شبکه تصمیم به اقدام مخرب داشته باشد، سیستم در معرض شکست و حمله (مانند حمله ۵۱٪) قرار می‌گیرد.

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

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

بیشتر بخوانید  "هیومانود" (Humanode)؛ اولین بلاکچین با پایه انسان!

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

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

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

می‌توان الگوریتم اجماع را به عنوان یک مکانیزم تعریف کرد که توسط آن شبکه بلاکچین به اجماع می‌رسد. انواع رایج این الگوریتم‌ها شامل اثبات کار (PoW) و اثبات سهام (PoS) هستند، اما می‌توانید مثالی از شبکه بیت‌کوین را در نظر بگیرید. اگرچه پروتکل بیت‌کوین قوانین اساسی سیستم را تعیین می‌کند، الگوریتم اجماع PoW را برای دستیابی به اجماع در اجرای این قوانین (مانند تأیید تراکنش‌ها) تعریف می‌کند. هرچند مفهوم اثبات کار از ارزهای دیجیتال به ماوراء آورده شده است، اما ساتوشی ناکاموتو نسخه بهبود یافته‌ای از این مدل توسعه داد که به بیت‌کوین اجازه می‌دهد به عنوان یک سیستم BFT عمل کند.

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

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

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

به این پست امتیاز بدید

نظرات کاربران

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


Fatal error: Uncaught ErrorException: md5_file(/home/ramznegar24/public_html/wp-content/litespeed/css/12241f55b9945c3d8b721bd268dfa866.css.tmp): failed to open stream: No such file or directory in /home/ramznegar24/public_html/wp-content/plugins/litespeed-cache/src/optimizer.cls.php:140 Stack trace: #0 [internal function]: litespeed_exception_handler(2, 'md5_file(/home/...', '/home/ramznegar...', 140, Array) #1 /home/ramznegar24/public_html/wp-content/plugins/litespeed-cache/src/optimizer.cls.php(140): md5_file('/home/ramznegar...') #2 /home/ramznegar24/public_html/wp-content/plugins/litespeed-cache/src/optimize.cls.php(837): LiteSpeed\Optimizer->serve('https://ramzneg...', 'css', true, Array) #3 /home/ramznegar24/public_html/wp-content/plugins/litespeed-cache/src/optimize.cls.php(330): LiteSpeed\Optimize->_build_hash_url(Array) #4 /home/ramznegar24/public_html/wp-content/plugins/litespeed-cache/src/optimize.cls.php(264): LiteSpeed\Optimize->_optimize() #5 /home/ramznegar24/public_html/wp-includes/class-wp-hook.php(324): in /home/ramznegar24/public_html/wp-content/plugins/litespeed-cache/src/optimizer.cls.php on line 140