ریپل یک ارز دیجیتال است که در شبکه ای آزاد پول در آن معامله میشود. در تعریف این شبکه میتوان گفت که یک سیستم پرداخت توزیع شده است. این ارز دیجیتال توسط جد مککلب (Jed McCaleb) مطرح و توسط آرتور بریتو (Arthur Britto) و (David Schwartz) ساخته شد. هدف اصلی این ارز دیجیتال، ماننده نمونه های مشابه آن، بیرون آوردن مردم از حصار مراکز مالی و ابزارشان مانند کارت اعتباری، پرداخت های اینترنتی، باک ها و غیره است. با اینکه ریپل در حال حاضر ارزانترین ارز دیجیتال موجود است، اما رشد سریع آن در چندماه اخیر، ریپل را به رقیبی برای بیت کوین و اتریوم در آینده ای نه چندان دور تبدیل خواهد کرد.
چکیده
در حالی که چند الگوریتم جمعی برای مسائل عمومی و کلی بیزانس Byzantine Generals وجود دارد، بسیاری از آنها از تأخیر ناشی از این اتفاق که همه ی گره های داخل شبکه را به صورت همگام متصل می کنند، رنج می برند. به ویژه چون مربوط به سیستم های پرداخت توزیع شده است در این روند، ما الگوریتم توافقی جدیدی ارائه میکنیم که این نیازها را با استفاده از تحت شبکههای مطمئن در شبکهای بزرگتر رفع میکند. در اینجا خواهیم گفت که اعتماد مورد نیاز این تحت شبکه ها در واقع حداقل است و میتوان آن را با انتخاب اصولی اعضای نود باز هم کمتر کرد. علاوه بر این ، گفتیم که برای حفظ توافق در کل شبکه ، حداقل اتصال لازم است. نتیجه یک الگوریتم جمعی تأخیر دار کم است که هنوز هم در برابر شکست های بیزانتین Byzantine ثبات خود را حفظ می کند. ما این الگوریتم را در نمونه ی پروتکل ریپل Ripple آن ارائه خواهیم داد.
مقدمه
در سالهای اخیر علاقه و تحقیق در سیستمهای توافقی توزیعی به شکل قابل توجهی افزایش یافته و تمرکز اصلی بر شبکههای پرداخت توزیعی بنا شده است. چنین شبکههایی امکان تراکنشهای سریع و کمهزینه که توسط یک منبع متمرکز کنترل نمیشوند را فراهم میکنند. در حالی که فواید اقتصادی و ضرر های چنین سیستمی ارزش تحقیق و پیگیری را دارد ، این کار بر روی برخی از چالش های تکنیکی متمرکز است که همه سیستم های پرداخت توزیع شده باید با آن روبرو شوند. در حالی که این مشکلات فراوان و متفاوت است ، سعی کرده ایم آنها را در سه دسته اصلی قرار دهیم: درستی ، توافق و سودمندی.
منظور ما از درستی این است که این موضوع برای قادر ساختن یک سیستم توزیعی در تمایز بین تراکنشِ درست و دارای تقلب بسیار ضروری است. در تنظیمات معتبر سنتی، این موضوع از طریق اعتماد بین طرفین و امضاهای رمزنگاری شده که تضمینی برای تراکنش هستند، صورت میگیرد. اما در سیستمهای توزیعی چنین اعتمادی وجود ندارد زیرا ممکن است هویت هیچ کدام از اعضای شبکه و طرفین معامله مشخص نباشد. بنابراین، باید روشهای جایگزین دیگری برای موضوع درستی به کار گرفته شود.
توافق به مسئله ی حفظ یک حقیقت جهانی در مواجهه با سیستم حسابرسی غیر متمرکز اشاره دارد. این امر در حالی که شبیه به مسئله ی درستی است ، فرق بین آنها در این واقعیت نهفته است که در حالی که ممکن است یک کاربر مخرب شبکه نتواند معامله تقلبی (نادرست) ایجاد کند ، ممکن است توانایی ایجاد چندین تراکنش صحیح را داشته باشد که به نوعی از یکدیگر بی خبر باشند. و بنابراین این ترکیب برای ایجاد یک کلاهبرداری سازمان یافته استفاده شود. به عنوان مثال یک کاربر مخرب ممکن است با سرمایه کافی برای یک خرید، دو خرید همزمان و جدا از هم انجام دهد. بنابراین هر تراکنش به خودی خود صحیح است اما اگر به صورت همزمان و به گونه ای که شبکه توزیعی آن را به شکل کلی تشخیص ندهد صورت بگیرد، مشکل واضحی ایجاد خواهد شد که معمولا آن را با عبارت مشکل دو هزینه ای می شناسند. بنابراین مشکل توافق را میتوان به عنوان نیازی که فقط یک مجموعه تراکنش جهانی در شبکه وجود دارد خلاصه کرد.
سودمندی مسئله ای کمتر قابل توجه است ، که معمولاً آن را مفید بودن یک سیستم پرداخت توزیع شده تعریف می کنیم ، اما در عمل بیشتر اوقات در تاخیر یک سیستم ساده می شود. یک سیستم توزیع شده که هم صحیح و هم مورد توافق باشد اما مثلاً یک سال برای پردازش معامله زمان نیاز داشته باشد ، بدیهی است که یک سیستم پرداخت غیر قابل پیگیری می باشد. بسیاری از این مسائل خیلی قبلتر از ظهور سیستمهای توزیع کامپیوتری مورد بررسی قرار گرفته و با عبارت مشکلات عمومی بیزانتین نامگذاری شدهاند . در این مشکل، گروهی از ژنرال ها هر کدام بخشی از ارتش را کنترل میکنند و باید در حمله و ارسال پیامرسانها به یکدیگر هماهنگ باشند. از آنجایی که این مسائل عمومی در محدوده نا مشخص و متعلق به دشمن حضور دارند، شاید پیامرسانها به مقصد خود نرسند. بدین ترتیب یک سیستم پرداخت توزیع شده باید هم در مواجهه با خرابی های استاندارد ، و هم به اصطلاح شکستهای بیزانس، که ممکن است با هماهنگی انجام شده و از چندین منبع در شبکه سرچشمه گرفته باشند مقاومت داشته باشد.
تعاریف ، رسمی سازی و کارهای قبلی
از تعریف مؤلفه های پروتکل ریپل Ripple آغاز می کنیم. برای اثبات درستی ، توافق و سودمندی ، ابتدا این خصوصیات را به صورت واضح رسمی می کنیم. این خصوصیات ، وقتی با هم جمع می شوند ، یک مفهوم جمعی را تشکیل می دهند : وضعیتی که گره ها در شبکه به توافقی درست می رسند. سپس ما نتایج قبلی مربوط به الگوریتم های جمعی را برجسته می کنیم و در آخر اهداف جمعی پروتکل ریپل را در چارچوب رسمی سازی خود مطرح می کنیم. اجزای پروتکل ریپل ما از توصیف شبکه ریپل و تعریف واژههای زیر شروع میشود:
سرور: سرور نهاد مجری نرم افزار ریپل سرور است که در پروسه توافقی شرکت میکند (بر خلاف نرم افزار مشتری ریپل که فقط به کاربر اجازه ارسال و دریافت سرمایه را میدهد).
لجر: لجر یا دفتر کل تاریخچهای از میزان ارز در هر حساب کاربری بوده و نمایانگر “حقیقت بنیادی” شبکه است. لجر مکررا با تراکنشهایی که با موفقیت از پروسه توافقی عبور میکنند بهروز میشود.
لجر آخرین (Last-Closed): لجر آخرین، جدیدترین لجری است که در پروسه توافقی به تصویب رسیده و بنابراین بیانگر وضعیت فعلی شبکه میباشد.
لجر باز: لجر باز وضعیت عملیاتی فعلی یک نود است (هر نود لجر باز خود را حفظ می کند). تراکنشهای آغاز شده به وسیله کاربر نهایی از یک سرور در لجر باز همان سرور به کار گرفته میشوند اما تراکنشها تا زمانی که از درون پروسه توافقی عبور نکردهاند، نهایی نیستند و فقط در این زمان است که لجر آخرین ایجاد میشود.
لیست منحصر به فرد نود (UNL):
هر سرور، S، یک لیست منحصر به فرد نود را حفظ میکند که مجموعهای از دیگر سرورها می باشد که صف های S در هنگام توافق دارند. فقط آرای دیگر اعضای UNL از s در هنگام تعیین توافق در نظر گرفته میشود (بر خلاف هر نود در شبکه). بنابراین UNL نمایانگر مجموعهای از شبکه است که به صورت مجموعهای در نظر گرفته میشود و به وسیله s تایید اعتبار شده تا در تلاش برای فریب شبکه دستخوش تغییر نشود. توجه داشته باشید که مفهوم اعتبار نیازمند تک تک اعضای UNL نیست. پیشنهاد کننده: تمام سرورها می توانند تراکنشها را پخش کرده تا شامل پروسه توافقی شوند و هر سرور تلاش میکند تا وقتی که یک دور توافقی جدید آغاز میشود، هر تراکنش معتبر را در بر بگیرد. هر چند طی پروسه توافقی، فقط پیشنهادهای سرور در UNL یک سرور s توسط s در نظر گرفته میشود.
رسمی سازی
ما از اصطلاح بی عیب و نقص برای اشاره به گره های موجود در شبکه که صادقانه و بدون خطا رفتار می کنند استفاده می کنیم. در مقابل ، گره ی معیوب گره ای است که ممکن است صادقانه باشد (به واسطه ی نادرستی اطلاعات ، خطاهای اجرایی ، و غیره) یا مخرب باشد (خطاهای بیزانس). ما مفهوم اعتبار یک معامله را به یک مشکل تصمیم گیری باینری ساده کاهش می دهیم: هر گره باید از اطلاعاتی که با مقدار ۰ یا ۱ دریافت کرده است تصمیم بگیرد. مانند Attiya ،Dolev و Gill ،در سال ۱۹۸۴، ما فرایند جمعی را طبق سه اصل زیر تعریف می کنیم:
۱ (C1): هر گره بی عیب و نقصی در زمان محدود تصمیم می گیرد.
۲ (C2): همه گره های بی عیب و نقص به مقدار تصمیم گیری یکسان می رسند.
۳ (C3): 0 و ۱ هر دو مقادیر ممکن برای همه گره های بی عیب و نقص هستند. (صرف نظر از اطلاعات ارائه شده توسط آنها)
۲٫۳ ۲٫۳ الگوریتم های جمعی موجود: تحقیقات فراوانی در مورد الگوریتم هایی انجام شده است که در مواجهه با خطاهای بیزانس به یک توافق جمعی می رسند.
کار قبلی شامل ادامه ی مواردی است که همه شرکت کنندگان و طرفین معامله در شبکه با گذشت زمان مشخص نیستند ، و پیام ها به صورت غیر همزمان ارسال می شوند (محدودیتی در میزان زمان یک گره جداگانه برای رسیدن به تصمیم گیری وجود ندارد) و تعریفی بین مفهوم فرایند جمعی قوی و ضعیف وجود دارد. یکی از نتایج مهم کار قبلی در مورد الگوریتم های جمعی، نتایج مربوط به فیشر ، لینچ و پترسون ،در سال ۱۹۸۵ است که ثابت می کند در موارد ناهمگام ، همیشه امکان بی نهایتی برای یک الگوریتم جمعی، حتی با تنها یک فرآیند معیوب وجود دارد. این امر کشف مبتنی بر زمان را ، برای اطمینان از همگرایی (یا حداقل تکرارهای غیر همگرایی) ضروری می کند.