Это машинный перевод. Оригинал на английском здесь: 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» будет сохранена, но, вероятно, станет «безопасным запуском ребенка-флеминга».
Полезные ссылки
Не стесняйтесь отвечать ниже со ссылками на переводы этого обновления для разработчиков, и модераторы добавят их сюда.
Как проект с открытым исходным кодом, мы всегда ждем отзывов, комментариев и предложений сообщества - так что не стесняйтесь, присоединяйтесь и давайте вместе создадим безопасную сеть!