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

طراحی و اجرای الگوریتم توافق اثبات سهام برای بلاکچین

Design and Implementation of a Proof-of-Stake Consensus Algorithm for Blockchain

طراحی و اجرای الگوریتم اجماع اثبات سهام برای بلاکچین:

چکیده:

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

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

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

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

1- زمینه و انگیزه:

1-1 مقدمه:

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

علی رغم این واقعیت که افراد بلاکچین و بیت کوین [1] را برای اهداف مالی مرتبط می کنند ، بلاکچین بیشتر و بیشتر در زمینه شبکه مانند Blockstack [2] ، یک سیستم ذخیره سازی جهانی نامگذاری یا IOTA [3] ، ارز رمزنگاری شده اینترنت چیزها (فناوری Tangle [4]).

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

این پروژه به شش قسمت تقسیم شده است:

• رابط OOR:

بخشی برای نقشه برداری و تفویض تفویض اختیار با استفاده از LISP [5].

• پروتکل همتا به همتا:

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

• الگوریتم اجماع (کانون این سند):

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

• ورودی کاربر:

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

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

• فروشگاه کلید:

ذخیره کلیدها

• پایداری زنجیره ای:

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

شکل 2 نمودار تقسیم پروژه را ارائه می دهد.

کل پروژه پیشنهادی است که محققان UPC و Cisco سعی کرده اند مسیریابی اینترنت را ایمن کنند.

مقدمه ای را می توان در پیش نویس Paillissé مشاهده کرد [6].

1-1-1 بلاکچین:

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

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

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

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

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

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

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

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

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

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

1-1-2 مسیریابی بین دامنه ای:

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

در اینترنت امروز ، پروتکل BGP وظیفه تبادل مسیریابی را در بین سیستم های خودمختار (AS) دارد.

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

به عنوان مثال ، & quot؛ اصلاح شده & quot؛ AS می تواند دیگران را از یک مسیریابی اشتباه آگاه کند ، زیرا این AS تا امروز کاملاً می داند ، دیگران به آن اعتقاد دارند و این اطلاعات مسیریابی را روی میزهای خود اضافه می کنند.

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

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

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

این پروتکل با استفاده از LISP هویت دستگاه را تقسیم می کند و بنابراین جفت های IP به نام & lt؛ EID، RLOC & gt؛ را ذخیره می کند.

EID مربوط به شناسه نقطه پایانی است و RLOC مکان یاب مسیریابی است.

از آنجا که جداسازی این دو جفت مهم است ، LISP بسته هایی با اطلاعات EID و RLOC ارسال می کند.

پایگاه داده با اطلاعات EID و RLOC DDT (درخت پایگاه داده تفویضی) نامیده می شود.

LISP DDT یک پایگاه داده است که مانند عملکرد BGP در کل اینترنت عمل می کند ، بنابراین از جهتی نیز ناامن است.

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

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

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

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

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

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

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

1-2 طرف ذینفع:

ذینفعان درگیر در این پروژه در زیر شرح داده شده اند.

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

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

آنها به عنوان سازنده ، ادغام صحیح با سایر قسمتهای اصلی پروژه را تضمین می کنند.

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

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

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

2- محدوده پروژه:

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

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

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

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

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

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

اهداف 2-1:

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

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

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

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

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

انتظار می رود که الگوریتم نهایی تا پایان اکتبر 2017 تصمیم بگیرد.

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

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

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

2-2 چالش ها و خطرات:

همانطور که ما در حال کار با فن آوری های پیشرفته مانند بلاکچین و الگوریتم های اثبات سهام هستیم (توضیح داده شده در بخش 4-2) ، در هنگام توسعه پروژه ، موانع و مشکلات زیادی وجود دارد.

برخی از آنها به شرح زیر است:

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

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

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

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

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

• زمان تعیین شده برای توسعه پروژه نیز می تواند مانعی داشته باشد ، زیرا محدود است و باید به درستی استفاده شود.

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

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

3- وضعیت هنر:

بیت کوین و فناوری Blockchain از سال 2009 با جنجال های زیادی پیرامون زمینه های مختلف تحصیل ، e-g- ، امنیت ، محیط ، کارایی و غیره آغاز شده است.

یکی از جنبه های مورد بحث بیت کوین اثبات کار یا PoW است.

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

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

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

در مورد نمونه اولیه ، ما انتخاب دیگری برای امضای بلوک را انتخاب کرده ایم ، که به آن اثبات خطر یا PoS گفته می شود.

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

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

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

جزئیات بیشتر در مورد PoS را می توان در بخش 4-2 یافت. درباره PoS ، جامعه Ethereum [7] در حال تهیه الگوریتمی به نام Casper مبتنی بر PoS است که در حال نوشتن این مقاله است.

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

اگرچه انتظار می رود کاسپر ایمن ، کارآمد و قابل اعتماد باشد ، ما تصمیم گرفته ایم که به سراغ الگوریتم های PoS دیگر ، e-g- Ouroboros [8] یا ALGORAND [9] برویم ، زیرا هنوز کامل نشده است.

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

بنابراین این پروژه مربوط به بهبود اینترنت با استفاده از بلاکچین است ، جایی که پروژه های دیگری وجود دارد که تلاش می کند این کار را انجام دهد ، تعداد کمی از آنها Namecoin هستند [10] ، که هدف آن بهبود اینترنت با تمرکززدایی و بهبود سرعت DNS است. نهادها و Blockstack که قبلاً ذکر شد [2].

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

به عنوان مثال Tangle [4].

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

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

اساساً با تغییر فناوری از یک زنجیره بلوک به DAG مقیاس پذیری ، بدون هزینه و امنیت بیشتری را ارائه می دهد.

در بخش 6-2-3 توضیحات بیشتری درباره Tangle و ویژگی های احتمالی آن برای نمونه اولیه ما انجام شده است.

4- تحقیق الگوریتم اجماع:

4-1 اثبات کار:

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

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

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

هش صحیح یک رشته SHA-256 است که توسط تراکنش های بلاک ، هش بلوک قبلی و nonce ساخته شده است که شامل تعداد بیت صفر پیشرو است.

دو پارامتر از سه پارامتر هش SHA-256 ثابت هستند ، اما یکی از آنها ، nonce ، با استفاده از نیروی بی رحم انتخاب می شود ، زیرا این تنها روش شناخته شده برای یافتن هش صحیح است.

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

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

علیرغم اینکه اثبات کار ایمن به نظر می رسد ، اشکالاتی وجود دارد که باید ذکر شود:

• حمله 34٪:

برخی از تحقیقات [11] در مورد مشکل داشتن گروهی با حداقل 34٪ از انرژی استخراج هش از طریق شبکه انجام شده است.

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

• افزایش پیچیدگی:

یکی از ویژگی های اثبات blockchains کار این است که پیچیدگی استخراج یک بلوک با گذشت زمان افزایش می یابد.

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

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

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

• اتلاف انرژی:

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

امروزه این مسئله اصلی است که باید در مورد بلاکچین ها حل شود ، زیرا ارزهای رمزپایه زیادی وجود دارد که با استفاده از اثبات کار ، انرژی زیادی را هدر می دهند.

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

4-2 اثبات سهام:

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

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

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

اگرچه PoS این مزیت را دارد که ما انرژی کمتری نسبت به PoW و برخی از تمرکززدایی بیشتر از دست می دهیم ، اما دارای اشکالاتی است:

• انحصار:

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

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

• هیچ چیز در خطر نیست:

در مورد هر بلاکچین اثبات کار ، در مقابل یک حمله دوبار خرج 2 یا در یک چنگال 3 زنجیره ای ، گره ها سه گزینه برای انتخاب دارند:

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

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

- کاری انجام ندهید و هیچ سودی نبرید.

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

با استفاده از پروتکل اثبات سهام ، این وضعیت تغییر می کند.

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

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

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

از طرف دیگر ، اثبات سهام در این جنبه ها برای ما مناسب است:

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

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

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

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

3 وضعیتی که یک زنجیره جدید از یک زنجیره دیگر ایجاد می شود.

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

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

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

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

از این رو ، می توان کاهش زمان و انرژی را مشاهده کرد.

• زنجیره سریعتر با استفاده از الگوریتم های اثبات سهام امکان پذیر است.

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

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

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

4-2-1 حملات شناخته شده:

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

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

• سنگ زنی سهام:

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

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

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

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

• عدم مشارکت:

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

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

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

داشتن بلاکچین غیرمتمرکز.

• حملات برد:

این حمله شامل ایجاد یک زنجیره فرعی (چنگال) در برخی از زمان ها با ایده ایجاد زنجیره ای برای سایر گره های سیستم است.

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

4-2-2 Ouroboros:

Ouroboros [8] یکی از اولین روش های الگوریتم ایمن اثبات سهام برای اهداف بلاکچین است.

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

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

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

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

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

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

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

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

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

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

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

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

این بردار از طریق یک تابع COM (r، S) = C رمزگذاری می شود.

جایی که r یک پارامتر تصادفی است و C پیام رمزگذاری شده است.

• آلیس پیام رمزگذاری شده را برای باب ارسال می کند.

• باب یک بردار تصادفی به نام S ’تولید می کند و آن را بدون رمزگذاری برای Alice به روشنی ، i-e- می فرستد.

S ’همان اندازه S است.

• آلیس کلید رمزگذاری را برای باب می فرستد تا باب S را بشناسد.

• در این زمان ، هر دو آلیس و باب به ترتیب S و S را می شناسند.

• هر دو طرف ، XOR S و S ’.

(Ŝ = S XOR S ’) ، نتیجه همان Ŝ برای هر طرف است.

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

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

حرکت به جلو به دوره های جدید.

مانند دیگر الگوریتم های اثبات سهام ، Ouroboros مخفف 2/3 مهمانی صادقانه است تا بلاکچین در مقابل حملات ایمن و مطمئن بماند.

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

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

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

اطلاعات بیشتر را می توان در مقاله [8] و در یک فیلم [12] که توسط نویسنده Ouroboros توضیح داده شده است ، یافت.

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

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

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

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

کاهش سرعت شبکه.

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

4-2-3 الگوراند:

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

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

خلاصه ای از الگوریتم در این بخش توضیح داده خواهد شد ، اما اطلاعات بیشتر را می توان در مقاله اصلی یافت. [9]

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

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

هر دور با اتمام دوره قبلی شروع می شود ، i-e- وقتی که امضای بلوک جدید را پیدا کردیم.

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

در ابتدای هر مرحله ، یک هش (sig (r ، s ، q (r-1))) محاسبه می شود و بین 0 تا 1 به یک اعشاری تبدیل می شود ، i-e- & quot؛ p & quot ؛.

کجا & quot؛ r & quot؛ تعداد بلوک است ، & quot؛ s & quot؛ مرحله فعلی است (در ابتدا 1 است) و q (r-1) یک مقدار تصادفی است که از بلوک قبلی گرفته شده است.

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

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

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

تقریباً هر دو سال یکبار ، کلید اصلی باید تمدید شود.

مرحله 1 ، انتخاب رهبر:

گره باید یک بلوک نامزد را آماده کند ، آن را امضا کرده و سپس آن را با sig (r ، 1 ، q (r-1)) به شبکه بفرستد.

مرحله 2 ، مرحله 1 اجماع درجه بندی شده:

تا زمانی که پیام های sig (r، 1، q (r-1)) را دریافت می کنیم ، گره باید هش این پیام ها را محاسبه کند و سپس بلاک کاندیدا یکی خواهد بود که حداقل هش محاسبه شده است.

سپس بلوک نامزد جدید با یک کلید خصوصی زمانی امضا شده و آنرا با sig (r ، 2 ، q (r-1)) به شبکه ارسال می کند.

سرانجام کلید خصوصی زمانی از بین می رود.

مرحله 3 ، مرحله 2 اجماع درجه بندی شده:

تا زمانی که پیام های sig (r، 2، q (r-1)) دریافت می کنیم ، گره باید موارد زیر را تأیید کند:

اگر بیش از 2/3 امضای وارد شده مربوط به همان بلوک باشد ، گره این بلوک را امضا می کند و با ارسال بلوک امضا شده و sig (r ، 3 ، q (r-1)) ادامه می دهد.

در غیر اینصورت یک رشته خالی امضا شده و آنرا با sig (r، 3، q (r-1)) به شبکه ارسال کنید.

سرانجام کلید خصوصی زمانی از بین می رود.

مرحله 4 ، خروجی Graded Consensus:

اگر بیش از 2/3 پیام های دریافتی جدید مربوط به همان بلوک باشد ، این نامزد و یک متغیر جدید است & quot؛ g & quot؛ با مقدار 2 تنظیم شده است.

اگر بیش از 1/3 اما کمتر از 2/3 پیام های گیرنده جدید به همان بلوک تعلق داشته باشد ، این نامزد و یک متغیر جدید است & quot؛ g & quot؛ با مقدار 1 تنظیم شده است.

در غیر این صورت اتفاق نظر وجود ندارد بنابراین نامزد بلوک یک بلوک خالی و متغیر جدید است & quot؛ g & quot؛ مقدار 0 است.

سپس ، اگر & quot؛ g & quot؛ = 2 ، & quot؛ ب & quot؛ = 0 ، در غیر این صورت & quot؛ ب & quot؛ = 1

سرانجام علائم گره & quot؛ b & quot؛ و آنرا با sig (r ، 4 ، q (r-1)) ارسال می کند.

مرحله 5 ، BBA4 با خروجی 0:

اگر بیش از 2/3 از کل & quot؛ b & quot؛ پیام ها برابر با صفر هستند ، گره جستجو را متوقف می کند و بلوک قطعی مورد دریافت شده را تنظیم می کند.

اگر بیش از 2/3 دریافت شده & quot؛ b & quot؛ پیام ها برابر با 1 است ، گره جستجو را متوقف می کند و به دلیل عدم اتفاق نظر ، یک بلوک باطل تنظیم می کند.

در غیر این صورت & quot؛ ب & quot؛ برابر است با صفر و & quot؛ ب & quot؛ با sig (r ، 5 ، q (r-1)) ارسال می شود.

مرحله 6 ، BBA با خروجی 1:

همان مرحله 5 است اما اگر اتفاق نظر وجود نداشته باشد ، & quot؛ b & quot؛ برابر با 1 با sig (r ، 6 ، q (r-1) ارسال می شود)

مرحله 7 ، BBA با خروجی متفاوت از 0 یا 1:

همان مرحله 5 است اما اگر اتفاق نظر وجود نداشته باشد ، & quot؛ b & quot؛ برابر است با هش پایین پیام های دریافت شده از سیگ (r ، 6 ، q (r-1)).

سپس & quot؛ ب & quot؛ با sig (r ، 7 ، q (r-1)) ارسال می شود.

مرحله 8 ، آخرین مرحله (احتمال کم):

دوباره BBA و مرحله 5 را اجرا کنید اما اگر اتفاق نظر وجود نداشته باشد ، گره متوقف می شود.

هیچ اجماعی یافت نشد بنابراین بلوک باطل باقی می ماند ، & quot؛ b & quot؛ برابر با 1 است و sig (r ، 8 ، q (r-1)) ارسال می شود.

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

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

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

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

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

در مرحله شماره پنج Algorand شروع می شود.

در نمونه اولیه ما

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

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

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

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

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

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

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

• ایجاد یک الگوریتم جدید اغلب نیاز به شروع از صفر دارد ، بنابراین راه پیش رو بسیار طولانی تر از آن است که اگر با چیزی شروع کنیم که قبلاً به عنوان Algorand یا Ouroboros توسعه یافته است.

با این حال ، ایجاد چیز جدید ، به ما امکان می دهد چیزی را که کاملاً در نمونه اولیه ما قرار دارد ، ادغام کنیم.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5- توسعه الگوریتم جدید:

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

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

پروتکل های اثبات سهام ، انتخابات امضا کننده بلوک را از طریق طرح مسائل پیچیده ریاضی تأیید نمی کنند.

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

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

5-1 انتخابات امضا کننده تصادفی (چرا مهم است؟):

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

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

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

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

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

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

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

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

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

5-2 رویکرد اول الگوریتم:

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

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

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

در وهله اول ، امضا کننده بلوک بلوک قبلی (n-1) به طور تصادفی لیستی از کلیدهای عمومی شرکت کنندگان را انتخاب می کند تا کاندیداهای امضای بلوک & quot؛ n & quot ؛.

به عنوان مثال لیستی [pk24 ، pk125876 ، pk3765 ، --- ، pk4] خواهیم داشت که در آن طول لیست برابر با تعداد شرکت کنندگان در شبکه است.

در IPv4 ، چون 232 آدرس داریم ، برای انتخاب آدرس باید 32 بیت داشته باشیم.

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

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

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

برای هر یک از اعضای گروه الگوریتم با هر بیت یک XOR انجام می دهد (0 XOR 1 XOR 1 XOR 0 --- XOR 0 XOR 0 XOR 1).

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

به عنوان مثال ، اگر گروه 32 بیت را انتخاب کند ، آدرس مانند X-X-X-yyyyyyy1 خواهد بود که در آن & quot؛ X & quot؛ 8 بیت و "y" را نشان می دهد 1 بیت

اگر گروه 31 بیت 0 را انتخاب کند ، آدرس X-X-X-yyyyyy01 خواهد بود.

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

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

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

در غیر این صورت ، یک گروه مخرب می تواند نتیجه نهایی را اصلاح کند.

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

• پیام های زیادی لازم است.

برای کار مطابق انتظار ، شبکه باید همزمان پیامهای زیادی را پخش کند.

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

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

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

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

• هیچ راهی برای کنترل اینکه هر شرکت کننده بیت خود را به طور تصادفی انتخاب می کند وجود ندارد.

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

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

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

این در بخش 4-2-2 توضیح داده شده است و به طور معمول این امکان را برای شبکه فراهم می کند تا تمام اعداد تصادفی انتخاب شده توسط همه گره ها را بررسی کند.

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

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

5-3 منبع تصادفی منحصر به فرد:

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

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

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

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

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

5-4 آنتروپی Blockchain:

همانطور که در On Bitcoin به عنوان یک مقاله منبع تصادفی عمومی مشاهده می شود [13] ، 32 بیت آنتروپی می تواند برای تأیید چیزی که سریع تغییر می کند ، مانند ایجاد بلوک زنجیره بلوک ، کافی باشد.

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

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

در مقاله ذکر شده در بالا [13] ، گفته می شود که به لطف پیچیدگی اثبات کار ، حداقل آنتروپی وجود دارد که توسط مهر زمان (ثانیه) ، هش معاملات درخت مرکل و غیره داده می شود.

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

در واقع اگر مشکل "d" را در نظر بگیریم از پیدا کردن یک غیر به عنوان 68 ، احتمال حدس زدن برای غیر در حدود 2 − d بنابراین 2−68 ​​است.

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

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

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

5-5 اجرای نهایی الگوریتم:

به منظور استفاده از منبع تصادفی منحصر به فرد برای هر یک از شرکت کنندگان در شبکه ، تصمیم گرفتیم همانطور که در بخشهای 5-3 و 5-4 گفته شد ، می توان از بلاکچین های واقعی مانند بیت کوین یا اتریوم برای این منظور استفاده کرد.

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

5-5-1 هش بلوک Ethereum:

برای استدلال در مورد تصمیم استفاده از Ethereum به جای بیت کوین ، توضیحی در مورد آنتروپی زنجیره بلوک فعلی در بخش 5-4 ارائه شده است ، بنابراین این مورد تقریباً در مورد هر بلاکچینی وجود دارد که از الگوریتم اثبات کار استفاده می کند.

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

5-5-2 ژنراتور چراغ راهنما NIST:

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

بنابراین یک انتخاب خوب برای آن می تواند تولید کننده هش چراغ راهنمای NIST باشد [14].

این چراغ راهنما هر 60 ثانیه یک رشته 512 بیتی صادر می کند.

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

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

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

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

5-5-3 استخراج هش تصادفی:

ابتدا 256 بیت هش از یک بلوک معتبر Ethereum خواهیم گرفت.

هنگامی که این هش را داشته باشیم ، با اتصال هر بیت از هش از طریق یک تابع bit-a-bit XOR ، با هش 512 بیتی از چراغ NIST مخلوط می شود.

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

تابع ، که 256 بیت خروجی می دهد.

ذکر این نکته حائز اهمیت است که درخواستی که از Ethereum API و از NIST beacon ارائه شده بستگی به مهر زمان دارد تا از ارزش منحصر به فرد هر لحظه اطمینان حاصل شود.

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

برای جلوگیری از این ، الگوریتم منتظر می ماند تا یک بلاک جدید Ethereum ایجاد شود.

5-5-4 استخراج آدرس IP:

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

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

اگر امضا کننده به پروتکل IPv4 تعلق داشته باشد ، الگوریتم 256 بیت هش را به 32 تقسیم می کند.

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

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

همانطور که در بالا گفته شد ، اگر امضا کننده به پروتکل IPv6 تعلق داشته باشد ، الگوریتم 256 بیت هش را بر 128 تقسیم می کند.

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

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

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

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

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

5-6 اشکال الگوریتم:

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

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

• مدیریت چنگال و حمله به شبکه های فرعی:

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

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

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

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

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

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

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

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

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

در غیر این صورت ، گره بلوک را رد می کند و منتظر یک امضا کننده دیگر است.

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

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

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

• وابستگی های خارجی:

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

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

6- مدیریت پروژه:

6-1 روش:

روش کار به کار رفته در این پروژه باید با اعضای پروژه توافق شود تا بتوانند به طور موثر و هماهنگ با یکدیگر کار کنند.

روش مورد استفاده برای این پروژه توسعه نرم افزار Agile بوده است (شکل 3) ، جایی که ارتباط بین اعضای تیم بسیار مهم است ، کار بر روی کد اجباری است و پاسخ به تغییر سریعاً اعمال می شود.

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

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

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

به طور خاص ، ما از git استفاده خواهیم کرد.

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

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

این محیط با یک پروتکل شبکه به نام LISP تنظیم شده است [5].

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

6-1-1 ابزار توسعه:

برای دستیابی به یک ادغام صحیح با تمام قسمتهای پروژه ، ما از ابزارهای زیر استفاده خواهیم کرد:

• گیت:

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

• درایو گوگل:

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

• اسکایپ:

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

اعتبار سنجی 6-1-2:

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

این شبکه شباهت زیادی به محیط واقعی ما در تنظیمات اینترنت دارد ، بنابراین این امر نتیجه واقعی کل پروژه را به ما می دهد.

6-2 برنامه ریزی زمانی:

6-2-1 مدت زمان تخمینی:

پروژه TFG تخمین زده می شود 4 ماه دیگر به پایان برسد.

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

6-2-2 ملاحظات:

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

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

6-2-3 برنامه ریزی پروژه:

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

• زمینه و دامنه پروژه (10 ساعت).

• برنامه ریزی پروژه (5 ساعت).

• بودجه و پایداری (5 ساعت).

• اولین سخنرانی شفاهی (10 ساعت).

• مشخصات (5 ساعت).

• ارائه شفاهی و سند نهایی (ساعت 15).

تمام این مراحل توسط مدیر پروژه تحت نظارت مدیر عامل و مدیر پروژه انجام می شود.

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

• برنامه ریزی پروژه (50 ساعت).

• تحقیق در مورد بلاکچین ها (60 ساعت).

• تجزیه و تحلیل نیازها (40 ساعت).

• تحقیق در مورد PoS (70 ساعت).

• طراحی الگوریتم (80 ساعت).

• توسعه الگوریتم (50 ساعت).

• ایجاد API (20 ساعت).

• تست های ماژول (40 ساعت).

• مستندات سند نهایی (50 ساعت).

• آماده سازی دفاع (10 ساعت).

• TOTAL (470 ساعت).

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

همه اینها توسط دانشگاه وام داده می شود.

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

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

6-2-4 تجزیه و تحلیل پروژه:

این مرحله شامل تجزیه و تحلیل پروژه و اجرای احتمالی آن خواهد بود.

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

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

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

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

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

6-2-5 طراحی پروژه:

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

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

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

آنها بسیار متفاوت هستند اما آنچه ما نیاز داریم را دارند.

اجرای الگوریتم 6-2-6:

قسمت اصلی پروژه پیاده سازی الگوریتم است.

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

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

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

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

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

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

این قسمت بسیار مهم است ، زیرا با پیشرفت بیشتر به هماهنگی نیاز دارد.

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

6-2-7 ایجاد API:

برای اینکه همه پروژه در حال اجرا باشد ، باید همه ماژولها را با هم جمع کنیم و آنها را با هم کار کنیم.

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

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

API مخفف Application Programming Interface است و مجموعه ای از دستورات ، توابع و پروتکل ها است که توسط توسعه دهندگان برای برقراری ارتباط بین ماژول های مختلف در یک برنامه استفاده می شود.

در مورد ما ماژول Database ، ماژول LISP ، پروتکل P2P و الگوریتم Consensus داریم.

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

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

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

برنامه اقدام 6-2-8:

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

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

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

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

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

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

نمودار گانت 6-2-9:

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

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

نمودار دوم نمودار واقعی و نهایی است.

همانطور که می بینیم در مرحله توسعه الگوریتم Consensus اختلافاتی وجود دارد.

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

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

بودجه 6-3:

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

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

6-3-1 برآورد بودجه:

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

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

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

6-3-1-1 منابع سخت افزاری قبل از هر چیز هزینه منابع سخت افزار را خواهیم دید.

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

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

این سخت افزار تا پایان پروژه مورد استفاده قرار خواهد گرفت.

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

6-3-1-2 منابع نرم افزار جدول 2 خلاصه ای از هزینه های نرم افزاری است که ما برای توسعه پروژه خود به آن نیاز خواهیم داشت.

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

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

6-3-1-3 منابع انسانی این پروژه قرار است فقط توسط یک نفر توسعه یابد.

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

برای محاسبه منابع انسانی ، فرضیاتی را ارائه داده ایم.

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

سرانجام ، در جدول 4 می توانیم هزینه های هر یک از پروژه ها را از نظر نیروی انسانی مورد نیاز مشاهده کنیم.

6-3-1-4 هزینه های دیگر حمل و نقل ضروری خواهد بود زیرا برای توسعه و تقسیم پیشرفت با سایر هم تیمی ها باید به دانشگاه بالا برویم.

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

هزینه سالانه این هزینه 47/16 e.

تقسیم بر 4 (ماه انجام TFG) ما کل هزینه حمل و نقل را 15/72 e داریم.

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

اتصال به اینترنت برای برقراری ارتباط با اعضای تیم ، تحقیق در مورد پروژه و بارگذاری کد در Github ضروری است.

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

بنابراین احتمالاً حدود 30/00 ماه در ماه خواهد بود ، ضرب در چهار ، ما هزینه کل اتصال به اینترنت 120/00 ثانیه را داریم.

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

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

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

با داشتن تعداد کل 360 ساعت ، کل مصرف برق 54 کیلووات ساعت است.

در مرحله نهایی TFG از حدود 3 یا 4 ماشین مجازی استفاده خواهیم کرد که همه آنها در یک یا دو رایانه کار می کنند و دارای مصرف برق 150 وات در هر یک هستند و در کل 300 وات مصرف می کنیم.

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

در بارسلونا ، قیمت هر کیلووات ساعت 14/0 هکتار است ، بنابراین پروژه ما 8/82 هکتار انرژی صرف خواهد کرد.

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

هزینه مدیر شخصی که این نوع شرایط را مدیریت می کند می تواند 1400 e / month باشد ، در هر 4 ماه 5600 e.

اگر بیست کارآموز در اتاق وجود داشته باشد ، هزینه می تواند 5600/20 باشد ، که در مجموع 280 e است.

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

6-3-2 کنترل بودجه:

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

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

اگر پروژه را به موقع تمام نکنیم ، ممکن است بدترین وضعیت رخ دهد.

برای این کار هزینه ای در حدود 1000/00 e در هر ماه تأخیر افزایش خواهیم داشت.

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

ما یک برنامه احتمالی را تدوین کرده ایم تا در صورت تأخیر در پروژه بتوانیم برخی از بودجه را پس انداز کنیم.

ما یک ماه به یورو رزرو کردیم تا در مورد پروژه تأخیر محتاط باشیم.

6-3-3 بودجه کل:

با استفاده از داده های نشان داده شده در جداول 1 ، 2 ، 4 و 5 می توانیم جدول 6 را ایجاد کنیم تا هزینه کل پروژه را نشان دهد و هزینه های احتمالی را به آن اضافه کنیم.

6-4 پایداری:

6-4-1 پایداری اقتصادی:

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

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

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

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

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

این پروژه قرار است 8 رشته در زمینه اقتصادی اعطا شود.

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

6-4-2 پایداری اجتماعی:

هدف از این پروژه غیر متمرکز کردن اختصاص دادن آدرسهای IP اینترنتی است تا اینترنت را آزادتر و در دسترس مردم قرار دهد.

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

تنها نهادی که تحت تأثیر پروژه ما قرار دارد موسسه IANA است.

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

این پروژه قرار است از نظر اجتماعی به جامعه 9 اعطا شود ، زیرا منبع باز است و در پایان به نهادها و کاربران کمک می کند تا امنیت بیشتری در مورد اینترنت داشته باشند.

6-4-3 پایداری محیط زیست:

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

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

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

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

این پروژه قرار است در زمینه پایداری محیط زیست 10 جایزه دریافت کند.

6-5 ماژول خاص TI:

6-5-1 مشخصات مورد نیاز:

هدف اصلی این پروژه ساخت نمونه اولیه Blockchain برای شبکه ای است که در آن تفویض اختیار ، تخصیص و اتصال آدرسهای IP غیرمتمرکز و کاملاً ایمن است.

از آنجا که این پروژه دشوار و گسترده است ، ما تصمیم گرفته ایم آن را به چهار قسمت تقسیم کنیم:

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

تعریف پایگاه داده ساختار پایگاه داده که تمام داده های Blockchain در آن ذخیره می شود.

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

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

بنابراین این پروژه ما در داخل پروژه دیگر خواهد بود.

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

امنیت اینترنت با بیت کوین و پروژه Blockchain توسط گروه تحقیقاتی CBA از Universitat Politècninca de Catalunya توسعه می یابد.

بیشتر مباحث تحت پوشش این گروه تحقیقاتی به شدت مرتبط با شبکه های باند پهن و خدمات و برنامه های پهن باند هستند:

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

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

این مهم است ، زیرا اعتبار بیشتری را برای اینترنت به ارمغان می آورد.

6-5-2 طراحی معماری:

با توجه به کل پروژه ، معماری به شرح زیر است:

- هسته اصلی برنامه:

الگوریتم اجماع و اعتبار سنجی - ذخیره سازی:

پایگاه داده معاملات با ساختار درخت پاتریشیا.

این ساختار بسیار شبیه به ساختار Ethereum [7] است.

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

- ارتباطات:

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

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

- شبکه سازی:

همانطور که در اولین تحویل توضیح داده شد ، از LISP [5] استفاده خواهیم کرد.

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

برای یافتن یک عدد کاملاً تصادفی ، از بلوک های Hash of Ethereum [7] به عنوان منبع تصادفی استفاده خواهیم کرد.

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

علاوه بر این ، برای ترکیب بلوک های Hash of the Ethereum و موارد دیگر ، ما از چراغ راهنما Nash [14] استفاده خواهیم کرد ، که تنها هدف آن تولید هر دقیقه یک Hash تصادفی است.

6-5-3 اجرا:

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

ما به عنوان ابزارهای نرم افزاری:

• سیستم عامل دبیان:

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

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

• متن متعالی 2:

SubimeimeText 2 به عنوان ویرایشگر متن برای برنامه نویسی پروژه ، انتخاب ما خواهد بود.

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

• عمومی گیتهوب:

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

• شبکه بتا:

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

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

• ماشین های مجازی:

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

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

• ایستگاه کاری:

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

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

• صفحه نمایش:

صفحه ای که برای توسعه اجرا استفاده می شود ، مانیتور ایسوس با 24 "" خواهد بود.

6-5-4 مدیریت ریسک:

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

اگر توسعه دهندگان به توسعه ادامه ندهند ، ما می توانیم تحت تأثیر قرار بگیریم.

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

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

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

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

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

6-5-5 ارتباط پروژه با صلاحیت های فنی تخصصی:

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

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

2- CTI2-3 (برای نشان دادن درک ، استفاده و مدیریت قابلیت اطمینان و امنیت سیستم های رایانه ای (CEI C6)) این صلاحیت به این دلیل انتخاب شده است که در نهایت هدف اصلی پروژه ایمن سازی اینترنت است ، بنابراین ما باید امنیت اطراف سیستم شبکه را درک و مدیریت کنید.

3- CTI3-4 (برای طراحی نرم افزار ارتباطات) پشت Blockchain پروتکل ارتباطی وجود دارد ، P2P که در بالا ذکر شد.

این یک قسمت حیاتی است ، بنابراین برای توسعه بقیه پروژه ، باید کاملاً نحوه کار آن را درک کنیم.

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

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

ماژول قادر به محافظت از شبکه در برابر حمله زیر شبکه نیست (توضیح داده شده در بخش 5-6).

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

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

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

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

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

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

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

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

ایده اصلی آزمون ها اختصاص مقدار اولیه 8 آدرس به گره ها است.

سپس ، در میان گره ها ، / 16 آدرس باید تفویض شوند.

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

در نتیجه ، برخی جنبه ها وجود دارد که می تواند در نمونه اولیه بهبود یابد تا مطابق انتظار کار کند ، اما به طور کلی همه ماژول ها به درستی کار کرده اند.

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

نتایج 7-1:

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

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

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

در این مرحله ما تصمیم گرفتیم اطلاعات هش بلوک Ethereum را کنار بگذاریم و فقط با چراغ NIST کار کنیم.

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

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

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

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

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

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

نمودار در شکل 7 دیده می شود و اعداد بسیار جالبی را نشان می دهد.

همانطور که می بینیم ، میانگین ثانیه های یافتن یک امضا کننده سی و سه ثانیه است.

نیمی از استفاده از NIST فقط به عنوان منبع تصادفی.

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

این امر باعث تاخیر زیاد بین سرور API و زنجیره واقعی Ethereum می شود.

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

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

7-2 کار آینده:

دست زدن به چنگال Blockchain 7-2-1:

در بخش 5

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

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

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

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

ایده اصلی برای حل این مسئله تأیید صحت بلوک هنگام دریافت بلوک جدید است.

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

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

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

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

به عنوان مثال ، در این سند ، Ouroboros و Algorand را دیده ایم.

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

با این وجود ادغام در نمونه اولیه به زمان زیادی نیاز دارد.

7-2-2 بهبود سرعت ایجاد بلوک:

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

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

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

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

7-2-3 Tangle به جای Blockchain:

فناوری Tangle [4] به لطف رمزنگاری IOTA [3] محبوبیت زیادی پیدا کرده است.

IOTA مخفف ارز ماشین به ماشین در آینده است که برای اکثر دستگاه های IOT مورد استفاده قرار می گیرد.

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

ساختار گره در شکل 8 دیده می شود.

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

این تأیید اعتبار PoW لازم برای سیستم برای تأیید معامله است.

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

در واقع به 38 عملیات برای حل ناسازگار نیاز دارد.

این رفتار قرار است مقیاس پذیری بالایی را که مقاله Tangle ادعا می کند ، فراهم کند.

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

با نوشتن این پایان نامه ، IOTA توسط هزاران کاربر در حال آزمایش است و برای لحظه ای مطابق انتظار کار می کند.

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