آخرین بهروزرسانی: ۲۹ اسفند ۱۳۹۹
الگوریتمهای اجماع زیادی برای مسئله خطاهای بیزانس وجود دارند. به طور خاص، سیستمهای پرداخت توزیع شده، از همپوشانی زیاد با نودهای شبکه ارتباطی رنج میبرند. در این وایتپیپر، ما روشی را ارائه میکنیم که با در نظر گرفتن تمام شبکههای زیرین بر پایه اعتماد جمعی فعالیت میکند. همچنین اتصالات مینیمالی را با این الگوریتم نوین برقرار میکنیم. ما الگوریتمی را توصیه میکنیم که با کل شبکه موافق است؛ این الگوریتم اجماع جدید، با استفاده از دادههای مورد اعتماد جمعی درون شبکه، نیازها را بزرگتر نشان میدهد. علاوه بر این، الگوریتم اجماع ریپل نشان میدهد که «اعتماد» مورد نیاز شرکتها با انتخاب اصولی نودهای عضو شبکه، میتواند کاهش یابد و به حداقل برسد. همچنین ما نشان میدهیم که اتصال کمینه برای حفظ توافق در کل شبکه مورد نیاز است و در نتیجه ،یک الگوریتم اجماع مبتنی بر توافق حداقلی است که مقاومت در برابر تحمل خطای بیزانس را حفظ میکند. ما این الگوریتم را در پروتکل ریپل ارائه میکنیم.
محتوای این وایت پیپر شامل، معرفی، تعاریف -که خود از فرمها و کارهای قبلی، پروتکل ریپل، فرمالیزیشن، الگوریتمهای اجماع وجودی و فرمهای اجماع اهداف تشکیل شده- الگوریتم اجماع ریپل که تعاریف و توافقات را در بر میگیرد، کد شبیهسازی، مباحث و تقدیرنامهها تشکیل شده است.
فهرست
معرفی
سیستمهای اجماع توزیعشده، گسترش بسیاری در پژوهشها یافتهاند و توجه علاقهمندان زیادی را به خود جلب کردهاند. سیستمهای اجماع توزیعشده، متمرکز بر شبکههای مرکزی پرداخت توزیعی هستند. این شبکهها، تراکنشهای کم هزینه و سریع را که توسط منبعی مرکزی کنترل نمیشوند، انجام میدهند. این سیستمها، از نظر اقتصادی سودمند هستند و به راحتی با چالشهای فنی انجام پرداختهای توزیع شده مقابله میکنند. این مجموعه، شامل سه بخش اصلی میشود که ما آنها را با صحت، پذیرش و سودمندی میشناسیم.
صحت یا به عبارت بهتر درست بودن به معنای آن است که برای سیستمهای توزیع شده، توانایی تشخیص تفاوت میان درستی و فریب در تراکنشها، امری حیاتی است.
پذیرش، به مشکل نگهداری در سیستم جهانی اعتماد در مقابل حسابهای سیستم اشاره دارد؛ این مشکل مشابه صحت است، اما به شکل متفاوت. این امکان وجود دارد که کاربر متقلب در یک شبکه، قادر به ساخت تراکنشهای تقلبی باشد و از صحت سرپیچی کند. در چنین شرایطی کاربر ممکن است بتواند تراکنشهای چندگانهای را بسازد که نسبت به یکدیگر آگاه نباشند و سپس به ساخت عملکردی ادغام شده بیانجامد. به عنوان مثال، ممکن است یک کاربر فریبکار همزمان دو خرید را با یک میزان سرمایه انجام دهد. کاربر متقلب میتواند به صورت مستقل خرید کند ولی نمیتواند همزمان هر دو را انجام دهد. بنابراین صحت هر کدام از این تراکنشها به تنهایی باید تایید شود. به عبارت بهتر، اگر هرکدام از تراکنشها درست نباشند، اجرای متقارن در شبکه توزیع انجام نمیشود و کل شبکه ناآگاه باقی میماند. واضح است که این مسئله از مشکل رایج دوبار خرج کردن ناشی میشود. بنابراین، مشکل پذیرش، خلاصهای از نیاز به تشخیص تراکنشهای وجودی در شبکه است. سودمندی مشکلی کمی و انتزاعی است که به میزان مفید بودن سیستم پرداخت توزیع شده میپردازد. سودمندی معمولا زمانی اتفاق میافتد که سیستم سادهسازی شده باشد. یک سیستم توزیع شده که هم صحت آن تضمین و هم پذیرش در آن انجام شده باشد، به عنوان مثال،به فرآیندی یک ساله برای تراکنشها نیاز دارد. این سیستم پرداخت غیرقابل انکار است.
سودمندی از جنبههای دیگر، شامل سطوح مختلف قدرت محاسباتی در فرآیندهای صحت و پذیرش یا مهارتهای تکنیکی، همچنین ممانعت از ورود شخص فریبکار در شبکه میشود. بیشتر این مشکلات قبل از ظهور سیستمهای توزیعشده مدرن از طریق خطای بیزانس انجام میشد. در این مشکل، گروهی مانند ژنرالها، تقسیمبندی ارتش را کنترل و باید حمله را از طریق ارسال پیام مشخص کنند.
چون ژنرالها، ناآشنا و میزبان یک محدودهی تعریف شده هستند، ممکن است پیامرسانها به مقصد نرسند؛ همانطور که در بسیاری از شبکههای غیرمتمرکز این شکست انجام میشود یا در ارسال دادهها خطایی رخ میدهد. در چنین شرایطی، به جای آنکه دادههای اشتباه ارسال شود، پیامی داخلی فرستاده میشود. همچنین جنبه دیگری از مشکل سیستم این است که شاید برخی از ژنرالها به صورت جمعی یا به طور جداگانه خائن باشند، و به همین ترتیب ممکن است پیغامها به یک طرح اشتباه برسند که محکوم به شکست برای ژنرالهای وفادار باشد. درست همانطور که امکان دارد اعضای مخرب یک سیستم توزیعشده برای متقاعد کردن سیستم برای پذیرش معاملات متقلبانه تلاش کنند، یا چند نسخه از یک معامله صادق که منجر به یک هزینه مضاعف میشود را به نمایش بگذارند. بنابراین یک سیستم پرداخت توزیع نشده، باید با دو شکست روبهرو شود. شکستهای استاندارد و شکستهای بیزانس که ممکن است هماهنگ و از منابع متعدد در شبکه نشات بگیرند.
تعاریف، فرمها و کارهای قبلی
در این کار، ما یک پیادهسازی خاص از یک سیستم پرداخت توزیعشده را بررسی میکنیم که به آن پروتکل ریپل میگویند.
تمرکز ما بر روی الگوریتمهایی به کار گرفتهشده است تا به اهدافی که پیش از این ذکر شد یعنی صحت، توافق و سودمندی برسیم. همچنین نشان میدهیم که همه آنها در آستانههای لازم و از پیش تعیینشدهای قرار دارند که بهخوبی درک شدهاند.
علاوه بر این، کدی را ارائه میکنیم که فرآیند توافق با اندازه شبکه، تعداد کاربران مخرب و زمان ارسال پیام را شبیهسازی میکند.
با تعریف مولفههای پروتکل ریپل تعریف، رسمیت و کار قبلی شروع میشود. برای اثبات درستی، توافق و ویژگیهای مطلوبیت، ابتدا این ویژگیها را به اصول کلی تبدیل میکنیم. این ویژگیها پس از گروهبندی، مفهوم توافق را تشکیل میدهند: حالتی که در آن گرهها در شبکه به توافق صحیح میرسند، سپس برخی نتایج قبلی مربوط به الگوریتمهای اجماعی را برجسته میکنیم و در نهایت اهداف توافق را برای پروتکل موج در چارچوب رسمیسازی خود بیان میکنیم.
اجزای پروتکل ریپل
شرح خود را از شبکه ریپل، با تعریف شرایط زیر آغاز میکنیم:
- سرور(Server): سرور هر چیزی که در نرمافزار سرور ریپل وجود دارد را اجرا میکند؛ برخلاف نرمافزار مشتری که تنها اجازه ارسال و دریافت وجوه را فراهم میکند، سرور ریپل در فرآیند توافق مشارکت میکند.
- دفتر کل (Ledger): ثبت مقدار پول در حساب هر کاربر و نشاندهنده «ماهیت اعتماد » شبکه است. دفتر کل، همراه با معاملهای به روز میشود که با موفقیت از فرآیند اجماعی عبور میکند.
- دفتر کل بسته (Last-Closed Ledger): شامل آخرین دفتری میشود که توسط فرآیند اجماع تصویب شده و بنابراین وضعیت فعلی شبکه را نشان میدهد.
- دفتر کل باز(Open Ledger): دفتر کل باز، وضعیت فعلی یک نود را حفظ میکند و تراکنشهای آغاز شده توسط کاربران نهایی در یک سرور دادهشده به فضای باز اعمال میشوند؛ ولی تراکنشها نهایی نیستند، تا زمانی که فرآیند اجماع در دفتر کل باز تبدیل به آخرین دفتر کل بسته شود.
- لیست نود اختصاصی (UNL): هر سرور، لیستی منحصر به فرد از نودها را در خود نگهداری میکند تا مجموعه سرورهای مختلف قادر باشند هنگام تعیین توافق، آنها را جستجو کنند. این لیست در زمان تعیین توافق (به عنوان مخالف هر گره در شبکه) در نظر گرفته میشوند.
بنابراین، یک زیرمجموعه از شبکه را نشان میدهد که وقتی به صورت جمعی عمل میکند، «مورد اعتماد» است تا در تلاش برای بازسازی شبکه با یکدیگر تبانی نکنند.توجه داشته باشید که در این تعریف از «اعتماد» نیازی نیست که هر یک از اعضای یک فرد مورد اعتماد باشد. - پیشنهاددهنده (Proposer): هر سرور میتواند تراکنشهایی را که قرار است در فرآیند توافق لحاظ شوند، پخش کند. همچنین سرور تلاش میکند هر تراکنش معتبر را هنگام آغاز یک توافق جدید شامل شود. با این حال در طول فرآیند توافق، تنها پیشنهاداتی از سرورها بر روی وب سرور s.
فرمالیزیشن
از این اصطلاح، برای اشاره به نودهای نا معیوب در شبکه ریپل استفاده میکنیم. در مقابل، نود خطا، خطاهایی را تجربه میکند که ممکن است به دلیل فساد دادهها، خطاهای پیادهسازی، یا خطای بیزانسی، به وجود آمده باشند. ما مفهوم اعتبارسنجی یک تراکنش را به یک مسئله تصمیمگیری دودویی ساده کاهش میدهیم و هر نود باید تصمیمگیریهایش را با اطلاعاتی انجام دهد که در مورد ارزش و یا عدم قطعیت داده شدهاند. براساس اصول توافق، ورودیها و خروجیها، دو مقدار برای همه نودهای شبکه ممکن هستند. این موضوع، راهحل جزیی را حذف میکند. همچنین تمام نودها، میتوانند بدون در نظر گرفتن اطلاعاتی که ارائه کردهاند، تصمیمگیری کنند. همانطور که آتیا، دولو و گیل (Attiya, Dolev, and Gill )، در ۱۹۸۴، الگوریتمهای اجماع را تعریف کردهاند، میتوانیم سه مسئله بدیهی را درک کنیم. اول اینکه نودهای کامل در هر زمانی میتوانند تصمیم بگیرند. دوم اینه همهی نودهای کامل، به برخی تصمیمهای با ارزش دست پیدا میکنند. ممکن است ۰ و ۱ برای همهی نودها ارزشمند و در دسترس باشند. این راهحل همه ۰ و ۱ ها را با توجه به اطلاعات دریافت شده، فراهم میکند.
الگوریتمهای اجماع موجود
محققان الگوریتمهای زیادی را که به اجماع دست پیدا میکنند و با خطاهای بیزانس مواجه میشوند را تست کردهاند. این کارهای قبلی در شبکه جلوتر از زمان حرکت و پیامهای زیادی را صادر میکنند. یکی از نتایج کارهای قبلی که در الگوریتمهای جامع، توسط پترسون، لینچ و فیشر در سال ۱۹۸۵ انجام شده بود.
اهداف الگوریتم اجماع
یکی از دلایل مهم برای این هدفگذاری، جلوگیری از «انشعاب» در شبکه است. با توجه به پروتکل ریپل، موقعیتی که در آن دو مجموعه مجزا از گرهها، به طور مستقل با هم توافق داشته باشند، دو دفترکل بسته مختلف در هر نود مشاهده میشود.
در نهایت نشان میدهیم که پروتکل ریپل میتواند به این اهداف در مواجهه (n – ۱)، به شکست منجر شود. پروتکل رمزارز ریپل، دارای چند ویژگی مطلوب دیگر نیز هست که محبوبیت آن را افزایش میدهد.
به منظور حفظ صحت و توافق شبکه، هر چند ثانیه یکبار توسط همه نودها اعمال میشوند و وقتی به توافق رسیدند، دفتر کل بسته در نظر گرفته شده و به آخرین دفترکل تبدیل میشود. با فرض اینکه الگوریتم اجماعی موفق است و هیچ انشعابی در شبکه وجود نداشته باشد، دفترکل ثبتشده توسط همه نودها در شبکه یکسان خواهد بود.
این تعریف عبارت است از: ابتدا در هر دور، هر سرور تمام تراکنشهای معتبر خود را قبل از آغاز دور مورد توافق انجام میدهد که قبلاً اعمال نشده است این ممکن است شامل معاملات جدیدی باشد که توسط سرور آغاز شده باشد و آنها را به صورت فهرستی که به عنوان «مجموعه کاندیدا» شناخته میشود، در نظر بگیرد.
سپس هر کارگزار مجموعه کاندیدا تمام سرورهای خود را روی صحت تمام تراکنشها قرار میدهد.
معاملاتی که بیش از حداقل درصد آرا را دریافت میکنند، به دور بعدی راه مییابند. در صورتی که معاملهای وجود داشته باشد که رای کافی دریافت نکند، در مجموعه کاندیداها برای شروع فرآیند توافق در دفتر کل وارد میشود.
دور نهایی توافق نیازمند حداقل درصد اطمینان از توافق سرور در یک تراکنش است. تمام تراکنشهایی که این الزام را برآورده میکنند، در دفترکل مورد استفاده قرار میگیرند و دفتر کل به یک دفتر کل جدید تبدیل میشود.
صحتسنجی به منظور دستیابی به درستی معاملات و با توجه به میزان حداکثری شکستهای بیزانس الزامی است. باید نشان داده شود که برای یک تراکنش متقلبانه نمیتوان توافقی را تایید کرد؛ مگر اینکه تعداد نودهای معیوب بیشتر از تحمل سیستم باشد. پس از گذار از مرحله صحتسنجی، اثبات صحت به طور مستقیم در ادامه فرایند RPCA انجام میشود و یک معامله در آنجا انجام میشود. معامله تنها در صورتی تایید میشود که موافقت ۸۰٪ UNL سرور را دریافت کرده باشد؛ زیرا تا زمانی که ۸۰٪ UNL صادقانه باشد، هیچ معامله جعلی تصویب نخواهد شد. بنابراین برای یک UNL تشکیل شده از n نود در شبکه، پروتکل اجماع تا زمانی که)f ≤ (n − ۱) / ۵ (۱ باشد، صحت را حفظ میکند.
f میزان خطاهای بیزانسی است. در واقع، حتی اگر با (n-۱)/۵+۱ شکست بیزانس نیز مواجه شویم، هنوز از نظر فنی درستی حفظ می شود. با اینکه روند اجماع ناموفق خواهد بود اما تأیید a در معاملات متقلبانه ممکن نخواهد بود. در حقیقت تایید یک معامله اشتباه، (۴n +۱) / ۵ شکست بیزانس طول میکشد. ما این فرمول دوم را حد ضعیف صحت و فرمول اول را حد قوی صحت مینامیم.
همچنین باید توجه داشت که تمامی معاملات متقلبانه، تهدید به حساب نمیآیند؛ حتی اگر در حین توافق تایید شوند. آیا کاربر میخواهد سرمایهاش را در دو تراکنش، دو بار خرج کند؟ برای مثال، حتی اگر هر دو تراکنش در طی فرآیند توافق تایید شوند، پس از انجام معامله نخست، معامله دوم شکست میخورد، چون دیگر وجوه در دسترس نیستند. این مقاومت به دلیل این واقعیت است که تراکنشها به طور خاصی انجام میپذیرند و توافق در تراکنشها تضمین میکند که همه نودهای شبکه، قواعد قطعی را در همان مجموعه بهخصوص از معاملات اعمال کنند. برای آنکه تجزیه و تحلیل متفاوتی داشته باشیم، فرض میکنیم که احتمال تصمیم به تبانی هر نود برای پیوستن به یک کارتل شیطانی pc است و احتمال صحت را p∗ تعیین میکنیم. p∗ را با فرمول زیر به دست میآوریم.
p∗ =
⌈( n-۵۱ )⌉
∑i=۰
nipi c(۱- pc)n-i
با توجه به این احتمال، متوجه خواهیم شد که اندازه nefarious cartel با توجه به pc، کمتر از حداکثر آستانه شکست بیزانسی باقی میماند و از آنجا که این احتمال، یک توزیع دو جملهای است، ارزش pc، بیشتر از ۲۰ درصد خواهد بود. همچنین نتایج مورد انتظار کارتل، ۲۰ درصد بزرگتر از شبکه خواهد بود و باعث خنثی کردن روند توافق میشود.
در عمل، UNL به طور تصادفی انتخاب نمیشود، بلکه با هدف به حداقل رساندن pc انتخاب میشود. از آنجا که نودها ناشناس نیستند و از دیدگاه رمزنگاری قابل شناساییاند، انتخاب نود از ترکیب قارهها، ملتها، صنایع، ایدئولوژیها و دیگر چیزها، ارزش pc، کمتر از ۲۰ درصد تولید می کنند.به عنوان مثال، احتمال الحاق یک اتحادیه ضد افترا و کلیسای فرقه باپتیست که در حال تبانی برای پیوستن به شبکه و کلاهبرداری از شبکه است، قطعاً بسیار کمتر از ۲۰٪ خواهد بود؛ حتی اگر UNL دارای یک pc نسبتاً بزرگ باشد، به طور مثال در ۱۵٪. احتمال صحت حتی فقط با ۲۰۰نود نیز در UNL: ۹۷/۸٪ بسیار زیاد است.
نمایش گرافیکی نشان میدهد که چگونه احتمال مقیاسهای نادرستی به عنوان تابعی از اندازه ذرات برای مقادیر مختلف pc در شکل ۱ نشانداده شدهاند. توجه داشته باشید که در اینجا محور عمودی احتمال وقوع یک کارتل را نشان میدهد، بنابراین مقادیر پایینتر نشاندهنده احتمال موفقیت اجماع هستند. همانطور که میتوان در این شکل مشاهده کرد، حتی با وجود یک pc به اندازه ۱۰٪، احتمال عدم توافق بسیار سریع با افزایش تعداد نودهای UNL در حال رشد و رسیدن آنها به ۱۰۰ نود نادیده گرفته میشود.
توافق
برای برآورده کردن شرایط موافقتنامه، طرفین باید نشان دهند که تمامی نودهای موجود در یک مجموعه از معاملات، بدون در نظر گرفتن UNL، به توافق برسند. از آنجایی که ممکن است توافق نامه UNL برای هر سرور متفاوت باشد، با اثبات صحت تناقض دارد و تضمین نمیشود.
به عنوان مثال، اگر محدودیتی در عضویت UNL وجود نداشته باشد و اندازه UNL بزرگتر از ۰/۲ ∗ ntotal نباشد، فورک امکانپذیر خواهد بود. ntotal تعداد نودهای موجود در کل شبکه است. این مثال در شکل ۲ نشان داده شده است:
دو دسته را با گراف UNL تصور کنید که ۰/۲ ∗ ntotal هر کدام از آنها، بیشتر از ۰/۲ درصد باشد. منظور ما از دسته، مجموعهای از نودها است که هر نود UNL همان مجموعه نودها است.
از آنجا که این دو دسته هیچ عضوی ندارند، امکان دستیابی به اتفاق نظر صحیح برای هر کدام به طور مستقل از یکدیگر وجود دارد و منجر به نقض توافق میشود. اگر اتصال دو دسته از ۰/۲ ∗ ntotal کل بیشتر شود، دیگر غیرممکن است که فورک ایجاد شود، زیرا اختلاف نظر بین دستهها از وجود اجماع جلوگیری میکند. برای رسیدن به آستانه توافق ۸۰٪ لازم است.
شکل ۱. نمونهای از اتصال مورد نیاز برای جلوگیری از فورک بین دو گروه
یک حد بالا با هدف اتصال مورد نیاز، با اثبات توافق به صورت زیر داده میشود:
|UNLi ∩UNLj| ≥ 1
5 max(|UNLi|,|UNLj|)∀i, j
این حد بالا ساختاری شبیه به دستهای از UNL ها را فرض میکند. یعنی نودها، مجموعههایی را تشکیل می دهند که حاوی UNLیا چیزهای دیگری هستند. نودها در آن مجموعهها این حد بالا را تضمین میکنند و از آنجا که دستیابی به ۸۰٪ غیرممکن است، هیچ دو گروهی نمی تواند در مورد معاملات متناقض با دیگری اتفاق نظر داشته باشد. آستانه لازم برای اجماع، حد قویتر است. یک پیوند محکمتر زمانی امکان پذیر است که لبههای غیر مستقیم بین طرفین نیز در نظر گرفته شوند. به عنوان مثال، اگر ساختار شبکه مانند clique نباشد، دستیابی به یک فورک دشوارتر میشود؛ زیرا پیچیدگی هر نود بیشتر شده است. همچنین UNL های همه نودها، بیشتر درهم تنیده شدهاند. جالب است بدانید در مورد ماهیت نودهای متقاطع، هیچ فرضی صورت نمیگیرد و تقاطع دو UNL ممکن است شامل گرههای معیوب باشد؛ اما تا زمانی که اندازه تقاطع بیشتر از حد مورد نیاز برای تضمین توافق باشد و تعداد کل نودهای خطا کمتر از حد مورد نیاز برای تایید صحت قوی باشد، درستی و توافق حاصل میشود. این بدین معنا است که توافق تنها به اندازه تقاطع نودها وابسته است نه به اندازه تقاطع نودهای غیر ناقص.
سودمندی
در حالی که بسیاری از اجزای سودمندی ذهنی و غیر قابل اثبات هستند، میتوان از همگرایی نام برد. در حقیقت، همگرایی یکی از اجزای قابل اثبات سودمندی است. همگرایی فرآیند اجماع را در زمان محدود به پایان میرساند.
شکل ۱. احتمال اینکه یک nefarious cartel قادر به خنثی کردن اجماع به عنوان تابعی از اندازه UNL برای مقادیر مختلف pc باشد و احتمال اینکه هر عضوی از UNL تصمیم بگیرد با دیگران تبانی کند. در اینجا، مقادیر پایینتر احتمال موفقیت عمومی بیشتری را نشان میدهند.
همگرایی
همگرایی را به عنوان نقطه مورد نظر تعریف میکنیم که در آن RPCA با صحت قوی در دفتر کل به اجماع میرسد، و آن دفتر به دفتر بسته تبدیل میشود. توجه داشته باشید که در حالی که اصول فنی ضعیف هنوز نشاندهنده همگرایی الگوریتم است، تنها در موارد ناچیزی همگرایی صورت میگیرد. همانطور که C۳ نادیده گرفته میشود و هیچ گونه تراکنشی تایید نخواهد شد. از نتایج بالا، نتیجه میگیریم که درستی صحیح همیشه در مواجهه با (n – 1) / 5شکستهای بیزانسی مورد استفاده قرار میگیرد، و تنها یک اجماع در کل شبکه تا زمانی که شرط اتصال UNL برقرار باشد (معادله ۳) به دست میآید. تمام آنچه باقی میماند این است که نشان دهیم وقتی هر دو این شرایط برآورده میشوند، اتفاقنظر در زمان محدود حاصل میشود.
به دلیل آنکه خود الگوریتم اجماع تعیین کننده است و قبل از اتفاق نظر تعداد دورهای از پیش تعیین شده t را دارد، قبل از آنکه مجموعه فعلی معاملات به عنوان تایید یا عدم تأیید اعلام شود، خاتمه مییابد و حتی اگر الگوریتم در این مرحله باشد، هیچ معاملهای بیش از ۸۰٪ توافق لازم را ندارد و اجماع فقط اجماع پیش پا افتاده خواهد بود. عامل محدود کننده برای خاتمه الگوریتم،تاخیر در ارتباط بین نودها است. به این ترتیب، برای محدود کردن این مقدار، زمان پاسخ نودها تحت نظارت قرار گرفته و گرههایی که بیشتر ازb از پیش تعیین شده، تأخیر داشته باشند، از همه UNL ها حذف خواهند شد. این روش تضمین میکند که اجماع با یک حد بالای tb ،خاتمه مییابد. توجه به این نکته ضروری است که مسیر توضیح داده شده برای صحت و توافق تمام گرهها در اینجا باید توسط UNLها نهایی شود.
ابتکارات و شیوههای اکتشافی
همانطور که در بالا ذکر شد، یک حد ابتکاری متصل بر روی تمام نودهای شبکه ریپل اجرا میشود تا تضمین کند که الگوریتم اجماع همگرا است. همچنین این روش الگوریتم اجماع را به هم نزدیک میکند. چند روش اکتشافی دیگر نیز در اینجا وجود دارد که ابزار RPCA را ارائه میکنند.
- یک پنجره دوم اجباری برای همه نودها وجود دارد تا مجموعه کاندید اولیه خود را در هر دور توافق پیشنهاد کند. در حالی که این کار یک حد پایین را برای هر دور مورد توافق معرفی میکند، تضمین میکند که همه نودها توانایی شرکت در فرآیند توافق را دارند.
با ثبت آرا در دفترکل برای هر دور از اجماع، نودها را میتوان از طریق شبکه برای رفتارهای بد خواهانه تشخیص داد. این نودها شامل نودهایی میشوندکه در هر تراکنش رای منفی میدهند و نودهایی که به طور مداوم معاملاتی را پیشنهاد میکنند که در توافق معتبر نیستند. - این لیست پیشفرض از نودها تضمین میکند که حتی کاربران ساده نیز میتوانند در یک فرآیند توافق مشارکت کنند که به درستی و توافق با احتمال بسیار بالا دست یابد.
- یک الگوریتم تشخیص انشعاب شبکه برای جلوگیری از فورک در شبکه استفاده میشود. در حالی که الگوریتم اجماع تایید میکند که تراکنشها در دفتر کل ثبت میشوند، امکان وجود بیش از یک دفتر کل موجود در بخشهای مختلف شبکه با اتصال ضعیف را منع نمیکند. برای تلاش و شناسایی این که آیا چنین شکافی رخ دادهاست یا نه، هر نود بر اندازه اعضای فعال آن نظارت میکند. اگر این اندازه ناگهان زیر یک آستانه از پیش تعیینشده افت کند، ممکن است که یک شکاف رخ داده باشد.
کد شبیهسازی
کد شبیه سازی ارائه شده یک دور از RPCA است. این کد ویژگیهای مانند تبدیل به پارامتر شدن دارد، پارامترهایی چون تعداد نودهای موجود در شبکه، تعداد نودهای مخرب، تأخیر پیامها و پارامترهای دیگر. با کد شبیه سازی، شبیهسازی به طور کامل آغاز میشود. در ابتدا بیت نیمی از نودهای شبکه اختلاف نظر وجود دارد و ۵۰ درصد از آنها پیشنهاد مثبت و ۵۰ درصد دیگر پیشنهاد منفی میدادند. در ادامه روند اجماع، با نشان دادن تعداد آرای مثبت و منفی شبکه، آن را به عنوان نود مرحلهبندی و طبق آن پیشنهادات خود و اعضای UNL را تنظیم کنید. پس از رسیدن به آستانه ۸۰٪، اجماع حاصل شده و ما خواننده را تشویق میکنیم تا مقادیر مختلف ثابتهای تعریف شده در”Sim.cpp” را به منظور آشنا شدن با شرایط اجماع در شرایط مختلف آزمایش کند.
مباحث
ما RPCA را توصیف کردهایم که با صحت، توافق و سودمندی به رضایت میرسد و نتیجه آن میشود انجام معاملات امن و مطمئن در چند ثانیه توسط پروتکل ریپل. چند ثانیه زمان مورد نیاز برای یک دور توافق تکمیلی است. این معاملات به طور کامل به ۳ حد تقسیم میشوند که اگرچه قادر نیستند به طور کامل خطای بیزانس را از بین ببرند، اما امکان همگرایی سریع و انعطافپذیری در عضویت شبکه را فراهم میآورند. هنگامی که این ۳ حد با هم ترکیب میشوند، این ویژگیها به شبکه ریپل اجازه میدهد تا به عنوان یک شبکه پرداخت جهانی سریع با هزینه خیلی کم و ویژگیهای قابل اطمینان و امنیت بالا عمل کند.
نشان دادیم پروتکل ریپل تا زمانی که در مرزهای توصیف شده ۱ و ۳ باشند ایمن نیستند، همچنین مرزها را توضیح دادیم و حداکثر آنها را. با این حال، این حدها ذاتی نیستند و مدیریت آن به مدیریت UNL های همه کاربران نیاز دارد.
UNL پیش فرض ارائه شده برای همه کاربران در حال حاضر کافی است ولی اگر کاربری تغییراتی در UNL ایجاد کند، تغییرات در UNL آن انجام میشود. علاوه بر این، برخی نظارتها برای نظارت بر ساختار شبکه جهانی مورد نیاز است تا از جایگاه معامله اطمینان حاصل شود.
ما معتقدیم RPCA گام مهمی برای سیستمهای توزیع شده پرداخت است، زیرا پایین بودن نرخ تاخیر برای انواع معاملات مالی را امکانپذیر میکند. روشی که پیش از این دشوار و یا حتی غیرممکن بود، روشهای اجماع تأخیر بالاتر برای تمامی کاربران است.
قدردانی
ریپل لبز از همهی افرادی که در توسعه الگوریتم اجماع پروتکل ریپل حضور داشتند، قدردانی میکند. به طور خاص، از آرتور بریتو (Arthur Britto) برای کار در مجموعههای معامله، جد مککیلب (Jed McCaleb)، برای توسعه مفهوم توافق عام پروتکل ریپل و دیوید شوارتز (David Schwartz)، برای کار بر روی پروژهی عدم موافقت توافقنامهها برای به تعویق انداختن، جنبهای از اجماع است. ریپل لبز همچنین مایل است از نوح یانگ به خاطر تلاشهایش در آمادهسازی و مرور این وایتپیپر قدردانی کند.