Обновление Safe Network 🇷🇺 9 февраля 2023 г

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

После интересной тестовой сети на прошлой неделе, которая не функционировала так долго, как другие, но, тем не менее, продолжала работать и дала некоторые полезные результаты, мы решили сделать небольшое объяснение присоединения узлов. Это то, что мы пытаемся сделать более надежным и простым для опробования. Так что, если вы заметите какие-то странные события в своих журналах, это будет причиной.

Большое спасибо @josh за его Gooey приложение, удобный графический интерфейс, помогающий преодолеть FCL (страх перед командной строкой). Используя Gooey, вы можете PUT и GET файлы сколько душе угодно, не чувствуя, что вы входите в Матрицу. Подобные инициативы, приложение мониторинга Vdash @happybeing и скрипты @southside делают это сообщество таким замечательным. :хлоп: :хлоп: :хлоп:

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

Сначала хорошие новости о законах: Фонд Safe Network зарегистрирован в Торговом реестре Женевы. @JimCollinson и @andrew.james работали над этим в течение многих месяцев, и это представляет собой пройденную важную веху. Мы также отправили в FINMA письмо о непринятии мер. Это излагает юридическое заключение о том, что SNT является служебным токеном для покупки хранилища, а не ценной бумагой, а это означает, что мы можем взломать его с запуском. :тада:

Мы все еще разрабатываем идею стабильного набора — использование старейших и самых старых взрослых узлов в качестве основного хранилища данных, в то время как узлы, проходящие процесс возраста узла получают менее важные задачи вторичного хранения для выполнения. @davidrusu проводит над этим эксперименты, а @anselme работает над возможными последствиями для безопасности.

Идея стабильного множества вносит несколько интересных изменений:

  • Нет DKG (поскольку самые старые узлы мгновенно становятся старшими). Это устраняет значительную нагрузку на сеть при более старом изменении.
  • Никакие узлы в стабильном наборе не перемещаются, так что это набор только для добавления
  • Узлы в стабильном наборе не имеют маркера возраста, их возраст определяется их относительным положением в наборе (на основе первого увиденного)
  • Новые старейшины подписывают старых старейшин в SAP (поставщик полномочий раздела), это позволяет нам восстановить потерянные узлы консенсуса (обработка массового оттока)
  • Вполне вероятно, что с этими изменениями мы сможем довольно легко справиться с разделами, хотя у нас пока нет механизма, позволяющего переподключать разделенные сети.

@oetyng глубоко проникает в коммуникации между клиентами и узлами, очищает избыточные типы и шаблоны и пытается исправить ситуацию.

@anselme продолжает рефакторинг DBC. Вчера он заменил bls_bulletproofs на апстримные bulletproofs в sn_dbc. Это не только делает код более безопасным, поскольку мы используем проверенный код, но и значительно повышаем производительность!

2096 мс → 234 мс : повторное тестирование с разделением от 1 до 100
160 с → 40 с: выполняются все тесты

Что касается узла, @joshuef заметил, что при повторном присоединении узла ему дается другое имя, что требует дополнительной логики. Это было исправлено, и теперь узлы воссоединяются с тем же именем.

@Chriso удалось получить экземпляры EC2, участвующие в тестовой сети, настроенные для сбора телеметрии и служб подготовки данных, которые необходимы для распределения нагрузки и других задач. У него также есть тестовая сеть, работающая на AWS, которая отправляет трассировки в OpenSearch. Должен быть входящий PR.

@Roland пишет пояснение по телеметрии, зачем она нужна и как мы ее используем, которой мы вскоре сможем поделиться.

@qi_ma занимается отладкой соединений и перемещений узлов, а @bochacho убирает сообщения и qp2p.

А @bzee убирает избыточный код из процесса присоединения к узлу.

Соединение узлов

Что аккуратно приводит нас к узлам из дома. Последняя тестовая сеть была впервые за долгое время, когда мы разрешили подключение узлов из дома (или облачной виртуальной машины), а также первым «официальным» тестом с меньшими узлами (после того, как сеть увидела там успехи). В целом мы были рады, что многим удалось присоединиться, хотя PUT довольно быстро заглохли. Мы определили, что здесь происходит: перемещение узлов было более редким, чем мы ожидали, наша первоначальная сеть не была достаточно «устарела», чтобы обеспечить стабильную фазу запуска.

В идеале мы хотим, чтобы каждый мог присоединиться из любого места на любом устройстве, когда сети требуется больше места для хранения. Были некоторые проблемы с тайм-аутами, когда узел запрашивает присоединение, а затем теряет связь со старейшиной, которые мы в основном исправили сейчас (узлы получат ответ о том, что идет голосование, в отличие от отсутствия ответа; узлы также теперь просто продолжайте попытки с тем же именем, а не меняйте имена, что ранее приводило к путанице в процессе присоединения).

Некоторые ошибки могут возникать, когда узел присоединяется сразу после того, как членство (состав секции) было передано старейшинам после сеанса DKG. Когда это происходит, новый узел не засчитывается и отображается разделенное представление. Это то, что сейчас исправляет @qi_ma.

Флаги безопасного соединения узлов --skip-auto-port-forwarding и --public-addr теперь устарели, поскольку мы удалили переадресацию портов UPnP/IGD, которая никогда не была надежной. На данный момент это убрано для упрощения qp2p. Мы вполне можем вернуться к этому вопросу, но сейчас это не является приоритетом. Теперь вы должны иметь возможность присоединиться с помощью safe node join --network-name, хотя NAT, несомненно, будет проблемой для некоторых домашних узлов.

Это связано с тем, что для того, чтобы узлы в сети P2P могли разговаривать, они должны иметь возможность находить друг друга, но с помощью NAT их точный адрес скрыт маршрутизатором, который показывает только общедоступный IP-адрес. NAT был введен как хак, чтобы обойти исчерпание адресов IPv4, но, к сожалению, он застрял. У разных маршрутизаторов и интернет-провайдеров есть разные способы реализации переадресации портов, и не все будут уверены, что попробуют. IPv6 решает проблему, но, к сожалению, его популярность все еще очень мала. Это проблема всех децентрализованных сетей, и мы продолжаем искать решения.

Мы планируем поэтапно отказаться от команды «безопасный узел» в пользу прямого использования двоичного файла «sn_node», как предлагает @Chriso в этом посте. Команда node, по сути, представляет собой тонкую обертку вокруг двоичного файла sn_node и не дает больших преимуществ по сравнению с прямым использованием двоичного файла узла. Кроме того, это приводит к проблемам обслуживания с точки зрения синхронизации поддерживаемых аргументов между ними. Узел, скорее всего, получит свой собственный сценарий установки. Команда «безопасный узел run-baby-fleming» будет сохранена, но, вероятно, станет «безопасным запуском ребенка-флеминга».


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

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

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