در این مقاله، پس از تعریف حالت یا وضعیت، رویکرد خود را برای ساختن مدلی بدون حالت برای اکوسیستم پیچیدهای مانند اتریوم بررسی میکنیم. قصد داریم به صورت تئوری، یک شبکه بیزی را برای اکوسیستم اتریوم بدون وضعیت طراحی کنیم. قسمت پیشین این سری را در لینک زیر مطالعه کنید:
در ادامه این مطلب شبکه اتریوم را به شکلی فرضی بازطراحی خواهیم کرد. در این مدل جدید، خبری از حالت (state) در این شبکه نخواهد بود. در این نوشته در ابتدا سعی خواهیم کرد تا پیچیدگیهای سیستم فعلی را با مدل بیزی به نمایش درآوریم. با ادامه این مطلب همراه باشید.
اتریوم بدون حالت چیست؟
قبل از اینکه بپرسیم اتریوم بدون حالت (Stateless) چیست، ابتدا باید به این سوال پاسخ دهیم که حالت چیست و چرا میخواهیم از شر آن خلاص شویم؟
وضعیت سراسری اتریوم شامل تمام حسابهای اتریوم، موجودی آنها، قراردادهای هوشمند مستقر در اکانت و فضای ذخیرهسازی مرتبط است. حسابهای جدید به طور مداوم اضافه میشوند و قراردادهای هوشمند جدید در حال اجرا هستند. بنابراین، اندازه State اتریوم تا بینهایت در حال رشد است.
مفهوم این رشد حالت تا بینهایت این است که راهاندازی یک فول نود، زمان بیشتری طول میکشد و از فضای بیشتری استفاده میکند. در نتیجه، هزینه افزایش مییابد و پیوستن به شبکه به عنوان فول نود جدید، جذابیت کمتری پیدا میکند.
ویتالیک بوترین این مسئله را در سال ۲۰۱۷ و زمانی که برای اولین بار مفهوم اتریوم بدون وضعیت را معرفی کرد، تشخیص داد. هدف اصلی اتریوم بدون حالت، افزایش مقیاس پذیری اتریوم، با کاهش رشد نامحدود اندازه State است.
انتخاب مدل شبکه بیزی (Bayesian) برای اتریوم بدون حالت
تکنیکهای مدلسازی مختلفی وجود دارد. با این حال، به دلایل متعددی رویکرد مدلسازی شبکه بیزی (BN) را برگزیدیم.
نخست BN یک ابزار مدلسازی گرافیکی و بصری احتمالی است که تعامل سهامداران را در مدل نشان میدهد. ثانیا در این رویکرد میتوانیم به صراحت عدم قطعیت را با استفاده از توزیعهای احتمال توام در تمام فاکتورها و تعاملات موجود در مدل نشان دهیم. سوما، BN برای مدلسازی سیستمهای پیچیده مانند اتریوم بسیار مناسب است و در نهایت، ممکن است صرف نظر از اینکه حجم دادهها زیاد باشد یا نه، از آن استفاده شود.
شاید قانعکنندهترین دلیل استفاده از شبکه بیزین برای مدلسازی اتریوم این باشد که به صراحت عدم قطعیت را به تصویر میکشد و به مدل اجازه میدهد از ورودی دادهها یاد بگیرد. BN برای پیش بینی سلامت اکوسیستم پس از معرفی اتریوم بدون حالت طراحی شده است.
نگاهی سطح بالا به مدل اتریوم بدون حالت
شکل بالا، نمای ساده شده مدل کامل را به تصویر کشیده است که از چهار زیرمدل تشکیل شده است: ایجاد بلوک، ایجاد شاهد، شبکه اتریوم و انتشار بلوک. در هر یک از زیرمدلها، عوامل کلیدی و تعاملات آنها در شبکه اصلی اتریوم را جمعآوری میکنیم و بر تغییرات معرفی شده توسط اتریوم بدون حالت تمرکز میکنیم.
هنگامی که تمام اطلاعات به مدل اضافه شد، میتوانیم نحوه رفتار مدل را در هنگام تغییر بخشهای خاصی از آن بررسی کنیم. کاملا واضح است که این تغییرات تا چه اندازه بر سلامت کلی اکوسیستم اتریوم تاثیر میگذارد. از دادههای شبکه اصلی اتریوم که در دسترس عموم است، استفاده میکنیم که به سایر منابع دادهای که شامل خروجی مدل و دانش تخصصی هستند، اضافه شدهاند تا مدل را کمّیسازی کنیم.
جریان اطلاعات بین زیرمدلهای اتریوم بدون حالت
در تصویر بالا که نمایی جزئیتر از شکل قبل است، مشاهده میکنید که چگونه جریان اطلاعات از طریق زیرمدلهای، برای تعیین سلامت اکوسیستم اتریوم، منتقل میشود. مدل اتریوم بدون حالت را به عنوان یک شبکه بیزی شیگرا (OOBN) ایجاد کردیم. این روش طراحی، یک مدل ماژولار است و ویژگیهای طراحی شیگرا را به ارث میبرد.
برای مثال، میتوانیم یک عامل کلیدی را بهعنوان «گره خروجی» مدلسازی کنیم، به این معنی که برای سایر زیرمدلها قابل مشاهده است. این بدان معناست که فاکتورهای کلیدی که در یک مدل اندازهگیری میشوند (بیضیهای ساده) را میتوان در زیرمدل دیگری با داشتن یک گره ورودی (بیضیهای خطچین)، برای آن عامل استفاده کرد.
در بخشهای بعدی، زیرمدلهایی را که مدل ترکیبی را تشکیل میدهند، توضیح میدهیم. در ادامه، چالشها و تکنیکهایی را که برای توسعه و تعیین کمیت این زیرمدلها استفاده کردیم، مورد بحث قرار میدهیم.
مدلسازی شبکه بیزی اکوسیستم اتریوم
مدل شبکه اتریوم دارای پنج عامل کلیدی است. سه مورد از آنها عبارتند از تولید کننده بلوک، پهنای باند گره و تاخیر شبکه که در زیرمدلهای دیگر نیز به آنها اشاره شده است. این عاملها در شکل به صورت بیضیهای خطچین نشان داده شده است.
فرض میکنیم، تمام گرههای اتریوم یا بهعنوان استخراجکننده هستند یا گرههایی که نیمه بدون حالتاند (semi stateless) و بلوک ایجاد نمیکنند. گرههای «نیمه بدون حالت» دارای درجههای متفاوتی از بدون حالت بودن هستند، بنابراین، تمام فول نودها و نودهای آرشیو در شبکه اتریوم را میتوان به عنوان نودهای «نیمه بدون حالت» طبقهبندی کرد.
برای هر یک از عاملهای موجود در مدل، ما به توزیع احتمال در حالتهای مختلف نیاز داریم که این عامل میتواند در آن قرار گیرد. به این معنی که جدولی از احتمالات را که به عنوان جدول احتمال شرطی (CPT) شناخته میشود، به هر عامل در مدل اختصاص میدهیم.
ایجاد کننده بلوک
برای تهیه کننده بلوک، باید نسبت تمام گرههای اتریوم را که ماینر هستند تخمین بزنیم و این کار را با استفاده از دادههای شبکه اصلی اتریوم انجام میدهیم. ما نسبت آدرسهای عمومی متمایز را که پاداش ماینینگ را دریافت کردهاند، محاسبه کردیم. با محاسبه این ویژگی، کارشناسان درصد ماینرها را یک درصد تخمین میزنند.
پهنای باند گره
پهنای باند گره امکان انتشار سریع بلوکها را از طریق شبکه اتریوم فراهم میکند. این امر به ویژه برای ماینرها مهم است. ما سه سطح از پهنای باند را اختصاص دادیم: کسبوکارها و گرههای میزبانی دارای پهنای باند بالا، دانشگاهها و گرههای حاضر در مناطق مسکونی دارای پهنای باند متوسط هستند و به همه دستههای دیگر پهنای باند کم اختصاص داده شده است. محاسبات با استفاده از دادههای ethernodes.org محاسبه شد.
محل گره
ما کشورهایی را که گرهها در آنها قرار دارند در پنج منطقه گروهبندی کردیم: اروپا، آمریکای شمالی، چین، بقیه آسیا و بقیه جهان. این اطلاعات نیز از همان وبسایت استخراج شدهاند. شکل بالا یک نمایش بصری از پنج منطقه را نشان میدهد.
مکان نود همتا (Peer)
ماینرها برای اطمینان از انتشار و دریافت بلوکها به صورت کارآمد و سریع، با سایر ماینرها ارتباط مستقیم دارند و ممکن است peerهایی را ترجیح دهند که از نظر جغرافیایی در یک محدوده قرار دارند. انتخاب مکان peerها برای ماینرها ممکن است به عوامل دیگری بستگی داشته باشد. ارزیابی این ویژگی دشوار است چون اطلاعات زیادی در دسترس نیست.
تاخیر شبکه در اتریوم بدون حالت
برای تعیین کمیت تاخیر شبکه، از دادههایی تشکیل شده است که شامل میانگین، انحراف استاندارد، حداقل و حداکثر ۳۰ بار اجرای دستور ping بین دو شهر است. برای هر ترکیب یک یا چند ورودی (ردیف) وجود دارد. برای مدلسازی تاخیر بین مبدا و مقصد، از این مجموعه داده برای محاسبه ورودیهای CPT در تعدادی گام استفاده کردیم و از میانگین وزنی واریانس معکوس برای در نظر گرفتن تغییرات بین شهر و منطقه بهره گرفتیم.
ساخت شبکه بیزی ایجاد بلوک
ما نسخه اولیه مدل ایجاد بلوک را بر اساس درک خود از فرآیند فعلی ایجاد بلوک در شبکه اصلی اتریوم ساختیم. سپس دادهها را از بلوکهایی که طی ۲۶ تا ۳۰ نوامبر ۲۰۱۹ ماین شدهاند، استخراج کردیم. همانطور که در شکل بالا مشاهده میشود، دادههایی مانند زمان ایجاد بلوک، تعداد تراکنشها در هر بلوک، سختی و دیگر اطلاعات را بدست آوردیم. تعداد کل بلوکها در این دوره ۲۲۶۵۴۵ بلوک بوده است.
ما چندین الگوریتم یادگیری را برای بررسی شایستگی ساختارهای مدل پیشنهادی مختلف اجرا کردیم. به عنوان ورودی الگوریتم یادگیری، از اطلاعات بلوک استفاده کردیم. خروجی الگوریتم یادگیری منجر به تغییرات جزئی در ساختار اولیه شد (شکل بالا).
مدلسازی شبکه بیزی برای تولید شاهد
ما شاهد (Witness) اتریوم بدون حالت را در فورک هایپرلجر بسو پیادهسازی کردیم و Witnessهایی برای ۲۶۵۹۵ بلاک ایجاد کردیم و اندازه و زمان ایجاد را برای هر شاهد ثبت کردیم.
وابستگی بین شاهدها و بلوکها در شکل نشان داده شده است. آنها با استفاده از ترکیبی از منطق تعیین شدند، به عنوان مثال، هر چه اندازه شاهد ایجاد شده بزرگتر باشد، مدت زمان ایجاد بلوک نیز بیشتر خواهد شد. ما از اطلاعات شاهد و بلوک، برای یادگیری احتمالات شرطی استفاده کردیم.
مدلسازی شبکه بیزی انتشار بلوک
در شبکه اتریوم، نودها به چندین peer متصل میشوند تا داده را به موقع ارسال و دریافت کنند. گرهها از طریق نزدیکترین peerها، با شبکه همگام میشوند، بلوکهای گم شده را دریافت میکنند و آنها را پردازش میکنند تا حالت سراسری خود را به روزرسانی کنند. با این حال، گرهها میتوانند آفلاین شوند یا ممکن است تحت تاثیر پهنای باند کم یا تاخیر زیاد قرار گیرند. در این مواقع، معمولا از زنجیره عقب میافتند.
در حال حاضر، وقتی یک ماینر یک بلوک معتبر پیدا میکند، بلوک را در سریعترین زمان ممکن از طریق شبکه منتشر میکند. ماینر دیگری که این بلوک را دریافت میکند، اعتبار آن را بررسی میکند. ماینر باید PoW هدر بلوک را تایید کند. آنها بلوک را به همتایان خود منتشر میکنند و سپس شروع به ساخت یک بلوک جدید روی بلوک معتبری که دریافت کردهاند، میکنند.
گرههایی که بلوک ایجاد نمیکنند نیز قبل از ارسال آن به همتایان خود، PoW هدر بلوک را تایید میکنند. پس از آن تراکنشهای موجود در بلوک را دوباره منتشر میکنند، وضعیت سراسری خود را بروز میکنند و منتظر دریافت بلوکهای جدید از شبکه هستند.
در اتریوم بدون حالت، بستههای داده و شاهدهای بیشتری خواهیم داشت که باید با بلوکهایی که با آنها مرتبط هستند، منتقل شوند. پنج عامل در مدل انتشار بلوک شبکه بیزین (BN)، بخشی از سایر زیرمدلهای اتریوم بدون حالت هستند. این موارد شامل، زمان ایجاد بلوک، زمان ایجاد شاهد، پهنای باند گره، تاخیر شبکه و ایجاد کننده بلوک هستند.
بنابراین ما فقط باید برای پنج گره باقیمانده CPTها را ایجاد کنیم: آنکل ریت (Uncle rate)، زمان انتشار بلوک، زمان پردازش بلوک و شاهد، وضعیت گره و نود همگام با سر زنجیره.
آنکل ریت
برای محاسبه احتمالات حاشیهای این نرخ، ما روزانه این نرخ را که توسط etherchain.org و Alethio ثبت شده، بررسی کردیم. اگرچه Alethio دیگر پایگاه داده خود را بروز نمیکند، اطلاعات تاریخی هنوز در دسترس است. این بدان معناست که میتوانیم با استفاده از دادههای تاریخی، گزارشهایی را از پورتال گزارش آنها بدست آوریم. این دو منبع داده از دو روش محاسبه متفاوت برای آنکل ریت استفاده کردند. etherchain.org از فرمول ۱ و Alethio از فرمول ۲ استفاده میکند.
زمان انتشار بلوک در اتریوم بدون حالت
هنگامی که یک بلوک معتبر توسط یک ماینر پیدا شد، از طریق شبکه منتشر میشود تا همه نودها بتوانند تایید کنند که بلوک معتبر است و وضعیت سراسری بلاکچین خود را بروز کنند. نودها برای ارسال و دریافت بستههای داده، به چندین peer متصل میشوند. گرهها ممکن است آفلاین شوند یا تحت تاثیر پهنای باند کم یا تاخیر زیاد قرار بگیرند که باعث میشود، از زنجیره عقب بمانند.
آنها میتوانند از طریق نزدیکترین peerهای متصل خود که به شبکه متصلاند، همگام شوند تا بلوکهای از دست رفته را دریافت کنند و آنها را پردازش کنند تا وضعیت سراسری خود را بهروزرسانی کنند.
برای محاسبه احتمال پیشین، ما زمانهای انتشار بلوک را که در سایتهای ethstats.io و ethstats.net گزارش شده بود جمعآوری کرده و تاثیر تاخیر نود و پهنای باند را برا زمان انتشار بلوک ارزیابی کردیم.
زمان پردازش بلوک و شاهد
ما زمان پردازش ترکیبی بلوک و شاهد را به عنوان مجموع زمان ایجاد شاهد و زمان ایجاد بلوک جمعآوری کردیم. بنابراین، فرض بر این است که این زمانها افزایشی هستند.
وضعیت نود
اکنون باید اثری که زمان انتشار بلوک بر وضعیت نودهای ماینر و غیر ماینر در شبکه میگذارد، تعیین کنیم. به عبارت دیگر، باید احتمال آفلاین بودن، همگامسازی یا بروز شدن یک گره را تعیین کنیم. برای انجام این کار، از منبع داده تجربی اولیه خود، ethernodes.org، به عنوان مبنایی برای تخمین ورودیهای CPT استفاده کردیم.
گره همگام با سر زنجیره
با توجه به وضعیت فعلی یک نود، در مورد توانایی آن برای همگام شدن با سر زنجیره، میتوان اطلاعاتی کسب کرد؛ اگر وضعیت گره به روز باشد، گره با موفقیت با زنجیره همگام شده است، اما نمیدانیم که چگونه به این امر دست یافته است. برای مثال، این همگامسازی پس از پیوستن به یک پروتکل همگامسازی پیشنهادی بوده یا حاصل پردازش بلوک و شاهد بعدی بود.
اگر گره مشغول همگامسازی باشد، این سوال باقی میماند که آیا گره میتواند در نهایت همگام شود. اگر گره آفلاین باشد، این امر بیشتر غیر شفاف است، زیرا نمیدانیم که وضعیت آفلاین به دلیل مشکل در بروز نگه داشتن با سر زنجیره است، آیا گره از کار افتاده است یا دلیل دیگری دارد. علاوه بر این، مدت زمانی که طول می کشد تا بلوک ها از طریق شبکه منتشر شوند، بر توانایی یک گره برای همگام شدن با سر زنجیره تاثیر میگذارد. ما با کارشناسان مشورت کردیم تا احتمالات شرطی گرهی را که با سر زنجیره همگام است را بدست آوریم. CPT حاصل، ورودی ترکیبی آنها را منعکس میکند.
مدل ترکیبی اتریوم بدون وضعیت
اکنون که ما یک کمیسازی اولیه از چهار زیرمدل داریم، فقط باید نتیجه نهایی را کمی کنیم و آن سلامت اکوسیستم اتریوم است. سلامت اکوسیستم اتریوم به آنکل ریت گرهی که با سر زنجیر همگام است، بستگی دارد. اینکه آیا این دو عامل کلیدی شاخصهای خوبی برای سلامت کلی اکوسیستم اتریوم هستند یا نه قابل بحث است، اما اتفاق نظر کارشناسان این بود که آنها شاخصهای خوبی هستند.
جمع بندی
شبکه اتریوم بر مبنای اکانتها و حالتی (داده) است که هر اکانت در خود نگه میدارد؛ مانند موجودی حساب، کد قرارداد هوشمند و غیره. به دلیل طراحی اکانت محور اتریوم، با افزایش کاربران در شبکه، اندازه حالت افزایش مییابد. لذا، راهاندازی یک فول نود در شبکه، زمان و هزینه زیادی میبرد. برای حل این مشکل، اتریوم بدون وضعیت پیشنهاد شده است. در این مقاله در مورد مدلسازی اکوسیستم اتریوم بدون حالت صحبت کردیم که فعلا در مرحله پژوهش است.