В отворения код няма тайни. Както някои от вас забелязаха, старият конфигурационен файл за свързване вече не съществува, заменен е от PrefixMap
. Така, какво става? @roland е тук, за да обясни повече.
Друго нещо, което ще премахнем, е неподдържаният и бъгав sledDB. Но вие също знаехте това вече. @yogesh обяснява какво го замества и защо поне засега избягваме опцията за база данни.
Общ напредък
Целият екип е ангажиран с опростяването на кода чрез премахване на ненужната многопоточност. Насочваме ви към публикацията на @joshuef тук, за да обясним защо. Добрата новина е, че премахването на тази грешка вече беше много положително по отношение на производителността.
@bzee разработи нов инструмент, който ни позволява да инспектираме парче данни и да видим къде се съхранява в мрежата и при кой Възрастен. Надяваме се скоро да предоставим това на общността за тестване.
Също така по отношение на наблюдаемостта @joshuef рови в heaptrack
, който профилира използването на паметта. Използваемостта й като цяло сега е много по-добре, но все още има случайни пикове.
@bochaco и @chriso напредват с DBC интеграцията и се надяваме следващата версия да е готова за тестване в общността много скоро - много ви благодарим за помощта с това досега, момчета
И @heather_burns отново е в медиите, като този път говори за чудовищния законопроект за онлайн безопасност в Обединеното кралство (и сега, за щастие, отложен или дори изоставен).
PrefixMap
Заменихме стария конфигурационен файл с PrefixMap, отчасти като опростяване на кодовата база, отчасти за оптимизиране на връзките и съобщенията. Конфигурациония файл съдържаше IP адреси и портове на възли, към които да се свържете, плюс генезисния ключ на мрежата. PrefixMap съдържа всичко това плюс доставчика на права за раздел (section authority provider
- SAP), който предоставя списък на всички текущи Старейшини в дадена Секция и текущия й ключ. Освен това, тъй като генезисният ключ може да бъде доказуемо свързан с ключа на Секция в SAP, клиентът може да провери, че е на правилното място, в правилната мрежа и всичко е актуално (чрез анти-ентропия).
Това също така позволява на клиента веднага да се свърже с най-близките Старейшини, така че можем да избегнем смазващ натиск към всички Старейшини в дадена Секция за всяка заявка.
За нови възли, присъединяващи се към мрежата, PrefixMap предоставя общ преглед на топологията на мрежата, която може да актуализира, ако трябва отново да прескочи няколко междинни стъпки.
@roland обяснява предисторията.
Конфигурационният файл, който съдържа ключа за генезис на мрежата и някои начални IP адреси, беше начинът, по който се свързвахме с всяка публична/частна тестова мрежа. Но в същото време поддържахме и PrefixMap, структура, която съдържаше най-новите SAP на секциите, за които знаем. Тъй като SAP съдържат и IP адресите на всички Старейшини, можем да използваме това за свързване към мрежата вместо конфигурационен файл.
Това е предимство пред конфигурационния файл, защото ние не натоварваме фиксиран набор от възли, използвани за присъединяване към мрежата. Вместо това можем да направим запитване към PrefixMap, за да получим най-близките SAP до дадено XOR-име и да ги използваме за присъединяване към мрежата. Това балансира натоварването при присъединяване.
Също така планираме скоро да преместим SectionChain в PrefixMap, което ще разреши някои проблеми в клиента, който в момента трябва да премине през процеса на актуализиране на анти-ентропия (AE), за да се гарантира, че е актуален, което може да добави огромно количество AE съобщения. Това е в процес на работа.
Как това променя обществените тестовите мрежи?
Тези промени няма да засегнат работата на локалните и обществени тестови мрежи (Comnets), въпреки че ще забележите няколко малки разлики.
- Единственият нов процес е, че ще използваме PrefixMap за свързване към локални/публични тестови мрежи вместо файла
node_connection_info.config
. - Използваме Първоначалния ключ (Genesis Key) на мрежата, за да наименуваме файловете PrefixMap, следователно те може да изглеждат по следния начин
PublicKey(0123..4567)
Свързване към Comnet:
- Уверете се, че нямате стария конфигурационен файл
~/.safe/cli/config.json
и стари префиксни карти вътре в~/.safe/prefix_maps/
. Можете да изчистите цялата директория.safe
с помощта наrm -r ~/.safe/
- Можете да добавите Comnet към списъка си с мрежи, като предоставите URL/пътя на неговата PrefixMap, както е предоставено от всеки, който настройва Comnet (напр. curl https://<адрес на PrefixMap>).
Използвайте следната CLI команда, за да направите това,networks add my_comnet "<path/url>"
- След това можете да превключите към добавената мрежа, като използвате
networks switch my_comnet
Стартиране на локална тестова мрежа „baby-fleming“:
- Уверете се, че нямате старите файлове, както е посочено по-горе.
- От CLI инсталирайте най-новата версия на
sn_node
с помощта на командатаnode install
- Използвайте
killall sn_node
, за да спрете всички работещи копия наsn_node
- Стартирайте тестовата мрежа с помощта на
node run-baby-fleming
- Вече можете да използвате командата
networks
, за да видите всички мрежи, които са достъпни за вас, и да използватеnetworks switch network_name
, за да превключвате между тях
Забележка: CLI използва директорията ~/.safe/prefix_maps/
, за да актуализира списъка с мрежи и да избере текущата мрежа, към която е свързан, следователно преименуването на файлове в тази директория може да доведе до нежелани резултати.
Отпадане на sledDB
Последната част от процеса на премахване на sledDB, съхраняването на регистри, вече е почти готова и бъгавата и неподдържана sledDB скоро ще бъде напълно заменена с нашето собствено вътрешно дисково хранилище. Както казахме миналата седмица, това е опростено изпълнение, без излишни функции, което се представя наравно с останалите алтернативи, като същевременно ни освобождава от външна зависимост на този етап. Нищо не ни пречи да разгледаме други бази данни в бъдеще, когато имаме нужда от такива.
Убедени сме, че тази промяна ще премахне една от често срещаните причини за разпад на тестовата мрежа. Но преди да се развълнуваме твърде много, вероятно не е единственият пробле, и затова проучваме Членството, за да видим дали понякога парчета данни не се изпращат на грешните Възрастни.
Преводи:
English Russian ; German ; Spanish ; French
- Официален сайт на Safe Network
- Обобщено представяне на Safe Network
- Safe Network Фундаменти
- Карта на проекта
- Подробна информация може да намерите както винаги във форума на международната общност: Safe Network Forum
- Ако имате въпроси може да ги зададете във Facebook групата на българската Safe общност: Redirecting...
- Ако искате да следите последните новини заповядайте във Facebook страницата на Safe Network България: Safe Network България