تماس با ما
 
بدان
 
امروز پنجشنبه ، ۱۳۹۹/۱۲/۱۴
 
کلیه مقالات

الگوریتم های اجماع مبتنی بر PBFT برای بلاکچین

PBFT-based consensus algorithms for blockchain

الگوریتم های اجماع مبتنی بر PBFT برای بلاکچین:

یک مطالعه موردی:

چکیده:

فناوری Blockchain یک فناوری نوظهور و ابتکاری است که بیش از 10 سال پیش با ظهور بیت کوین ظاهر شد.

بلاکچین به شما پول توزیع شده ای را می دهد که هیچ موجودیت مرکزی در آن وجود نداشته باشد و اعضای سیستم از پروتکل های اجماع برای تأیید معاملات استفاده کنند.

مشهورترین روش اجماع ، اثبات کار (PoW) است که مبتنی بر حل یک مسئله سخت ریاضی است و از آن در بلاکچین و بلاکچین در بیت کوین استفاده می شود.

با این حال ، رویکردهای بسیاری دیگر از قبیل Proof of Stake (PoS) یا تحمل گسل های بیزانس (BFT) وجود دارد.

بلاکچین ها می توانند عمومی باشند ، به این معنی که هر کاربری می تواند آزادانه به آنها بپیوندد ، همانطور که در مورد بیت کوین وجود دارد ، یا در صورت نیاز به دسترسی کاربران برای پیوستن به سیستم ، می توان آنها را مجاز دانست.

در این کار ، ما دو بلاکچین مجاز را بررسی و تجزیه و تحلیل می کنیم:

Exonum و Neo که براساس الگوریتم اجماع PBFT ساخته شده اند و امنیت را در برابر حملات بیزانس تأمین می کنند.

به همین منظور از بلاکچین های آزمایشی استفاده شده و عملکرد هر دو بلاکچین از نظر توان عملیاتی (معاملات در ثانیه) و زمان تعهد (زمان مورد نیاز برای افزودن بلاک جدید به بلاکچین با معاملات جدید) مقایسه می شود.

سپاسگزاریها:

از اولگا بخاطر مشاوره دادن به من و ارائه راه حل برای مشکلاتی که با نتایج پایان نامه داشتم ، همانطور که انتظار داشتیم ، نبود.

با تشکر از ایده های او ، ما توانستیم پایان نامه را به مرور زمان هدایت کنیم و به نتایج برسیم.

از کاربر GitHubslowli برای پاسخگویی به چندین س technicalال فنی در مورد نحوه کار کد Exonum مبتنی بر Rust ، متشکریم.

با تشکر از کاربر @ hal0x2328 از گروه Neo-Smart Economy Discord برای راهنمایی و راهنمایی من در زمینه راه اندازی بلاکچین نئو.

مقدمه:

تاکنون بیش از 10 سال است که ناکاموتو مفهوم انقلابی جدیدی را به نام سیستم های نقدی الکترونیکی peer-to-peer (P2P) به جهانیان نشان داده است [1] ، که نه تنها منجر به اختراع ارز دیجیتال بیت کوین شد بلکه مفهوم بلاکچین.

بلاکچین اساساً یک دفتر توزیع شده است که می تواند معاملات را به روشی ایمن و بدون کنترل نهاد مرکزی ثبت کند.

کاربران می توانند ورودی های جدیدی را به زنجیره اضافه کنند ، که با استفاده از پروتکل های اجماع شده تأیید می شوند ، اما موارد موجود را حذف نمی کنند ، بنابراین یک سیستم شفاف و قابل کنترل ایجاد می کنند.

این ویژگی های مرتبط با بلاکچین برای برنامه های پولی مانند بیت کوین ایده آل است ، اما همچنین می تواند برای بسیاری از برنامه های دیگر فراتر از ارزهای رمزپایه بسیار مفید باشد.

بنابراین ، بعد از بیت کوین [1] ، سیستم عامل های دیگری ظاهر شده اند که می توانند برنامه های غیرمتمرکز را توسط کاربران ایجاد و برنامه ریزی کنند ، مانند قراردادهای هوشمند.

قرارداد هوشمند قطعه ای از کد است که به بلاکچین اضافه می شود و در برهه ای از زمان ، شرایط یا مجموعه ای از شرایط را تأیید می کند و تعیین می کند که آیا دارایی باید به سراغ یک شخص یا شخص دیگر برود.

علی رغم خواص سودمند بیت کوین و سایر زنجیره های انسجام عمومی مانند Ethereum [2] ، آنها اشکالاتی دارند که باعث می شود آنها سیستم مناسبی برای موارد خاص استفاده نباشند (بلاک چین های عمومی نمی توانند با سناریوهای معامله در هر ثانیه یا با محاسبات کمتری روبرو شوند).

یکی از این اشکال ، ماهیت باز ، عمومی و بدون اجازه آنهاست.

منظور ما از این امر این است که هر کسی می تواند بدون اجازه خاصی به سیستم عامل بلاکچین متصل شود و می تواند در روند اجماع سهیم باشد.

علاوه بر این ، امنیت این بلاکچین ها بر اساس قدرت محاسبه اعضای آنها است ، جایی که نیاز به انگیزه دادن به کاربران برای کمک به قدرت محاسباتی آنها وجود دارد.

به طور خاص ، گره هایی که با ثبت معاملات کمک می کنند با ارزهای رمزپایه پاداش می گیرند.

ایده اولیه ناکاموتو [1] از نظر امنیتی و امنیتی عمیقا بررسی و بررسی شده است.

از آن زمان ، برخی از انواع دیگر بلاکچین مانند بلاک های خصوصی یا بلاک چین های مجاز ظاهر شده است که در آنها به کاربران اجازه دسترسی به آنها داده می شود.

این رویکردهای جدید به منظور اطمینان از ایمنی و امنیت نیاز به مطالعه بیشتر دارند.

در ادامه ، اهداف این پایان نامه کارشناسی ارشد و ساختار سند را شرح می دهیم.

1-1- بیانیه هدف:

هدف اصلی این کار آزمایش برخی از بلاک چین های مجاز به منظور ارزیابی عملکرد آن در سناریوهای مختلف و ارزیابی آنها از نظر سرعت (معاملات در ثانیه و زمان انجام) است.

با این هدف ، ما برخی از بلاکچین ها را براساس الگوریتم Practical Byzanine Failure Tolerance (PBFT) برای مقایسه آنها انتخاب خواهیم کرد:

اگزونوم و نئو

برای این کار ، ما از پیاده سازی واقعی این بلاکچین ها استفاده می کنیم که منبع باز هستند و برای اهداف آزمایشی در نظر گرفته شده اند.

این زنجیره های آزمایشی امکان شبیه سازی بلاکچین در یک محیط محلی را فراهم می کند که در آن می توانیم شبکه را کنترل کرده و تنظیمات مختلف را آزمایش کنیم.

1-2- طرح کلی پروژه:

ساختار پروژه به شرح زیر است:

* - توضیحی در مورد اینکه بلاکچین چیست و امکانات متعددی که برای ما فراهم می کند را می توان در فصل 2 یافت.

علاوه بر این ، ما برخی از معروف ترین الگوریتم های اجماع را توصیف می کنیم.

* - در فصل 3 ، ما می توانیم شرح مفصلی از Exonum و نحوه کار آن را پیدا کنیم.

* - فصل 4 بلاک چین دیگری را توصیف می کند ، Neo.

ما بررسی خواهیم کرد که چیست و چگونه کار می کند.

* - فصل 5 توضیحی در مورد روش انجام شده برای اجرای همه آزمون ها برای ارزیابی عملکرد هر دو بلاکچین ارائه می دهد.

پس از آن ، نتایج نشان داده می شود و بحث نهایی در مورد اینکه بلاکچین کدام عملکرد بهتری دارد و چرا وجود دارد.

سرانجام ، یک مطالعه در مورد چگونگی پیشرفت و نتیجه گیری در این مورد وجود دارد.

* - فصل 6 بررسی نهایی کار را انجام می دهد و جزئیات نتیجه گیری را به دست می دهد.

همچنین در صورتی که کسی بخواهد در آینده در این باره مطالعه کند ، نکات بهبودی را برای این کار اضافه می کند.

11 Blockchain:

بلاکچین یک دفتر توزیع شده است که از بلوک تشکیل شده است ، هر کدام شامل تعداد معینی از معاملات است ، به طور معمول معاملات پولی است که در آن مقدار معینی ارز رمزنگاری شده از یک کاربر به کاربر دیگر منتقل می شود.

هر بلوک شامل اطلاعات مربوط به بلوک قبلی در زنجیره است به گونه ای که یکپارچگی داده ها را تضمین می کند.

با استفاده از تکنیک های رمزنگاری ، اطلاعات ذخیره شده در هر بلوک فقط با تغییر در تمام بلوک های بعدی قابل رد یا ویرایش است ، که به دلیل امنیت زنجیره غیر ممکن تلقی می شود.

بلاکچین در یک محیط واقعی اجرا می شود ، جایی که هزاران گره به آن متصل هستند.

این گره ها می توانند یک کپی از دفتر را بدست آورند و بنابراین گفته می شود غیرمتمرکز و همزمان است.

هر کاربر دارای یک جفت کلید عمومی است که برای شناسایی کلید اصلی (کلید عمومی) و امضای معاملات (کلید خصوصی) استفاده می شود.

از آنجا که کاربران هویت واقعی خود را فاش نمی کنند اما به جای آن از کلید عمومی خود استفاده می کنند ، حریم خصوصی کاربر به نوعی تضمین می شود.

از زمان ظهور اولین بلاکچین عمومی ، بیت کوین ، انواع دیگر بلاکچین برای غلبه بر محدودیت های آن ساخته شده است.

در این میان عدم مقیاس پذیری ، تعداد نسبتاً پایین تراکنش های پشتیبانی شده در ثانیه توسط سیستم ، سرعت پایین برای ثبت اطلاعات (در بلاک های بیت کوین با اطلاعات جدید به طور متوسط ​​هر 10 دقیقه منتشر می شود) یا واقعیت ارزهای رمزپایه برای انجام عملیات در بلاکچین مورد نیاز است.

دلیل دوم می تواند یک اشکال باشد به دلیل دردسر در ایجاد ارتباط بین پرداخت ها با بیشتر عملیات و همچنین عدم اطمینان از قیمت هر معامله.

2-1- فناوری پشت بلاکچین:

بلاکچین به خودی خود یک اختراع انقلابی نیست.

فناوری Blockchain چیزی بیش از ترکیب هوشمندانه فناوری های موجود نیست و در بسیاری از زمینه های امنیت رایانه مانند کلیدهای رمزنگاری ، امضاهای دیجیتالی ، هش ها ، شبکه های نظیر به نظیر استفاده می شود.

روش هوشمندانه ای برای ترکیب همه اینها ، این فناوری را به وجود آورد.

بلاکچین را می توان یک فناوری بسیار ایمن دانست ، زیرا اطلاعات به دلیل دفترداری توزیع شده به صورت کاملاً غیرمتمرکز به اشتراک گذاشته ، تولید و نگهداری می شود.

هرکسی که به سیستم بپیوندد می تواند یک نسخه از کل بلاکچین را دریافت کند و مطابق با قوانین بلاکچین ، با شرکت در الگوریتم اجماع می تواند بلوک ها را بپذیرد یا انکار کند.

وقتی اطلاعات پذیرفته می شوند ، به لطف شبکه peer-to-peer بلوکی ایجاد و توزیع می شود.

بلاکچین فقط لیستی در حال رشد از سوابق است (ساختار داده های اساسی) که بلوک نامیده می شوند و با استفاده از رمزنگاری به یکدیگر متصل می شوند.

هر بلوک حاوی هش بلوک قبلی ، یک مهر زمان و داده های معامله است که باید بین دو طرف منتقل شود.

داده های معاملات به طور معمول با استفاده از یک درخت مرکل نشان داده می شوند [3].

همانطور که در شکل 2 نشان داده شده است.

1 ما می توانیم تقدیس بلوک های پیوند یافته را مشاهده کنیم.

این همیشه از یک بلوک ویژه به نام Genesis Block شروع می شود ، که تنها بلوکی است که بلوک قبلی ندارد.

سپس می توان دو نوع بلوک را مشاهده کرد.

مشکی ها زنجیره بلوک هستند ، یکی پس از دیگری بلوک های قبلی را می بندند.

از طرف دیگر ، ما بلوک های بنفش را داریم ، که چنگال شاخه اصلی است.

این اتفاق می افتد وقتی در یک لحظه خاص ، دو بلوک در یک لحظه تولید می شوند و هر دو معتبر هستند.

برای دور انداختن یکی از آنها ، منتظر بمانید تا بلوک های دیگر به پشت اضافه شوند.

بنابراین ، زنجیره ای که طولانی تر است ، زنجیره ای است که سرانجام دوام خواهد داشت و شاخه دیگری که ایجاد شده است لغو می شود ، همچنین معاملات احتمالی مربوط به آن لغو می شوند.

ایده به سادگی همان چیزی است که در شکل 2-2 نشان داده شده است.

در حالت ایده آل ، کسی می خواهد پول ارسال کند (این لزوماً همیشه پول نیست [5]) برای شخص دیگری ، که یک معامله را نشان می دهد صادر کننده ، مقدار و گیرنده است.

وقتی همه گره ها این تراکنش را تأیید می کنند ، می تواند در یک بلوک معتبر گنجانده شود که سایر گره ها باید دوباره اعتبار سنجی کنند.

وقتی این اتفاق می افتد ، این بلوک به بلاکچین اضافه می شود و در نهایت معامله اجرا می شود و رکوردی در بلاکچین باقی می ماند که هیچ کس قادر به حذف یا اصلاح آن نیست.

به طور کلی ، اصطلاحات ، ما می توانیم دو نوع دفتر توزیع شده تعریف کنیم:

* - بلاکچین های عمومی که به دلیل بیت کوین شناخته شده ترین هستند.

آنها معمولاً بر اساس الگوریتم اجماع اثبات کار (PoW) کار می کنند.

همه می توانند بلاکچین ، نرم افزار را بارگیری کرده و در الگوریتم اجماع شرکت کنند.

* - بلاکچین خصوصی یا مجاز ، که در آن فقط کاربرانی که در آن شرکت می کنند شناخته شده و قابل اعتماد هستند.

بلاکچین می تواند متعلق به یک شرکت خاص یا کنسرسیوم یا مجموعه ای از شرکت ها باشد.

بخشی از بلاکچین را می توان برای غیرعضوها نشان داد و علنی کرد تا اشخاص ثالث به روش کار شما اعتماد کنند.

آنها از یک سیستم رای گیری / چند حزبی به عنوان الگوریتم اجماع استفاده می کنند ، از نظر محاسبات بسیار ارزان ترند و سرعت آنها از نظر تراکنش در ثانیه بسیار بیشتر از بلاک چین های عمومی است.

در این پایان نامه ، ما در حال تمرکز بر روی گروه دوم ، گروه های مجاز هستیم.

2-1-1- بلاکچین های مجاز:

بلاک چین های مجاز معمولاً سیستم های بسته ای هستند که اطلاعات ذخیره شده در زنجیره بلوک در بین گره های عضو آن خصوصی نگه داشته می شود.

از این نظر ، یک بلاکچین دارای مجوز انقلابی بسیار کمتر از مجوزهای عمومی است.

مالکیت این زنجیره بلوک می تواند توسط یک شرکت منفرد یا توسط کنسرسیومی متشکل از چندین شرکت صورت گیرد.

اعضا معمولاً تعارضات خاصی دارند و اطلاعات ذخیره شده در زنجیره بلوک معمولاً برای چندین نفر از اعضای کنسرسیوم از ارزش بالایی برخوردار است.

به همین دلایل ، اعضای کنسرسیوم به بستری نیاز دارند که مدیریت و ذخیره سازی داده ها بین آنها به اشتراک گذاشته شود.

در یک بلاکچین مجاز ، اعضای کنسرسیوم بسته به مسئولیت خود در سیستم عامل ، ممکن است مجوزهای ویژه ای داشته باشند ، و به عنوان مثال ، ممکن است مجوز نوشتن بلوک های جدید ، اعتبارسنجی آنها یا فقط استفاده از سیستم و ارسال معاملات را داشته باشند.

2-1-2- ویژگی های زنجیره بلوک:

بلاک چین فناوری از بسیاری جهات انقلابی تلقی می شود.

اجازه دهید خواص آن را بررسی کنیم:

* - ایمنی:

تا زمانی که اکثر گره های صادقانه را داشته باشیم ، اطمینان داریم که تمام اطلاعات اضافه شده به بلاکچین درست و مورد توافق همه گره ها هستند.

* - سرزندگی:

تا زمانی که اکثر گره های صادقانه را داشته باشیم ، می دانیم که همیشه می توانیم پیام هایی را به بلاکچین اضافه کنیم ، زیرا همیشه با هم توافق خواهیم کرد.

* - تکرار نظیر به نظیر:

کل دفتر کل تکرار و با همسالان به اشتراک گذاشته می شود.

هر گره جدید می تواند یک نسخه را به یک همکار درخواست کند و هر بلوک را بررسی کند.

* - برگشت ناپذیری و تغییرناپذیری:

وقتی چیزی به زنجیره بلوک اضافه شد ، هرگز قابل تغییر یا حذف نیست ، زیرا تکرار P2P وجود دارد و همه گره ها قبلاً یک کپی از دفتر دارند.

* - تمرکززدایی:

هیچ گره مرکزی وجود ندارد که بتواند آنچه را که در بلاک چین کنترل می شود کنترل کند.

همه گره ها می توانند تراکنش ها را به بلاکچین بفرستند و بلاک های جدید با توافق بین گره ها توافق می شوند.

2-1-3- الگوریتم اجماع:

الگوریتم اجماع یکی از عناصر اصلی بلاکچین است.

الگوریتم های اجماع فرآیندهای تصمیم گیری برای یک گروه هستند ، جایی که هر فرد در گروه تصمیم گیری را می گیرد که برای او بهتر کار کند.

این نوعی قطعنامه است که در آن اعضا members خواه ناخواه از تصمیم اکثریت حمایت می کنند.

به زبان ساده ، این فقط روشی برای تصمیم گیری در یک گروه است.

گروهی متشکل از ده نفر را تصور کنید که می خواهند درباره پروژه ای تصمیم بگیرند که به درد همه آنها بخورد.

همه می توانند ایده ای را پیشنهاد دهند ، اما بیشتر آنها به نفع ایده ای هستند که بیشتر به آنها سود برساند.

دیگران بخواهند یا نخواهند باید با آن تصمیم کنار بیایند.

الگوریتم های اجماع نه تنها با اکثریت آرا موافق هستند ، بلکه با آرایشی که به نفع همه آنها باشد موافق هستند.

بنابراین ، این همیشه یک پیروزی برای شبکه است.

این مدل های اجماع بلاکچین از برخی اهداف خاص تشکیل شده است ، مانند:

* - دستیابی به توافق:

سازوکار تمام توافقات گروه را تا آنجا که می تواند جمع می کند.

* - همکاری:

همه افراد گروه به توافق بهتری که منجر به منافع جمعی گروه شود اشاره می کنند.

*- مشارکت:

هر عضو به صورت تیمی کار خواهد کرد و منافع خود را کنار خواهد گذاشت.

*- مشارکت:

همه اعضای شبکه باید در رأی گیری شرکت کنند.

هیچ کس کنار گذاشته نمی شود یا هیچ کس نمی تواند از رای خارج شود.

*- فعالیت:

هر یک از اعضای گروه به همان اندازه فعال هستند.

هیچ عضوی با مسئولیت بیشتر از افراد دیگر در گروه وجود ندارد.

در بازار ، در حال حاضر انواع مختلفی وجود دارد و بسته به اینکه هدف اصلی بلاکچین شما چیست ، برای شما راحت تر خواهد بود.

2-1-3-1- تحمل گسل عملی بیزانس (PBFT):

الگوریتم PBFT بر اساس تحمل خطای بیزانس (BFT) [7] بنا شده است ، که ویژگی شبکه توزیع شده برای رسیدن به اجماع (توافق بر روی همان مقدار) است حتی اگر برخی از گره های شبکه پاسخ ندهند یا با آن پاسخ دهند اطلاعات نادرست

هدف از سازوکار BFT محافظت در برابر خرابی سیستم با تصمیم گیری جمعی برای کاهش تأثیر گره های معیوب است.

شکل 2-2

مسئله کلیات بیزانس را به تصویر می کشد ، که در آن ژنرال ها باید تصمیم بگیرند که حمله کنند یا عقب نشینی کنند.

برخی از ژنرال ها حمله را ترجیح می دهند در حالی که دیگران عقب نشینی را ترجیح می دهند.

نکته مهم این است که هر ژنرال در یک تصمیم مشترک اتفاق نظر داشته باشد ، زیرا حمله نیمه جان چند ژنرال به شکست تبدیل خواهد شد و از حمله هماهنگ یا عقب نشینی هماهنگ بدتر خواهد بود.

ایده الگوریتم PBFT این است که ما حداقل به پیام های 3f + 1 نیاز داریم که f به عنوان حداکثر پیام های معیوب / روم شرقی درک می شود.

سپس با دانستن تعداد گره هایی که شبکه ما دارد ، می توانیم بدانیم که چه تعداد گره بیزانس می توانیم داشته باشیم.

بنابراین ، اگر 3 گره معیوب داشته باشیم ، حداقل 10 گره خواهیم داشت تا بیشترین گره از 7 گره صادق را داشته باشیم.

الگوریتم PBFT برای سیستم های اجماع ناهمزمان طراحی شده است و برای روبرو شدن با همه مشکلات به روشی کارآمدتر بهینه سازی شده است.

سطح ارتباطات کاملاً بالا است زیرا گره ها می خواهند تمام اطلاعات موجود در شبکه را تأیید کنند.

این مسئله اطلاعات غیر قابل اعتماد را برطرف می کند اما یک مورد جدید را معرفی می کند:

عدم مقیاس پذیری

تعداد زیادی گره منجر به ارتباطات زیادی در بین آنها می شود ، بنابراین سیستم ممکن است در ردیابی همه گره ها مشکل داشته باشد و قادر به برقراری ارتباط با هر یک نباشد.

به همین دلیل ، برای بلاک چین های مجاز که تعداد کاربران آنها محدود است ، مناسب است.

در این پایان نامه ، ما به مطالعه و ارزیابی این الگوریتم در بلاکچین های مختلف ، به طور عمده Exonum و Neo خواهیم پرداخت.

2-1-3-2- اثبات کار (PoW):

اثبات کار (PoW) اولین الگوریتم اجماع معرفی شده در یک بلاکچین ، به ویژه در بیت کوین بود.

بسیاری دیگر از فناوری های بلاکچین ، مانند Litecoin [9] از این مدل های اجماع برای تأیید معاملات و تولید بلاک استفاده می کنند.

این مسئولیت به عهده همه گره های منفردی است که ماینر نامیده می شوند و فرایندی که آنها برای حفظ آن استفاده می کنند استخراج است.

اصل اصلی این فناوری حل یک مسئله پیچیده ریاضی است که به قدرت محاسباتی زیادی نیاز دارد.

پیچیدگی این مشکل را می توان به گونه ای تنظیم کرد که از نظر بلوک / تراکنش در ثانیه به یک سرعت معین برسد.

به عنوان مثال در بیت کوین ، هر 10 دقیقه یک بلاک جدید ایجاد می شود.

PoW مزایای زیادی مانند سطح بالای امنیتی دارد ، اما دارای نقایص بسیاری نیز می باشد.

مصرف انرژی به حدی زیاد است که برای جهانی که در حال کمبود انرژی هستیم به یک معضل تبدیل می شود.

کارگران معدن در این سیستم به دلیل مصرف برق باید با مبلغ زیادی روبرو شوند که در صورت عدم رسیدن به استخراج بلوک جدید ، روند استخراج ارزش آن را ندارد.

مزیت این امر این است که حمله 51٪ ، یعنی مدیریت کنترل بلاکچین با تولید بلوک های اشتباه اما اکثریت (51٪) آنها آن را قبول می کنند زیرا تحت کنترل شما هستند ، مدیریت آن بسیار دشوار است. به دلیل هزینه بالایی که باید تصور کنید در هیچ موردی سودآور نخواهد بود.

2-1-3-3- اثبات سهام (PoS):

Proof of Stake (PoS) یک الگوریتم اجماع است که به مشکلات اصلی الگوریتم PoW می پردازد.

کارگران معدن می توانند با استفاده از سکه های خود برای شرکت در روند استخراج شرکت کنند.

هر فرد می تواند بلوک های جدید را بسته به مقدار سکه (سهام) موجود استخراج یا حتی اعتبارسنجی کند.

بنابراین ، در این سناریو ، هرچه سکه بیشتری داشته باشید ، امکانات بیشتری برای استخراج یک بلوک خواهید داشت.

اعتبارسنجان به جای سرمایه گذاری در سخت افزارهای گران قیمت برای حل یک معما پیچیده ، با مسدود کردن برخی از ارزهای خود به عنوان سهام ، در ارزهای سیستم سرمایه گذاری می کنند.

اعتبارسنجی برای تولید بلوک جدید براساس مشارکت اقتصادی در شبکه انتخاب می شود.

بنابراین ، PoS اعتبار دهندگان را از طریق مکانیزم تشویقی برای رسیدن به توافق تشویق می کند.

2-1-3-4- گواهی اثبات سهام (DPOS):

Proof of Stake (DPOS) تفویض شده یک روش PoS است که در بخش قبلی شرح داده شده است.

این یک پروتکل اجماع است که برای بلاک چین های بسیار مقیاس پذیر طراحی شده است.

اجرای این پروتکل تحمل گسل بیزانس (BFT) را ارائه می دهد.

این بدان معنی است که سطح بالایی از امنیت را برای استفاده در بلاک چین های عمومی فراهم می کند.

همه شرکت کنندگان در شبکه با رأی دادن به مجموعه "نمایندگان" انتخاب می کنند.

قدرت رأی شرکت کنندگان در شبکه متناسب با مقدار ارز رمزنگاری شده آن است.

هر چه بیشتر داشته باشید ، اهمیت رای شما بیشتر است.

پس از انتخاب ، آنها گروهی را تشکیل می دهند که اجازه می دهد پروتکل BFT پیاده سازی شود.

این بدان دلیل است که کمیت آنها تعریف شده و محدود است و اعتماد نسبی به آنها وجود دارد.

نمایندگان چرخش رهبرانی را تعیین می کنند که مسئول ایجاد بلوک ها هستند.

این بدان معنی است که هر نماینده در چرخش برای تولید یک بلوک نوبت دارد.

با تشکر از این عمل ، نماینده گفته شده می تواند یک بلوک ایجاد کند و برای آن پاداش دریافت کند.

الگوریتم های اجماعی که به طور گسترده استفاده می شود در جدول زیر 2-1 خلاصه شده است.

همانطور که در جدول 2-1 مشاهده می کنیم ، هیچ راه حل واحدی وجود ندارد و این به آنچه در سیستم خود به دنبال آن هستیم بستگی خواهد داشت.

به عنوان مثال ، بیت کوین علی رغم اینکه یکی از شناخته شده ترین ها است که از الگوریتم POW استفاده می کند ، مصرف انرژی بالا و معاملات بسیار پایین در ثانیه را به ما ارائه می دهد.

از طرف دیگر ، DPOS نرخ بالایی از معاملات در ثانیه و مصرف انرژی بسیار کم را به ما ارائه می دهد.

با این حال ، این سیستمی است که به دلیل سیستم رأی گیری ، متمرکز می شود.

اگزونوم:

پروژه اگزونوم [10] یک چارچوب منبع باز برای ایجاد برنامه های بلاکچین بیش از فناوری اگزونوم است که توسط شرکت Bitfury اجرا شده است.

می تواند برای ایجاد دفترهای توزیع شده با استفاده از رمزنگاری استفاده شود.

این یک بلاکچین مجاز است ، جایی که تمام مجموعه گره های بلاکچین توسط یک شرکت یا کنسرسیوم شناخته شده و کنترل می شوند.

این زبان مبتنی بر زبان برنامه نویسی Rust [11] است که یکی از امن ترین زبان های برنامه نویسی محسوب می شود.

Exonum یک چارچوب است. این یک بلاکچین آماده نیست (مانند بیت کوین).

در عوض ، می توان از Exonum برای ایجاد بلاکچین استفاده کرد ، درست مانند اینکه می توان از برخی از چارچوب ها برای ایجاد برنامه های وب استفاده کرد.

بنابراین هیچ ارز رمزنگاری مربوط به آن بلاکچین وجود ندارد ، بنابراین هیچ هزینه ای برای اضافه کردن یک بلاک به بلاکچین وجود ندارد.

سپس با Exonum ، چندین سرویس مختلف ، نقاط پایانی ، مشتریهای سبک و حتی لنگر انداختن بیت کوین برای ذخیره وضعیت واقعی بلاکچین در یک محیط عمومی به ارمغان می آورند.

در بخشهای زیر ، بیشترین جزئیات مربوط به الگوریتم اجماع استفاده شده در Exonum ، که مبتنی بر الگوریتم PBFT است ، ارائه شده است.

برای شرح دقیق تر و گسترده تر ، ما خواننده را به مستندات Exonum ارجاع می دهیم [12].

3-1- بررسی اجمالی الگوریتم:

در این بخش ، ما ابتدا مفاهیم اصلی مورد نیاز برای درک الگوریتم و سپس توضیحات قبلی را توضیح می دهیم.

سه نوع گره وجود دارد:

* - گره کامل:

که گره ای است که حالت کامل را در بلاکچین ذخیره می کند.

همچنین می تواند معاملات را دریافت کند یا به گره های دیگر کمک کند تا به ارتفاع واقعی بلاکچین برسند.

* - گره اعتبارسنج:

کدام گره ها مسئول پیشنهاد بلوک های جدید شرکت کننده در الگوریتم اجماع هستند.

* - گره رهبر:

کدام یک از گره های اعتبارسنجی است که مسئولیت پیشنهاد یک بلوک جدید برای ارسال یک پیام پیشنهادی جدید را دارد.

بلاکچین مجموعه ای از بلوک های مرتبط است.

هر بلوکی که تولید می شود برابر با قد بلاکچین است.

بنابراین ، اگر بگوییم که اکنون در 10 = ارتفاع هستیم ، منظور ما این است که بلاکچین از قبل دارای 9 بلوک متعهد است.

دورها پله هایی در یک ارتفاع با هدف پذیرش بلوک هستند.

در هر دور ، ما یک رهبر داریم که یک پیشنهاد بلوک ایجاد می کند و این باید به دنبال الگوریتم اجماع توسط سایر گره های معتبر پذیرفته شود.

اگر این امر محقق نشود ، ما به سمت دور جدیدی حرکت می کنیم که ایجاد تغییر رهبر و در نتیجه تغییر پیشنهاد بلوک است.

3-1-1- پیامهای اجماع و زمینه های آنها:

الگوریتم اجماع از انواع زیر پیام استفاده می کند:

* - پیام های پیشنهادی ، Prevote و Precommit که هسته اصلی الگوریتم هستند و در مراحل مختلف الگوریتم اجماع استفاده می شوند.

* - پیام هایی را درخواست کنید که برای درخواست داده های از دست رفته از همتایان مورد نیاز است.

19 * - Block Messages ، برای انتقال کل بلوک معاملات به یک گره دیگر که مورد تأخیر است استفاده می شود.

* - پیام های کمکی ، مانند وضعیت و اتصال.

اگر از برخی از فاصله های زمانی ارتفاع گره تغییر نکرده باشد ، گره یک پیام وضعیت را پخش می کند تا به دیگر گره های اعتبارسنج بگوید.

علاوه بر این ، از پیام اتصال برای آگاهی دادن به بلاک چین های دیگر استفاده می شود و می گوید زنده هستید.

مهمترین زمینه هایی که همه پیام ها دارند به شرح زیر است:

* - Validator_id ، ایندکس مربوط به یک اعتبار سنج خاص در پرونده پیکربندی است.

* - ارتفاع ، که ارتفاع مربوط به پیام را نشان می دهد.

* - Round ، که نشان دهنده شماره دور است که پیام به آن مرتبط است.

سپس همه پیام ها فقط در صورتی می توانند پردازش شوند که در دور گفتنی آن قرار بگیریم.

اگر نشان دهنده دور گذشته باشد ، دور ریخته می شود ، اما اگر از دور بعدی باشد ، در یک صف قرار می گیرد.

* - هاش ، که هش پیام است.

برای تأیید اینکه پیام همان پیام ارسال شده است ، استفاده می شود.

همچنین دو پارامتر وجود دارد که بسته به پیام دارند:

پیشنهاد کردن

prev_hash که هش بلوک قبلی و Prevote است.

propose_hash که هش پیام Propose است که Prevote به آن تعلق دارد.

3-1-2- پارامترها:

الگوریتم اجماع مجموعه ای از پارامترهای پیکربندی جهانی را دارد:

* - Propos_timeout ، که مهلت زمانی پیشنهادی پس از شروع یک ارتفاع جدید است.

* - First__round_timeout ، یعنی زمان قبل از شروع دور دوم.

* - Status_timeout ، دوره ای بین پیام وضعیت با اطلاعات مربوط به ارتفاع فعلی است.

علاوه بر این ، مجموعه پارامترهای گره ، اگر بر روی مهمترین مواردی که داریم تمرکز کنیم:

* - ارتفاع_جاری که ارتفاع فعلی بلاکچین است.

* - صف ، صف پیامهای اجماع (پیشنهاد ، PrevotePrecommit) از ارتفاع یا دور آینده.

* - پروپوزال ، که مجموعه ای از پیشنهادات بلوک دانستنی است * - Locked_round ، دورانی است که در آن گره روی پیشنهادی قفل می شود.

* - Transaction_pool که مجموعه تراکنشی است که هنوز به بلاکچین اضافه نشده است.

3-1-3- اثبات قفل:

حالت اثبات قفل (PoL) زمانی حاصل می شود که گره ای بیش از 2/3 پیام های رایج را دریافت کند ، در مورد تعداد کل اعتبار سنج ها ، برای همان پیشنهاد در دور فعلی و در ارتفاع فعلی زنجیره بلوک.

یک گره نمی تواند بیش از یک حالت PoL داشته باشد.

بنابراین ، اگر گره پیامی دریافت کند که گره دیگری PoL را با دور پایین نشان دهد ، گره باید این حالت را با PoL جدید جایگزین کند.

3-2- خصوصیات الگوریتم:

هر الگوریتم مبتنی بر PBFT به ویژگی های زیر متکی است:

* - هر گره اعتبارسنج یا در بلوک پیدایش نوشته می شود یا از طریق اجماع انتخاب می شود.

* - اعتبار سنج ها و شبکه تا حدی همزمان هستند.

سپس می توان فرض کرد که بیشتر پیام ها بلافاصله پردازش می شوند.

* - N ≥ 3f + 1 ، جایی که N تعداد کل گره های اعتبارسنج و f تعداد گره های بیزانسی است.

سپس ، اگر تعداد کل گره های اعتبارسنج را تنظیم کنیم ، می توانیم حداکثر تعداد گره های بیزانسی را که بلاکچین می تواند با آنها کنار بیاید محاسبه کنیم.

* - عدم وجود چنگال.

اگر برخی از گره های غیر بیزانسی در ارتفاع معینی بلوکی به زنجیره بلوک متصل کنند ، هیچ گره دیگری نمی تواند بلوک دیگری را در آن ارتفاع اضافه کند.

3-3- شرح الگوریتم:

در این بخش ، ما قصد داریم نحوه کار الگوریتم PBFT در مورد Exonum را توضیح دهیم.

ما می توانیم با نمودار بلوکی زیر در شکل 3-1 نمای عمیقی داشته باشیم.

این طرح روند افزودن یک بلاک جدید به زنجیره بلوک را در 3 مرحله توصیف می کند که در ادامه توضیح داده می شود.

3-3-1- پیشنهاد انتخاب و پخش رهبر:

هنگامی که ارتفاع یا دور بلاکچین جدید در آن شروع می شود ، رهبر تغییر می کند.

رهبر با فرمول زیر انتخاب می شود:

leader_id = (current_height + current_round)٪ validator_count که اعتبارسنج با leader_id همان پیشنهادی برای یک بلوک جدید خواهد بود.

این امر به منظور دستیابی به درجه ای از مقاومت در برابر سانسور (هرگونه معامله صحیحی که از هر معتبر پخش می شود در نهایت تعهد خواهد شد) و شکل ضعیف از کیفیت زنجیره ای (هر بلوک مرتکب شده متناوباً توسط اعتبارسنجان غیر بیزانسی ارائه می شود) [13].

بنابراین اگر در ارتفاع 10 ، در دور 5 قرار داشته باشیم و بدانیم که چهار گره اعتبارسنج داریم ، می توانیم به راحتی اعتبار سنج رهبر را بشناسیم:

leaderid = (10 + 5)٪ 4 = 15٪ 4 = 3.

وقتی رهبر را برای دور انتخاب کردیم ، پخش پیام پیشنهادی عهده دار آن خواهد بود.

پیام Propose شامل مجموعه ای از معاملات است که باید در بلوک بعدی گنجانده شود.

این پیام فقط شامل هش تراکنش ها است تا تأیید تراکنش ها کارآمدتر و سریعتر باشد زیرا از محاسبات غیرضروری جلوگیری می کند.

هر گره اعتبارسنجی که این پیام پیشنهاد را دریافت کند ، می تواند هر معامله از دست رفته را درخواست کند.

3-3-2- مرحله رای گیری:

هنگامی که یک گره اعتبارسنج پیام پیشنهادی را از گره رهبر دریافت می کند ، می تواند پیام Prevote را پخش کند.

prevote به این معنی است که گره اعتبارسنج با موفقیت تأیید می کند که پیشنهاد سازگار است (هر فیلد صحیح است و قبلاً توسط گره شناخته شده است) و تمام تراکنش ها را در آن مشخص کرده است.

پس از دریافت حداقل & gt؛ 2/3 پیام ها را با توجه به تعداد کل اعتبار سنجی ها پیش نمایش دهید ، این نشان دهنده قفل شدن (3-1-3 اثبات قفل) است و به مرحله بعدی منتقل می شود و پیام Precommit را پخش می کند.

3-3-3- مرحله مقدماتی:

هنگامی که یک گره تأیید کننده پیام Precommit را دریافت می کند ، می داند که گره دیگری در شبکه وجود دارد که & gt؛ 2/3 پیام های رایج را انتخاب کنید.

سپس ، می تواند PrevotesRequest را به این گره ارسال کند تا به lock_round منتقل شود (بررسی می کند که همه پیام های Prevotes صحیح هستند).

پس از انتقال به Lock_round ، قبل از پخش پیام ، کلیه معاملات مشخص شده در پیشنهاد رأی داده شده را اجرا می کند.

سپس پیام Precommit نتیجه اجرای پیشنهاد را به صورت یک هش حالت جدید در بر می گیرد [14].

پیام Precommit بیان می کند که گره تراکنش را انجام داده است و آماده است بلوک را به زنجیره بلوک اضافه کند.

با این حال ، قبل از آن ، به آرا sup اکثریت & gt؛ 2/3 پیام های پیش ارسال را ببینید تا ببینید که معتبران دیگر در مورد موضوع فقط برای اطمینان از صحبت می کنند.

در صورت کسب آرای برتر از اکثریت ، می تواند بلوک را مرتکب شده و به ارتفاع بعدی برسد.

گره های دیگر نیز ممکن است به این حالت برسند ، اما ممکن است به چندین دلیل پیام ها را دریافت نکرده باشند.

اگر اینگونه نباشد ، هنگامی که از گره پیغامی دریافت می کنند که اگر مرتکب بلوک شده اند ، از آنها می خواهند بلوک را ارسال کنند تا بتوانند به ارتفاع گره دیگر برسند.

آنها پس از دریافت ، بلوک جدید را تأیید کرده و نسخه بلاکچینی را که ذخیره کرده اند به روز می کنند.

3-4- ویژگی های متمایز:

Exonum مبتنی بر الگوریتم PBFT است اما ویژگی هایی دارد که آن را از سایر رویکردهای مبتنی بر PBFT متفاوت می کند.

3-4-1- دورهای نامحدود:

در Exonum ، دورها زمان شروع مشخصی دارند اما زمان پایان مشخص ندارند (دور فقط با دریافت بلوک بعدی به پایان می رسد).

وقتی اتصال شبکه بین اعتبار سنج ها ناپایدار است ، این امر به کاهش تاخیر کمک می کند.

با تشکر از نحوه افزایش مهلت زمانی ، که در بخش 5-5 شرح داده خواهد شد.

نتایج ، باعث می شود که دورها طولانی تر و طولانی تر شوند.

بنابراین ، در مواردی که شبکه بسیار ناپایدار است ، گره ها به اندازه کافی منتظر می مانند و می توانند پیام های لازم را برای اکثر 2/3 دریافت کنند و زنجیره بلوک به انجام بلوک ادامه می دهد.

در سناریویی که این مهلت زمانی افزایش پیدا نکند ، اگر شبکه ناپایدار بماند هرگز نمی تواند یک بلوک را مرتب کند تا ثبات پیدا کند.

3-4-2- تقسیم کار:

در Exonum ، پیام Propose فقط شامل هش های معاملات است.

معاملات فقط هنگامی انجام می شوند که گره ای روی یک پیشنهاد قفل شود.

تأخیر در لحظه پردازش معاملات ، تأثیر منفی گره های مخرب را کاهش می دهد.

اگر معاملات با دریافت پیشنهادی از گره انجام شود و درنهایت پیشنهاد از کار بیفتد ، اتلاف وقت بود.

علاوه بر این ، فرآیند معامله را در بین مراحل زیر تقسیم می کند:

در مرحله اول ، مرحله پیشین ، اعتبارسنجها فقط بررسی می کنند که آیا همه تراکنش های پیشنهادی صحیح بوده و قبلاً در مجموعه معاملات تأیید نشده توسط این گره ذخیره شده اند.

گره ها هنگام دریافت معامله تأیید کردند ، زیرا هیچ معامله نادرستی را ذخیره نمی کنند.

در مرحله دوم ، مرحله Precommit ، اعتبارسنج ها معاملات را به حالت بلاکچین فعلی اعمال می کنند.

در صورت انجام آن ، اعتبار سنج ها اطمینان حاصل می کنند که پس از اعمال معاملات در پیشنهاد ، به همان نتایج (هش بلوک) رسیده اند.

ارزش افزوده Exonum با توجه به سایر رویکردها این است که اگر یک اعتبارسنج بیزانسی پیشنهادی را با معاملات مختلف یا به ترتیب دیگر ارائه دهد ، نیازی به بررسی ترتیب معاملات ندارند.

هنگام دریافت پیام پیش فرض از گره دیگر ، propose_hash متفاوت خواهد بود ، بنابراین پیام های قبلی را کنار می گذارند و منتظر پیشبرد دور هستند.

با این کار ، تأثیر منفی گره بیزانسی کاهش می یابد ، زیرا گره ها نیازی به انجام هر نوع بررسی ندارند.

3-4-3- الگوریتم درخواست ها:

در این حالت ، اگزونوم متعهد به الگوریتمی بسیار کارآمدتر هنگام بازیابی اطلاعات از گره ای است که به روز نیست.

Exonum الگوریتمی متفاوت از الگوریتم شایعه ایجاد می کند ، معروف به الگوریتم شایعات [15] ، که از گره های دیگر نظیر می پرسد چه اطلاعاتی دارند و سپس از یکی که اطلاعات بیشتری در دسترس دارد ، می پرسد که بسیاری دیگر از بلاکچین استفاده می کند.

در این حالت ، مزیت این است که اطلاعات از پیامهای اجماعی که گره دریافت می کند ، آموخته و استخراج می شود تا تلاش شود از بهترین همتایان اعتبار سنج درخواست شود.

الگوریتم در مقاله سفید Exonum ([13]) به تفصیل آورده شده است.

نئو:

Neo [16] یک شبکه توزیع شده است که از فناوری بلاکچین و هویت دیجیتال [17] برای دیجیتالی کردن دارایی ها و مدیریت خودکار دارایی های دیجیتالی از طریق قراردادهای هوشمند استفاده می کند.

شبکه Neo دارای دو نشانه NEO با حداکثر 100 میلیون نشانه است که نشان دهنده حق مدیریت بلاکچین Neo و GAS نمایندگی حق استفاده از Neo Blockchain با محدودیت 100 میلیون تومانی است.

شبکه نئو برای هر نوع عملیات و ذخیره توکن هزینه دریافت می کند.

Neo بر اجرای NeoContracts متمرکز است که نوعی قرارداد از طریق اینترنت است.

NeoContracts به هر برنامه رایانه ای اشاره دارد که می تواند به طور خودکار شرایط قرارداد از قبل برنامه ریزی شده خود را اجرا کند.

آنها همچنین NeoQS را توسعه داده اند که مکانیزم رمزنگاری مبتنی بر شبکه برای مقابله با رایانه های کوانتومی آینده است.

نئو الگوریتم اجماع dBFT (تحمل گسل بیزانسی تفویض شده) را بر اساس الگوریتم تحمل خطای بیزانس (PBFT) پیشنهاد می کند.

الگوریتم dBFT مجموعه اعتبارسنج ها را با توجه به رأی گیری بلاکچین در زمان واقعی تعیین می کند ، که به طور موثر بازده الگوریتم را بهبود می بخشد ، باعث صرفه جویی در وقت در تولید بلوک و تأیید تراکنش می شود.

این تشکر می کند که اگر مشکلی در گره های اعتبارسنج وجود داشته باشد ، مانند قطع یا گره های بیزانس ، به راحتی قابل تغییر هستند.

در بخش های بعدی ، ما در مورد چگونگی اجرای آن در شبکه بلاک چین Neo بحث خواهیم کرد.

برای توضیح بیشتر ، ما خواننده را به مستندات Neo 2-x ارجاع می دهیم [18].

4-1- بررسی اجمالی الگوریتم:

این الگوریتم امنیت و همچنین قابلیت استفاده را تضمین می کند.

برای ثبت وضعیت اجماع فعلی ، همه گره های اجماع باید یک جدول حالت را حفظ کنند.

داده های مورد استفاده برای اجماع از ابتدا تا انتها ، نمای (View) نامیده می شود.

اگر در نمای فعلی نتوان به اجماع رسید ، نیاز به تغییر مشاهده است.

ما هر View را با یک عدد v مشخص می کنیم ، از 0 شروع می کنیم و ممکن است تا رسیدن به اجماع بدون محدودیت افزایش یابد.

در این حالت ، انواع مختلفی از گره ها و اعتبار سنج ها داریم:

* - Validator Node یا Consensus Node ، گره ای است که می تواند در الگوریتم اجماع شرکت کند.

* - گره نرمال ، گره هایی هستند که فقط می توانند تراکنش ها را به بلاکچین ارسال کنند.

* - بلندگو یا اولیه ، که رهبر دور الگوریتم اجماع است.

* - Delegate یا BackUp که گره های مسئول رأی دادن در مراحل اجماع هستند.

* - کاندید ، گره هایی که برای انتخاب اعتبار سنج معرفی می شوند علاوه بر این ، برخی از مهمترین پیامهای استفاده شده در الگوریتم را لیست می کنیم.

* - درخواست را تهیه کنید ، که توسط رهبر دور ارسال می شود.

* - Prepare Response ، پیامی است که گره های اعتبار سنج در صورت درست بودن Prepare Request ، آن را پخش می کنند.

* - تعهد ، که پیامی است برای اطلاع از اینکه مقادیر کافی پاسخ آماده جمع آوری شده است.

* - تغییر مشاهده ، پیام برای درخواست تلاش برای تغییر مشاهده.

4-2- شرح الگوریتم:

نگاهی گذرا به الگوریتم در شکل زیر 4-1 مشاهده می شود.

شکل 4-1 بررسی اجمالی الگوریتم نئو فرایند اجماع در سه مرحله انجام می شود:

4-2-1- درخواست انتخاب و پخش رهبر:

هنگامی که به یک ارتفاع جدید حرکت کردیم ، در هر دور جدید به یک رهبر نیاز داریم.

در این حالت ، رهبر اسپیکر یا Primary نامیده می شود و الگوریتم زیر آن را تعیین می کند:

اسپیکر = (ارتفاع - نمایش) حالت N.

جایی که N تعداد گره های اعتبارسنج است و نمایش همیشه از 0 شروع می شود.

هنگامی که بلندگو انتخاب شد ، پیام Prepare Request را برای سایر گره های اعتبارسنج پخش می کند.

این Prepare Request متشکل از هش تراکنش های انجام شده در حافظه حافظه رهبر است.

4-2-2- مرحله پاسخ را آماده کنید:

هنگامی که گره های Delegate پیام Prepare Request را دریافت می کنند ، آنها بررسی می کنند که آیا همه تراکنش ها جمع آوری شده است و هیچ خطایی در هر یک از آنها یافت نمی شود.

در این صورت ، آنها پیام Prepare Response را پخش می کنند.

اگر قبل از اتمام زمان پیام آماده سازی درخواست وجود نداشته باشد یا معاملات صحیح نباشد ، این پیام پیام View View را پخش می کند.

وقتی گره اعتبارسنج به اندازه کافی پیامهای Prepare Response را جمع آوری می کند ، به این معنی که بیش از 2/3 پیام را با توجه به مقدار کل گره های اعتبارسنج دریافت می کند ، یک پیام تعهد را پخش می کند.

4-2-3- مرحله انجام:

هنگامی که گره اعتبارسنج ، بلندگو یا نماینده ، بیش از 2/3 پیام متعه دریافت می کند ، یک بلوک جدید ایجاد می کند و آن را پخش می کند.

اگر پیام های تعهد به اندازه کافی قبل از زمان مهلت وجود ندارد ، یک پیام ChangeView را پخش کنید.

4-2-4- تغییر نمای:

مهلت مشاهده تغییر با استفاده از فرمول زیر 2v + 1 ∗ Tblock تنظیم می شود که در آن می توان Tblock را با هر پیکربندی گره اعتبار سنج تنظیم کرد.

سپس ، اگر تأیید تراکنش ناموفق باشد یا پیام کافی وجود نداشته باشد ، این درخواست ایجاد می شود.

با این حال ، مواردی وجود دارد که Change View اعمال نخواهد شد.

اگر مجموع گره های دارای ارسال ارسال بیشتر از 2/3 شماره اعتبارسنج باشد یا پیام 2/3 تغییر مشاهده وجود نداشته باشد ، مجبور است که یک پیام درخواست بازیابی توسط این گره ارسال کند.

با این وجود ، اگر پیام های Change View به اندازه کافی وجود داشته باشد ، این نمای محلی را تغییر می دهد ، زمینه اجماع محلی جدید را آغاز می کند و سخنران دور بعدی را در این نمای جدید تعیین می کند.

4-3- ویژگی های متمایز:

در این بخش ، ما قصد داریم توضیح دهیم که ویژگی های اصلی Neo کدام است که با بلاکچین های دیگر متفاوت است.

4-3-1- پروتکل حمل و نقل:

هنگامی که یک پیام اجماع وارد شبکه P2P می شود ، مانند پیام های دیگر منتقل می شود.

این بدان دلیل است که گره های اجماع آدرس IP سایر گره های اجماع را ندارند.

گره های اجماع مستقیماً به هم متصل نیستند.

یعنی گره های معمولی نیز می توانند پیام های اجماعی دریافت کنند.

جریان پخش پیام اجماع ساده نیست.

گره های میانی ، که پیام اجماعی دریافت می کنند ، آنها را به گره های دیگر هدایت می کنند.

قبل از این ، گره ها برای همسایگان دعوت نامه می فرستند تا ببینند آیا آنها هنوز اطلاعات موجود در این پیام اجماع را ندارند.

اگر آنها هنوز اطلاعات ندارند ، آنها با دریافت داده ها پاسخ می دهند تا اطلاعات را از پیام پیام دریافت کنند.

این روند مجدداً همان روند را دنبال خواهد کرد تا پیام به گره ای برسد که در اجماع شرکت کند و در نهایت به اجماع برسد.

4-3-2- رأی گیری:

روند رای گیری وجود دارد که در آن هر گره می تواند بخشی از اجماع باشد.

ایده این است که هر گره ای می تواند معامله ای را شروع کند تا بخواهد کاندید شود (گره اعتبار سنجی) ، به شرطی که بخواهد هزینه را بپردازد ، و هر کسی که دارای Neo باشد می تواند به هر نامزدی رای دهد تا در مجموعه گره های اجماع و تعداد اجماعی که آن را تشکیل می دهد.

هنگام رأی دادن به نامزدهای تأیید اعتبار ، در واقع شامل دو بخش است:

تعداد گره های اجماع و لیست نام گره های اجماع.

این یک معامله خاص به نام StateTransaction انجام می شود.

به دنبال یک تابع احتمال گسسته ، که در آن احتمال گره x اجماع با نسبت آرا [آن برابر است [19] ، تعداد گره های اجماع را به عنوان Count محاسبه می کنیم و اعتبار سنجها را از لیست نامزدها که به ترتیب آرا به ترتیب آرا رتبه بندی شده اند ، می گیریم.

وقتی نامزدها کافی نباشند ، اعتبار سنجی های StandbyValidators اضافه می شود.

با این کار ، ما گره های اعتبارسنج جدید را تعیین کرده ایم که این اتفاق نظر بین تمام گره هایی است که دارای Neo هستند.

سنجش عملکرد:

هنگامی که زمینه لازم را برای درک اصول فناوری بلاکچین و به ویژه Exonum و Neo جمع آوری کردیم ، می توانیم عملکردهای این بلاکچین ها را در سناریوهای مختلف با روش عملی تری تجزیه و تحلیل کنیم.

در این فصل ، ما ابزارهای مورد استفاده برای تجزیه و تحلیل آنها و سناریوهای در نظر گرفته شده را شرح می دهیم.

5-1- تنظیم سناریو:

برای ارزیابی عملکرد بلاکچین ، ما یک شبکه آزمایشی با چندین گره در VirtualBox VM (ماشین مجازی) با اوبونتو 19-10 (64 بیت) اجرا می کنیم.

به نوبه خود ، VM بر روی لپ تاپ پردازنده نسل هشتم Intel Core i5-8250U در حال اجرا است و 5 گیگابایت RAM به آن اختصاص داده شده است.

در مجموعه آزمایشات دوم ، از چهار ماشین مجازی استفاده شد که هرکدام از آنها دارای یک گره Exonum بودند و 1-5 گیگابایت RAM به هر کدام اختصاص داده شده بود.

همه ماشین های مجازی از طریق یک شبکه VirtualBox NAT متصل شدند.

ما باید در نظر بگیریم که:

- بیشتر گره هایی که با بلاکچین واقعی کار می کنند حداقل 2 گیگابایت RAM و ترجیحاً 4 گیگابایت RAM دارند.

این بدان معناست که گره های ما در شرایط ایده آل عملکردی نخواهند داشت اما هنوز از نظر عملکرد نتایج خوبی می گیریم.

- طبق توصیه ، Oracle VM VirtualBox توصیه می کند بیش از 65٪ از RAM موجود در سیستم استفاده نکنید.

اگر حافظه آزاد کافی برای سیستم عامل میزبان باقی نماند ، باید شروع به تعویض و اجرا شدن کند کند.

این ممکن است به نوبه خود ، به طرز متناقضی سرعت ماشین مجازی ما را کاهش دهد ، زیرا به منابع سیستم عامل میزبان نیز نیاز دارد.

لپ تاپ ما از نظر تئوری 8 گیگابایت RAM دارد بنابراین نباید بیش از 5-2 گیگابایت RAM داشته باشیم.

در سناریو با 4 ماشین مجازی در واقع ما از 6 گیگابایت استفاده می کنیم که سرعت سیستم را کند می کند.

5-2- شبکه آزمون Exonum:

هر آنچه برای اجرای و آزمایش بلاکچین مورد نیاز است را می توان در اسناد Exonum [12] یافت که در آن جزئیات و جزئیات توضیح داده شده است.

برخی از مشکلات شخصی نصب آن را می توان در پیوست 1 یافت.

Exonum به زبانی بسیار مدرن به نام Rust [11] کدگذاری شده است که علی رغم اینکه برای بسیاری از برنامه نویسان ناشناخته مانده است ، برای چهارمین سال متوالی زبان برنامه نویسی است که در سال 2019 بیشتر مورد علاقه برنامه نویسان قرار گرفته است [20].

Rust در سال 2010 توسط موزیلا پدیدار شد ، و به دنبال زبانی برای کد نویسی بسیار سریع ، در همان سطح C یا C ++ بود ، اما بدون مشکلات مدیریت حافظه این زبان ها ، که باعث افزایش مشکلات مربوط به دسترسی به حافظه و شرایط معیوب در زمان اجرا شده است.

5-3- شبکه تست نئو:

اسناد فعلی Neo به Neo 2-x [21] اشاره دارد ، گرچه اخیراً آنها نسخه 3 را منتشر کرده اند.

x ، که یک نسخه آزمایشی ناپایدار است.

مشکل اصلی که متوجه شدیم این است که بیشتر در چارچوب NET نوشته شده است.

NET یک چارچوب زمان اجرا است که بایت کد MSIL را تفسیر می کند و آن را به دستورالعمل CPU بومی تنظیم می کند [22].

علاوه بر این ، این چارچوب مدیریت حافظه متغیرها را برای شما انجام می دهد.

بنابراین ، همیشه کندتر خواهد بود و به حافظه بسیار بیشتری نسبت به C / C ++ یا سایر زبانهای مدرن مانند Rust ، که کد را مستقیماً به دستورالعملهای CPU بومی وارد می کند ، نیاز دارد.

به همین دلیل ، عملکرد در سناریوهای کم RAM موجود ، بدتر از حد انتظار است.

مزیت این است که برنامه نویسان NET نگران مواردی مانند سرریز بافر نیستند بنابراین محیط بسیار امن تری برای اجرای گره بلاکچین است که در آن بهره برداری از راه دور توسط هکرها یک نگرانی مداوم است.

باید توجه داشت که اسناد و مدارک چندان دوستانه نیستند و ما فقط توانسته ایم چند پارامتر قابل پیکربندی برای اجرای آزمایشات را شناسایی کنیم.

اینها در فصل بعدی 5-5 توضیح داده خواهد شد.

5-4- سناریوها:

ما برای آزمایش عملکرد هر دو بلاکچین سه سناریو مختلف در نظر گرفته ایم:

در اولین مورد ، ما کل بلاکچین را در یک ماشین مجازی اجرا می کنیم ، که در آن همه گره ها با استفاده از رابط loopback ارتباط برقرار می کنند.

ما تعداد اعتبارسنجها را تغییر می دهیم و عملکرد بلاکچین را در حضور تعدادی گره غیرصادق تجزیه و تحلیل می کنیم.

در سناریوی دوم ، ما تحلیل می کنیم که چگونه عملکرد blockchains در حضور گره های اعتبارسنجی خودخواه ، که در الگوریتم اجماع شرکت نمی کنند ، بدتر می شود.

سرانجام ، هدف سوم آزمایش زنجیره بلوک در سناریوی واقع بینانه تر با افزودن تأخیر مشخص به ارتباط بین گره ها است.

برای دستیابی به آن ، ما از چندین ماشین مجازی و برخی هسته های لینوکس استفاده می کنیم.

ما برای افزودن تأخیرها از ابزار tc [23] استفاده می کنیم.

این ابزار برای پیکربندی کنترل ترافیک در هسته لینوکس استفاده می شود.

ما از فیلترهایی استفاده خواهیم کرد که توسط یک qdisc طبقه بندی شده برای تعیین یک بسته در کدام کلاس استفاده می شود.

سپس می توانیم هر گره از درخت tc را به یک رابط شبکه متصل کنیم ، اولویت آن قانون را اضافه کنیم و تعیین کنیم که کدام شرط است) در صورت مطابقت با قانون ، فیلتر (پورت مقصد ، پورت منبع ، حداکثر پهنای باند) را اعمال کنیم.

5-5- نتایج:

در این فصل ، ما نتایج حاصل از تجزیه و تحلیل هر بلاکچین را مورد بحث و تجزیه و تحلیل قرار خواهیم داد و در نهایت مقایسه ای را بین آنها ارائه خواهیم داد.

تمام نتایج زیر با اجرای بلاکچین از ابتدا ، تولید یک بلوک جدید Genesis [24] و رسیدن به حدود دویست بلوک بدست می آید.

با این کار می توان اطمینان حاصل کرد که عمر بلاکچین Exonum به اندازه کافی طولانی است و احتمالاً برخی از اتفاقات خاص رخ داده است.

برای تجزیه و تحلیل ، برخی از بلوک های اول را حذف می کنیم تا از روند همگام سازی همه گره های اعتبارسنجی ، به ویژه آخرین گره هایی که اجرا می کنیم ، جلوگیری کنیم زیرا آنها به ندرت موفق به شرکت در اجماع بلوک های اول می شوند.

نتایج حاصل از مقایسه دو زنجیره بلوک از نظر زمان انجام در سناریوهای مختلف است.

ما می خواهیم تعداد گره های اعتبارسنج ، تعداد گره های اعتبارسنجی بیزانس را تغییر دهیم ، دانستن اینکه گره بیزانسی گره ای است که صادقانه در اجماع شرکت نکند (پیام نمی فرستد ، پیام های مختلفی را به گره های مختلف ارسال می کند ، ارسال می کند پیشنهادهای نادرست.) و تغییر کیفیت شبکه با استفاده از نرخ های مختلف بسته خطا.

5-5-1- محدودیت ها:

همانطور که در بخش 5-1 توضیح داده شد ، منابعی برای اجرای بسیاری از ماشین های مجازی در همان لپ تاپ نداریم.

به همین دلیل ، ما نمی توانیم سناریوها را با مقدار زیادی گره شبیه سازی کنیم.

ابزار Linux kernel tc محدودیت مهمی دارد ، زیرا به دلیل طراحی مسیریابی درخت با استفاده از فیلترها ، ما را تا 6 فیلتر مختلف محدود می کند.

با توجه به اینکه فیلتر به عنوان پیوندی بین یک گره و گره دیگر محاسبه می شود ، به این معنی است که ما فقط می توانیم شش اتصال مختلف داشته باشیم ، به این معنی که ما فقط مجاز به اتصال 4 گره هستیم.

همچنین سعی شده است کشف شود بالاترین تراکنش در ثانیه (tps) که هر بلاک چین می تواند پشتیبانی کند ، کدام است.

سپس می توانیم آن را با آنچه آنها در معیارهایشان به ما اطمینان می دهند مقایسه کنیم و ببینیم که اگرچه ظرفیت محاسباتی کمتری داریم ، اما می توانیم به تعداد tps معقول برسیم و نسبت tps هنگام افزودن گره های بیشتر مشابه آنهاست.

برای تولید این ، باید به نوعی یک نرخ جریان ثابت بالاتر از حد معامله پشتیبانی شده توسط هر گره ایجاد کنیم ، تا ببینیم بلاکچین چگونه بسیاری از تراکنش ها را جذب می کند.

این مورد با Exonum امتحان شده است ، اما به دلیل محدود بودن حافظه RAM موجود ، امکان تولید جریان بیش از 2000 تراکنش به هر گره وجود ندارد ، همانطور که توسط توسعه دهندگان در تصویر سفید آزمایش شده است.

همانطور که در 4-1 الگوریتم اجمالی توضیح داده شده است ، چارچوب NET برای عملکرد صحیح به حافظه و RAM بیشتری نیاز دارد.

بعد از چندین بار تلاش برای اجرای بلاکچین Neo ، متوجه می شوم که وقتی تعداد گره ها از 10 بیشتر باشد ، بلاکچین پایدار نیست و به طور مکرر در رسیدن به اجماع مشکل دارد.

این بدان معنی است که بسته به آزمون ، می توانید زمان متعهد مختلفی را دنبال کنید بدون اینکه روند مشخصی را دنبال کنید.

با توجه به این نتایج پراکنده ، من نتیجه می گیرم که نتیجه گیری معتبر از این آزمون ها درست نیست ، بنابراین برای بلاکچین Neo ، تعداد گره ها به حداکثر 10 گره محدود شده است ، جایی که نتایج بسیار مشابهی را بین تلاش های مختلف حفظ می کند .

5-5-2- Exonum:

همانطور که در بخش 4-1 بررسی اجمالی الگوریتم توضیح داده شده است ، ما قصد داریم عملکرد Exonum را تحت سه سناریو مختلف تجزیه و تحلیل کنیم.

در میان پارامترهای مختلف گره ها که الگوریتم اجماع را تحت تأثیر قرار می دهند ، ما بر روی مواردی که تأثیر بیشتری بر الگوریتم دارند تمرکز خواهیم کرد:

- first_round_timeout (ms) ، که فاصله بین دور واقعی و دورهای بعدی الگوریتم اجماع است.

این پارامتر برای برآورد مقدار مهلت برای دورهای اجماع بعدی به شرح زیر استفاده می شود:

first_round_timeout = first_round_timeout + (r - 1) ∗ round_timeout_incarease جایی که r دور واقعی است و round_timeout_incure افزایش 10٪ از first_round_timeout قبلی است.

- max_propose_timeout (ms) ، یعنی زمانی که رهبر منتظر است تا یک پیشنهاد بلوک جدید را پس از تعهد بلوک به بلاک چین منتقل کند.

- txs_block_limit (Number) ، که حداکثر تراکنش هایی است که می تواند در یک بلوک گنجانده شود.

به منظور سرعت بخشیدن به آن حتی بیشتر ، ما در حال محدود کردن هر بلوک هستیم که فقط شامل یک تراکنش باشد (txs_block_limit = 1).

با استفاده از آن ، ما می توانیم زمان تأیید را کاهش دهیم ، این زمانی است که اعتبارسنجان دیگر برای تأیید اینکه معاملات موجود در پیشنهاد توسط این گره شناخته می شوند ، استفاده می کنند.

هر تست را دو بار تکرار خواهیم کرد:

- پیکربندی اول:

سریعترین امکان در Exonum.

- پیکربندی دوم:

با وقفه هایی مطابق با بلاکچین Neo برای مقایسه قابل اعتماد تر.

5-5-2-1- سریعترین زمان برای ارتکاب:

در این آزمون ، ما می خواهیم سرعت بلاکچین را از نظر زمان انجام تجزیه و تحلیل کنیم.

زمان تعهد به عنوان فاصله زمانی بین پذیرفتن بلوک زنجیره بلوک و بلوک بعدی شناخته می شود ، با توجه به اینکه هر بلوک حداقل یک معامله معتبر را شامل می شود.

برای این آزمون ، ما آن را در یک سناریوی ماشین مجازی ارزیابی می کنیم و تعداد اعتبار سنجی که در اجماع شرکت می کنند را از 4 به 16 افزایش می دهیم که حداکثر توصیه شده است [25].

برای دستیابی به سریعترین سناریو ، ما می خواهیم حداقل مقدار ممکن را در هر دو پارامتر تنظیم کنیم.

پس از چند آزمایش ، مشاهده شده است که با first_round_tiemout & lt؛ 1000 میلی ثانیه بلاکچین خیلی سریع پیش می رود و باعث می شود هر گره خیلی زود به دور جدیدی صعود کند و باعث کاهش عملکرد زنجیره بلوک شود.

max_propose_timeout کمترین خواهد بود زیرا ما در سریعترین سناریو ممکن هستیم.

بنابراین سرانجام ، ما پارامترها را به صورت first_round_timeout = 1000 و max_propose_timeout = 0 تنظیم می کنیم تا از انتظار رهبر برای پیشنهاد بلوک جدید جلوگیری کنیم.

شکل 5-1 زمان تعهد در مقابل تعداد گره های اعتبارسنج (پیکربندی اول) شکل 5-1 زمان تعهد را به عنوان تابعی از تعداد اعتبارسنج نشان می دهد.

مشاهده می شود که ، به طور متوسط ​​، زمان انجام با وجود افزایش تعداد گره های اعتبارسنجی ، از 82 میلی ثانیه برای 4 گره به تقریباً 350 میلی ثانیه با استفاده از 16 گره ، به طور قابل توجهی افزایش نمی یابد.

این را می توان به صورت افزایش خطی مدل سازی کرد.

همیشه یک دور تقریباً کامل وجود دارد ، جایی که همه گره ها موفق به شرکت همزمان می شوند و خیلی سریع متعهد می شوند.

از طرف دیگر ، ما همچنین یکی داریم که چندین گره کمی پشت سر گذاشته شده و تاخیر زیادی داریم.

باید بخاطر داشته باشیم که شبکه به دلیل مهلت زمانی تعیین شده بسیار سریع است و همه آنها رم یکسانی دارند و باعث می شود یک تعهد طولانی تر شود.

بنابراین اگر این وضعیت را همزمان در چندین گره داشته باشیم ، این مقادیر حداکثر را شروع می کنیم که با داشتن 16 گره ، ما از 7 گره بیش از یک ثانیه طول می کشد.

بدیهی است که هر دو مورد به دفعات زیاد اتفاق نمی افتد ، زیرا در غیر این صورت میانگین به شدت تحت تأثیر قرار می گیرد.

همانطور که در بخش 5-5-1 محدودیت ها ذکر شد ، ما اکنون آزمایش ها را با first_round_timeout = 2000 و max_propose_timeout = 1000 تکرار می کنیم تا اجرای مشابه بلاکچین مشابه Neo داشته باشد.

شکل 5-2 زمان تعهد در مقابل تعداد گره های اعتبارسنج (پیکربندی دوم) در شکل 5-2 ، می بینیم که مقدار متوسط ​​به دلیل مهلت انتظار یک ثانیه بالاتر از سطح یک ثانیه افزایش یافته است.

رفتار بلاکچین از نظر میانگین زمان نسبت به مورد قبلی تقریباً یکسان است. شکل 5-1.

با این حال ، رفتار کلی ما می توانیم ببینیم که ، در مورد حداکثر ، این فراتر از 100 میلی ثانیه با توجه به مقدار متوسط ​​تفاوت ندارد ، که باعث می شود بلاکچین با عملکرد بهتری عمل کند.

در حالت قبلی ، مقادیر حداکثر فاصله متوسط ​​از مقدار متوسط ​​است.

5-5-2-2- زمان انجام گره های مخرب:

در این تست آنچه که ما سعی می کنیم بررسی کنیم تأثیر برخی از گره های مخرب در زمان انجام است.

همانند بخش قبل ، ما تعداد اعتبارسنجها را از 4 به 16 مورد افزایش خواهیم داد ، همه در یک ماشین مجازی کار می کنند.

برای هر مورد ، ما ضمن اطمینان از دستیابی به اتفاق نظر ، تعداد گره های غیر صادق را که ممکن است قطع کنیم.

دوباره ، first_round_timeout = 1000 و max_propose_timeout = 0 را تنظیم خواهیم کرد. در شکل 5-3 ، بدون توجه به تعداد گره ها ، می توان روند مشابه زمان انجام را مشاهده کرد.

در حضور دو یا چند گره بیزانسی ، در مورد تعداد کمی اعتبار سنج ، رویداد رهبر بودن یک گره بیزانسی بیشتر از مورد بزرگ اعتبار سنج اتفاق می افتد.

با تعداد زیادی اعتبار سنج ، زنجیره بلوک کندتر است و سپس دوره های زمانی که یک گره بیزانسی رهبر است ، کوچکتر هستند.

منطقی است که وقتی مجموعه اعتبار سنج ها کوتاه باشند بیشترین تأثیر را می گذارند.

ما همچنین باید یادآوری کنیم که بسته به تعداد اعتبارسنجها ، از داشتن گره های بیزانس بیشتر پشتیبانی می کند.

به عنوان مثال ، در مورد شبکه ای با 10 گره ، ما فقط می توانیم حداکثر 3 گره بیزانس داشته باشیم.

این بدان دلیل است که الگوریتم PBFT باید حداقل 2/3 گره صادق داشته باشد.

بنابراین ، برای 10 گره ، متوجه می شویم که باید حداقل ⌈3⌉ = ،66،6666⌉ = 7- داشته باشد. بنابراین ، در این سناریو ، می توانیم 1 ، 2 و حداکثر 3 گره بیزانسی داشته باشیم.

اکنون آزمایشات را با first_round_timeout = 2000 و max_propose_timeout = 1000 تکرار می کنیم تا استقرار مشابه بلاکچین را با Neo داشته باشیم.

در شکل 5-4 ، می توان مشاهده کرد که گره های بیزانس اکنون تأثیر بیشتری در میانگین زمان انجام کل دارند.

در مقایسه با شکل 5-3 ، اکنون که 1 و 2 ثانیه زمان انتظار اضافی داریم تا به مرحله بعد برویم ، با حضور گره های بیزانس عملکرد بلاکچین را بدتر می کند.

از حدود 1 ثانیه که سه بلاکچین بدون هیچ گره بیزانسی کار می کنند تا وقتی دو گره بیزانس وجود دارد ، نیم ثانیه اضافه کنیم.

اگر روند آن را مشاهده کنیم ، قابل پیش بینی است که برای یک مجموعه اعتبارسنج بالاتر ، در زمان حضور گره های بیزانس زمان زیادی را داریم.

به همین دلیل بسیاری از فرایندها برای تغییر گره های اعتبارسنج وجود دارد.

5-5-2-3- زمان تعهد در مقابل نرخ خطای بسته:

تاکنون ما عملکرد بلاکچین را از نظر زمان تعهد ارزیابی کرده ایم ، در یک سناریوی ایده آل که گره ها مستقیماً به هم متصل شده اند و هیچ تأخیری وجود ندارد یا بسته تلفاتی در ارتباطات آنها وجود ندارد.

در این بخش ، هدف ما ارزیابی تأثیر میزان خطای بسته در زمان انجام است.

به منظور شبیه سازی یک شبکه گسترده در سراسر جهان با تأخیرهای واقع بینانه ، ما از ابزاری که شبکه Wonder Network [26] ارائه کرده است استفاده کرده ایم که شبکه جهانی سرورها را در اختیار ما قرار می دهد و از آنها برای تهیه آزمایش شبکه استفاده می کند [27].

سپس ما یک گره را در مکان های مختلف ، پراکنده در سراسر جهان ، پیدا خواهیم کرد.

یکی در هر قاره:

اروپا ، آمریکا ، اقیانوسیه و آسیا شکل 5-5.

در شکل 5-5 ، می توانیم ببینیم که کدام تأخیرها گره های ما را دارند.

به عنوان مثال ، اگر در گره واقع در فرانکفورت قرار بگیریم ، 146 میلی ثانیه تأخیر با سانفرانسیسکو ، 275 میلی ثانیه تأخیر با گره در سیدنی و 258.07 میلی ثانیه با دیگری در توکیو خواهیم داشت.

همانطور که می بینیم ، پیوندها در هر دو جهت تقریباً تاخیر یکسانی دارند و ما تقریباً آن را به میلی ثانیه برابر می رسانیم.

برای این تست ها ، ما از چهار ماشین مجازی متصل شده از طریق NAT-Network استفاده خواهیم کرد.

ما افزایش خواهیم داد نرخ خطای بسته (PER) عملکرد شبکه را از نظر زمان انجام انجام می دهد.

پس از انجام برخی آزمایش ها با استفاده از سریعترین مقادیر ممکن (first_round_timeout = 1000 و propose_timeout = 0) ، برخی از مشکلات هماهنگ سازی را در میان گره ها مشاهده می کنیم ، به این دلیل که مقادیر first_round_timeout و تأخیر پیوند بسیار شبیه به هم هستند و آنها به درستی کار نمی کنند.

به طور مداوم هماهنگی بین آنها برقرار بود.

برای پایداری بیشتر شبکه ، اولین_راست_تمام را به 3000 میلی ثانیه افزایش می دهیم.

* از این مرحله به بعد ، گره ها شروع به از دست دادن هماهنگ سازی می کنند و برخی از آنها برای رسیدن به دور فعلی بلاکچین باید از همتایان خود اطلاعات بخواهند.

در شکل 5-6 ، ما می توانیم مشاهده کنیم که ، همانطور که انتظار می رود ، عملکرد blockchain با افزایش نرخ از دست دادن بسته شروع به کاهش می کند.

از 35٪ PER به بعد ، حداکثر زمان ارتکاب به طور قابل توجهی بالا می رود ، از 3 ثانیه به بیش از 14 ثانیه که PER بیشتر از 45٪ باشد.

حتی این ، میانگین کلی زمان انجام تعهد بیش از حد تخریب نمی شود.

حداکثر تا PER 35٪ ، که می تواند زیاد در نظر گرفته شود ، شبکه همچنان می تواند در کمتر از یک ثانیه متعهد شود.

علاوه بر این ، در صورت رفتن با PER بالاتر ، می توانیم در یک شبکه 60٪ PER در کمتر از شش ثانیه به اجماع برسیم.

اگر به معامله در هر ثانیه فکر کنیم ، هنگامی که شروع به از دست دادن همگام سازی می کنیم ، یعنی از 35٪ PER ، حداکثر زمان برای انجام بسیار زیاد داریم که برای شبکه کشنده خواهد بود زیرا tps کاهش می یابد و می تواند باعث شود مجموعه معاملات تأیید نشده برای افزایش بیش از حد.

ما آزمون را با first_round_timeout = 2000 و max_propose_timeout = 1000 تکرار می کنیم تا اجرای مشابه blockchain در مورد Neo را داشته باشیم.

* از این مرحله به بعد ، گره ها شروع به از دست دادن همگام سازی می کنند و برخی از آنها برای رسیدن به دور فعلی بلاکچین باید از همتایان خود اطلاعات بخواهند.

در شکل 5-7 ، می بینیم که بلاکچین با مقدار زیادی PER به خوبی کار می کند.

حداکثر تا 40٪ در هر زمان ، میانگین زمان انجام تقریباً بدون تغییر می ماند و وقتی PER بیشتری اضافه می کنیم به سختی افزایش می یابد.

از 45٪ به بعد ، بلاکچین به دلیل از دست رفتن تعداد زیادی پیام ، رفتار خیلی بدی دارد ، اما حتی با این وجود ، ما می توانیم در حدود هفت یا هشت ثانیه برخی بلوک ها را به زنجیره بلوک اضافه کنیم.

کار با این PER بالا برای عملکرد شبکه واقعاً بدتر است ، زیرا واقعاً تراکنش های ثانیه در بلاکچین را کاهش می دهد.

ما همچنین می خواهیم تأکید کنیم که اگر تعداد تراکنش ها را به طور قابل توجهی در هر بلوک افزایش دهیم ، این آزمون می تواند تأثیر بگذارد.

ما در این مورد آزمایش کرده ایم که در هر بلوک فقط یک تراکنش وجود دارد زیرا مدیریت آن دشوار است که سیستم ما تولید تراکنش ها را ثابت نگه دارد.

برای اینکه یک گره بتواند پیشنهاد بلوک گره دیگری را بپذیرد ، باید تمام تراکنش های موجود را بداند و اگر این اتفاق نیفتد ، پیامی صادر می کند که از گره رهبر می خواهد آنها را ارسال کند.

اگر این پیام ها ، و همچنین درخواست یا پیام های پاسخ گم شوند ، گره هرگز نمی تواند پیشنهاد را بپذیرد و پیام قبلی ارسال نمی کند.

بنابراین ، اگر اکثریت وجود نداشته باشد ، دور باید تغییر کند و منجر به تغییر رهبر بعد از اولین_round_timeout ثانیه شود.

با توجه به محدودیت هایی که قبلاً ذکر شد و از نظر RAM برای تولید جریان ثابت برای هر گره بسیار پیچیده بود ، امکان آزمایش وجود ندارد ، بنابراین آنها در فصل 6 نتیجه گیری و توسعه آینده 38 5-5-3- شامل می شوند نئو:

در این بخش ، ما نتایج شبیه سازی بدست آمده برای زنجیره بلوک Neo را ارائه می دهیم.

برای اینکه بتوانیم تجزیه و تحلیل مقایسه ای بین Neo و Exonum انجام دهیم ، همان آزمایشاتی را که با Exonum انجام شده است ، انجام خواهیم داد.

Neo blockchain پارامترهای پیکربندی کمتری را ارائه می دهد ، بنابراین ما عمدتا بر روی یک پارامتر تمرکز کرده ایم:

- SecondsPerBlock (ها) ، یعنی مدت زمانی که رهبر منتظر پخش یک پیشنهاد بلوک جدید است ، پس از انجام یک بلوک جدید.

پس از بازرسی در کد و خواندن دقیق اسناد ، معلوم می شود که مهلت زمانی بیشتری وجود دارد که در کد کد شده است [28].

تشخیص اینکه کدام پارامتر می تواند مربوط و یا مشابه first_round_timeout در Exonum باشد آسان نیست ، اما پس از انجام چندین آزمایش با SecondsPerBlock مختلف ، ما معتقدیم که رابطه بین هر دو می تواند به صورت first_round_tmeout = 2 ∗ SecondsPerBlock بیان شود.

به همین دلیل ، ما Exonum را به ترتیب با استفاده از 1 و 2 ثانیه آزمایش کرده ایم.

5-5-3-1- سریعترین زمان ارتکاب:

برای این تست ، ما با سناریوی یک ماشین مجازی اجرا می کنیم و تعداد اعتبارسنج ها را از 4 به 10 افزایش می دهیم.

برای آزمایش سریعترین زمان انجام تعهد ، ما می خواهیم حداقل مقداری را که می توان تنظیم کرد تنظیم کنیم ، یعنی SecondsPerBlock = 1 ثانیه.

شکل 5-8 عملکرد زنجیره بلوک ما را نشان می دهد.

می بینیم که مقدار متوسط ​​با تعداد گره ها دائماً افزایش می یابد.

از طرف دیگر ، حداقل مقدار بسیار نزدیک به میانگین است ، این بدان معناست که بیشترین زمان بلاکچین در زمان کمتری بلوک می کند ، در حالی که چند مورد داریم که زمان انجام آن می تواند تا دو یا سه ثانیه افزایش یابد.

با دیدن این روند ، استفاده از آن را با بسیاری از گره های اعتبار سنجی توصیه نمی کنیم.

در واقع ، در استقرار واقعی بلاکچین [29] آنها فقط 7 گره اعتبارسنج دارند.

5-5-3-2- زمان انجام گره های مخرب:

در این بخش ، ما چگونگی تأثیر گره بیزانسی بر بلاکچین از نظر زمان انجام را تحلیل می کنیم.

برای این آزمون ، ما قصد داریم از سناریوی مشابهی که با Exonum انجام دادیم استفاده کنیم و گره های بیشتری را که ممکن است متصل باشند قطع کنیم (3/2 تعداد گره ها صادقانه رفتار می کنند).

ما قصد داریم از همان پارامتر SecondsPerBlock = 1 استفاده کنیم و بخاطر داشته باشیم که کدگذاری شده first_round_timeout = 2 ثانیه است.

در شکل 5-9 ، می بینیم که تمایل وجود دارد که وقتی به دو سوم آستانه نزدیک هستیم ، بلاکچین ما بسیار کند می شود.

می توان گفت تقریباً سه برابر کندتر.

در مواردی که گره ای از کار می افتد ، به جز موارد چهار گره ای که در مورد قبلی هستیم ، کاملاً تحمل می کند و عملکرد زنجیره بلوک را مختل نمی کند.

احتمالاً به همین دلیل است که وقتی گره آگهی شکست می خورد ، حالت انتخاب را داریم [30] ، آنها می توانند سریع و با اتفاق نظر آنها را تغییر دهند تا یک میانگین زمان مرتکب ثابت را بدست آورند.

5-5-3-3- زمان تعهد در مقابل نرخ خطای بسته:

در این تست ، ما می خواهیم بلاکچین را در یک محیط واقعی ، که در آن تأخیر وجود دارد و Packet Error Rates وجود دارد ، آزمایش کنیم.

سپس نحوه عملکرد آن را در حضور عوامل شبکه خارجی خواهیم دید.

برای رسیدن به این هدف ، ما چهار گره در سراسر جهان گسترش خواهیم داد:

اروپا ، آمریکا ، اقیانوسیه و آسیا ، با تأخیرهایی که در Exonum انجام دادیم و آنها در شکل 5-5 ذکر شده اند.

* از این مرحله به بعد ، گره ها شروع به از دست دادن همگام سازی می کنند و برخی از آنها برای رسیدن به دور فعلی بلاکچین باید از همتایان خود اطلاعات بخواهند.

در شکل 4-10 ، می بینیم که بلاکچین می تواند تا 25٪ PER را تحمل کند بدون اینکه عملکرد زنجیره بلوکی بدتر شود.

هنگامی که ما به جلو برویم ، بلاکچین شروع به حداکثر زمان واقعی بسیار بالا می کند ، که اگر پشت سر هم اتفاق بیفتد بسیار تأثیر می گذارد زیرا می تواند حدود چهارده ثانیه یا بیشتر دوام داشته باشد.

وقتی از 40٪ PER عبور کنیم ، این بلاکچین درست کار نخواهد کرد.

5-5-4- Exonum vs Neo:

وقت آن است که هر دو Neo و Exonum را با هم مقایسه کنیم و ببینیم بسته به سناریو کدام یک می تواند رفتار بهتری داشته باشد.

باید به یاد داشته باشیم که با طراحی ، Exonum به سرعت اجرا می شود ، اما ما آنها را در همان سناریوی قرار خواهیم داد که تحت همان شرایط اجرا شوند.

بنابراین ، ما تست به آزمون را بررسی خواهیم کرد و خواهیم دید کدام یک از بلاکچین ها بهترین عملکرد را دارند.

5-5-4-1- سریعترین زمان برای ارتکاب:

اگر یکی را در مقابل دیگری روی نمودار قرار دهیم ، موارد زیر را داریم:

در شکل 5-11 به راحتی می توان مشاهده کرد که بلاکچین Exonum سریعتر از Neo Blockchain در همه مجموعه های مختلف گره کار می کند.

این احتمالاً به این دلیل است که Exonum به زبان Rust ساخته شده است که سریعتر از سایر زبانها است.

چارچوب خالص.

بنابراین ، اگر ما در مورد تراکنش ها در ثانیه صحبت کنیم ، Exonum احتمالاً همیشه بلوک های بیشتری نسبت به Neo را می پذیرد.

5-5-4-2- زمان ارتکاب در مقابل گره های مخرب:

اگر یکی را در مقابل دیگری روی نمودار قرار دهیم ، موارد زیر را داریم:

در شکل 5-12 می بینیم که فقط وقتی همه چیز به درستی کار می کند ، به این معنی که همه گره ها صادق هستند و به الگوریتم اجماع کمک می کنند ، تنها موردی است که هر دو بلاکچین تقریباً به یک شکل و با عملکرد بسیار مشابه عمل می کنند.

اگر اعتبار سنج های مجموعه ای بزرگتر و برخی از گره های اعتبارسنجی غیر صادقانه را در نظر بگیریم ، بلاکچین Exonum به مراتب بهتر است ، زیرا زمان تعهد Neo بیش از حد افزایش می یابد.

5-5-4-3- زمان ارتکاب در مقابل نرخ خطای بسته:

اگر هر دو بلاکچین را مقایسه کنیم:

در این آزمون که در شکل 5 نشان داده شده است.

13 ، می توانیم ببینیم که هر دو بلاکچین با استفاده از شبکه هایی با کمتر از 25٪ PER کاملاً کار می کنند.

تا 25٪ در هر سال ، هر دو بلاکچین قادر به ارتکاب با میانگین زمان مشابه هستند و هر دو در بهترین و بدترین موارد رفتارهای مشابهی دارند.

هنگامی که شبکه دارای PER بالا ، بیش از 25٪ باشد ، بلاکچین Exonum قادر به انجام سریعتر زنجیره بلوک است.

این احتمالاً به دلیل الگوریتم درخواست اگزونوم [31] است ، که به طور کارآمد تعیین می کند کدام گره در شبکه اطلاعات مربوط به اجماع را دارد.

دیگران از الگوریتم شایعات استفاده می کنند ، که زمان بیشتری برای محاسبه دارد.

با استفاده از الگوریتم درخواست ، هر گره ای که پشت سر گذاشته شود ، زیرا پیام های قبلی را دریافت نکرده است ، مانند پیام قبلی یا حتی دیگران بلاک شده اند ، می تواند به سرعت و به طور مثر برسد.

5-5-5- نتیجه گیری:

به عنوان نتیجه گیری ، می توان گفت که اگر سرعت در اولویت اصلی است ، استفاده از بلاک Exonum در مقایسه با Neo بسیار بهتر است ، زیرا امکان انجام معاملات بیشتری در ثانیه را فراهم می کند.

همانطور که دیدیم ، اگر شبکه سرعت بالایی از دست دادن بسته داشته باشد یا تعداد بیشتری از گره های اعتبار سنجی را در خود جای دهیم ، بسیار بهتر است.

در این حالت ، هیچ دلیلی برای انتخاب Neo وجود ندارد ، زیرا هر دو به یک رم یکسان و فضای ذخیره سازی مشابه نیاز دارند.

از طرف دیگر ، اگر بخواهیم قابلیت های بیشتری را در زنجیره بلوک خود بگنجانیم ، مانند اینکه بتوانیم آن را بازرسی کنیم یا به سیستمی که قبلاً پیاده سازی شده بستگی دارد و از آن استفاده می کنیم ، Neo می تواند راه حل بهتری باشد.

Neo چند سال قبل از Exonum به بازار آمد و این گروه توسعه دهنده خارجی بیشتری دارد که ویژگی ها و ویژگی های جدید را برنامه نویسی می کنند.

با این حال ، Exonum در مرحله اولیه است ، جایی که افرادی که به شرکت صاحب آن تعلق دارند ، عملاً همه تغییرات و تغییرات را ایجاد می کنند.

در پایان ، برای استفاده از یک فن آوری یا فناوری دیگر ، ارزیابی جنبه های بیشتر از سرعت آن راحت است.

برنامه نویسان NET نگران مواردی مانند سرریز بافر نیستند ، بنابراین نوشتن چیزی مانند گره بلاکچین که بهره برداری از راه دور توسط هکرها یک نگرانی مداوم است بسیار ایمن تر است.

C ++ بسیار سریعتر است و به RAM بسیار کمتری نیاز دارد ، اما برای جلوگیری از ایجاد آسیب پذیری باید بسیار مراقب باشید که تخصیص حافظه خود را مدیریت کنید.

5-6- اصلاح الگوریتم اجماع اگزونوم واقعی:

یکی از اهداف اولیه این پایان نامه ، ایجاد برخی پیشرفت ها در نحوه اتفاق نظر در بلاکچین بود.

کاملاً مشخص است که الگوریتم اجماع هسته اصلی بلاکچین است ، زیرا بدون آن مفهوم دفتر توزیع شده معنایی ندارد.

اگر هر گره ای از زنجیره بلوک بتواند بلوک های مختلف را بپذیرد ، هر کپی از دفترچه بسته به گره صاحب نسخه متفاوت به نظر می رسد.

ثابت شده است که الگوریتم PBFT ، الگوریتمی که اگزونوم بر اساس آن بنا شده است ، در حضور همسالان بیزانس کاملاً کار می کند.

با این وجود ، اگر امکان دستیابی به اتفاق نظر وجود نداشته باشد ، چه اتفاقی می افتد؟ اگر همسالان از هم جدا ، با تاخیر در انتقال زیاد یا رفتار صادقانه ای نداشته باشند ، بلاکچین چه کاری می تواند انجام دهد؟ به نظر می رسد داشتن امکان تغییر اعتبار سنجی گره ، همانطور که در الگوریتم اجماع شرکت می کنند ، می تواند یک ویژگی مهم باشد.

بنابراین ، اجازه دهید به رفتار درونی زنجیره بلوک Exonum نگاهی بیندازیم و ببینیم آیا تغییر گره های اعتبارسنج راه حل عملی است.

س isال این است ، چگونه می توان تعداد اعتبار سنجی هایی را که در الگوریتم اجماع شرکت می کنند ، در صورت عدم توافق اصلاح کرد؟ ما باید در نظر بگیریم که:

- بلاکچین باید قبل از شروع روند تغییر اعتبار سنج ، زمان معینی را منتظر بماند.

ممکن است پیام ها به موقع دریافت نشوند ، زیرا گره ها به دلیل بیش از حد شبکه ، تاخیرهای زیادی را تجربه می کنند (باید در نظر داشته باشیم که گره ها ممکن است در سراسر جهان پخش شوند).

بنابراین ، شبکه باید قبل از تغییر اعتبار سنج ، برای حداقل فاصله زمانی صبر کند.

- مجموعه اعتبارسنجان احتمالی باید از قبل توافق شود.

ما نمی توانیم به عنوان اعتبارسنج جدید گره حسابرس تعیین کنیم ، که حق شرکت در الگوریتم اجماع را ندارد.

سپس ، می توانیم تعداد کل اعتبار سنجی داشته باشیم و در هر فرآیند اجماع ، مجموعه ای از این اعتبارسنجی برای شرکت در آن انتخاب می شوند.

پس از مطالعه دقیق کد و بررسی امکان انجام این تغییرات ، برخی از سالات مطرح شد:

آیا ما واقعاً تمام محدودیت هایی را که باید از آنها آگاه باشیم در نظر گرفته ایم؟ آیا واقعاً انجام این کار بدون نقض خصوصیات بلاکچین امکان پذیر است؟ پس از مطالعه بیشتر ، پاسخ های زیر پیدا شد:

- Exonum و بیشتر کلیه بلاک چین های مبتنی بر PBFT تصور می کنند که یک مدل شبکه تا حدودی همزمان وجود دارد.

در این مدل ، تشخیص اینکه برخی از گره ها کند هستند ، خاموش شده اند یا رفتار نادرستی دارند ، غیر پیش پا افتاده است.

ثابت شده است که استفاده از یک مدل همزمان در زنجیره بلوک مجاز از دقت کمتری برخوردار است ، به این دلیل که برخی از گره ها رفتار غیر صادقانه ای دارند.

بنابراین هیچ راهی آسان برای تعیین فاصله زمانی که وقایع رخ می دهد وجود ندارد.

- تنها و تنها لحظه ای که می توان مجموعه اعتبارسنج را تغییر داد ، هنگام انتقال به ارتفاع جدید بلاکچین است ، زیرا این تنها وضعیتی است که در آن می توان پیکربندی اجماع را تغییر داد ، زیرا طبق تعریف پیکربندی بخشی از حالت بلاکچین است.

حالت این است که در حال حاضر بلاکچین چگونه است (قد ، تعداد اعتبارسنج ، مجموعه اعتبارسنج).

بنابراین ، این حالت باید همیشه در بلندی ارتفاع ما یکسان باشد ، به این معنی که در هر دور در همان ارتفاع قابل تغییر نیست.

این کار انجام می شود ، زیرا به طور خودکار تضمین می کند که مجموعه اعتبارسنج جدید بین همه گره ها توافق شده است.

- دورهای الگوریتم اجماع اگزونوم تا رسیدن به ارتفاع اجماع جدید به پایان نمی رسند.

این بدان معناست که تغییر مجموعه اعتبار سنج هنگامی که به دور X می رسد (جایی که X یک عدد صحیح مثبت است) غیرممکن است.

ممکن است پیام های ارسال نشده در دورهای قبلی وجود داشته باشد که گره هنوز برای پردازش نیاز دارد.

یکی از این پیام ها می تواند منجر به اجماع و رسیدن به اوج جدید شود و می تواند رد شود زیرا گره دیگر اعتبارسنج نیست.

این برای زنده بودن شبکه کشنده است زیرا رد بلوک های معتبر هرگز نباید اتفاق بیفتد.

- مجموعه اعتبارسنج نمی تواند به روشی شبه تصادفی تغییر کند ، زیرا در سرویس سرپرستی رمزگذاری شده است [32] ، که وظیفه اطمینان از تغییر نکردن هیچ چیز در هنگام پیشنهاد بلوک جدید را بدون تأیید آن بر عهده دارد.

علاوه بر این ، برای گرفتن تأیید ، اقدامات ناظر باید توسط اکثریت 2/3 گره های اعتبارسنج مجاز باشد.

- از منظر برنامه نویسی ، اجرای برخی از تغییرات منطقی مطمئناً عملی است ، اما باید به دقت مورد توجه قرار گیرد ، زیرا می تواند باعث شکستن خصوصیات اجماع نظیر ایمنی و / یا سرزندگی شود ، همانطور که قبلا ذکر شد.

نیاز به کنار گذاشتن این فرض است که مجموعه اعتبارسنج در طول یک دوره اجماع ثابت باقی می ماند ، که در چندین مکان از کد استفاده می شود.

- محدودیت های دیگری نیز در خارج از محدوده الگوریتم اجماع وجود دارد.

امکان استقرار قراردادهای هوشمند وجود دارد که به مجموعه اعتبارسنج دسترسی دارند.

بنابراین ، اگر مجموعه اعتبارسنجها تغییر کرده باشد ، برای اجرای آن قراردادها ، کد باید تمام پیشنهادات قبلی بلوک را دوباره اجرا کند و آن اطلاعات را اصلاح کند.

به دلیل محدودیت ها و مسائل زیاد و به بیان کوتاه تر:

الگوریتم اجماع Exonum سناریویی را که در آن مجموعه اعتبار سنج در دور X + 1 تغییر می کند (جایی که X یک عدد صحیح مثبت است) کنترل نمی کند. نیازی به آن نیست و توسعه دهندگان هیچ برنامه ای برای پشتیبانی از چنین سناریویی در آینده ندارند.

نتیجه گیری و توسعه آینده Blockchain یک فناوری نوظهور است که علاوه بر یک سیستم پولی بدون هیچ نهاد مرکزی ، طیف گسترده ای از برنامه ها را ارائه می دهد و توسط بسیاری از شرکت ها به عنوان یک راه حل امن در حال اتخاذ است.

در این کار ما بر روی دو بلاکچین مجاز تمرکز کرده ایم:

Exonum و Neo ، که در آن معاملات اضافه شده به بلاکچین با توافق اعضای خود و با استفاده از الگوریتم مبتنی بر PBFT تأیید می شوند.

پس از تجزیه و تحلیل این بلاکچین ها ، می توان نتیجه گرفت که این فناوری پایمال شرکت ها خواهد بود و بسیاری از آنها به ویژه به دلیل شفافیت و ویژگی های غیرمتمرکز از آن بهره مند خواهند شد.

علاوه بر این ، از آنجا که Exonum به ارز رمزنگاری شده خاصی وابسته نیست ، هزینه های مربوط به معاملات به نوسانات ارز رمزنگاری شده بستگی ندارد ، که این یک مزیت بسیار زیاد نسبت به سایر فناوری ها است.

همانطور که در بالا ذکر شد ، ما دو بلاکچین مختلف را بر اساس PBFT آزمایش کرده ایم:

Exonum و Neo:

اگرچه Exonum از نظر تراکنش در ثانیه سریعتر از Neo است ، مورد دوم دارای ویژگی های اضافی بیشتری است که قبلاً توسعه یافته است.

مشخص شده است که هر دو توانایی مقاومت در برابر شکست بیزانس را دارند ، که به دلیل الگوریتم اتفاق نظر آنها انتظار می رفت.

علاوه بر این ، هر دو می توانند با شبکه های ناپایدار کار کنند.

وقتی این شبکه ها PER پایینی دارند که به 30٪ نمی رسند ، هر دو درست کار می کنند و زمان تعهد خیلی زیاد نمی شود.

با افزایش این نرخ ، از 30٪ ، Exonum قادر است در این سناریو بسیار بهتر کار کند.

در عوض Neo ، اگرچه می توانید به انجام بلوک ادامه دهید ، اما این موارد در مدت زمان طولانی انجام می شود که باعث می شود عملکرد بلاکچین به طور قابل توجهی کاهش یابد.

سرانجام ، از نظر تعداد گره ها ، وقتی گره ها روی دستگاه هایی با ظرفیت محاسباتی کم ، یعنی با رم کم در حدود 2 گیگابایت کار می کنند ، شبکه Exonum به دلیل زبان Rust قادر به کار بسیار سبک تری است.

این امکان را فراهم می کند که گره های اعتبارسنج بسیار بیشتری در شبکه وجود داشته باشد.

در عمل ، شرکت ها معمولاً این محدودیت را ندارند و می توانند با چندین دستگاه با رم بسیار بیشتر کار کنند.

سرانجام ، این کار به چندین روش می تواند ادامه یابد:

- اجرای یک بلاکچین با گره های بیشتر ، یا با اتصال چندین و یا با استفاده از ظروف لینوکس یا رویکرد مشابه ، به طوری که بیش از یک گره می تواند در همان رایانه اجرا شود بدون نیاز به منابع زیادی به عنوان ماشین مجازی.

- محیط را با تراکنش های بیشتر در هر بلوک آزمایش کنید.

با توجه به نکته قبلی ، اثبات این امر بسیار دشوار بوده است زیرا نتایج بسیار معتبری نبودند و با هر بار تلاش متنوع بودند.

اگر این امکان وجود دارد ، می توان آزمایش کرد که آیا در یک سناریو با ضرر زیاد (PER زیاد) ، جایی که پیشنهاد رهبر شامل بسیاری از معاملات است ، می توانید ببینید در گره های دیگر چه اتفاقی می افتد.

به عنوان مثال ، گره دیگر ممکن است تمام تراکنش ها را نداشته باشد و با ارسال پیامی از شما بخواهد آنها را برای آنها ارسال کنید ، زیرا اگر آنها معامله را نداشته باشند ، پیشنهاد را معتبر نمی دانند.

این پیام و بسیاری پیام های دیگر به دلیل نرخ بالای PER در شبکه گم می شوند و می توانند منجر به سناریوهایی شوند که بلاکچین واقعاً همانطور که باید رفتار نمی کند.

اگرچه بسیاری از پیشنهادها معتبر هستند ، اما ممکن است رد شوند و به مرحله بعدی منتقل شوند.

- برای استفاده از ابزار دیگری برای ایجاد تأخیر بین گره ها.

ابزار tc از نظر تعداد پیوندها برای شبیه سازی محدودیت زیادی داشته است.

نصب Exonum: