Знаем, че желаете да изпробвате отново мрежата и след като се справихме с някои трудни проблеми с кода, сме близо до възможността да предложим официални тестови мрежи отново. Тъй като целият екип сега е фокусиран върху тази цел, @joshuef обяснява какво правим и какво да очакваме. Така че не се притеснявайте, това ваше желание скоро ще бъде удовлетворено!
Общ напредък
Екипът работи върху начини за по-редовно разпространение на тестовите мрежи до общността. Може да изглежда, че напоследък сме малко затънали в теоретичните сфери на консенсусните алгоритми. Всъщност това далеч не е единствената област, върху която работим, и тези усилия, разбира се, се тестват вътрешно, но не винаги в пълна тестова среда и не винаги по начин, който е лесен за споделяне. Въпреки това, @chriso се труди за подобряване на процеса на публикуване на тестове, така че да можем да внедрим тестови мрежи по-лесно, а останалата част от екипа сега е фокусирана върху това да гарантира, че цялата им работа е готова за тестова мрежа, в духа на гъвкавото развитие.
Мостафа вече завърши своето имплементиране на опростения ABBA, консенсусния протокол за хвърляне на монети за който говорихме миналата седмица в контекста на това как Старейшините постигат съгласие по въпросите на членството.
Чрез процеса на внедряване на ABBA осъзнахме, че протоколът за хвърляне на монета не е необходим, когато имате предпочитание към резултат. Например ABBA се използва, за да се реши дали Старейшина е предложил промяна в членството. Ако някой види предложение от този Старейшина, гласува ДА, в противен случай гласува НЕ. Ако някога има гласуване за разделяне, това означава, че някой е гласувал с ДА. Най-важното е, че всички гласове „ДА“ идват с обосновка, която демонстрира криптографско доказателство, че въпросният Старейшина наистина е предложил нещо.
Така че, ако въпросът, който задаваме, е „Старейшина предложи ли промяна на членството?“ Тогава гласуване за разделяне би означавал, че да! Старейшината наистина предложи промяна и така можем да разрешим гласуването за разделяне с ДА.
В оригиналния ABBA протокол не е имало предпочитание между да или не, оттук и причината за хвърлянето на монетата. Тъй като имаме пристрастие към ДА, тогава вече не се нуждаем от хвърляне на монета, за да разрешим тези разделяния.
Мостафа и @davidrusu сега изпробват пристрастния протокол на ABBA. Следващата стъпка ще бъде интегрирането на VCBC с ABBA, за да се стигне до пълния консенсусен протокол MVBA (Multi-Value Byzantine Agreement).
А @joshuef и @oetyng разглеждат проблеми с мрежовите познания, които могат да възникнат след разделяне на секция, когато има заявка за данни към Старейшините. Изглежда, че се дължи на липсата на споделяне на знания между двете нови секции при етапа на предаване.
Тестови мрежи
След няколко месеца навлизане в различни мрежови теми (членство, заключвания в състоянието на възлите, комуникационни слоеве и отговори), очакваме с нетърпение да връчим кода отново в ръцете на общността.
Знаем, че е имало спорадични тестови мрежи (а преди това и много чести тестове); и някои членове на общността може да са запознати с нашите инструменти за тестване в това отношение. Но тук бихме искали да разгледаме това, което имаме, така че всеки, който иска, да може да се опита да създаде свои собствени тестови мрежи.
Инструментът testnet
Нашият инструмент за тестова мрежа е колекция от скриптове и Terraform за стартиране на тестови мрежи. (Примери за команди са налични във файла readme).
Позволява ни лесно да стартираме машини в Digital Ocean и да управляваме възли върху тях. Това е основата на нашето WAN тестване.
Имате скрипта ./up
, който позволява създаването на тестова мрежа с всякакъв размер. Той използва един възел върху една машина (размерът се конфигурира лесно във файловете prodiver.tf
).
Ако искате да активирате heaptrack
на възлите, тогава имаме скрипт ./build
, който стартира отделна машина за изграждане на кода sn_node
и safe
bin (кодът на възела е с активиран режим за отстраняване на грешки, така че heaptrack
може да се закачи).
След това можете да използвате тези персонализирани компилации в скрипта ./up
.
И накрая, ./down
премахва тестова мрежа, след като приключите с нея.
Лесна работа?
Добре, значи имам тестова мрежа…
След като мрежата работи, имаме няколко инструмента, които да ни помогнат.
Клиентска машина
Terraform може също да създаде клиентска машина (инстанция). Това ни позволява лесно да извършваме циклични клиентски тестове, например, и да видим как възлите се държат (./loop_client_tests.sh
).
Имаме и папка „test-data“, която се изтегля към клиента от AWS. Стремим се да я поставим в мрежата в началото на всеки тест. И това ни дава достатъчно прост начин да тестваме целостта на данните през целия живот на тестовата мрежа.
Мониторинг
Използваме Kibana и ELK за наблюдение на възлите. Имаме (понастоящем частно) табло за управление, където можем да видим всички проблеми с паметта или процесора, което ни помага да насочваме усилията за отстраняване на грешки. Например, по-долу можем да видим текущия проблем спиращ напредъка: паметта нараства с времето. Това изглежда е свързано с управлението на връзката… Имаме едно потенциално решение, което изглежда решава това, но търсим нещо по-спретнато.
Дневници!
Последният (и най-загадъчен) инструмент в нашия арсенал е свалянето на клиентски регистрационни файлове. ./scripts/logs
прави това за нас. И тогава можем да ги анализираме с инструмент като ripgrep
или да търсим напр. специфични MsgId
s за проследяване на случващото се във възлите.
И така…
Това е само малък преглед на това как да използвате и оценявате тестова мрежа. Надяваме се, че ако успеем да направим това по-лесно (опитваме се) и по-публично (скоро!), ще можем да накараме повече хора да наблюдават и проверяват възлите и да ускорим отново отстраняването на грешки там.
Така че непременно тествайте инструмента testnet. PR са много добре дошли. В момента има много bash скриптове, които може да са по-популярни сред някои хора от други… Но най-малкото, надяваме се, това ви дава обща представа за това как тестваме в момента. И може би предизвиква някои други идеи как да подобрим такива неща!
Преводи:
English Russian ; German ; Spanish ; French
- Официален сайт на Safe Network
- Обобщено представяне на Safe Network
- Safe Network Фундаменти
- Карта на проекта
- Подробна информация може да намерите както винаги във форума на международната общност: Safe Network Forum
- Ако имате въпроси може да ги зададете във Facebook групата на българската Safe общност: Redirecting...
- Ако искате да следите последните новини заповядайте във Facebook страницата на Safe Network България: Safe Network България