با وجود اینکه دستاوردهای انقلاب رمزنگاری روز به روز بیشتر و بیشتر نمایان می شود، هنوز به نظر می رسد شکاف دانشی در این حوزه وجود دارد. به عنوان مثال، هنوز برای بسیاری از مردم علم بلاک چین و کریپتوکارنسی واقعا روشن نیست. وقتی تنها بیت کوین در بستر بلاک چین حضور داشت همه چیز بسیار ساده بود و حتی مردم کلمات بلاک چین و کریپتوکارنسی را به جای یکدیگر به کار می بردند. با این حال، با تکامل اکوسیستم رمزنگاری، تعداد زیادی از بلاک چین ها ایجاد شدند. با توجه به اینکه کلمه بلاک چین در حال حاضر در زمینه های مربوط به سیستم های تحویل P2P و رجیسترهای غیر متمرکز نیز استفاده می شود، بنابراین به اشتباه یا درست از این کلمه در زمینه های دیگر نیز استفاده می کنند. درواقع بلاک چین یکی از سیستم های وسیع و گسترده ای است که در بعضی مواقع، با مشکلات متعددی مواجه می شود. یکی از این مشکلات، خطای بیزانس است. خطای بیزانس یکی از دشوارترین خطاهای موجود در سیستم های بزرگ و حائز اهمیت است و برای مقابله با آن باید از روشی که «تحمل خطای بیزانس» نام دارد استفاده کرد. در این مطلب با ما همراه باشید تا درباره خطای بیزانس در بلاک چین بیشتر بخوانید.
خطای بیزانس در بلاک چین چطور به وجود می آید؟
همانطور که می دانید، در سیستم های بلاکچینی اصلی به نام الگوریتم اجماع وجود دارد که طی آن، برای انجام هر تراکنشی به توافق نودهای شبکه نیاز است. نودهای شبکه که به غیرمتمرکز ماندن اکوسیستم کمک می کنند، برای فعالیت درون شبکه پاداش های متناسبی دریافت می کنند. اما اگر تعدادی نود خرابه کار در شبکه وجود داشته باشند که در انجام تراکنش ها اختلال ایجاد کنند چه اتفاقی می افتد؟ در اینجاست که شبکه با خطای بیزانس مواجه می شود. به طور خلاصه، خطای بیزانس وقتی به وجود می آید که تعدادی از افراد یا عناصر موثر در یک اکوسیستم، به دلایل مختلف با انجام یک عملیات موافقت نمی کنند و تصمیم به ایجاد اختلال در آن عملیات می گیرند.
اما راه حل مقابله با خطای بیزانس چیست؟ چطور می توان از ایجاد اختلال در تراکنش های شبکه های بلاکچینی جلوگیری کرد؟ راه حل این مسئله، شاخصه ای به نام تحمل خطای بیزانس است. این اصطلاح در واقع نشان دهنده ظرفیت یک سیستم دیجیتال برای مقاومت در برابر نوع خاصی از خطاها را نشان می دهد. این خطاها معمولا زمانی رخ می دهند که مولفه های الکترونیکی در هنگام انتقال داده ها با خرابی یا اشکال مواجه شوند.
از آنجا بلاک چین ها دفتر کل های غیرمتمرکز هستند، توسط هیچ فرد یا نهاد خاصی کنترل نمی شوند و اختیار تصمیم گیری برای عملیات های شبکه در دست نهاد خاصی نیست. به همین خاطر، گفته می شود که بلاک چین ها دارای امکان مقابله با خطای بیزانس هستند. یعنی حتی اگر عنصر یا عناصر خرابه کاری در شبکه وجود داشته باشند، از آنجایی که تمام قدرت شبکه را در دست ندارند، امکان ایجاد اختلال در روند برای آنها وجود ندارد.
با این حال، با ظهور بیت کوین، مشکل خطای بیزانس شدیدا کاهش یافته است. این موضوع عمدتا به دلیل یک پروتکل به نام PoW رخ داده است که توسط Satoshi Nakamoto طراحی شده است تا به عنوان راه حل احتمالی برای خطای بیزانس طراحی شود. در حقیقت، یک ایمیل از خود Satoshi وجود دارد که در آن او در مورد جزئیات این مسئله بسیار بحث می کند.
مفهوم تحمل خطای بیزانس عملی (PBFT) در بلاک چین
در فضای سیستم های توزیع شده، تحمل خطای بیزانس (Byzantine Fault Tolerance) یعنی توانایی یک شبکه کامپیوتری توزیع شده برای عملکرد مطلوب و صحیح که در نهایت این عملکرد منجر به اجماع کافی شود. این اجماع در حالی ایجاد می شود که مولفه ها یا نودهای خرابه کار در سیستم در دادن اطلاعات به همتا های دیگر شکست می خورند و یا اطلاعات نادرست را به آنها انتقال می دهند. هدف از این عملکرد صحیح دفاع در برابر شکست های سیستمی مصیبت بار است که این کار با کاهش تأثیرگذاری نودهای خرابه کار بر روی عملکرد صحیح شبکه انجام می شود و سبب اجماع درستی می شود که توسط نود های صادق در سیستم انجام می شود. مشکلات رایج در بیزانس (Byzantine General`s Problem) وضعیت بغرنجی را ایجاد می کند که در سطح وسیعی مورد تحقیق قرار گرفته و با مجموعه متنوعی از راه حل های عملی بهینه شده است و فعالانه در حال توسعه و رشد است.
PBFT یکی از این راه های بهینه سازی است و توسط Miguel Castro و Barbara Liskov در یک رساله دانشگاهی در سال 1999 معرفی شد. عنوان این رساله تحمل خطای بیزانس عملی (Practical Byzantine Fault Tolerance) است. هدف آن بهبود مکانیسم های اجماع BFT اولیه است و در چندین سیستم کامپیوتری توزیع شده مدرن اعمال شده و ارتقا یافته است که از جمله آنها می توان تعدادی از پلتفرم های بلاک چینی محبوب را نام برد.
بررسی کلی تحمل خطای بیزانس عملی
این مدل در درجه اول متمرکز بر فراهم سازی تکثیر ماشینی مرحله ای بیزانس عملی است که خطاهای بیزانس (نودهای خرابه کار) را تحمل می کند. این کار با این فرض که شکست های نودی مستقل وجود دارد و پیام های دستکاری شده توسط نودهای مستقل و خاص منتشر می شود، انجام می گیرد. این الگوریتم برای کار در سیستم های ناهمگام طراحی شده است و برای عملکرد سطح بالا بهینه شده است که زمان اجرای مازاد برجسته ای دارد و تنها یک افزایش جزئی در زمان واکنش دارد.
اساسا همه نودها در مدل PBFT به شیوه ای مرتب شده اند که یک نود رهبر وجود دارد و بقیه نودها به عنوان نود پشتیبان شناخته می شوند. همه نودها داخل سیستم با هم ارتباط برقرار می کنند و هدف همه نودهای صادق رسیدن به توافق از طریق رای اکثریت است. نود ها شدیدا با همدیگر ارتباط برقرار می کنند و نه تنها مجبور نیستند که ثابت کنند که پیام ها از یک نود همتای خاص آمده بلکه نیازمند تایید این هستند که پیام در طول انتقال تغییر پیدا نکرده باشد.
برای اینکه مدل PBFT کار کند، فرض می شود که تعداد نودهای خرابه کار در شبکه نمی توانند به طور همزمان برابر یا بیشتر از یک سوم کل نودها در سیستم و در یک پنجره داده شده باشند. هرچه نودها در سیستم بیشتر باشند، از لحاظ ریاضیات احتمال کمتری می رود که عدد به یک سوم کل نودها نزدیک شود. این الگوریتم به طور موثری امنیت و سرزندگی را به وجود می آورد و این امر ادامه می یابد تا زمانی که حداکثر n-1/3 به طور همزمان خرابه کار یا معیوب باشند که n در اینجا نمادی از تمام نودها است. در نهایت جواب های دریافت شده توسط کلاینت ها به دلیل Linearizability (گارانتی عملکرد) صحیح است.
هر دوره از اجماع تحمل خطای بیزانس عملی به چهار مرحله تقسیم می شود. این مدل به جای مشکلات رایج بیزانس از یک ساختار فرمانده و ستوان پیروی می کند که همه ژنرال ها به دلیل حضور نود رهبر مساوی هستند. مراحل را می توان به ترتیب زیر بیان کرد:
1. یک کلاینت، درخواستی را به نود رهبر می فرستد و عملکرد یک سرویس را درخواست می کند.
2. نود رهبر درخواست را به نودهای پشتیبان می فرستد.
3. این نودها تقاضا را اجرا می کنند و سپس به کلاینت جواب می دهند.
4. این کلاینت به اندازه f+1 جواب از نودهای مختلف با همان نتیجه منتظر می شود که در اینجا f نماد ماکسیمم نودهایی است که ممکن است معیوب باشند. این نتیجه همان نتیجه عملکرد است.
از ضرورت های لازم برای نودها این است که قطعی باشند و در مرحله مشابهی شروع شوند. نتیجه نهایی این است که همه نودهای صادق در مورد ترتیب ثبت به توافق می رسند و نودها یا به قبول و یا به رد موضوع می پردازند و تنها این دو گزینه را پیش رو دارند.
نود رهبر در یک ساختار گردش نوبت در خلال هر رویت تغییر می یابد و می تواند با پروتکلی بنام تغییر رویت (view change) جایگزین گردد که این زمانی انجام خواهد شد که مدت زمان زیادی گذشته باشد و نود رهبر درخواست را منتقل نکرده باشد. اکثریت قاطع نودهای صادق می توانند تصمیم بگیرند که آیا رهبر فعلی خرابه کار است و نیاز به تعویض دارد یا نه.
مزیت ها و نگرانی ها در مورد مدل PBFT
مدل اجماع تحمل خطای بیزانس عملی برای برنامه های عملی طراحی شده است و نواقص خاص آن در همان رساله دانشگاهی اصلی مطرح شده است و در آن رساله تعدادی بهینه سازی کلیدی نیز برای اعمال الگوریتم به سیستم های جهان واقع ذکر شده است. برعکس، این مدل مزیت های برجسته ای نسبت به دیگر مدل های اجماع دارد.
یکی از مزیت های اولیه این مدل، توانایی فراهم آوردن تراکنش بدون نیاز به تایید، مانند مدل گواه اثبات کار است که در بیت کوین استفاده می شود. اگر در سیستم تحمل خطای بیزانس عملی نودها بر روی یک بلاک خاص توافق کنند، سپس آن بلاک نهایی خواهد شد. این امر توسط این حقیقت مقدور می شود که همه نودهای صادق بر روی وضعیت سیستم در آن زمان خاص توافق می کنند و این توافق در نتیجه ارتباط با یکدیگر ایجاد می شود.
یک مزیت مهم دیگر این سیستم به نسبت سیستم گواه اثبات کار، کاهش برجسته مصرف انرژی است. در مدل گواه اثبات کار که بیت کوین هم با این مدل کار می کند، برای هر بلاک یک دوره گواه اثبات کار مورد نیاز است. این امر سبب مصرف الکتریسیته شبکه بیت کوین توسط ماینرها شده و کشورهای کوچک را به رقابت با همدیگر وا داشته است. از آنجا که PBFT نیاز به محاسبات شدید ندارد، ماینرها برای هر بلاک به محاسبات شدید نخواهند پرداخت و در نتیجه در مصرف برق صرفه جویی می شود.
مکانیسم اجماع PBFT با وجود مزیت های واضح و آینده داری که دارد، با محدودیت های برجسته ای هم مواجه است. مخصوصا این مدل تنها به شیوه کلاسیک و در گروه های کوچک خوب کار می کند؛ زیرا مقدار ارتباطات پرزحمتی لازم است که بین نودها رد و بدل شود. رساله مذکور استفاده از امضاهای دیجیتال و کد های اعتبارسنجی روش (MACs) به عنوان ساختاری برای اعتبارسنجی پیام ها بحث می کند. اما استفاده از MACs در گروه های بزرگ که نیاز به ارتباطات زیاد است، مانند گروه های ارز دیجیتال کارآمد نیست و با این روش یک ناتوانی ذاتی برای اثبات اعتبار پیام ها برای شخص ثالث موجود خواهد بود. اگرچه امضاهای دیجیتال و فرآیند چند امضایی بهبود عظیمی در MACs به وجود خواهد آورد اما فائق آمدن بر محدودیت های ارتباطی مدل PBFT با این شرط که به طور همزمان امنیت نیز حفظ شود، مهم ترین عامل مورد نیاز برای توسعه این مدل است.
مدل تحمل خطای بیزانس عملی همچنین در معرض حملات Sybil است که در آن یک فرد خاص می تواند به ایجاد و یا دستکاری تعداد زیادی از هویت ها (نود ها در شبکه) بپردازد و بنابراین شبکه را به خطر بیاندازد. با افزایش اندازه شبکه می توان این خطر را کم کرد اما مقیاس پذیری و توانایی مدل PBFT با افزایش اندازه گروه، کاهش پیدا خواهد کرد. بنابراین این مدل یا باید بهینه شود و یا در ترکیب با مکانیسم اجماع دیگری مورد استفاده قرار گیرد. از جمله پلتفرم هایی که PBFT را مورد استفاده قرار می دهند، می توان Zilliqa و هایپرلجر را نام برد.
چرا بیت کوین توجه های زیادی را به خود جلب می کند؟
بیت کوین علاوه بر اینکه اولین ارز رمزنگاری برای وارد شدن به بازار ارزهای دیجیتال بود، معیارهایی را برای کاربران همراه با یک سری ویژگی های کاربردی تعیین کرد. این ارز توسط شخصی (یا افرادی) که نام مستعار Satoshi داشت ارائه شد، ساتوشی ابتدا ایده بیت کوین را در سال 2008 پیشنهاد داد و این ارز را به عنوان یک سرویس پرداخت الکترونیکی که به طور کامل مبتنی بر فرایند اثبات ریاضی است، معرفی کرد. هدف آن ایجاد یک مسیر مبادله ارزی بود که وابسته به نهادهای متمرکز مانند بانک ها نباشد، اما همچنان قابل اثبات بوده و از امنیت بالایی برخوردار باشد. برای شروع، می توانیم ببینیم که بیت کوین قادر است تا حد زیادی از مشکلات مربوط به double-spending جلوگیری کند (با توجه به این واقعیت که معاملات آن تغییرناپذیر است و بعد از اینکه در بلاک چین اجرا شد، قابل برگشت نیست.) به طور مشابه، از "پروتکل تایید" استفاده می کند که نیاز به تایید تمام ماینرها و نماینده های شبکه دارد تا اینکه یک معامله تایید و تصدیق شود. بنابراین، تقلب double spending یا دو بار خرج کردن را محدود می کند.
ملاحظات نهایی
انقلاب بلاک چین در حال حاضر در حال تکامل است. بسیار مهم است که سرمایه گذاران و علاقه مندان بالقوه در مورد دامنه رمزنگاری آموزش داده شوند. این امر نه تنها به حذف شکاف های معمول در این زمینه کمک می کند بلکه کاربران را نیز در آینده به گزینه های سرمایه گذاری دقیق تر می رساند. فراموش نکنید نظرات خود را درباره نقش خطای بیزانس در سیستم های بلاکچینی با ما در میان بگذارید.