یک سیستم کامپیوتری قابل اعتماد باید بتواند حتی اگر یک یا چند جزء آن از کار بیفتد، کار کند. یک جزء معیوب ممکن است رفتاری را نشان دهد که اغلب نادیده گرفته میشود. بنابراین، مشکل مکانیزم خطای بیزانتین چیست؟ مکانیزم خطا بیزانتین (Byzantine Generals problem) یک مسئله تئوری بازی است که توصیف میکند چقدر دشوار است که احزاب پراکنده بدون کمک یک حزب مرکزی مورد اعتماد به اجماع برسند. وقتی هیچکس نمیتواند هویت سایر اعضا را تأیید کند، چگونه اعضای یک شبکه میتوانند روی یک واقعیت خاص توافق کنند؟ این مقاله قصد دارد توضیح دهد که مکانیزم خطا بیزانتین در بلاک چین چیست و چگونه میتوان این مشکل را حل کرد.
فهرست مطالب
نظریه بازی چارچوبی برای تفکر در مورد رویدادهای اجتماعی با بازیگران رقیب است. در یک محیط استراتژیک، نظریه بازی، شرایط اجتماعی را در میان شرکتکنندگان رقیب تصور میکند و تصمیمگیری بهینه را برای عوامل مستقل و رقیب ایجاد میکند.
ژنرالهای بیزانتین بر اساس یک مقایسه نظریه بازی هستند. مشکل این است که چندین ژنرال بیزانتین را محاصره کردهاند. آنها شهر را محاصره کردهاند، اما باید تصمیم بگیرند که چه زمانی به عنوان یک گروه حمله کنند. اگر همه ژنرالها به طور همزمان حمله کنند، پیروز خواهند شد. با این حال، آنها در صورت حمله شکست خواهند خورد.
از آنجا که هر نامهای که آنها ارسال یا دریافت می کنند ممکن است توسط مدافعان بیزانتین رهگیری یا فریبنده ارسال شده باشد، ژنرالها هیچ کانال ارتباطی امنی با یکدیگر ندارند.
در رابطه با ” مکانیزم خطا بیزانتین “، مقالهای تحقیقاتی توسط لزلی لامپورت، رابرت شوستاک و مارشال پیز، در سال 1982 منتشر شد. فرماندهی سیستمهای دفاع موشکی بالستیک و دفتر تحقیقات ارتش همگی هزینه تحقیقات خود را تامین کردند.
اگرچه مسئله عمومی بیزانتین قبل از سال 1982 در علوم کامپیوتر مورد مطالعه قرار گرفته بود، این یکی از اولین تلاشها برای انتقال آن به راه حلهای موازی و پیشنهادی بود. قیاس زیر مکانیزم خطا بیزانتین را نشان میدهد. چندین لشکر از ارتش بیزانتین درست خارج از شهر دشمن مستقر شده و آماده جنگ هستند. تنها راه ارتباط ژنرالهای مختلف از طریق پیامرسان است. آنها باید در مورد مسیر عمل به توافق برسند.
با این حال، ما باید فرض کنیم که ژنرالهای خاصی که قصد دارند ژنرالهای وفادار را از تصمیم گیری در مورد یک اقدام واحد باز دارند، خائن هستند. برای اطمینان از اینکه گروه کوچکی از خائنان نمیتوانند ارتباطات را قطع کنند، یک الگوریتم مورد نیاز است.
برای رسیدگی به مشکل ژنرالهای بیزانتین ، ژنرالهای وفادار به وسیلهای مطمئن برای توافق بر سر یک طرح (که به عنوان اجماع شناخته میشود) و اجرای آن (معروف به هماهنگی) نیاز دارند. در حالی که حل مشکل ژنرالهای بیزانسی کار دشواری است، اکنون مشکل اساسی را بهتر درک میکنیم. توجه به این نکته ضروری است که همانطور که از مثال نشان میدهد، این مفهوم را میتوان در ارتباطات نظامی به کار برد.
با این حال، این موضوع همه انواع سیستمهای کامپیوتری را تحت تاثیر قرار میدهد، نه تنها سیستمهای مورد استفاده در برنامههای نظامی. اگر یک گروه پراکنده از گرهها (مانند رایانه ها یا سایر دستگاه های فیزیکی) برای دستیابی به ارتباطات قابل اعتماد نیاز دارند، مکانیزم خطا بیزانتین باید حل شود.
دلایل متعددی وجود دارد که چرا یک سیستم کامپیوتری توزیع شده ممکن است از کار بیفتد. در سناریوی نظامی بالا، شکستهای بیزانتین اساساً خائنانی هستند که تلاش میکنند ارتباطات بین ژنرالهای وفادار را قطع کنند.
این میتواند یک نقص نرمافزاری، یک نقص سختافزاری یا یک حمله مخرب باشد که در سیستهای کامپیوتری دنیای واقعی اعمال شود. به بیان دیگر، شکستهای بیزانتین همیشه نباید نتیجه تلاشهای هماهنگ شده یک فرد مخرب باشد. ممکن است مشکلاتی وجود داشته باشد که گرهها را از رسیدن به اجماع در شبکههای توزیع شده باز میدارد.
هر خرابی سیستمی که علائم متفاوتی را برای ناظران مختلف نشان دهد، گسل بیزانتین نامیده میشود. این شامل هیچ محدودیت و فرضی در مورد نوع رفتاری است که یک گره میتواند نشان دهد (به عنوان مثال، یک گره میتواند دادههای دلخواه تولید کند در حالی که به عنوان یک شخص صادق ظاهر میشود). در هر سیستم کامپیوتری توزیع شده، شکست بیزانتین عملاً اجتناب ناپذیر است.
بیایید تصور کنیم قطعی برق وجود دارد و همه گرهها به طور همزمان آفلاین میشوند. حال این سوال مطرح میشود که آیا شبکه همچنان عملیاتی است و توانایی برقراری ارتباط قابل اعتماد را دارد؟ یا اینکه سیستم به طور کلی کار نمیکند یا به طور ناگهانی در معرض حملات قرار میگیرد؟
در یک شبکه نسبتاً ایمن، هر چیزی به اندازه چند گره آفلاین هیچ اثر قابل تشخیصی روی شبکه ندارد. تحمل گسل بیزانتین توانایی دفاع در برابر این شرایط است. گفته میشود شبکههایی که میتوانند شکستهای بیزانتین بیشتری را تحمل کنند، تحمل بالاتری دارند، به این معنی که امنیت بیشتری نسبت به شبکههایی دارند که نمیتوانند.
وقوع واقعی و طبقه بندی گسلهای بیزانتین در سیستمهای مختلف موضوعی گسترده و چالش برانگیز است. با این حال، میتوان آن را به گونهای مشخص کرد که یک تعریف رسمی از تحمل گسل بیزانتین پدیدار شود.
شایان ذکر است که عیوب بیزانس جدیترین و سختترین اصلاح هستند. تحمل مکانیزم خطا بیزانتین در نیروگاههای هستهای، سیستمهای موتورهای هوانوردی و تقریباً هر سیستمی که عملکرد آن به نتایج تعداد زیادی حسگر وابسته است، مورد نیاز است.
فقط سیستمهای غیرمتمرکز مستعد مشکل ژنرالهای بیزانسی هستند، زیرا فاقد منبع اطلاعاتی قابل اعتماد هستند و هیچ راهی برای تأیید اطلاعاتی که از سایر کاربران شبکه دریافت میکنند ندارند. در سیستمهای متمرکز، یک مرجع برای انتشار اطلاعات دقیق و در عین حال جلوگیری از انتشار اطلاعات اشتباه یا تقلبی در سراسر شبکه مورد اعتماد است.
به عنوان مثال، در سیستم مالی سنتی، بانک ها برای ارائه مانده های دقیق و تاریخ معاملات به مشتریان اعتماد دارند. اگر بانکی بخواهد مشتریان خود را فریب دهد یا گمراه کند، بانک مرکزی یا دولت مجاز به اعاده ایمان است.
معضل ژنرال های بیزانسی که به طور متناقض مستلزم استقرار حقیقت است، با سیستم های متمرکز حل نمی شود. در عوض، آنها تصمیم می گیرند به هیچ وجه با مشکل مواجه نشوند و کارایی را به جای اعتماد ترجیح می دهند. از سوی دیگر، سیستم های متمرکز مستعد فساد اداری مرکزی هستند.
چگونه یک جامعه میتواند یک سیستم پولی بسازد که همه اعضا بتوانند به آن اعتماد کنند و روی آن توافق کنند؟ جوامع در بیشتر تاریخ از فلزات گرانبها یا سایر اقلام کمیاب مانند صدف یا مهرههای شیشه ای به عنوان ارز استفاده کردهاند. طلا به مکانیزم خطا بیزانتین رسیدگی کرد زیرا در سیستمهای غیرمتمرکز مانند تجارت بینالملل مورد اعتماد و شناخته شده بود.
از سوی دیگر، وزن و خلوص طلا تا کنون غیر قابل اعتماد باقی مانده است. ناکامی طلا در حل کامل مکانیزم خطا بیزانتین منجر به ایجاد و انتشار پول توسط نهادهای مرکزی مورد اعتماد، عمدتاً دولتها شد. دولتها ضرابخانهها را در انحصار خود درآوردند تا اعتماد به وزن و خلوص پول را القا کنند. بنابراین، شکست بیزانتین با سیستم های متمرکز حل نشد.
علاوهبر این، مقامات مرکزی مورد اعتماد برای پول، دولتها، با توقیف، تحقیر یا تعدیل آن به این اعتماد خیانت کردهاند. برای حل مشکل ژنرالهای بیزانسی، یک ارز باید قابل تأیید، مقاوم در برابر جعل و غیرقابل اعتماد باشد. این موفقیت تا زمان ظهور بیت کوین (BTC) محقق نشد.
چگونه مشکل ژنرالهای بیزانتین را حل میشود؟
مشکل را میتوان با پیادهسازی یک پروتکل که مکانیسمهای تحمل خطا را به کار میگیرد، حل کرد. در صورت مواجهه با عدم قطعیت، اتخاذ رویهای در بین کلیات بهترین روش برای انتخاب است.
در نتیجه، به جای روش قطعی، روش احتمالی میشود زیرا هیچ چیز قابل تضمین نیست. این دقیقاً زمانی است که ارتباط مستقیم کمتری وجود داشته باشد و هر یک از آنها مستقل باشد. از آنجا که هر ژنرال در مکان متفاوتی قرار دارد، یک جدایی فیزیکی بین آنها وجود دارد.
مشکل کلی بیزانتین را میتوان با کمک یک بلاک چین حل کرد. همه چیز در مورد ارائه راهی برای برقراری ارتباط ایمن و ایمن در دنیایی غیرقابل پیش بینی است. در دنیای واقعی، بیشتر معاملات بین افراد غریبهای اتفاق میافتد که یکدیگر را نمیشناسند یا به یکدیگر اعتماد ندارند.
هر فردی مانند یک ژنرال است که منتظر دستور حمله یا دفاع از موقعیت خود است. هیچ واسطهای وجود ندارد که از طرف شما حمله را داوری کند. شما در تصمیمگیری کاملاً به تنهایی هستید.
یک بلاک چین لایهای ایجاد میکند که بدون نیاز به اعتماد به هر فردی میتوان به آن اعتماد کرد. این امر توسط شبکهای از گرهها انجام میشود که قبل از ثبت، حقیقت را به توافق برسانند. اگر ژنرال در مورد محتوای ارتباط مطمئن نباشد، سایر ژنرالها میتوانند با استفاده از آنچه میدانند درست است، آن را تأیید کنند.
هنگامی که یک گره آن را ثبت کرد، یک کپی به تمام گرههای دیگر در شبکه ارسال میشود و اطلاعات را اضافی میکند. الگوریتم اجماع PoW برای دستیابی به این هدف طراحی شده است. افراد مخرب همچنان سعی میکنند سیستم را به بازی بگیرند زیرا اطلاعات همیشه دقیق نیستند.
از آنجایی که این سیستم برای استفاده عموم مردم طراحی شده است، مکانیسمهای تحملپذیر خطا و امنیت در یک زنجیره بلوکی وجود دارد. در این سناریو، رمزنگاری مورد نیاز بود تا اطمینان حاصل شود که پیام ها قابل تغییر نیستند.
این سیستم جفتهای کلیدی را برای امضای دیجیتالی یک ارتباط فراهم میکند تا هویت را به عنوان مدرکی مبنی بر اینکه از سوی افرادی که ادعا میشود آن را ارسال کردهاند، تأیید کند. هنگامی که پیامها احراز هویت شدند، برای شفافیت و اثبات تاریخی مسئولیتپذیری ثبت میشوند.
با توجه به پول، بیت کوین اولین راه حل برای مکانیزم خطا بیزانتین بود. بسیاری از طرحها و پروژهها قبل از بیت کوین تلاش میکردند پولی مستقل از دولت خلق کنند، اما همه آنها به نوعی شکست خوردند.
بیت کوین به ابزاری برای مدیریت مالکیت و اجتناب از هزینه مضاعف به عنوان یک سیستم پولی نیاز دارد. بلاک چین بیت کوین از یک دفتر کل توزیع شده عمومی استفاده میکند که تاریخچه همه تراکنشها را ذخیره میکند تا این کار را به روشی غیرقابل اعتماد انجام دهد. بلاک چین، در قیاس کلیات بیزانسی، حقیقتی است که همه طرفین باید در مورد آن توافق داشته باشند.
اگر تمام گرههای شبکه بیتکوین میتوانستند در مورد اینکه کدام تراکنشها در چه زمانی و به چه ترتیبی اتفاق میافتند، توافق کنند، میتوانستند مالکیت بیتکوین را تأیید کنند و بدون نیاز به یک مرجع متمرکز، یک سیستم پولی کارآمد و بدون اعتماد ایجاد کنند.
ساتوشی ناکاموتو اولین وایت پیپر بیت کوین را در اکتبر 2008 منتشر کرد. اگرچه نام ” مکانیزم خطا بیزانتین” در این سند استفاده نشده است، ناکاموتو به طور موثر راه حلی ارائه کرد که در ژانویه 2009 با معرفی شبکه بیت کوین اجرا شد.
ساتوشی ابزاری برای استفاده از امنیت رمزنگاری و رمزگذاری کلید عمومی برای پاسخ به مشکل عمومی بیزانس در یک شبکه الکترونیکی دیجیتال ابداع کرد. برای جلوگیری از دستکاری داده ها، امنیت رمزنگاری از هش استفاده می کند که یک فرآیند رمزگذاری است. هویت یک کاربر شبکه از طریق رمزگذاری کلید عمومی تأیید می شود.
یک تراکنش در بلوکی ایمن میشود که با ارزش هش آن در امنیت رمزنگاری به بلوکهای دیگر متصل است. همه هشها که یک بلوک اولیه هستند، ردیابی میشوند. بلاک چین سیستمی است که از مرکل برای تأیید هشهایی که از یک بلوک پیدایش میآیند استفاده میکند.
هر بلوک در شبکه که از بلوک اول که به عنوان بلوک پیدایش نیز شناخته میشود، معتبر است. ماینرها بلوکها را تایید میکنند، که برای حل پازلهای رمزنگاری برای تولید بلوکها به عنوان بخشی از روش اجماع PoW با دیگر ماینرها رقابت میکنند.
بیت کوین با به کارگیری مکانیزم اجماع اثبات کار، بر مکانیزم خطا بیزانتین غلبه کرد و یک کتاب قانون واضح و عینی برای بلاک چین ایجاد کرد. برای افزودن اطلاعات به بلاک چین که بلوک نامیده میشود، یکی از اعضای شبکه باید مدرکی را منتشر کند که نشان دهد تلاش زیادی برای ایجاد بلوک انجام داده است. این کار هزینه بالایی برای سازنده دارد و آنها را برای به اشتراک گذاشتن اطلاعات دقیق ترغیب می کند.
هیچ اختلاف نظر یا دستکاری در اطلاعات شبکه بیت کوین وجود ندارد زیرا قوانین عینی هستند. سیستم برای انتخاب افرادی که میتوانند بیت کوین جدید ضرب کنند و قوانینی که تعیین میکنند کدام تراکنشها معتبر یا نامعتبر هستند، هر دو هدف هستند. علاوهبر این، حذف یک بلوک از بلاک چین پس از اضافه شدن غیرممکن است و تاریخ بیت کوین را غیرقابل تغییر میکند.
بنابراین، مشکل ژنرالهای بیزانتین توسط ماینرهایی که شبیه ژنرالهای نسخه بلاک چین ساتوشی هستند، حل میشود. هر گره مسئول اعتبارسنجی تراکنشها است که مشابه پیامهایی است که تحویل داده میشود. افراد مخرب (مثلاً هکرها) که هدفشان سرقت پیامها یا آسیب رساندن به شبکه است را میتوان دشمن در نظر گرفت.
هکرها نمیتوانند به راحتی به بلاک چین حمله کنند زیرا پیام ها از امنیت رمزنگاری استفاده میکنند. برای جلوگیری از دستکاری، پیامها یا تراکنشها در بلوکها قرار میگیرند و برای محافظت بیشتر هش میشوند. ساتوشی با قرار دادن ماینرها در رقابت برای اعتبارسنجی بلاکها، همه چیز را احتمال بیشتری میدهد. این امر آن را غیرمتمرکزتر میکند زیرا هیچ ماینر واحدی نمیتواند با انحصار اعتبارسنجی، تمام پاداشها را دریافت کند.
در عوض، ماینرها باید با استفاده از قدرت محاسباتی خود که به عنوان نرخ هش شناخته میشود، برای حل معما رقابت کنند. هرچه نرخ هش ماینر بیشتر باشد، احتمال حل معما بیشتر است. هنگامی که ماینری که معما را حل کرده است راه حل را به شبکه پخش میکند، تمام ماینرهای دیگر باید ارزش را تأیید یا در صورت اشتباه بودن آن را رد کنند. هدف دشواری مقداری است که باید برابر یا کمتر از مقدار صحیح باشد.
بنابراین اعضای شبکه بیت کوین میتوانند در هر زمان در مورد وضعیت بلاک چین و همه تراکنشهای بلاک چین توافق کنند. هر گره بررسی میکند که آیا بلوکها بر اساس معیار اثبات کار معتبر هستند یا خیر و آیا تراکنشها بر اساس معیارهای اضافی معتبر هستند یا خیر.
اگر یکی از اعضای شبکه سعی کند اطلاعات گمراهکننده را پخش کند، تمام گرههای شبکه آن را به صورت عینی نامعتبر تشخیص داده و نادیده میگیرند. نیازی به اعتماد به سایر اعضای شبکه بیتکوین نیست، زیرا هر گره میتواند تمام اطلاعات موجود در شبکه را تأیید کند و بیتکوین را به یک سیستم غیرقابل اعتماد تبدیل کند.
بلاک چین نیز غیرمتمرکز است، به این معنی که سیستم نباید یک نقطه شکست داشته باشد. بلوکها در یک پایگاه داده توزیع شده ذخیره میشوند که در سراسر شبکه تکرار میشود. این افزونگی همچنین به تحمل خطا کمک میکند و تضمین میکند که هیچ رایانهای که دچار نقص کار نمیشود نمیتواند کل سیستم را خراب کند.
اثبات سهام PoS یا یکی دیگر از مکانیسمهای اجماع بلاک چین است که به دنبال حل مشکل مکانیزم خطا بیزانتین است. این اولین بار در سال 2012 به کار گرفته شد. شبکههای مبتنی بر PoS، بر خلاف شبکههای مبتنی بر اثبات کارPoW ، به استخراج ارزهای دیجیتال متکی نیستند. در عوض، تکنیکی به نام استیکینگ انجام میشود.
کاربران (به نام اعتبار سنجی) وجوه را در این سیستم به اشتراک میگذارند. اعتبار سنجیهایی که دارای ارزهای بیشتری در یک بلاک چین هستند، میتوانند بلاکهای بیشتری را تایید کرده و جوایز بیشتری کسب کنند. کاربرانی که تلاش میکنند تراکنشهای نادرست را تأیید کنند، خطر از دست دادن وجه نقد سهام خود را دارند.
کاربران میتوانند به جای نیاز به ماشینهای تخصصی برای استخراج در یک شبکه مبتنی بر PoW، با استفاده از رایانههای خانگی معمولی، سکهها را به اشتراک بگذارند. چندین شبکه مبتنی بر PoS راههایی را برای جلوگیری از حملات مضاعف و سایر آسیبپذیریهای امنیتی احتمالی ناشی از شکستهای بیزانسی ایجاد کردهاند. به عنوان مثال، اتریوم 2.0 (Serenity) از الگوریتم Casper PoS استفاده میکند، که برای ایجاد بلوک به اکثریت دو سوم گرهها نیاز دارد تا در مورد آن توافق کنند.
اثبات سهام واگذار شده یک تکنیک اجماع بلاک چین است که مشابه اثبات سهام عمل میکند و برای اولین بار در سال 2014 توسعه یافت. هر دوی آنها از کاربران میخواهند که پول را در خط تولید بگذارند. فقط تعداد کمی از کاربران (معروف به نمایندگان) می توانند تراکنشها را تأیید کنند و در شبکههای مبتنی بر DPoS بلوک ایجاد کنند.
به طور کلی، هر کاربری میتواند ارزهای یک بلاک چین را برای رای دادن به حمایت از یک نماینده به اشتراک بگذارد. جوایز بلوک معمولاً متناسب با مقدار پولی که در انتخابات نمایندگان توسط گرههای منتخب به رای دهندگانشان تقسیم میشود.
گرهها میتوانند با استفاده از DPoS سریعتر از PoW یا PoS به توافق برسند. در مقیاس، این بدان معنی است که تراکنشها میتوانند به طور قابل توجهی سریعتر انجام شوند. حفظ سطح بالایی از تحمل خطای بیزانسی با DPoS ممکن است در برخی موارد به دلیل مبادله مشکلساز شود.
از آنجایی که گرههای کمتری مسئول ایمن نگه داشتن شبکه هستند، به طور بالقوه آسانتر است که گرهها علیه منافع اکثریت توطئه کنند. از سوی دیگر، شبکههای مبتنی بر DPoS سعی میکنند با برگزاری منظم انتخابات نمایندگان، از این سناریو جلوگیری کنند تا اطمینان حاصل کنند که نمایندگان در قبال تصمیمهای خود پاسخگو هستند.