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

بررسی در مورد الگوریتم های اجماع مورد استفاده در Blockchain

A Survey about Consensus Algorithms Used in Blockchain

بررسی در مورد الگوریتم های اجماع مورد استفاده در Blockchain:

چکیده:

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

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

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

الگوریتم های Blockchain را می توان به دو گروه اصلی طبقه بندی کرد.

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

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

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

1. معرفی:

اولین بار توسط Haber و Stornetta [1] معرفی شده است ، اخیراً Blockchain به عنوان یکی از فناوری هایی با بیشترین توان در نظر گرفته شده است.

این تنها بعد از معرفی بیت کوین توسط ناکاموتو مورد توجه جدی قرار گرفته است [2].

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

اعتماد به یک شخص ثالث تنها.

به طور معمول ، وقتی افراد پرداخت می كنند ، باید به شخص ثالث اعتماد كنند كه اعتبار معاملات خود را تأیید كند ، قبل از عملی كردن آنها.

متأسفانه ، این حزب میانه شک دارد ، چه برسد به اینکه برای تقلب کاربرانش سوء استفاده شود یا نه [3].

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

راه حل این مشکل استفاده از چندین سازمان مستقل برای تأیید معاملات است که این دیدگاه را از تمرکز به عدم تمرکز تغییر می دهد.

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

به عنوان مثال ، باب 5 دلار به مری می فرستد ، مری کارل را 10 دلار می فرستد.

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

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

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

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

این دلیل نام "Blockchain" است.

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

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

اگر معتبر باشد ، به این معنی که فرستنده پول کافی برای ارسال (اثبات شده توسط معاملات گذشته در بلوک های قدیمی) داشته باشد ، و همچنین فرستنده با امضای دیجیتالی خود [5] در داخل معامله ، این معامله را تأیید کرده است. در یک بلوک گنجانده شود.

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

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

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

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

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

بسیاری از انواع بیت کوین از سال 2009 معرفی شده اند ، مانند اتریوم [6] ، و Nxtcoin [7،8].

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

بنابراین ، به این نوع ها Blockchain Public گفته می شود.

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

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

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

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

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

بنابراین ، یک الگوریتم اجماع از این نوع می تواند "اجماع مبتنی بر اثبات" نامگذاری شود.

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

با انگیزه تحقیق قبلی Back [10] ، اولین نوع الگوریتم اجماع مبتنی بر اثبات اثبات کار است (PoW) [2].

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

براساس اشکال PoW [11] ، اثبات سهام (PoS) از سهام هر گره استفاده می کند و یک عامل خوش شانس برای تصمیم گیری در مورد بلوک اضافه شده است.

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

علاوه بر این دو ، الگوریتمهای پیشنهادی دیگری نیز وجود دارد ، مانند اثبات زمان سپری شده [12] ، اثبات شانس [13] و اثبات فضا [14].

با درک پتانسیل Blockchain ، بسیاری از شرکتها و سازمانهای غول پیکر ، مانند IBM و JP Morgan ، تحقیق در مورد این فناوری را آغاز کرده اند [15،16].

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

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

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

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

این مبنایی برای نامگذاری این انواع "الگوریتم اجماع مبتنی بر رای گیری" است.

اگر یک گره بخواهد یک زنجیره را به زنجیره خود اضافه کند ، باید یک شرط را برآورده کند:

این گره باید اطمینان حاصل کند که حداقل گره های T (T یک آستانه است ، که بسته به سیستم متفاوت است و T باید بیش از 50٪ از کل گره ها باشد) همین بلوک را بر روی آن قرار می دهد.

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

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

تحمل گسل خرد کردن [17] ، و تحمل گسل بیزانس [19].

از اینجا ، ما می خواهیم تأکید کنیم که الگوریتم اجماع مبتنی بر اثبات نه تنها برای Blockchains عمومی ، بلکه برای خصوصی و کنسرسیوم نیز کاربرد دارد.

مورد معکوس با اجماع مبتنی بر رأی دادن در Blockchains خصوصی و کنسرسیوم نیز صادق است.

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

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

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

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

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

بقیه این مقاله به شرح زیر برگزار می شود:

بخش 2 برخی از نهادهای اصلی Blockchain را مرور می کند.

بخش 3 محتوای اصلی مقاله در مورد الگوریتم های مختلف اجماع را ارائه می دهد ، که در بلاکچین تحقیق و پیشنهاد شده اند.

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

سرانجام ، بخش 5 مقاله را نتیجه می گیرد.

2- بررسی اجمالی Blockchain:

در این بخش مروری بر Blockchain ارائه شده است ، که شامل تأیید معاملات و معماری بلوک در داخل Blockchain است.

تأیید معاملات 2-1:

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

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

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

شکل 1 نمای کلی از این تأیید را نشان می دهد.

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

کلیدهای عمومی و خصوصی [20] ، که به عنوان امضاهای دیجیتالی شناخته می شوند.

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

در بیت کوین ، الگوریتمی که برای ایجاد امضا برای هر معامله استفاده می شود ، الگوریتم امضای دیجیتال منحنی بیضوی است [21].

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

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

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

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

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

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

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

2-2 معماری Blockchain:

همانطور که قبلاً ذکر شد ، پدیده کلیدی که باعث ایجاد نام Blockchain می شود ، سری بلوک هایی است که پیوسته مانند زنجیره به یکدیگر متصل می شوند.

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

شکل 2 نمونه ای از Blockchain را شرح می دهد.

در شکل 2 ، فقط برخی از موجودات اصلی در داخل هدر بلوک شرح داده شده است.

به طور خاص ، شکل 3 معماری درون یک بلوک را توصیف می کند.

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

• Prev_Hash:

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

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

در بیت کوین ، یک تابع هش 256 بیتی برای بدست آوردن این مقدار استفاده می شود [23].

• زمان سنج:

زمان یافتن بلوک

• Tx_Root:

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

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

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

• نسخه:

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

• Nonce:

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

این قسمت در بخش بعدی ارائه خواهد شد.

• بیت:

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

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

در این بخش برخی از تعاریف ارائه شده در بخش های قبلی و بدون توضیحات زیاد مانند فیلد nonce ، قسمت bits در بخش 2.2 و PoW که برای افزودن یک بلوک جدید به زنجیره پیشنهاد شده است ، به پایان خواهد رسید.

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

این بخش به دو زیر بخش اصلی تقسیم می شود:

الگوریتم اجماع مبتنی بر اثبات و الگوریتم اجماع مبتنی بر رأی.

3-1 الگوریتم اجماع مبتنی بر اثبات:

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

اثر اصلی PoW است که توسط ناکاموتو پیشنهاد شده است [2].

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

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

3-1-1 الگوریتم اجماع مبتنی بر PoW:

3-1-1-1 اثبات اصلی کار:

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

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

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

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

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

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

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

تمام اطلاعات داخل هدر بلوک با هم جمع می شوند و به یک عملکرد هش SHA-256 وارد می شوند [25].

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

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

مشکل پازل بعد از اضافه شدن هر بلاک 2016 تنظیم می شود ، به طوری که میانگین سرعت برای اضافه کردن یک بلوک جدید در زنجیره 1 بلوک در هر 10 دقیقه است.

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

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

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

به دلیل تلاش های پرداخت شده برای حدس زدن مقدار مناسب ، این اثر PoW نامیده می شود.

همچنین ، گره ای که با استفاده از PoW به شبکه وصل می شود را می توان Miner نامید و عمل یافتن یک nonce مناسب را Mining می نامد.

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

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

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

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

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

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

این کار به مشکل چنگال منجر می شود:

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

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

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

شکل 5 مسئله چنگال و راه حل PoW برای رسیدگی به آن را شرح می دهد.

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

3-1-1-2 متغیرهای مبتنی بر PoW:

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

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

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

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

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

Tromp [26] پیشنهاد داده است كه كار پازل را با ایده استفاده از توابع هش فاخته جایگزین كند [27] ، كه به معدنچیان این اجازه را می دهد كه تلاش های كمتری بپردازند ، اما حق این را دارند كه این بلوک را راحت تر بدست آورند.

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

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

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

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

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

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

کارکرد hash Cuckoo می تواند گرافیکی ایجاد کند که در آن راس ها موقعیت هشدار یا موقعیت تعویض شده باشند و لبه ها مقادیر حذف شده هستند.

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

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

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

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

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

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

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

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

با ارائه تحقیقات بسیاری ، یکی از اشکالات PoW مشکلی به نام حمله خرج مضاعف است [31] که فیلمنامه آن در شکل 6 شرح داده شده است.

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

برای انجام این کار ، او باید حداقل 51٪ قدرت محاسباتی شبکه تأیید کننده را داشته باشد [32].

بنابراین ، حمله دو برابر هزینه نیز می تواند حمله 51٪ باشد.

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

اما با ظاهر به اصطلاح استخراج استخر [34] ، این نوع حمله ممکن بود.

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

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

Eyal و Sirer [35] خطر حمله 51٪ با این نوع از معادن را نشان داده اند.

آنها روشی را برای جلوگیری از این نوع خطر پیشنهاد کردند:

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

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

این کار بسیار خطرناک تلقی می شود ، زیرا کارگران معدن داخل استخر می توانند پاداش ها را به شخص دیگری انتقال دهند [36].

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

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

به منظور ممانعت از استخراج استخر ، میلر و همكاران [37] مکانیزمی را برای تغییر معماهای اصلی به معماهای به اصطلاح غیر برون گرا پیشنهاد کرده اید ، که معدنچی را در هر استخر امکان کسب جوایز ، بدون هیچ گونه تلاش برای حل پازل فراهم می کند.

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

علاوه بر مسائل امنیتی ، قرار است PoW توسط Eyal et al.

نامناسب بودن برای پرداخت در زمان واقعی [38].

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

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

دو راه حل ممکن قبلاً پیشنهاد شده است:

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

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

ایل و همکاران. [38] یک مدل اجماع جدید به نام Bitcoin-NG ارائه داده اند ، که بلوک سنتی را به دو نوع مختلف به نام های بلوک کلید و میکرو بلوک جدا می کند.

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

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

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

سامپولینسکی و زولار [39،40] پیشنهاد کردند که یک استراتژی برای دستیابی به چنگال و جلوگیری از حمله حمله مضاعف ، زمان افزودن بلوک جدید به زنجیره را کاهش دهند.

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

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

شکل 7 این استراتژی انتخاب را توصیف می کند.

شکل نشان می دهد که پروتکل پیشنهادی GHOST باعث می شود زنجیره اصلی زنجیره مهاجم را "شکست" دهد ، زیرا دارای بلوک های بیشتری است ، که ثابت می کند PoW بیشتری در آن نقش دارد.

لیو و همکاران [41] الگوریتم اجماع اثبات عمومی بر اساس PoW ارائه داده اند.

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

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

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

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

در پایان دور ، یک عدد تصادفی انتخاب می شود.

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

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

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

3-1-2 اجماع مبتنی بر PoS:

قرار است PoW پیشنهادی ناعادلانه باشد:

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

قرار است PoS با این نابرابری مقابله کند.

برای اولین بار از سال 2011 در انجمن بیت کوین معرفی و مورد بحث قرار گرفت [42] ، PoS انواع مختلفی از آن و تحقیق در آن را داشته است.

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

استفاده از سهام به عنوان اثبات این مزیت را دارد:

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

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

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

در حال حاضر دو نوع اجماع محبوب با استفاده از PoS وجود دارد:

نوعی با استفاده از ذره خالص برای ایجاد اجماع ، و نوع ترکیبی ، که ترکیبی از PoS و PoW است.

3-1-2-1 اجماع خالص مبتنی بر سهام:

فرم PoS خالص را می توان در Nextcoin مشاهده کرد [8] (با نام Nxtcoin ، http://nxtcrypto.org/).

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

به طور خاص ، اگر کل سکه های b از تمام معدنچیان وجود داشته باشد ، و معدنچی M صاحب یک سکه (a & lt؛ b) باشد ، شانس برای معدنچی M حق گرفتن معدن بلوک جدید a / b را دارد.

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

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

شبیه به Nextcoin ، بنتوف و همکاران. [43] روشی را برای یافتن معدنکار بر اساس سهام خالصی که در اختیار دارد پیشنهاد کرد:

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

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

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

روش follow-the-Satoshi به عنوان یک شاخص Satoshi که بین 0 تا تعداد کل Satoshi است ، ورودی را دریافت می کند ، سپس بلوکی را ایجاد می کند که این Satoshi را ایجاد کرده است ، که می تواند به عنوان پاداش یک معدنچی برای ایجاد این بلاک شناخته شود. .

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

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

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

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

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

بنتوف و همكاران [43] همچنین یک راه حل برای حل این مشکل پیشنهاد کرد ، که در آن صاحب Satoshi انتخاب شده وقتی فرصت پیدا می کند ، بلوکی ایجاد نمی کند.

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

شانه عملکرد برای اطمینان از این امر انتخاب می شود که تأثیرپذیری در انتخاب ساتوشی ، که توسط راسل و زوکرمن [44] با نمونه گیری جمعی صادر شده است ، و بن-اور و لینالی [45] با انتخاب رهبر و جمع کردن جمع سکه ها دشوار خواهد بود. .

کیاییاس و همکاران. [46،47] همچنین از ایده بنتوف ، پیروی از روش Satoshi برای اجرای اجماع PoS استفاده کرد.

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

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

کیاییاس و همکاران. کار بنتوف و همکاران را در نظر گرفت. [43] برای انتخاب رهبر به عنوان روشی برای محاسبه آنتروپی براساس وضعیت فعلی Blockchain.

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

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

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

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

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

استفاده از سهام به عنوان اثبات رأی دادن و نه به دست آوردن فرصت برای معدن بلوک جدید ، ایده لاریمر است [48].

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

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

هرچه سهام شخص بیشتری داشته باشد ، رأی قدرتمندتری برای واگذاری شهود خواهد داشت.

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

لیست شاهدان همیشه جنجالی می شود.

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

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

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

3-1-2-2 فرم ترکیبی PoW و PoS:

به طور رسمی در مقاله ای توسط کینگ و نادال [49] معرفی شد ، PPcoin می تواند به عنوان اولین نوع PoS در نظر گرفته شود ، اما همچنان از PoW استفاده می کند.

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

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

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

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

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

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

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

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

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

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

با توجه به معدنکار آفلاین ، رن [51] با استفاده از یک عملکرد فروپاشی نمایی با سن سکه پیشنهاد می کند:

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

مشکل حمله دو برابر هزینه دوباره توسط دوونگ و همکاران نشان داده شده است. [52]

مشکلی که معدنچیان دارای بیش از 51٪ قدرت معدن هستند هشدار بالایی را برای امنیت بلاکچین ایجاد می کند.

آنها با ترکیب PoW و PoS روشی را برای کاهش حمله دو برابر هزینه ارائه دادند.

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

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

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

این پایه این است:

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

دونگ و همکاران [52] ادعا می کنند که هر بلوک PoS به یک بلوک PoW متصل است و هر بلوک PoW به یک بلوک PoS قبلی مرتبط است.

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

دلیل این امر این است که با فرض اینکه یک مهاجم می تواند بیش از 51٪ قدرت محاسبات را در اختیار داشته باشد ، می تواند این حق را پیدا کند که ماینر باشد که از بلوک PoW غیرقانونی زنجیره ای استفاده می کند.

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

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

در نتیجه ، این حمله ناکام است.

حمله دو برابر هزینه فقط زمانی اتفاق می افتد که مهاجم نه تنها بیش از 51٪ از قدرت محاسبات بلکه بیش از 50٪ از کل دارندگان سهام را در اختیار داشته باشد.

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

به عنوان بهبود [52] ، Chepurnoy و همکاران.

[53] به تحقیق قبلی خود به مشكلی اشاره كرده اند.

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

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

نویسندگان اظهار داشتند که هنگام تغییر محیط باید برای تنظیم PoS و PoS مشکل ایجاد شود.

بنابراین ، Chepurnoy و همکاران. [53] پیشنهاد می کنید مشکل را براساس محیط تنظیم کنید - میزان ایجاد بلوک.

به طور خاص ، مشکل پیشنهادی آنها برای اثبات کار از اصل اصلی بیت کوین پیروی می کند ، در حالی که مشکل PoS معکوس از سهام مورد نظر صاحب سهام است.

به عنوان مثال ، اگر یک معدنچی صاحب 1 سکه دارای مقدار هش ذکر شده از [52] در زیر آستانه t باشد ، یک معدنچی دیگر که دارای سکه b است فقط باید مقدار هش زیر t * b را برآورده کند.

بنتوف و همكاران [54] راه حلی به نام اثبات فعالیت پیشنهاد دهید.

این ترکیبی از PoW و PoS است تا نه تنها حمله دو برابر هزینه را حل کند بلکه همچنین با برخی از مصیبت های ایجاد شده توسط PoW به نام تراژدی های مشترک روبرو می شود.

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

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

این اقدام می تواند Blockchain را بی فایده کند ، زیرا هیچ کس مایل به استفاده از آن نیست.

برای مقابله با این مصیبت ها ، این نویسندگان ابتدا پیشنهاد کردند که یک بلوک خالی توسط PoW ایجاد شود:

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

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

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

این شانس خوش شانسی مانند دنبال کردن روش ساتوشی در [43] است.

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

کارگران معدنکاري كه مي دانند كه صاحب N انتخاب شده Satoshi هستند ، كار را ادامه مي دهند:

(N - 1) معدنچیان اول وارد این بلوک خالی می شوند ، امضایشان که ثابت می کنند صاحب Satoshi انتخاب شده هستند ، سپس این امضا را پخش می کنند.

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

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

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

مقایسه 3-1-3 بین PoW ، PoS و اشکال ترکیبی آنها:

جدول 1 مقایسه های PoW ، PoS و فرم ترکیبی آنها را نشان می دهد.

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

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

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

در همین حال ، با PoS ، بسیار دشوار است ، اتفاق می افتد تنها زمانی که یک معدنچی می تواند تا 51٪ از کل سهام در کل شبکه تأیید سهام را داشته باشد [49].

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

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

آنچه می تواند PoS را کمتر جذاب کند کار با استخراج استخر است:

برای PoW ، معدنچیانی که به استخر می پیوندند قابل ردیابی هستند ، و کار جعلی مانند [35،37] قابل پیشگیری است.

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

3-1-4 انواع دیگر الگوریتم اجماع مبتنی بر اثبات:

بلاكی و ژو [55] به مشكلی مشابه كینگ [28] اشاره كردند:

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

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

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

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

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

اثبات سوختگی [56] و اثبات فضا [14،57] انواع دیگر الگوریتم های اجماع مبتنی بر اثبات هستند که از ایده PoW و PoS استفاده نمی کنند.

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

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

با Proof of Space ، معدنچیان باید پول خود را روی هارد دیسک سرمایه گذاری کنند ، که بسیار ارزان تر از دستگاه های محاسباتی برای PoW است.

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

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

پیشنهاد شده توسط اینتل [58] ، اثبات زمان سپری شده [12] در سکوی کلوچه ای بنام دریاچه ساوتوت [59] استفاده می شود.

این نوع اجماع در محیط ویژه ای به نام محیط اجرای اطمینان (TEE) [60] اجرا می شود ، با دستگاه ویژه ای از اینتل معروف به Intel Software Guard Extensions (XGS) [61].

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

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

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

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

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

تابع CreatTime معدنکارها را از زمان مورد نیاز برای صبر اطلاع می دهد و عملکرد CheckTimer بررسی خواهد کرد که آیا معدنکار به اندازه کافی منتظر بوده یا خیر.

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

Milutinovic و همکاران. [13] نوعی اجماع را پیشنهاد کرد ، که در TEE و با دستگاه های XGS نیز اجرا می شود ، به نام اثبات شانس.

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

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

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

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

Multichain [62،63] نوعی الگوریتم اجماع است که کاملاً شبیه PoW با کار معدن و کار با چنگال است.

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

به طور خاص ، از پارامتر p (0 & lt؛ p & lt؛ 1) به نام تنوع استخراج استفاده می شود.

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

اگر در بین p * N (N تعداد گره های شرکت کننده باشد) بلوک هایی که اخیراً ایجاد شده اند ، هیچ بلوکی توسط یک گره A تصور نشده ایجاد می شود ، سپس گره A می تواند بلوک پیشنهادی خود را به زنجیره فعلی خود اضافه کند ، سپس این بلوک را به دیگر پخش کند. معدنچیان

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

3-2 اجماع مبتنی بر رای گیری:

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

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

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

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

تقریباً در همه این انواع ، گره ها باید حداقل گره های T را با همان بلوک پیشنهادی برای انجام کار ضمیمه مشاهده کنند (T یک آستانه مشخص است).

اجرای الگوریتم های اجماع مبتنی بر رای گیری بسیار شبیه به روش های سنتی برای تحمل خطاهای مورد استفاده در سیستم توزیع شده است [64].

بنابراین ، اجماع مبتنی بر رای گیری باید برای مقاومت در برابر برخی موارد بد طراحی شود:

• برخی گره ها خراب می شوند.

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

در موارد توفنده ، گره ها منتظر پیام های گره های دیگر خواهند بود.

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

بنابراین ، برای جلوگیری از تصادف با گره های f ، باید حداقل گره های f + 1 وجود داشته باشد که بطور عادی کار می کنند [65].

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

این مشکل توسط یک مشکل کلاسیک به نام ژنرالهای بیزانس مطرح شده توسط لامپورت و همکارانش ارائه شده است: 66 گروهی از ژنرال های بیزانس به اردوگاه دشمن حمله کردند.

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

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

در نتیجه ، آنها مجبور بودند با تبادل پیام ، و پیروی از تصمیم اکثریت ، در مورد زمان حمله با یکدیگر توافق کنند.

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

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

لامپورت و همکاران [66] ثابت کرده است که برای تحمل ژنرالهای واژگون ، حداقل باید ژنرالهای عادی 2f + 1 برای همراهی با آنها نیز حضور داشته باشند.

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

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

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

در نتیجه ، بر اساس این شرایط بد ، الگوریتم های اجماع مبتنی بر رای گیری می توانند به دو نوع اصلی طبقه بندی شوند:

• اجماع مبتنی بر تحمل گسل بیزانس:

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

• اجماع مبتنی بر تحمل خطای تصادف:

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

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

در میان گره های N ، باید حداقل گره های t (t & lt؛ N) وجود داشته باشند که بطور عادی کار می کنند.

در حالی که در اجماع مبتنی بر تحمل گسل تصادف ، معمولاً t برابر [N / 2 + 1] است ، در اجماع مبتنی بر تحمل گسل بیزانس ، معمولاً t برابر با [2N / 3 + 1] است.

3-2-1 اجماع مبتنی بر تحمل گسل بیزانس:

سکوی معروف Hyperledger Blockchain [67] توسط بسیاری از شرکتها مورد استفاده قرار گرفته است.

IBM یکی از آنهاست ، با پارچه هایپرلدگر [68].

نوعی تحمل گسل بیزانس به نام تحمل گسل عملی بیزانس (PBFT) پیشنهاد شده توسط کاسترو و لیسکوف [18] برای پارچه هایپرلدگر مورد استفاده قرار گرفت [15،69].

در PBFT ، دو نوع گره وجود دارد:

گره رهبر ، و برخی از همسالان (گره) معتبر؛ و این همسالان برای اضافه کردن یک بلوک به زنجیره ، دورهایی را اجرا می کنند ، که در شکل 8 [69] توضیح داده شده است.

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

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

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

پس از آن ، سه مرحله PBFT اجرا می شود.

اولاً ، در مرحله پیش آماده سازی ، رهبر بلوک پیشنهادی خود را به سایر همسالان خود پخش می کند.

آنها بلوک را به صورت محلی دریافت و ذخیره می کنند.

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

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

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

دو سکوی محبوب Blockchain که از الگوریتم های اجماع مبتنی بر تحمل خطای بیزانس استفاده می کنند ، Symbiont [70] و R3 Corda [71] هستند.

آنها از یک الگوریتم اجماع به نام BFTSMaRt استفاده شده توسط بسانی و همکاران استفاده می کنند. [72]

شکل 9 این الگوریتم را شرح می دهد.

در اصل ، این الگوریتم شبیه به PBFT است ، اما از اسامی مختلفی استفاده می کند (Propose – Writ-Accept vs.

پیش آماده سازی-آماده سازی-تعهد در PBFT).

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

Iroha [73] یکی دیگر از پلتفرم های Blockchain مبتنی بر هایپرلدگر است که الگوریتم اجماعی به نام Sumeragi [74] دارد ، که توسط Bchain توسط Duan و همکاران الهام گرفته شده است. [75]

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

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

اجرای Bchain به PBFT و BFT-SMaRt شباهت دارد و حداقل به [2N / 3 + 1] گره نیاز دارد که به طور عادی کار کند.

Ripple [76-78] یک سکوی Blockchain است که الگوریتم اجماع توسط آن آمدگان جدید Blockchain ساخته شده است.

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

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

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

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

برای رسیدگی به بررسی معاملات درخواست شده ، دفترچه ریپل دو شکل اصلی دارد:

دفترچه آخرین بسته ، که نشان می دهد تمام معاملات موجود در آن با موفقیت توسط سرورهای کافی تأیید شده است (80٪)؛ و سربرگ باز ، که دارای معاملات تأیید شده توسط سرورهای ناکافی است.

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

به دنبال ریپل ، تقاطع UNL توسط هر دو سرور مختلف باید حداقل 1/5 از کل سرورهای شبکه باشد.

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

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

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

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

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

در دور اول ، هر سرور کلیه کاندیداها را از سایر سرورهای موجود در UNL در مجموعه نامزد خود جمع می کند ، سپس معاملات درون این مجموعه را تأیید می کند.

اگر با موفقیت تأیید شود رأی "بله" به هر یک از معاملات داده خواهد شد.

متعاقباً ، در دورهای بعدی ، هرگونه معامله ای که آراء "بله" کافی دریافت نکند ، از مجموعه کاندیداتوری دور می شود (دورهای نهایی حداقل به 80٪ آراء بله برای هر معامله نیاز دارد).

دیوید و همکاران [59] اظهار داشته اند که برای حفظ صحت ، فقط باید حداکثر (n-1) / 5 گره واژگون در بین گره های شبکه وجود داشته باشد.

به عنوان یک نوع از ریپل ، ستار [79] از گروهی استفاده می کند ، که مشابه UNL در Ripple است ، به نام برش quorum برای برقراری ارتباط بین گره های تأیید کننده (گره های معتبر در ریپل).

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

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

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

شکل 10 نمونه ای از برش های سهمیه در ریپل را توضیح می دهد ، که توسط ساختار سلسله مراتبی ، مشابه نمونه در [79] سازماندهی شده اند.

با در نظر گرفتن "گره 1" در مثال ، یک قطعه سهمیه با دو گره متفاوت دیگر در "گروه 1" ایجاد می کند ، و گره دیگری را بین همه گره های "گروه 2" ایجاد می کند.

به طور خاص ، گره ها (1،2،3،5) و گره ها (1،2،4،6) دو مورد از تعداد زیادی برش در این مثال هستند.

همچنین ، گروه 1 و گروه 2 سطح برتر هستند؛ معاملات باید ابتدا از این دو سطح تأیید شود.

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

برای اینکه گره 10 معامله معین را تأیید کند ، وی باید از اعضای دیگر در برش سهمیه خود درخواست کند ، که می توانند نود 1 ، نود 2 و نود 7 باشند.

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

3-2-2 اجماع مبتنی بر تحمل خطای تصادف:

با تشویق الگوریتم اجماع کلاسیک و قابل درک ، به نام Paxos [65] ، Raft [80] یک الگوریتم اجماع است که توسط Quorum [81] برای تحمل تصادفات استفاده می شود.

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

مانند Paxos ، Raft بر اساس این فرض ساخته شده است که هر بار ، [n / 2 + 1] از کل گره ها به طور عادی کار می کنند.

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

این گره ها با دو نوع پیام اصلی با یکدیگر ارتباط برقرار می کنند:

RequestVote را برای رای دادن به گره رهبر و AppendEntries برای انتقال درخواست به گره های دیگر RequestVote کنید.

شکل 11 چگونگی تغییر گره ها نقش خود را با موقعیت های مختلف توصیف می کند.

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

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

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

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

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

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

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

در مورد ویژه ای که یک گره نمی تواند تصمیم بگیرد چه کسی باشد ، زیرا به 50٪ از همه گره ها رای داده می شود ، دور جدید انتخابات دوباره آغاز می شود.

رهبر توسط هر گره شناخته می شود ، زیرا پیام RequestVote پخش می شود.

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

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

به عنوان مثال ، اگر رهبر معامله 5 را ارسال کند ، باید وی 4 را نیز به عنوان شاخص معامله قبلی در لیست ارسال کند.

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

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

این فرآیندها ساخته شده اند تا اطمینان حاصل شود که معاملات در همه گره های تأیید صحت دارند.

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

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

یک سکوی دیگر Blockchain به نام Chain [82] ، از الگوریتم اجماع تحمل خطای تصادف به نام federated استفاده می کند.

در این یکی ، در میان گره های شبکه تأیید ، گره ای به نام "تولید کننده بلوک" و گره های دیگر با نام "امضاهای بلوک" وجود دارد.

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

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

این امضاکنندگان بلوک های دریافت شده را تأیید می کنند و در صورت اعتبار وارد آنها می شوند ، سپس آنها را به ژنراتور بلوک ارسال کنید

اگر یک بلوک توسط بیش از m (m & lt؛ n) امضا کننده بلوک های مختلف امضا شود ، ژنراتور بلوک بلوک را به زنجیره فعلی خود اضافه می کند و این بلوک را به گره های دیگر پیشنهاد می کند.

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

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

4. بحث:

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

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

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

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

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

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

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

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

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

در مقابل ، مبادله ای بین موضوعات آزادی و امنیت ثبت می شود.

هرچه گره های بیشتری به شبکه تأیید بپیوندند ، شبکه تأیید خطر بیشتری دارد.

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

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

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

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

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

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

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

برای بسته بندی تمام الگوریتم های اجماع مورد بررسی در این مقاله ، جدول 3 با مرور مختصری از هر الگوریتم ارائه شده است.

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

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

الگوریتم های اجماع مبتنی بر اثبات و مبتنی بر رأی.

در گذشته ، گره ها باید نشان دهند كه برای بدست آوردن حق انجام كارهای ضمیمه ، اثبات كافی را انجام داده اند و جوایز دریافت می كنند.

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

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

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

تصدیق:

این تحقیق توسط برنامه تحقیقاتی علوم پایه از طریق بنیاد ملی تحقیقات کره (NRF) با بودجه وزارت علوم ، فناوری اطلاعات و ارتباطات و آمپر پشتیبانی شده است. برنامه ریزی آینده (No.NRF- 2017R1A2B4012559).