یکی از چالشهای بزرگ سیستمهای غیرمتمرکز، حفظ امنیت و عملکرد صحیح حتی در شرایطی است که برخی از بخشهای سیستم دچار مشکل یا رفتارهای ناهماهنگ میشوند. اینجا است که الگوریتم تحمل خطای بیزانس وارد عمل میشود. الگوریتم تحمل خطای بیزانس (BFT) شبکههای بلاک چینی را قادر میسازد تا حتی درصورتیکه برخی از گرههای (نودهای) شبکه […]
یکی از چالشهای بزرگ سیستمهای غیرمتمرکز، حفظ امنیت و عملکرد صحیح حتی در شرایطی است که برخی از بخشهای سیستم دچار مشکل یا رفتارهای ناهماهنگ میشوند. اینجا است که الگوریتم تحمل خطای بیزانس وارد عمل میشود. الگوریتم تحمل خطای بیزانس (BFT) شبکههای بلاک چینی را قادر میسازد تا حتی درصورتیکه برخی از گرههای (نودهای) شبکه بهصورت مخرب یا نادرست عمل کنند، باز هم بهدرستی و بدون اختلال بهکار خود ادامه دهند. در این مقاله، بررسی میکنیم که الگوریتم تحمل خطای بیزانس چیست و چگونه این امکان را برای شبکههای بلاک چینی فراهم میکند.
بیشتر بخوانید: مروری بر تمام الگوریتمهای اجماع در ارزهای دیجیتال
فهرست مطالب
الگوریتم تحمل خطای بیزانس چیست؟
الگوریتم تحمل خطای بیزانس (Byzantine Fault Tolerance یا BFT) مکانیسمی برای جلوگیری از بروز یک مشکل فاجعهبار در سیستم است که به آن «مسئله ژنرالهای بیزانس» میگویند. ایده اصلی الگوریتم BFT این است که چگونه نودهای مختلف در شبکهای غیرمتمرکز مانند بلاک چین، با وجود احتمال خرابکاری و ارسال اطلاعات نادرست توسط برخی از نودها، میتوانند به یک تصمیم مشترک برسند، بدون اینکه سیستم دچار اختلال شود.
تحمل خطای بیزانس (BFT) یک مکانیسم اجماع نیست، بلکه قابلیتی در شبکههای غیرمتمرکز، مانند بلاک چینها، است که آنها را در مقابل فعالیتهای مخرب یا اختلال در پیامرسانی میان نودهای شبکه مقاوم میکند. الگوریتم تحمل خطای بیزانس هم مکانیسمی است که برای افزودن این قابلیت به شبکه توسعه داده میشود.
مسئله ژنرالهای بیزانسی (Byzantine Generals Problem) که در دهه ۱۹۸۰ مطرح شد، حول این موضوع میچرخد که چطور چند ژنرال بیزانسی که در مکانهای مختلف قرار دارند و تنها از طریق پیامرسانی میتوانند ارتباط برقرار کنند، به یک تصمیم مشترک برای حمله یا عقبنشینی برسند. چالشی هم که وجود دارد این است که برخی ژنرالها ممکن است اطلاعات نادرست ارسال کنند یا حتی خرابکارانه عمل کنند.
مسئله ژنرالهای بیزانسی
تصور کنید گروهی از ارتش بیزانس به فرماندهی ۹ ژنرال بیزانسی یک شهر را محاصره کردهاند و میخواهند تصمیم بگیرند که حمله کنند یا عقبنشینی. در این مسئله، بحث بر سر این نیست که تصمیم درست چیست، بلکه این است که همه باید به یک تصمیم مشترک برسند و بهصورت همزمان آن را اجرا کنند. این ژنرالها در مکانهای مختلفی قرار دارند و تنها راه ارتباطشان ارسال پیام از طریق پیک است. توافق آنها این است که مبنای عملشان رأی اکثریت باشد.
حالا فرض کنید که ۴ ژنرال موافق حمله و ۴ ژنرال دیگر موافق عقبنشینی هستند و پیامهایشان ارسال شده است؛ اما ژنرال نهم خرابکارانه عمل میکند. او به ژنرالهای موافقِ حمله، پیام حمله ارسال میکند و به ژنرالهای موافقِ عقبنشینی، پیام عقبنشینی. در این حالت چه اتفاقی میافتد؟ حدستان درست است، ۴ ژنرال حمله میکنند و ۴ ژنرال عقبنشینی و ارتش بیزانس دچار فروپاشی میشود.
مسئله ژنرالهای بیزانسی در بلاک چین
در حوزه بلاک چین، هر نود (گره) در شبکه مانند یک ژنرال بیزانسی است. این نودها باید در مورد وضعیت جاری شبکه (مانند تأیید تراکنشها) به توافق برسند. اینجا، مسئله ژنرالهای بیزانس زمانی اتفاق میافتد که بلاک چین تشخیص ندهد کدام نودها درست کار میکنند و کدام نودها مشکل دارند. تحمل خطای بیزانس تضمین میکند که با وجود برخی نودهای خرابکار یا معیوب، سیستم همچنان درست کار کند و رسیدن به اجماع امکانپذیر باشد.
برای اینکه یک شبکه غیرمتمرکز دارای تحملپذیری بیزانسی باشد، باید حداقل دو سوم نودهای آن، درستکار و صادق باشند. پاداشی که مکانیسم اجماع به نودها میدهند باید آنقدر باشد که آنها را مجاب به فعالیت در راستای منافع شبکه کند و فروپاشی سیستم برای آنها منفعتی نداشته باشد.
تحمل خطای بیزانس چگونه در بلاک چین اعمال میشود؟
در هر شبکه بلاک چین، بسته به نوع مکانیسم اجماع، ماینرها یا اعتبارسنجها باید در مورد اعتبار هر تراکنش به توافق برسند تا آن را به دفتر کل اضافه کنند. برای بررسی اعتبار تراکنش، آن را با دادههای موجود در دفتر کل مقایسه میکنند. اگر تناقضی وجود داشته باشد، مثلاً فردی سعی کند پولی را که ندارد ارسال کند، تراکنش رد میشود. اما تراکنشهای معتبر بهعنوان یک رکورد دائمی و غیرقابل تغییر در دفتر کل ثبت میشوند.
این رکورد با تمام شرکتکنندگان شبکه به اشتراک گذاشته میشود. به این ترتیب، همه شرکتکنندگان به یک منبع مشترک و معتبر برای بررسی تراکنشهای جدید دسترسی دارند. حالا برای اینکه این اجماع بدون مشکل به دست آید، هر یک از الگوریتمهای اجماع مختلف، تحمل خطای بیزانس را بهگونهای پیادهسازی میکند تا هیچ یک از نودها با عملکرد مخرب باعث اختلال در این فرایند نشوند.
تحمل خطای بیزانس در اثبات کار
در الگوریتم اجماع اثبات کار (PoW)، توافق در مورد بلاک صحیحی که باید به بلاک چین اضافه شود، توسط ماینرها انجام میشود. ماینرها با دراختیار گذاشتن قدرت محاسباتی خودشان در شبکه مشارکت میکنند و برای اثبات مشارکتشان باید دستگاههایی با قدرت محاسباتی بالا بخرند و انرژی زیادی را برای انجام محاسبات لازم مصرف کنند.
ناگفته پیدا است که این کار نیازمند صرف هزینهای نسبتاً بالا است. یعنی ماینر هم باید هزینهای برای خرید دستگاههای فیزیکی بپردازد، هم هزینهای برای مصرف انرژی این دستگاهها. این گذشته از هزینه تعمیر و نگهداری و مدیریت اجرای آنها است. پرداخت این هزینهها که نوعی سرمایهگذاری است، بهخودیخود انگیزه عملکرد مخرب را از مشارکتکنندگان میگیرد.
همچنین، در الگوریتم اجماع اثبات کار، ماینری که موفق به حل معما شود، برنده است و بلاک جدید را به بلاک چین اضافه میکند. ماینر برنده در ازای این کار پاداشی در قالب بیت کوین میگیرد. این پاداش نیز تشویقی برای جلوگیری از خرابکاری توسط ماینرها است. الگوریتم اثبات کار با این روش شبکه را در مقابل خطای بیزانسی تحملپذیر میکند.
تحمل خطای بیزانس در اثبات سهام
در الگوریتم اجماع اثبات سهام (PoS) خبری از ماینرها و دستگاههای ماینینگ نیست. در این الگوریتم، اعتبارسنجها هستند که درستی تراکنشها و بلاک جدید را تأیید میکنند. اما برای اینکه در یک شبکه اثبات سهام بخواهیم به اعتبارسنج تبدیل شویم، باید مبلغ قابلتوجهی را در آنجا سهامگذاری (Stake) کنیم. این سهام در شبکه قفل میشود. مثلاً در شبکه اتریوم، برای اعتبارسنجشدن باید ۳۲ اتر (ETH) که مبلغ بسیار زیادی است، در شبکه قفل شود.
برخی از شبکههای اثبات سهام، از جمله اتریوم، جرایمی را برای فعالیتهای مخرب از سوی اعتبارسنجها در نظر گرفتهاند؛ یعنی اگر ثابت شود که یکی از اعتبارسنجها تقلب کرده یا فعالیت مخربی داشته است، بخشی از سپرده قفلشده او حذف میشود. به این جریمه اصطلاحاً اسلشینگ (Slashing) میگویند.
این سپردهگذاری در کنار جریمه خرابکاری، میتواند عاملی پیشگیرانه در مقابل احتمال فعالیت مخرب یا هرگونه اقدامی علیه منافع عمومی شبکه شود. بهاینترتیب، الگوریتم اجماع اثبات سهام با قفلکردن مبلغی قابلتوجه و تعیین جرایمه برای فعالیت مخرب، تحمل خطای بیزانس را اعمال میکند.
بیشتر بخوانید: استیک کردن اتریوم چیست
تحمل خطای بیزانس کاربردی (PBFT) چیست؟
یکی از پیادهسازیهای معروف این BFT، تحمل خطای بیزانس کاربردی (PBFT) است که در بلاک چینها برای تضمین امنیت و توافق استفاده میشود. در این روش، گرههای شبکه، پیامها را رد و بدل میکنند تا به اجماع برسند و تصمیم نهایی گرفته شود. این فرایند بهگونهای است که حتی اگر یک سوم گرهها بهدرستی عمل نکنند، همچنان میتوان به تصمیم صحیحی رسید.
تحمل خطای بیزانس کاربردی، مکانیسم اجماعی است که براساس تحمل خطای بیزانس توسعه داده شده است. این الگوریتم برای استفاده در سیستمهای واقعی و شبکههای خاص طراحی شده است.PBFT از مکانیسمهایی استفاده میکند که هزینه ارتباطات بین گرهها و پیچیدگی محاسباتی را کاهش میدهد. همچنین، تحمل خطای بیزانس کاربردی بیشتر در شبکههای بلاک چینی خصوصی و نیازمند مجوز استفاده میشود؛ جایی که گرهها شناختهشده و دارای مجوز هستند.
بیشتر بخوانید: بلاک چین سازمانی چیست؟ معرفی ۸ بلاک چین سازمانی برتر
انواع خطاهای بیزانسی
دو نوع اصلی از خطاهای بیزانسی وجود دارد: خطای توقف (Fail-stop) و خطای گره دلخواه (Arbitrary node failure).
- خطای توقف (Fail-stop):
- این نوع خطای بیزانسی زمانی رخ میدهد که یک گره در شبکه دچار مشکل شده، کاملاً از کار افتاده و دیگر هیچ فعالیتی انجام نمیدهد. به بیان ساده، گره بهطور کامل متوقف میشود.
- خطای گره دلخواه: این نوع خطا پیچیدهتر است و ممکن است به شکلهای مختلف رخ دهد:
- یک گره اطلاعات نادرستی را به شبکه ارسال کند.
- گره نتواند پاسخی به درخواستها بدهد.
- گره عمداً پاسخی اشتباه و نادرست ارائه دهد.
- گره به بخشهای مختلف شبکه پاسخهای متفاوت و متناقض بدهد.
خطاهای یادشده، چالشهای زیادی را برای شبکههای غیرمتمرکز ایجاد میکنند. به همین دلیل پروتکلهای اجماع مانند تحمل خطای بیزانسی (BFT) برای مقابله با این نوع مشکلات طراحی شدهاند تا امنیت و پایداری شبکه حفظ شود.
الگوریتم تحمل خطای بیزانس کاربردی چگونه کار میکند؟
الگوریتم PBFT بهدنبال ارائه یک شبیهسازی عملی از ماشین بیزانسی است که حتی در شرایطی که گرههای مخرب در سیستم فعالیت میکنند، قادر به کار باشد. در سیستم غیرمتمرکزی که از تحمل خطای بیزانس کاربردی استفاده میکند، گرهها بهطور متوالی طبقهبندی میشوند. بهطوری که یک گره بهعنوان گره اصلی (رهبر) و سایر گرهها مانند گرههای ثانویه (پشتیبان) شناخته میشوند.
لازم به ذکر است که هر گره واجد شرایط میتواند با انتقال از وضعیت ثانویه به وضعیت اولیه، به گره اصلی تبدیل شود. چنین اتفاقی معمولاً زمانی رخ میدهد که گره اصلی دچار نقص میشود.
هدف الگوریتم تحمل خطای بیزانسی کاربردی (pBFT) این است که گرههای سالم و درستکار در شبکه با همکاری یکدیگر و از طریق رأیگیری، درباره وضعیت سیستم به توافق برسند. این الگوریتم حتی زمانی که تعدادی از گرهها (تا یکسوم کل) رفتار مخرب داشته باشند، باز هم قادر است درست کار کند و تصمیمات درستی بگیرد. همچنین، هرچه تعداد گرههای سالم بیشتر باشد، امنیت شبکه بالاتر میرود و احتمال آسیبدیدن سیستم کمتر میشود.
مراحل اجماع در الگوریتم تحمل خطای بیزانس کاربردی (PBFT)
فرایند اجماع در الگوریتم PBFT برای رسیدن به توافق بین گرههای شبکه، به چهار مرحله ساده تقسیم میشود:
- ارسال درخواست: کاربر درخواست خود را به گره اصلی (رهبر) شبکه ارسال میکند.
- پخش درخواست: گره اصلی درخواست کاربر را به تمام گرههای ثانویه (پشتیبان) در شبکه ارسال میکند.
- پردازش درخواست: گرههای اصلی و ثانویه درخواست را پردازش کرده و پاسخ خود را ارسال میکنند.
- تأیید موفقیت درخواست: زمانی که کاربر حداقل m+۱ پاسخ مشابه از گرههای مختلف دریافت کند (که در آن ‘m’ تعداد حداکثر گرههای معیوب است)، درخواست موفقیتآمیز تلقی میشود. منظور این است که برای رسیدن به اجماع در شبکه، کاربر باید از حداقل یک گره، بیشتر از تعداد گرههای معیوب، پاسخ مشابه دریافت کند.
در پایان هر دور اجماع، ممکن است گره اصلی (رهبر) تغییر کند و یک گره دیگر جایگزین آن شود.
درصورتیکه از زمان از پیش تعیینشده بگذرد و گره پیشرو درخواستی به گرههای ثانویه ارسال نکند، اکثریت گرههای صادق میتوانند به مشروعیت گره اصلی فعلی رأی دهند و آن را با گره پیشرو بعدی جایگزین کنند. با وجود کارکردهای بهظاهر بینقص، این الگوریتم معایبی دارد که در ادامه به معرفی آنها میپردازیم.
معایب الگوریتم تحمل خطای بیزانس
پروتکل PBFT در شرایط خاصی بهخوبی عمل میکند، اما چندین محدودیت و مشکل دارد که باعث میشود در برخی کاربردها کارایی کافی نداشته باشد.
در جدول زیر خلاصهای از معایب پروتکل PBFT را مشاهده میکنید:
عیب | توضیح |
---|---|
بار ارتباطی بالا | افزایش تصاعدی بار ارتباطات بین گرهها با افزایش تعداد گرهها، که باعث کاهش کارایی شبکه میشود. |
مقیاسپذیری محدود | با افزایش تعداد گرهها، زمان لازم برای رسیدن به اجماع و پاسخگویی طولانیتر میشود و این کارایی شبکه را در مقیاس بزرگ کاهش میدهد. |
آسیبپذیری در برابر حملات سیبیل | امکان حملات سیبیل (ایجاد هویتهای جعلی متعدد توسط یک نهاد) در شبکههای باز که میتواند روند اجماع را مختل کند. |
نیاز به گرههای مورداعتماد | بیشتر مناسب شبکههای نیازمند مجوز (Permissioned) است؛ جایی که هویت گرهها مشخص و قابل اعتماد است. در شبکههای باز به تنهایی کارایی کافی ندارد. |
تعویض رهبر (Leader Election) | فرایند انتخاب و تعویض رهبر میتواند باعث تأخیر و پیچیدگی شود، بهخصوص اگر رهبر فعلی عملکرد مناسبی نداشته باشد. |
مزایای الگوریتم تحمل خطای بیزانس
با وجود معایب، الگوریتم تحمل خطای بیزانس کاربردی یکی از کارآمدترین الگوریتمهای اجماع برای شبکههای غیرمتمرکز است. این الگوریتم مزایای قابلتوجهی مانند کاهش مصرف انرژی و افزایش سرعت تأیید تراکنشها را ارائه میدهد.
مزیت | توضیح |
---|---|
بهرهوری انرژی | پروتکل PBFT بدون نیاز به محاسبات پیچیده ریاضی مانند اثبات کار (PoW) به اجماع میرسد. بهعنوان مثال، زیلیکا از PBFT به همراه مکانیسم PoW استفاده میکند که مصرف انرژی را بهطور قابلتوجهی کاهش میدهد. |
نهاییبودن تراکنشها | در الگوریتم تحمل خطای بیزانس کاربردی، تراکنشها پس از تأیید اولیه، نهایی میشوند و نیازی به تأییدهای چندباره نیست. این در مقایسه با سیستمهایی مانند بیت کوین (که در PoW زمان تأیید بین ۱۰ تا ۶۰ دقیقه طول میکشد) باعث میشود که اجماع بسیار سریعتر و کارآمدتر حاصل شود. |
سرعت بالای اجماع | الگوریتم تحمل خطای بیزانس به دلیل عدم نیاز به تأیید چندباره تراکنشها، میتواند با سرعت بیشتری به اجماع برسد. این ویژگی باعث افزایش کارایی در شبکههای غیرمتمرکز و کاهش زمان تأیید تراکنشها میشود. |
امنیت در برابر حملات ۵۱ درصدی | برخلاف الگوریتم اثبات کار، در PBFT برای موفقیت یک حمله باید حداقل یک سوم گرهها خرابکار باشند؛ بنابراین، حملات ۵۱ درصدی در این پروتکل بیاثر هستند و امنیت شبکه بهبود یافته است. |
تعامل گرهها در شبکههای خصوصی | الگوریتم تحمل خطای بیزانس بهخوبی برای شبکههای نیازمند مجوز (Permissioned) طراحی شده است؛ جایی که هویت گرهها مشخص و مورد اعتماد است. این ویژگی امنیت و کارایی را در این نوع شبکهها افزایش میدهد. |
کدام پلتفرمها از پروتکل PBFT استفاده میکنند؟
حال که با الگوریتم تحمل خطای بیزانس و نحوه کارکرد آن آشنا شدیم، در این بخش از مقاله به معرفی مهمترین شبکههایی که از این الگوریتم استفاده میکنند میپردازیم.
زیلیکا (Zilliqa)
زیلیکا از پروتکل PBFT در ترکیب با اثبات کار (PoW) استفاده میکند. این ترکیب به Zilliqa این امکان را میدهد که با حفظ امنیت و سرعت بالا، مقیاسپذیری بهتری نسبت به بلاک چینهای سنتی داشته باشد. زیلیکا برای پردازش تراکنشها از شاردینگ (تقسیم شبکه به بخشهای کوچکتر) استفاده میکند، که به آن اجازه میدهد تا در هر شارد از PBFT برای اجماع سریع استفاده کند و درعینحال مکانیسم اثبات کار را برای امنیت شبکه بهکار گیرد.
هایپرلجر فابریک (Hyperledger Fabric)
هایپرلجر فابریک یک پلتفرم بلاک چین نیازمند مجوز است که از نسخهای از الگوریتم تحمل خطای بیزانس کاربردی استفاده میکند. این پلتفرم طراحی شده تا انعطافپذیری و امنیت را در محیطهای تجاری فراهم کند. در هایپرلجر فابریک، اعضای شبکه بهطور مستقیم روی اجماع و تصمیمگیریها توافق میکنند و این پروتکل کمک میکند تا تراکنشها بهطور سریع و ایمن تأیید شوند.
تندرمینت (Tendermint)
تندرمینت پروتکلی است که الگوریتم تحمل خطای بیزانس کاربردی را با DPoS (اثبات سهام واگذارشده) ترکیب میکند. این ترکیب به تندرمینت امکان میدهد که اجماع را با سرعت بالا و با تأمین امنیت بهدست آورد. در این مدل، نودها بهعنوان نمایندههایی برای تأیید تراکنشها عمل میکنند و اجماع بهصورت سریع و کارآمد انجام میشود. تندرمینت بهویژه در پروژههای بلاک چینی که نیاز به سرعت و مقیاسپذیری بالا دارند، استفاده میشود.
استلار (Stellar)
استلار از الگوریتمی به نام توافق بیزانس فدرال (FBA)، که نوعی از تحمل خطای بیزانسی (BFT) است، برای انجام پرداختهای سریع و ایمن در سطح بینالمللی استفاده میکند. این الگوریتم به شبکه امکان میدهد تا تراکنشها را به سرعت و با اطمینان پردازش کند، حتی اگر برخی از اعضای شبکه خرابکار یا غیرقابلاعتماد باشند.
پروتکل اجماع استلار بهگونهای طراحی شده که تراکنشها در زمانی کوتاه، معمولاً در چند ثانیه، تأیید و تسویه میشوند. این سرعت در تسویه، بدون قربانیکردن امنیت یا تمرکززدایی، به کاربرانی که در کشورهای مختلف هستند کمک میکند تا بهراحتی و بدون نیاز به واسطههای سنتی مانند بانکها یا شبکههای پرداخت متمرکز، مبادلات مالی خود را انجام دهند.
سؤالات متداول
خیر. تحمل خطای بیزانس یا BFT قابلیت در شبکههای غیرمتمرکز، بهویژه در بلاک چینها، است که باعث میشود این شبکهها در صورت وجود فعالیتهای مخرب مشارکتکنندگان یا پیامرسانیهای ناموفق همچنان به کارکرد خود ادامه دهند.
PBFT یا الگوریتم تحمل خطای بیزانس کاربردی یک مکانیسم اجماع است که بر اساس تحمل خطای بیزانس توسعه داده شده است. برخی از شبکههای بلاک چینی مانند هایپر لجر فابریک، زیلیکا، تندرمینت و استلار از این الگوریتم یا ترکیب آن با مکانیسمهای اجماع دیگر استفاده میکنند.
مسئله ژنرالهای بیزانس یا Byzantine Generals Problem یک تمثیل از وضعیت شبکههای غیرمتمرکز است. در این تمثیل، فرماندهان بیزانسی باید طوری برای حمله یا عقبنشینی تصمیم مشترک بگیرند که خرابکاری یا دروغگویی یک یا چند فرمانده یا پیکهای آنان باعث خراب شدن عملیات نشود.
مکانیسم اجماع (Consensus Mechanism) الگوریتم در شبکههای بلاک چینی است که مشارکتکنندگان میتوانند از طریق آن در مورد درستی تراکنشها و بلاک منتخب برای افزودن به بلاک چین به توافق برسند.
جمعبندی
مکانیسمهای اجماع در شبکههای بلاک چین نقش اساسی در تضمین امنیت و عملکرد پایدار دارند. تحمل خطای بیزانس (BFT) یکی از مفاهیم کلیدی در این مکانیسمهای اجماع است که به شبکهها امکان میدهد حتی در حضور گرههای معیوب یا خرابکار به فعالیت خود ادامه دهند.
الگوریتم PBFT (تحمل خطای بیزانسی کاربردی) یک روش اجماع توزیعشده براساس تحمل خطای بیزانس است که بدون نیاز به محاسبات پیچیده مانند اثبات کار (PoW)، امکان اجماع در شبکههای توزیعشده را فراهم میکند. این پروتکل مخصوصاََ برای تحمل خطاهای ناشی از گرههای مخرب طراحی شده و میتواند با وجود تعداد محدودی از گرههای معیوب، به عملکرد صحیح خود ادامه دهد.