استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

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

0 93

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

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

می‌‌دانید که من یک کهنه‌‌کار IT هستم که برنامه‌‌نویسی را در سال 1981 با ZX81 شروع کردم، به C++، پاسکال، مودولا، اوبرون و جاوا JDK 1.0 پرداختم و پس از آن هم به پرل، TCL، گرووی، جاوااسکریپت و چند زبان برنامه‌‌نویسی دیگر سر زدم و حالا و برای چند سال آینده با زبان Rust کار می‌‌کنم (که یک زبان برنامه‌‌نویسی امن و متقارن است که برای کار کریپتو و بلاک چین ایده‌‌آل است).

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

بنابراین در سه دهه گذشته چندین مرحله و تغییر اساسی را در اینترنت دیده‌‌ام که در ابتدا به شکل کاملا غیرمتمرکز شروع شد (در دهه 70 با ARPANE) و به اینترنت کاملا متمرکز امروزی تبدیل شد.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

یک تغییر بزرگ پیش روی ماست یا همانطور که جاش استارک (Josh Stark) در مقاله «شناخت وب 3» خود در سایت Medium می‌‌گوید:

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

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

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

دکتر گوین وود (Gavin Wood) که یکی از بنیان‌‌گذاران اتریوم و پَریتی (Parity) است، مسئول پروژه Polkadot است. پریتی شرکت اصلی Polkadot است و نقشه راه آن تاریخ اجرای آن را سه‌‌ماهه سوم سال 2019 پیش‌‌بینی کرده است (مرحله فروش توکن DOT). پس زمان کافی برای تعیین نحوه کار و دیدن نحوه تکامل محصولات و حل چالش‌‌های مطرح شده در وایت‌‌پیپر وجود دارد.

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

بیایید شروع کنیم

اولین کاری که کردم به‌‌کارگیری گره تایید Polkadot به عنوان یک نمونه ابری داکِریزه‌‌شده (dockerized) بود. من نام آن را «سلامِ دنیای چارچوب Polkadot» گذاشتم. کاملا ساده و واضح است و به یک گره تاییدکننده متصل و همگام‌‌سازی‌‌شده در شبکه آزمایشی Krumme Lenke Polkadot منجر می‌‌شود.

در اسکرین‌‌شات پایین، گره «clb-polkadancer» من را می‌‌بینید که به 24 همتای خود متصل شده و حدود هر 5 ثانیه یک بلوک جدید پردازش کرده و آن را به بلاک چین محلی اضافه می‌‌کند (رابط کاربری تله‌‌متری).

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

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

تایید‌‌کننده (Validator)، یکی از چهار نقش اساسی است که شبکه Polkadot را حفظ می‌‌کند. سه نقش دیگر شامل موارد زیر هستند:

  • تلفیق‌‌کننده (Collator)
  • منصوب‌‌کننده (Nominator)
  • ماهی‌‌گیر (Fisherman)

گوین وود در وایت‌‌پیپر خود این چهار نقش و تعاملات آنان را به شکل زیر به تصویر می‌‌کشد:

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

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

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

خب پس وظیفه اصلی او چیست؟

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

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

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

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

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

حالا بیایید بالاترین گره Polkadot را به کار بیاندازیم.

تنها یک چیز، گره دارای مسئولیت بالا، برخی الزامات سخت‌‌گیرانه‌‌ی غیرکاربردی دارد:

یک تاییدکننده باید یک پیاده‌‌سازی زنجیره تاخیر را با دسترسی و پهنای باند بالا اجرا کند.

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

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

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

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

پیدا کردن یک ارائه‌‌کننده مناسب فضای ابری

من در سال‌‌های گذشته ارائه‌‌کنندگان مختلف فضای ابری (مانند گوگل، AWS و …) را آزمایش کرده‌‌ام تا کسب‌‌وکار کوچک جانبی خودم را اداره کنم که ارائه محصول مبتنی بر اشتراک به نام «ربات انتشار Cloudburo » است. این راهکار به شما اجازه مدیریت مستقیم وب‌‌سایتتان از Evernote را می‌‌دهد.

نکته: به عنوان مثال این مقاله در ابتدا کاملا در Evernote نوشته شده و مستقیما در وب‌‌سایت‌‌ منتشر شده است. اگر به چنین رویکرد وبلا‌‌گ‌‌نویسی‌‌ علاقه دارید به سایت ربات انتشار من سر بزنید و یک ثبت‌‌نام رایگان هدیه بگیرید.

پس من با وجود سرمایه‌‌گذاری نسبتا سنگین در AWS، به پلتفرم PaaS ژلاستیک (Jelastic) که مدل خیلی خوب پرداخت در حین استفاده را ارائه می‌‌کند و برای الزامات کسب‌‌وکارهای ریز ایده‌‌آل است کوچ کردم.

جنبه‌‌ دیگر ژلاستیک که بسیار تاثیر گذار است، عدم وجود وابستگی به ارائه کننده سرویس است.

پیشنهاد PaaS ژلاستیک در بیش از 60 پایگاه داده در 30 کشور در سراسر جهان موجود است. زیرساخت و حمایت محلی توسط شرکای میزبانی تاییدشده که در اتحادیه Cloud وجود دارند، ارائه شده‌‌اند. کاربران می‌‌توانند اپلیکیشن‌‌هایشان را در مناطق سخت‌‌افزاری یک ارائه‌‌کننده واحد یا در چندین ارائه‌‌کننده با استفاده از همان تکنولوژی میزبانی کنند.

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

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

Cloudlet ‌‌ها، بنیان مدل قیمت‌‌گذاری در حین استفاده

قیمت‌‌های PaaS ژلاستیک منعطف و مقیاس‌‌پذیر هستند. آنان بر فرضیات واقعی مبتنی‌‌اند پس قبض شما می‌‌تواند آنچه در هر ساعت استفاده می‌‌کنید را به دقت نشان دهد.

اساس این مدل قیمت‌‌گذاری، واحدهای منابع به نام Cloudlet است. هر Cloudlet مسئول 400 مگاهرتز سرعت پردازش و 128 مگابایت رم است.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

PaaS ژلاستیک دو نوع Cloudlet به شما ارائه می‌‌کند:

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

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

همانطور که بعدا می‌‌بینیم، این به شما اجازه می‌‌دهد Cloudlet‌‌ها را به صورت واقعی تنظیم کرده و ببینید که آیا تاثیری بر انتشار بلوک گره شما در شبکه Polkadot دارد یا خیر.

آماده‌‌سازی یک فایل داکر(Dockerfile) تاییدکننده

همه پروژه‌‌های ابری من (چه یک ربات مبتنی بر جاوا یا یک Meteor Node.js) در یک محفظه داکر انجام می‌‌شوند. این به من اجازه داد تا توسعه و پیکره‌‌بندی و تنظیم را استانداردسازی و اتوماتیک کنم. پس برایم واضح بود که گره تایید‌‌کننده را در یک تصویر داکر نیز بکار بگیرم.

Polkadot از قبل تصویر داکر « chevdor/polkado» خود را ارائه می‌‌کند که بر اساس « phusion/baseimage:0.10.1» است که به جدیدترین نسخه اوبونتو 18.04 می‌‌رود.

متاسفانه PaaS ژلاستیک برای اوبونتو 18.04 آماده نیست، پس برای رفتن به اوبونتوی 16.04 داکرفایل را تغییر دادم و آن را از طریق هاب داکر تحت نام «talfco/clb-polkadot» در دسترس قرار دادم.

پیکره‌‌بندی نمونه داکر تایید‌‌کننده

من در Hidora PaaS یک محیط داکر به نام «polkadotDocker» و تصویر داکر clb-polkadot خودم را از هاب داکر بارگزاری کردم.

این پیکره‌‌بندی نمونه اولیه برای مرحله همگام‌‌سازی مجدد 4 تا 5 Cloudlet بوده است که به CPU بین 1.6 تا 2.0 گیگاهرتز از 512 تا 640 مگابایت ترجمه شده است.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

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

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

در نهایت پارامتر «clb-polkadancer» را به نقطه ورودی اضافه کردم.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

راه‌‌اندازی گره خودتان

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

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری https://cdn-images-1.medium.com/max/1600/0*kBma7fOgOEs4q2Gb.png

ساختن یک کپی از پاراچین DB

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

همانطور که در تصویر پایین می‌‌بینید، مرحله ساخت زنجیره (که حدود ساعت 14:30 تمام شده است) از CPU استفاده می‌‌کرده است. پس از اتمام، کاربری CPU به 200 تا 250 مگاهرتز کاهش پیدا کرده است. برای ساخت پاراچین کامل با 5 میلیون بلوک، به 6 ساعت پردازش نیاز بود.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

بعد از بارگزاری پاراچین کامل، وقت آن است نمونه را دوباره پیکره‌‌بندی کنیم. پیکرده‌‌بندی نمونه اول شامل 2 Cloudlet بود که به 256 مگابایت رم و CPU 800 مگاهرتز ترجمه شده است.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

تنظیم Cloudlet‌‌ها

ارزیابی آمار راه‌‌اندازی نشان داد که از سقف محدودیت رم (که برای دو Cloudlet 256 مگابایت است) گره ما بالاتر رفته و منجر به تغییرات Cloudlet دینامیک می‌‌شود که پایینتر از حالت بهینه قرار دارد.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

پس بیایید نمونه‌‌مان را دوباره به 3 Cloudlet تعدیل کنیم که به موارد زیر منجر می‌‌شود:

  • 384 مگابایت رم
  • 1.2 گیگاهرتز CPU
  • 10 گیگابایت هارددیسک

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

همانطور که در داشبرد بالا با 3 Cloudlet که برای نمونه پیکر‌‌ه‌‌بندی شده‌‌اند می‌‌بینید، می‌‌توانیم CPU، رم، شبکه، دیسک و IOPS را پایین‌‌تر از حد خود نگه داریم. پس این پیکره‌‌بندی ایده‌‌آل برای اجرای گره تایید‌‌کننده Polkadot است.

باید به ترافیک شبکه نگاه خاصی داشت. تایید‌‌کننده فرایندی است که پهنای باند زیادی می‌‌خواهد، یعنی باید انتظار پهنای باندی معادل 200 تا 300 مگابایت در ساعت را داشته باشید. نکته جالب این است که شما با هیدورا (Hidora) 2 گیگابایت ترافیک رایگان دریافت می‌‌کنید که 1.4 ترابایت در ماه می‌‌شود. ترافیک داخلی هم رایگان است.

هزینه اداره 24 ساعته یک گره تاییدکننده

نمونه‌‌ای با 3 Cloudlet ذخیره منجر به 24*3 = 72 Cloudlet در روز می‌‌شود که هزینه‌‌ای معادل 0.22 CHF (0.20 دلار) دارد. هیچ هزینه‌‌ای برای ترافیک ندارید و 1.4 ترابایت ماهانه رایگان است.

همانطور که می‌‌بینید، یک هزینه اضافی 0.20 CHF در روز برای آدرس IP4 عمومی دارید. این یکی لازم است چون باید پورت 30333 را برای دسترسی عمومی باز کنیم و برای این کار نمونه باید یک آدرس IP عمومی داشته باشد.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

در پایان یادتان نرود پورت 30333 را باز کنید

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

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

با کمک Polkadot Beginner Lounge در Riot، می‌‌توانم این مسئله را به سرعت حل کنم. نمونه داکر من در معرض چند پورت عمومی بود اما نه پورت 30333 مورد استفاده‌‌ی تاییدکننده‌‌ی Polkadot.

در PaaS من هم لازم بود برای باز کردن پورت، IP عمومی برای گره خودم در نظر بگیرم که منجر به 0.20 CHF در روز می‌‌شد.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

روی هم رفته یک تایید‌‌کننده کامل در روز 0.42 CHF هزینه دارد که ماهانه پول دو قهوه استارباکس در سوییس یا 3 قهوه در نیویورک است. پس بسته به موقعیت جهانی که دارید باید مصرف قهوه‌‌تان را تعدیل کنید تا بتوانید گره تاییدکننده خود را اداره کنید.

استفاده بهینه‌‌ Polkadot از یک گره تاییدکننده در فضای ابری

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

منبع

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.