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

BlockSim: ابزاری شبیه سازی قابل توسعه برای سیستم های Blockchain.

BlockSim: An Extensible Simulation Tool for Blockchain Systems.

BlockSim: ابزاری شبیه سازی قابل توسعه برای سیستم های Blockchain.

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

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

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

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

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

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

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

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

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

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

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

در این مقاله ، ما یک چارچوب شبیه سازی رویداد گسسته به نام BlockSim (Alharby و Van Moorsel ، 2019) را برای بررسی تأثیرات پیکربندی ، پارامترها و تصمیمات طراحی بر رفتار سیستم های بلاکچین پیشنهاد می کنیم.

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

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

2- قابلیت توسعه:

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

3- سادگی:

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

این مقاله به معرفی کوتاه چارچوب BlockSim در Alharby و Van Moorsel (2019) می پردازد و تمام جنبه های طراحی ، اجرا و استفاده از ابزار را مورد بحث قرار می دهد.

در هسته BlockSim یک مدل پایه وجود دارد که شامل ساختارهای مدل در سه لایه انتزاعی است:

لایه شبکه ، لایه اجماع و لایه مشوق ها (Van Moorsel و همکاران ، 2018).

لایه شبکه گره های بلاکچین و پروتکل اساسی peer-to-peer را برای تبادل داده ها بین گره ها ضبط می کند.

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

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

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

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

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

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

ما نتایج شبیه سازی BlockSim را با مقایسه در برابر نتایج نظری (ثابت مانند نرخ بلاک) ، در برابر داده های موجود در سیستم های بلاک چین عمومی مانند Ethereum و Bitcoin و در برابر نتایج حاصل از ادبیات معتبر می دانیم.

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

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

با استفاده از BlockSim می توان اثبات کرد که ورود عمو (مانند Ethereum) برای عدم تمرکز استخراج مفید است.

ساختار مقاله به شرح زیر است.

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

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

بخش 3 در مورد مدل پایه اصلی BlockSim از جمله اهداف طراحی پشت آن بحث می کند.

بخش 4 اجرای مدل پایه را ارائه می دهد.

بخش 5 کاربرد BlockSim در Bitcoin ، Ethereum و سایر پروتکل های اجماع را به عنوان مطالعات موردی ارائه می دهد.

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

بخش 7 و 8 یک مطالعه شبیه سازی BlockSim و همچنین ارزیابی BlockSim را در برابر اهداف طراحی نشان می دهد.

بخش 9 کار مربوطه را مورد بحث قرار می دهد.

بخش 10 مقاله را به پایان می رساند.

2- پیش زمینه:

2-1- بررسی اجمالی بلاکچین: بلاکچین یک دفتر توزیع شده است ، با هدف ردیابی تمام معاملات انجام شده در شبکه بلاکچین.

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

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

از لحاظ فنی جذاب ترین نوع بلاکچین بلاکچین عمومی یا بدون مجوز است.

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

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

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

اولین و محبوب ترین سیستم بلاکچین بدون مجوز Bitcoin (Nakamoto، 2008) است که یک سیستم پرداخت دیجیتالی است که اشخاص غیر قابل اعتماد را قادر به انجام معاملات مالی می کند.

بلاک چین های دیگر (به عنوان مثال ، Ethereum ، Wood ، 2014) ایده قراردادهای هوشمند را برای پشتیبانی از برنامه های مختلف توزیع شده مانند رای گیری الکترونیکی ، برنامه های بهداشتی و غیره ارائه داده اند.

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

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

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

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

این سیستم های بلاکچین را تغییرناپذیر و در برابر حملات دو برابر هزینه محافظت می کند (الهربی و وان مورسل ، 2017)

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

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

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

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

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

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

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

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

2-2- Blockchain در لایه ها: سیستم های Blockchain را می توان به طور طبیعی در سه لایه شبکه ، اجماع و مشوق ها تقسیم کرد ، همانطور که در شکل 1 نشان داده شده است.

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

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

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

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

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

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

عامل اصلی در لایه شبکه یک گره است.

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

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

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

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

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

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

به عنوان مکانیسم انتشار اطلاعات برای بلاکچین ها ، چندین پروتکل از جمله شبکه های رله و پروتکل های مبتنی بر تبلیغات (Gervais و همکاران ، 2016) ارائه شده است.

در پروتکل مبتنی بر تبلیغات که در اکثر زنجیره های بلوکی به کار رفته است (Gervais و همکاران ، 2016) ، گره در مورد داده های جدید (به عنوان مثال ، یک معامله) اعلانی را به همتایان خود ارسال می کند.

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

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

2-2-2- لایه اجماع:

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

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

چندین الگوریتم اجماع مانند اثبات کار (PoW) و اثبات سهام (PoS) وجود دارد که برای سیستم های بلاکچین پیشنهاد شده است.

در PoW ، گره ها (به عنوان مثال ماینرها) با اتصال بلوک های جدید ، قدرت محاسباتی خود را برای حفظ دفتر حساب سرمایه گذاری می کنند ، در حالی که در PoS ، گره ها سهام یا پول خود را سرمایه گذاری می کنند.

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

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

در عین حال ، گره ها فقط در صورت رعایت قوانین و نگه داشتن دفترچه صادقانه به دلیل تلاش خود پاداش می گیرند (بخش 2.2.3 را ببینید).

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

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

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

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

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

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

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

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

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

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

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

پیشنهادهای دیگری مانند GHOST (Sompolinsky and Zohar، 2015) چنگال با سنگین ترین کار را انتخاب می کنند.

2-2-3- لایه تشویقی: لایه انگیزه ها با استفاده از ارز رمزنگاری شده بلاکچین برای ایجاد یک ساختار تشویقی ، توزیع جوایز را در بین ماینرهای شرکت کننده که دفتر بلاکچین را نگهداری می کنند ، توزیع می کند.

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

مشوق ها باید معدن کاران را به خاطر کارشان جبران کنند و به آنها انگیزه دهند که رفتار صادقانه ای داشته باشند (Aldweesh et al.، 2018؛ Alharby et al.، 2018).

مشوق ها همچنین از سیستم بلاکچین در برابر حملات مختلف (به عنوان مثال ، حملات DDoS در Ethereum ، Buterin ، 2016) و در برابر رفتارهای مخرب گره ها محافظت می کنند (به عنوان مثال ، استراتژی های استخراج خودخواهانه ، Eyal و Sirer ، 2018).

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

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

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

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

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

این مدل معمولاً شامل عبارات ریاضی و همچنین روابط ساختاری و منطقی برای توصیف پویایی سیستم است (Anderson et al.، 2015).

شبیه سازی یک روش کمی است که مدل را برای تقلید از رفتار سیستم "اجرا" می کند (Anderson et al.، 2015).

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

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

شبیه سازی را می توان به دو دسته تقسیم کرد ، یعنی شبیه سازی رویداد گسسته و شبیه سازی رویداد پیوسته (Haverkort، 1998).

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

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

دو روش برای توسعه ابزارهای شبیه سازی وجود دارد ، یعنی زبانهای برنامه نویسی برای همه منظوره (به عنوان مثال ، C ++ ، جاوا ، یا پایتون) و زبانهای شبیه سازی برای اهداف خاص (به عنوان مثال ، Arena و GPSS) (Leemis and Park، 2006).

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

همانطور که در لمیس و پارک (2006) بیان شد ، بحث و اختلاف وجود دارد که کدام روش ترجیح داده می شود.

همچنین قابل ذکر است که چارچوب های شبیه سازی امکان توسعه مدل های شبیه سازی را با استفاده از زبانهای عمومی ، به عنوان مثال OMNeT ++ و SimPy برای توسعه مدل ها در C ++ و پایتون فراهم می کند.

برای توسعه و پیاده سازی BlockSim ، ما Python را به عنوان یک زبان عمومی منظور می کنیم.

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

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

3.BaseSim Base Model: در این بخش ، ما مدل پایه Base BlockSim را معرفی می کنیم که برای مدل سازی هر نوع سیستم بلاکچین با پسوندهای خاص برنامه در صورت لزوم طراحی شده است.

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

سپس ، ما لایه به لایه طرح را بحث می کنیم: لایه لایه شبکه ، لایه اجماعی و لایه مشوق ها.

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

3.1 اصول طراحی:

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

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

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

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

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

مدل Base بلوک های اصلی ساختاری را شناسایی می کند (به عنوان مثال ، بلوک ها ، معاملات ، گره ها و مشوق ها) که در تمام Blockchain ها برای BlockSim در نظر گرفته شده است ، به شکل 2 مراجعه کنید.

مدل Base تاكید می كند كه كلاس كلاس مدل كه توسط BlockSim پشتیبانی می شود ، و به خصوص ساخت مدل های جدید آسان است.

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

3.2. لایه شبکه:

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

نهاد Node مسئول بروزرسانی متغیرهای حالت سیستم است (به عنوان مثال ، دفتر بلاکچین و مجموعه معاملات).

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

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

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

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

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

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

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

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

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

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

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

3.3. لایه اجماع:

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

این لایه شامل چهار موجودیت است ، یعنی Transaction ، Block ، Transactions pool و دفتر Blockchain ، همانطور که در شکل 2 نشان داده شده است.

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

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

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

موجودیت Node این چهار موجودیت را حفظ می کند.

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

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

جریان این فعالیت ها در شکل 3 نشان داده شده است.

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

3.3.1. معامله:

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

در بروزرسانی وضعیت بلاکچین نقش بسزایی دارد.

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

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

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

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

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

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

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

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

این ویژگی ها تقریباً در تمام زنجیره های بلوک رایج است و برخی از سیستم ها دارای ویژگی های اضافی بیشتری هستند (به عنوان مثال ، Ethereum دارای ویژگی های مربوط به گاز مانند Gas Limit است).

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

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

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

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

• ایجاد معاملات: این شامل تولید تراکنش ها توسط گره های شرکت کننده است.

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

• انتشار معاملات: این امر مستلزم ایجاد کننده معامله است تا آن را در سایر گره های شرکت کننده منتشر کند.

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

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

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

هدف این روش تهیه روشی ساده و ساده برای مدل سازی تراکنش ها با حذف فرآیند انتشار و همچنین نیاز گره ها برای به روزرسانی مداوم استخرهایشان است (بخش 3.3.2 را ببینید).

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

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

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

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

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

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

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

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

3.3.2. بلوک: بلوک ها یکی دیگر از واحدهای اساسی ساخت هر سیستم بلاک چین است.

بلوک شامل معاملات است.

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

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

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

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

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

شناسه miner به گره ایجاد کننده بلوک اشاره دارد.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• انتشار بلوک به گره های دیگر: این برای انتشار بلوک به گره های دیگر شبکه است.

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

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

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

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

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

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

در غیر این صورت ، گره اقدامات زیر را انجام می دهد.

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

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

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

• افزودن بلوک به بلاکچین محلی: این برای ضمیمه بلوک دریافتی به نسخه محلی بلاکچین است.

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

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

3.3.3. معاملات استخر و دفتر بلاکچین:

استخر معاملات و دفتر بلاکچین نیز بلوک های مهم ساختمانی (نهادهایی) هستند زیرا آنها نمایانگر وضعیت سیستم های بلاکچین هستند.

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

گره ها مسئول به روزرسانی استخر و دفتر هستند ، زیرا هر گره در شبکه بلاکچین یک نسخه محلی از آنها را نگهداری می کند (بخش 3.2 را ببینید).

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

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

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

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

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

با این وجود سیستم های دیگر از قوانین مختلفی استفاده می کنند (به عنوان مثال ، GHOST ، Sompolinsky and Zohar ، 2015).

3.4 لایه تشویقی:

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

این لایه دارای موجودیت پاداش است که به نهاد Block بستگی دارد (شکل 2 را ببینید).

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

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

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

مدل ما برای ایجاد یک بلوک معتبر (پاداش بلوک) و برای همه معاملات شامل یک بلوک (هزینه معامله) پاداش در نظر می گیرد.

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

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

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

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

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

4. اجرای BlockSim:

ما اجرای شبیه ساز BlockSim را با استفاده از Python 3.6.41 ارائه می دهیم.

ماژول های اصلی در شکل 4 آورده شده است.

Simulator Module موتور اصلی شبیه ساز ، به ویژه برنامه ریز رویدادها را اجرا می کند ، که ما در بخش 4 توضیح می دهیم.

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

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

بخش 4.3 نحوه اجرای مدل پایه را توضیح می دهد ، که طبق لایه های اصلی تقسیم شده است: ماژول شبکه ، ماژول اجماع و ماژول مشوق ها.

4.1. موتور شبیه سازی BlockSim و برنامه ریز رویدادها:

همانطور که در شکل 4 نشان داده شده است ، ماژول اصلی شبیه سازی شامل چهار کلاس است که عبارتند از Event ، Scheduler ، Statistics و Main.

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

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

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

در مورد یک رویداد در سطح بلوک ، چهار ویژگی دارد: نوع ، nodeID ، زمان و بلوک.

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

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

ویژگی بلوک شامل اطلاعات لازم برای مدیریت بلوک است.

کلاس Scheduler وظیفه برنامه ریزی رویدادهای آینده و ثبت آنها را در Que است.

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

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

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

عملکرد کلاسهای Main و Statistics همانگونه است که انتظار می رود.

Main شبیه ساز را اجرا می کند.

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

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

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

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

4.2. ماژول پیکربندی:

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

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

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

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

این کار فقط با تنظیم پارامتر hasTrans به صورت "False" بدون تغییر کد شبیه ساز انجام می شود.

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

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

پارامترهای ورودی برای شبیه ساز.

4.3. ماژول های مدل پایه:

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

شبکه ماژول: ما ماژول شبکه را در دو کلاس مختلف یعنی Node و Network پیاده سازی می کنیم.

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

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

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

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

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

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

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

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

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

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

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

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

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

3.1 کلاس Block ساختار بلوک ها را در شبیه ساز ما تعریف می کند.

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

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

3.2 کلاس Consensus الگوریتم اجماع و همچنین قانون حل و فصل چنگال را پیاده سازی می کند.

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

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

به عنوان مثال ، پیاده سازی الگوریتم PoW با طولانی ترین قاعده برای حل و فصل چنگال های بالقوه به عنوان مورد Bitcoin و Ethereum.

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

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

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

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

5. مطالعات موردی BlockSim:

BlockSim به گونه ای طراحی شده است که برای هر نوع بلاکچین مورد استفاده قرار می گیرد و برای نشان دادن این مسئله ما از مدل پایه BlockSim برای شبیه سازی بیت کوین و همچنین Ethereum استفاده می کنیم.

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

5.1. بیت کوین در BlockSim:

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

لایه شبکه: برای بیت کوین ما پروتکل پخش اساسی را با مدل سازی انتشار معاملات و بلوک ها به عنوان یک تاخیر زمانی ، همانطور که در بخش 3.2 نشان داده شده است ، انتزاع می کنیم. برای پارامتر سازی مدل می توان از DSN Bitcoin Monitoring برای به دست آوردن تأخیر انتشار اطلاعات استفاده کرد.

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

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

Consensus Layer: بیت کوین از PoW با طولانی ترین قاعده برای حل و فصل چنگال ها استفاده می کند.

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

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

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

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

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

در ماژول پیکربندی ، می توان مشکل بلوک را از طریق پارامتر Binterval تنظیم کرد ، که این فاصله زمانی (در ثانیه) بین دو بلوک متوالی است.

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

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

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

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

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

جوایز را می توان در ماژول پیکربندی تنظیم کرد.

5.2. اتریوم در BlockSim:

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

لایه های شبکه و اجماع: Ethereum اجازه می دهد بلوک های Uncle را به یک بلوک معتبر وصل کنید و به این دلیل پاداش ها را پاداش می دهد.

بنابراین ، ماژول Bitcoin Node را با یک ویژگی Unchain گسترش می دهیم.

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

Ethereum به ماینرها اجازه می دهد حداکثر 2 بلوک عموی را در هفت نسل بلوک گذشته قرار دهند (به عنوان مثال ، یک بلوک عموی با عمق 10 می تواند در یک بلوک با عمق کمتر یا مساوی 17 ارجاع شود).

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

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

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

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

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

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

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

برای معاملات ، ویژگی های Gas Limit ، Gas Used and Gas Price را اضافه می کنیم.

برای بلوک ها ، ویژگی های Gas Limit و Gas Used را داریم.

ما به ادبیات ، به عنوان مثال ، Wood ، 2014 مراجعه می کنیم. Alharby و Van Moorsel ، 2017 برای جزئیات بیشتر ، اما به طور خلاصه ، گاز دست دوم ضرب در قیمت گاز مربوط به هزینه ای است که معدنکار دریافت می کند ، جایی که گاز استفاده شده به الزامات محاسباتی قرارداد هوشمند بستگی دارد (Aldweesh و همکاران ، 2018) ، اما هرگز از حد مجاز گاز فراتر می رود.

Ethereum همچنین برای بلوک های عموی پاداش می دهد.

پاداش عمو بین معدنچی که عمو را تولید کرده و معدنچی که آن را در بلوک خود قرار داده است توزیع می شود ، به شرح زیر (Wood، 2014).

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

هرچه زودتر به عمو در یک بلوک مراجعه شود ، پاداش عمو (Runcle) بالاتر است: Runcle = (Duncle + (Guncle + 1) Dblock) * RblockGuncle + 1 (1) که در آن Duncle عمق عمو است ، Guncle است تعداد نسلی که عمو می تواند شامل شود ، Dblock عمق بلوک و Rblock پاداش بلوک است.

معدنکاری که دایی را در بلوک خود قرار دهد پاداش ثابتی دریافت می کند که 132 * Rblock محاسبه می شود.

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

5.3. پروتکل های اجماع مختلف در BlockSim:

تا کنون ما عمدتا PoW را به عنوان پروتکل اجماع در نظر گرفته ایم ، اما موارد دیگری از جمله اثبات سهام (PoS) ، اثبات اقتدار یا الگوریتم های اجماع مبتنی بر پیام مانند تحمل خطای عملی بیزانس و انواع مختلف آن وجود دارد (آنجلیس و همکاران). ، 2018).

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

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

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

سایر پروتکل ها ماینرها را به صورت دور گرد مانند Tendermint (Kwon ، 2014) یا بر اساس معیارهای مختلف انتخاب می کنند (Angelis و همکاران ، 2018).

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

سایر عناصر اجماع (به عنوان مثال ، معاملات ، بلوک ها و وضوح انشعابات) و ماژول ها (شبیه سازی ، شبکه و مشوق ها) بدون تغییر باقی می مانند.

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

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

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

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

اعتبار سنجی 6.BlockSim:

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

ابتدا BlockSim را با سیستم های blockchain موجود مقایسه می کنیم (بخش 6.1) ، سپس با مطالعات مختلف بررسی شده توسط همسالان مقایسه می کنیم (بخش 6.2).

6.1 مقایسه با اندازه گیری ها:

ما نتایج BlockSim را با محبوب ترین بلاک چین ، Bitcoin و Ethereum مقایسه می کنیم.

این موارد "تغییرناپذیری" خاصی را ارائه می دهد که ما درست می دانیم ، مانند تعداد دفعات تولید بلوک و تناسب بین سهم هش معدنچی و احتمال برنده شدن در مسابقه اثبات کار.

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

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

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

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

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

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

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

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

یعنی ما از مقادیر جدول 2 برای پارامترهای ورودی مربوطه که در جدول 1 آورده شده استفاده می کنیم. ما داده های Bitcoin را از blockchain.info2 جمع آوری می کنیم ، در حالی که داده های Ethereum از etherscan.io3 می آید. ما از اکتبر 2018 برای هر سیستم 1 ماه داده جمع آوری می کنیم.

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

با این حال ، تأخیر بلوک را با استفاده از DSN Bitcoin Monitoring4 و ETHstats5 به دست می آوریم.

برای به دست آوردن اندازه تراکنش ها در Ethereum ، ما یک اسکریپت پایتون پیاده سازی می کنیم که از API های etherscan.io برای بازیابی اطلاعات معاملات استفاده می کند.

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

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

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

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

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

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

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

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

ما 4 روز از شبکه Bitcoin را جمعاً 1000 بار شبیه سازی می کنیم و کسر متوسط ​​بلوک های تولید شده توسط هر استخراج کننده را بدست می آوریم.

محور x شکل 5 نام استخراج کنندگان و محور y کسری از بلوک های استخراج شده توسط ماینرها را برای شبکه واقعی بیت کوین (میله های سبز) و نتایج شبیه سازی (میله های خاکستری) نشان می دهد.

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

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

6.2 مقایسه با مطالعات بررسی شده توسط همتا:

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

دکر و واتنهوفر (2013) با گوش دادن به 10 هزار بلوک آزمایشی را در مورد بلاکچین بیت کوین اجرا کردند.

آنها دریافتند که تاخیر انتشار بلوک به طور متوسط ​​12.6 ثانیه است و میزان بیات 1.69٪ است.

Gervais و همکاران (2016) برخی آزمایش های شبیه سازی را با استفاده از پیکربندی سیستم های مختلف بلاکچین مانند بیت کوین ، Litecoin و Dogecoin انجام می دهند.

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

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

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

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

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

7. نتایج شبیه سازی BlockSim:

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

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

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

بحث اصلی در این بخش در مورد چگونگی تأثیر میزان بلوک بیات بر تمرکززدایی معدن و چگونگی رویکرد Ethereum برای پاداش دادن به بلوک های عموی عدم تمرکز معدن را بهبود می بخشد.

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

میزان ماندگاری یک شاخص امنیتی برای سیستم بلاکچین است و هرچه نرخ پایین تر باشد ، برای امنیت سیستم بهتر است (Gervais و همکاران ، 2016).

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

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

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

جدول 5 نتایج (میزان ماندگاری ، توان عملیاتی و عدم تمرکز استخراج) را برای 25 ترکیب مختلف از فاصله بلوک های مختلف Binterval و تأخیر بلوک Bdelay و همچنین زمان اجرا برای هر تنظیمات نشان می دهد.

برای سهولت ارائه ، ما فقط پنج استخراج کننده (M1 ، M2 ،… ، M5) را در نظر می گیریم که قدرت هش آنها از 5 تا 40٪ است.

توان هش برای یک ماینر یک پارامتر قابل تنظیم است (بخش 5.1 را ببینید).

برای همه پیکربندی ها ، اندازه بلوک را 1 مگابایت و متوسط ​​اندازه معامله را 546 بایت قرار می دهیم (همانند شبکه بیت کوین).

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

فواصل اطمینان در اینجا گزارش نشده است ، اما همه آنها در 10٪ از مقادیر متوسط ​​هستند.

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

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

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

به عنوان مثال ، کاهش فاصله بلوک از 12 به 1 ثانیه در مورد تاخیر بلوک 0.5 ثانیه منجر به افزایش نرخ بیات حدود هفت برابر می شود.

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

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

به عنوان مثال ، نرخ بیات در هنگام افزایش تأخیر از 0.5 به 16 ثانیه در مورد فاصله بلوک 12 ثانیه ، حدود ده برابر افزایش می یابد.

تأخیر بلوک شامل زمان انتقال بلوک و همچنین تأیید بلوک و معاملات جاسازی شده آن است (Decker and Wattenhofer، 2013).

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

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

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

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

توان عملیاتی: از نتایج توان عملیاتی گزارش شده در جدول 5 ، موارد زیر را مشاهده می کنیم.

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

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

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

در صورت افزایش تأخیر بلوک از 0.5 به 16 ثانیه در مورد فاصله بلوک 12 ثانیه ، تعداد تراکنش های قابل پردازش در ثانیه از 147 به 92 کاهش می یابد.

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

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

عدم تمرکز معدن: از نتایج تمرکززدایی معدن گزارش شده در جدول 5 ، موارد زیر را مشاهده می کنیم.

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

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

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

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

به عنوان مثال ، در مورد بلوک 1 ثانیه ، به عنوان مثال ، استخراج کنندگان با قدرت هش بزرگ (به عنوان مثال ، M1) کسر بالاتری از بلوک ها را در دفتر اصلی وارد می کنند ، و در نتیجه سود بیشتری نسبت به قدرت هش سرمایه گذاری شده خود کسب می کنند.

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

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

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

عملکرد زمان اجرای: برای هر ترکیبی از تنظیمات ، ما میانگین زمان (بر حسب ثانیه) را برای انجام یک اجرا از شبیه ساز نشان می دهیم.

برای به دست آوردن نتایج زمان اجرا ، ما از یک لپ تاپ با پردازنده 2.5 گیگاهرتزی Intel i5 با 16 گیگابایت RAM در ویندوز 10 استفاده می کنیم.

از جدول 5 ، موارد زیر را مشاهده می کنیم.

اول ، مدت زمان اجرا به طور کلی برای شبیه سازی 10،000 بلوک ثانیه طول می کشد.

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

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

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

در مرحله دوم ، زمان اجرا برای نرخ های بیات بالاتر (تنظیم با Binterval کوچک یا Bdelay بزرگ) افزایش می یابد.

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

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

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

توان عملیاتی بیت کوین: اجرای فعلی سازش های بیت کوین در فاصله بلوک 596 ثانیه و تأخیر بلوک 0.42 ثانیه ، همانطور که در جدول 2 گزارش شده است.

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

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

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

عدم تمرکز استخراج Ethereum از طریق گنجاندن عمو: اجرای فعلی مصالحه Ethereum با فاصله بلوک 12.42 ثانیه و تاخیر بلوک 2.3 ثانیه ، همانطور که در جدول 2 گزارش شده است.

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

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

با این حال ، این تضمین نمی کند که ماینرها در مقایسه با توان هش سرمایه گذاری شده خود پاداش عادلانه دریافت کنند (به عنوان مثال ، ماینر با قدرت هش 20٪ باید 20٪ از کل پاداش توزیع شده در شبکه را دریافت کند)

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

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

ما 10 اجرا شبیه سازی مستقل از 10،000 بلوک را اجرا می کنیم و نتایج متوسط ​​را در جدول 6 گزارش می دهیم.

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

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

کسری از پاداش های هر معدنچی (M1 ، M2 ،… ، M5) ، با و بدون مکانیسم ورود دایی.

8. بحث:

ارزیابی BlockSim در برابر اهداف طراحی:

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

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

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

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

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

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

برای حمایت بیشتر از این معیار ، هدف ما مدل سازی و اجرای پروتکل های اجماع مختلف (به عنوان مثال Proof-of-Stake) و همچنین پروتکل های پخش عمومی مختلف برای لایه Network در نسخه بعدی BlockSim است.

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

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

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

در بخش های 5.1 ، 5.2 ، ما نشان می دهیم که چگونه ماژول های پایه BlockSim را پشتیبانی می کنیم تا از پیاده سازی Bitcoin و Ethereum پشتیبانی کنیم.

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

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

اجرای فعلی BlockSim فرض می کند که همه گره ها صادق هستند.

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

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

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

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

مشابه این ، مطالعه عدم قطعیت معدنچیان هنگام انتخاب معاملات (Alharby و Van Moorsel ، 2018) و تحلیل معضل تایید کننده Ethereum (Alharby و همکاران ، 2020) است.

سادگی: BlockSim این معیار را بدست می آورد زیرا در ماژول های مختلف پیاده سازی شده است و همچنین یک رابط کاربری (یک ماژول پیکربندی) را فراهم می کند که به کاربر نهایی اجازه می دهد پارامترهای ورودی شبیه ساز را تنظیم کند.

این کار استفاده و درک BlockSim را آسان می کند.

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

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

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

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

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

9. کار مرتبط:

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

در Yasaweerasinghelage و همکاران. (2017) ، نویسندگان از مدل سازی و شبیه سازی معماری برای اندازه گیری تأخیر در سیستم های بلاکچین تحت تنظیمات مختلف استفاده می کنند.

در Alharby و Van Moorsel (2018) ، نویسندگان یک مدل شبیه سازی برای بررسی تأثیر عدم اطمینان سود در بلاکچین Ethereum پیشنهاد کرده اند.

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

در نودکر و همکاران (2015) ، نویسندگان یک مدل شبیه سازی برای تحلیل و ارزیابی حملات به شبکه بیت کوین پیشنهاد داده اند.

در Gobel و همکاران (2016) ، نویسندگان از شبیه سازی رویداد گسسته برای مطالعه رفتار استخراج کنندگان بیت کوین (از جمله استراتژی های خودکاوی) در هنگام تأخیر در انتشار اطلاعات در بین استخراج کنندگان استفاده می کنند.

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

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

چندین شبیه ساز شبکه شبیه بیت کوین در ادبیات مانند Aoki و همکاران ارائه شده است.

(2019) ، میلر و یانسن (2015) و استویکوف و دیگران (2017)

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

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

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

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

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

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

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

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

10. نتیجه گیری:

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

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

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

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

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

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

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