Обновление Safe Network 🇷🇺 1 декабря 2022 г

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

Мы знаем, что вам не терпится снова опробовать сеть, и, преодолев некоторые грубые проблемы с кодом, мы близки к тому, чтобы снова предложить формальные тестовые сети. Теперь, когда вся команда сосредоточена на этой цели, @joshuef объясняет, что мы собираемся делать и чего ожидать. Так что не переживайте, этот зуд скоро пройдет!

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

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

Мостафа завершил внедрение упрощенного ABBA, консенсусного протокола подбрасывания монеты о котором мы говорили на прошлой неделе в контексте того, как старейшины приходят к согласию по вопросам членства.

В процессе внедрения ABBA мы поняли, что протокол подбрасывания монеты не нужен, когда вы предпочитаете результат. Например, ABBA используется, чтобы решить, предлагал ли старейшина изменение членства. Если кто-то видит предложение от этого старейшины, он голосует ЗА, в противном случае - НЕТ. Если когда-либо будет разделение голосов, это означает, что кто-то проголосовал ЗА. Важно отметить, что все голоса «ДА» сопровождаются обоснованием, демонстрирующим криптографическое доказательство того, что рассматриваемый старейшина действительно что-то предлагал.

Итак, если вопрос, который мы задаем, звучит так: «Предлагал ли старейшина изменение членства?» Тогда раздельное голосование будет означать, что да! Старейшина действительно предложил изменение, поэтому мы можем решить раздельное голосование, выбрав ДА.

В исходном протоколе ABBA не было предпочтения между «да» и «нет», отсюда и причина подбрасывания монеты. Поскольку у нас есть склонность к ДА, нам больше не нужен подбрасывание монеты для разрешения этих расколов.

Мостафа и @davidrusu теперь испытывают предвзятый протокол ABBA. Следующим шагом будет интеграция VCBC с ABBA, чтобы прийти к полному консенсусному протоколу MVBA (Multi-Value Byzantine Agreement).

А @joshuef и @oetyng изучают проблемы со знанием сети, которые могут возникнуть после разделения раздела при запросе данных у старейшин. По-видимому, это связано с недостаточным обменом знаниями между двумя новыми секциями на этапе передачи.

Тестовые сети

После нескольких месяцев углубленного изучения различных сетевых тем (членство, блокировка состояния узлов, уровни связи и ответы) мы с нетерпением ждем возможности снова получить код в руки сообщества.

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

Инструмент тестовой сети

Наш инструмент для тестовой сети представляет собой набор скриптов и Terraform для настройки тестовых сетей. (Примеры команд доступны в файле readme).

Это позволяет нам легко запускать капли Digital Ocean и запускать на них узлы. Это основа нашего тестирования WAN.

У вас есть скрипт ./up, который позволяет создавать тестовую сеть любого размера. Он использует одну каплю на узел (размер легко настраивается в файлах prodiver.tf).

Если вы хотите включить heaptrack на узлах, то у нас есть скрипт ./build, который запускает отдельную каплю для сборки кода sn_node и безопасного бункера (код узла с включенным режимом отладки, поэтому heaptrack может подключиться).

Затем вы можете использовать эти пользовательские сборки в сценарии ./up.

Наконец, ./down удаляет тестовую сеть, как только вы закончите с ней.

Очень просто?

Итак, у меня есть тестовая сеть…

Когда сеть запущена, у нас есть несколько инструментов, которые могут нам помочь.

Клиентская капля

Установка terraform также может создать клиентскую каплю (экземпляр). Это позволяет нам, например, легко зацикливать клиентские тесты и смотреть, как выдерживаются узлы (./loop_client_tests.sh).

У нас также есть папка test-data, которая передается клиенту из AWS. Мы стремимся разместить это в сети в начале любой тестовой сети. И это дает нам достаточно простой способ проверить целостность данных в течение всего срока службы тестовой сети.

Мониторинг

Мы используем Kibana и ELK для мониторинга узлов. У нас есть (в настоящее время закрытая) панель инструментов, где мы можем видеть любые проблемы с памятью или процессором, что помогает направлять любые усилия по отладке. Например, ниже мы можем видеть наш текущий блокировщик: объем памяти увеличивается с течением времени. Похоже, это связано с управлением соединениями.… У нас есть одно потенциальное решение, которое решает эту проблему, но мы ищем что-то более изящное.

Журналы!

Последний (и самый загадочный) инструмент в нашем арсенале — получение журналов клиентов. ./scripts/logs сделает это за нас. И затем мы можем проанализировать их с помощью такого инструмента, как ripgrep, или выполнить поиск, например. определенные MsgId для отслеживания того, что происходит в узлах.

И другие…

Это всего лишь небольшой обзор того, как использовать и оценивать тестовую сеть. Мы надеемся, что если мы сможем сделать это проще (мы пытаемся) и сделать его более публичным (скоро!), мы сможем привлечь больше людей для мониторинга и проверки узлов и еще раз ускорить там отладку.

Итак, во что бы то ни стало, погрузитесь в инструмент testnet. PR очень приветствуется. Сейчас существует множество bash-скриптов, которые могут кому-то понравиться больше, чем другим… Но, по крайней мере, мы надеемся, что это дает вам общее представление о том, как мы сейчас тестируем. И, возможно, натолкнет на другие идеи о том, как улучшить такие вещи!


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

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

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