تحمل خطا بیزانتین در بلاکچین
تحمل خطا بیزانتین چیست؟
از زمان تولید و انتشار رمزارز بیت کوین به عنوان یک ارز الکترونیکی P۲P در سال ۲۰۰۸، کمپانی های مختلف شروع به تولید رمزارزهای مشابه بر همین اساس کردند. حال با وجود اینکه هر رمزارز مکانیسم خاص خود را دارا می باشد، همه ی رمزارزها دارای یک هسته کلی به نام بلاکچین می باشند.
به استثناء چندین مورد، تمام بلاکچین ها به صورت یک بستر غیرمتمرکز طراحی شده اند که توسط شبکه توزیع شده ای از گره ها، پایدار و نگه داری می شوند. فناوری بلاکچین با ارائه پلت فرم بدون نیاز به اعتماد، جایگزین سیستم های بانکی سنتی بوده و با از بین بردن اشخاص ثالث، معاملات را بین طرفین، شفاف و مطمئن می سازد.
حال از آنجایی که در سیستم بلاکچین، تمام معاملات می بایستی به منظور تأیید، بین گره های شبکه توزیع شوند، تمام گره ها باید برای این عملیات با یکدیگر توافق کنند و این همان نکته ای است که در سیستم های بلاکچینی به نظریه اجماع معروف می باشد. با این وجود، دستیابی به اجماع در یک شبکه توزیع شده و غیرمتمرکز، به روش ایمن و کارآمد، کار ساده ای نیست. بنابراین این سؤال پیش می آید که چطور ممکن است که در یک شبکه غیرمتمرکز، تمام گره ها، بدون نیاز به انداختن سنگ بر سر راه دیگری برای تأیید معاملات با یکدیگر توافق کنند؟
برای پاسخ به این سؤال بیائید به تئوری ژنرال های بیزانتین که به وجود آورنده تحمل خطا بیزانتین است، نگاهی بیاندازیم.
تئوری ژنرال های بیزانتین
تئوری ژنرال های بیزانتین ابتدا به عنوان مسئله ای منطقی در سال ۱۹۸۲ مطرح شد. این مسئله در واقع بیانگر مشکلات ارتباطی بین ژنرال های یک منطقه به منظور توافق بر سر حرکت های هماهنگ می باشد.
طی تئوری ژنرال های بیزانتین، فرض می شود که ۴ ژنرال که هر کدام دارای ارتش مخصوص به خود می باشند، در ۴ طرف شهری قرار دارند که قصد دارند آن را با یکدیگر تصاحب کنند. حال طی این تئوری، ژنرال ها باید در مورد عقب نشینی و یا حمله به شهر مذکور با یکدیگر توافق کنند. برای انجام این توافق حالاتزیر باید در نظر گرفته شود:
هر ژنرال باید تصمیم بگیرد که حمله کند یا عقب نشینی کند.
ژنرال ها پس از تصمیم گیری اجازه ندارند نظر خود را تغییر دهند.
ژنرال ها باید در مورد تصمیم اخذ شده با یکدیگر به توافق رسیده و آن را به روشی هماهنگ اجرا نمایند.
پس مشکلی که در این بین ممکن است رخ بدهد چه میتواند باشد؟ درست حدس زدید. شفافیت در ارتباطات. در مسئله ژنرال های بیزانتین، افراد با استفاده از یک پیامرسان با یکدیگر ارتباط برقرار میکنند. حال در این میان به دلیل عدم شفافیت، پیام ها میتوانند با تاخیر در رسیدن، نابودی و دستکاری مواجه شوند.
علاوه بر این، حتی اگر پیام ها به درستی ارسال شوند، ممکن است ژنرال ها، به هر دلیلی اقدام به جعل پیام ها کرده و منجر به شکست سیستم بشوند.
اگر این تئوری را بخواهیم در یک شبکه بلاکچینی به کار بگیریم، هر ژنرال بیانگر گره های شبکه بوده که برای رسیدن به یک نظریه اجماع، با یکدیگر توافق میکنند. به عبارت دیگر، در یک شبکه توزیع شده و غیرمتمرکز، اکثریت گره ها باید برای جلوگیری از شکست خوردن سیستم، به یک نظر خاص برسند. بنابراین تنها راه دسترسی به یک نظریه اجماع در سیستم های توزیع شده، داشتن حداقل ، گره قابل اطمینان و صادق است. این بدین معنی است که اگر اکثریت گره ها بخواهند سیستم را دستکاری کنند، سیستم به سرعت شکست می خورد، درست مثل حمله ۵۱ درصدی.
تحمل خطا بیزانتین (BFT)
به عبارت ساده، تحمل خطا بیزانتین در واقع شاخصی است که یک سیستم را در برابر خطاهای احتمالی گره ها، مقاوم می سازد. این بدان معنی است که در یک سیستم BFT، با از کار افتادن درصدی از گره ها، سیستم به عملکرد خود ادامه خواهد داد.
حال برای دستیابی یک بلاکچین به تحمل خطا بیزانتین، راه حل های متفاوتی وجود داشته که یکی از معروف ترین آن ها الگوریتم اجماع است.
الگوریتم های اجماع در بلاکچین
الگوریتم های اجماع در واقع مکانیسم هایی هستند که طی آن گره های شبکه بلاکچین به توافق نظر می رسند. معروف ترین الگوریتم های اجماع شامل اثبات کار (POW) و اثبات سهام (POS) می باشند که در مقاله پیشین به آن ها اشاراتی داشتیم.