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