Обновление Safe Network 🇷🇺 25 августа 2022 г

Это машинный перевод. Оригинал на английском здесь: Update 25 August, 2022

«Скажи привет, помаши рукой на прощание», — пропел Марк Алмонд из Soft Cell еще в 80-х, и каким прозорливым он был. На этой неделе мы рады приветствовать Мо в качестве нового члена команды инженеров MaidSafe. Мо — ученый-компьютерщик и разработчик программного обеспечения. Он получил докторскую степень. получил степень бакалавра компьютерных наук в Потсдамском университете в 2020 году и интересуется исследованиями, программированием и тестированием безопасности для распределенных сервисов и стандартных программных систем.

В то же время нам грустно прощаться с @yogesh, который работает в команде уже несколько лет и действительно оставил свой след, применив свои способности к судебному решению проблем и внимание к деталям во всех аспектах. сеть. Когда-либо профессионал, последняя работа Йогеша заключалась в том, чтобы убедиться, что сервер ELK работает именно так, как он хотел, и заполнить всю документацию. Всего наилучшего, Йогеш, и наслаждайтесь новым вызовом.

Общий прогресс

@joshuef переработал часть модуля CmdCtrl, чтобы удалить последнюю оставшуюся блокировку за пределами самого экземпляра Node. Это хорошо сказалось на простоте кода, что всегда является преимуществом.

@qi_ma сейчас изучает возможную утечку памяти при присоединении к узлу, а также выясняет, почему некоторые сообщения обрабатываются очень медленно на узлах.

@roland в значительной степени завершил рефакторинг цепочки разделов в виде дерева Меркла и теперь обновляет API, чтобы сделать его максимально совместимым.

А @anselme исправил проблему с порогом в sn_sdkg, синхронном ящике DKG. Теперь у нас довольно хорошо работает DKG, в том числе с разделением на секции. Интеграция этого продолжается!

@bochaco обнаружил некоторые проблемы с реализацией хранилища регистров, что означало, что одновременная запись в одни и те же данные может привести к потере некоторых операций, и, исправляя это, мы также обнаружили другую проблему, которая могла досаждать main, из-за чего подобные ` Регистры xorname также могли перезаписывать друг друга. Теперь для этого есть исправление.

Отчет о проделанной работе

Сообщения и всплески памяти
Мы наблюдали шквал сообщений и всплеск использования памяти, особенно когда новый узел связывался со старейшинами и просил присоединиться.
Прогресс: Значительно улучшено. Есть еще несколько ситуаций, которые приводят к утечке, и они отлаживаются по мере их обнаружения. Сейчас они встречаются гораздо реже, и их гораздо легче отслеживать с помощью панели управления ELK.
Задачи: Устранение ошибок, когда мы видим всплески.

Панель управления ELK
ELK (Elasticsearch, Logstash и Kibana) — это набор инструментов с открытым исходным кодом для агрегирования и визуализации файлов журналов. Позже были добавлены Beats, которые собирают метрики из ЦП и других источников, но BELK звучит глупо, поэтому название ELK осталось.
Прогресс: Готово. Теперь мы можем отслеживать тестовые сети и видеть, что делает каждый отдельный узел. Подробнее здесь https://github.com/maidsafe/sn_testnet_tool/tree/main/scripts/ELK
Todo: Выясните, можем ли мы безопасно открыть это для всеобщего обозрения.

Обработка данных
Сортировка членства в секциях была необходима для правильной обработки данных, перераспределения фрагментов, когда взрослый уходит в автономный режим, и изящной обработки разделений.
Прогресс: Это сделано и выглядит намного солиднее.
Todo: Ожидание завершения членства, чтобы его можно было завершить. Добавляются дополнительные тесты для укрепления базовых слоев хранилища.

Сдавать
Если старейшина замечает, что нынешние старейшины не являются семью старейшими узлами, то это вызывает голосование о повышении старшего взрослого(-ей) и понижении младшего(-их) старейшины, чтобы освободить место. Хэндовер — это алгоритм, управляющий этим процессом.
Прогресс: Завершено, хотя и дорабатывается сплетнями — ниже.
Todo: Посмотрите на добавление сплетен как на запасной вариант.

Членство
Именно это позволяет старейшинам контролировать взрослых в своей секции.
Прогресс: Членство теперь интегрировано в sn_node и использует консенсус, чтобы заставить старейшин согласиться, какие новые узлы смогут присоединиться к разделу.
Задачи: Добейтесь, чтобы у взрослых было такое же мнение о членах, как и у старших. Многие из решений, которые должны принимать взрослые, например. за какие данные они отвечают, зависит от текущего состояния членства, но в настоящее время они не имеют того же представления, что и старейшины.

Сплетни
Сплетни — это тип протокола p2p, в котором узел периодически передает информацию другому узлу, часто выбранному случайным образом, и этот узел передает сообщение другому узлу, и так далее, пока оно не станет «общеизвестным».
Прогресс: Мы вводим сплетни в различные места, где процессы могут иногда зависать, такие как раунды DKG, членство и разделение сети. В последнем случае сплетни также позволяют восстановить сеть после катастрофического сбоя.
Задание: Начать реализацию.

ДКГ
Распределенная генерация ключей используется, когда старейшинам необходимо принять решение о членстве.
Прогресс: DKG был переработан с более чистой реализацией без таймера и консенсусом, чтобы исправить случаи, когда DKG постоянно терпел неудачу и повторял попытку из-за использования тайм-аутов при ожидании.для сообщений. Тестирование показывает положительные результаты.
Задание: Исправлена ​​ошибка в процессе согласования, которая иногда мешала завершению. Посмотрите на добавление сплетен в качестве резервного уровня коммуникации.

Поток платежей
Когда клиент платит за загрузку, он получает квитанцию, а старейшины и взрослые в секциях, где хранятся данные, получают часть этого платежа. Поток платежей — это то, как работает это распределение.
Ход выполнения: Мы работаем над алгоритмом управления платежным потоком. На данный момент предполагается включить всех бенефициаров в квитанцию ​​и предоставить им возможность требовать средства, перевыпустив себе DBC в любое время. Получателями потенциально могут быть клиенты, взрослые и пожилые люди.
Todo: Детальный дизайн для обеспечения безопасности, UX, экономических стимулов. Тестирование.

Эмиссия токенов
После первоначального распределения токенов при создании сети оставшиеся 70% от общего количества будут созданы и безопасно распределены в результате загрузки данных людьми в течение длительного времени. SNT создаются не при каждой загрузке, а при соблюдении определенных условий. Эти события должны происходить с известной вероятностью, но нельзя предсказать, когда и где они произойдут.
Прогресс: В настоящее время мы рассматриваем механизмы, которые будут вознаграждать старших, хранить взрослых и клиентов, делая майнинг с помощью мошеннических узлов нерентабельным.
Задание: Выберите один вариант и протестируйте его.

Рефакторинг узла
sn_node был переработан, чтобы удалить как можно больше экземпляров многопоточности, чтобы упростить код и удалить нежелательные блокировки.
Прогресс: Практически все сделано. Код значительно упрощается, производительность повышается, и вокруг хранилища остается только одна блокировка узла, и это нормально. Есть несколько других функций противодавления, но они не используются по умолчанию.
Todo: Следите за производительностью, крайними случаями.

Рефакторинг цепочки разделов
Цепочка разделов, безопасный связанный список, который соединяет ключи разделов вплоть до Genesis, подвергается рефакторингу в качестве DAG Merkle. Теперь он называется «SectionsDAG».
Прогресс: В основном сделано.
Задание: Завершить рефакторинг.

Дисфункция
Регулярно проверяйте, подключены ли узлы к сети, и принимайте меры, если это не так.
Прогресс: Рефакторинг с собственным набором тестов, ожидание прогресса в других областях.
Todo: Будут постоянно пересматриваться по мере развития других компонентов.

DBC
Цифровые сертификаты на предъявителя — это средство для транзакций токенов в безопасной сети.
Прогресс: Интеграция с DBC и базовая функциональность в основном на месте. Завершение базовой функциональности — это следующий шаг, в частности, заставить его работать с потоками платежей, что намного надежнее, чем шесть месяцев назад.
Todo: Улучшите API и UX вокруг этого. Включите API-интерфейсы DBC в платежные потоки и протестируйте их.

Система разрешения имен и доменные имена
Карты NRS — это мультикарты (внутренние регистры), которые содержат сопоставление всех дочерних имен с URL-адресами для определенного верхнего имени. Каждое имя имеет свою собственную мультикарту.
Прогресс: API был переработан для упрощения кода. Мы выбрали формат topname.subname (google.maps) как наиболее интуитивно понятный.
Todo: Изменения в заказе NRS должны быть реализованы.

Клиент / UX
sn_client — это набор API и интерфейс командной строки (CLI), который позволяет устройствам подключаться к сети и взаимодействовать с ней.
Прогресс: sn_client подвергся рефакторингу - исправление обмена сообщениями, которое показывает пользователям, подключены они или нет, особенно во время начальной загрузки.
Задачи: Постоянное совершенствование API и интерфейса командной строки по мере продвижения вперед.


Полезные ссылки

Не стесняйтесь отвечать ниже со ссылками на переводы этого обновления для разработчиков, и модераторы добавят их сюда.

Как проект с открытым исходным кодом, мы всегда ждем отзывов, комментариев и предложений сообщества - так что не стесняйтесь, присоединяйтесь и давайте вместе создадим безопасную сеть!