Обновление Safe Network 🇷🇺 14 октября 2021 г

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

Сегодня мы почти достигли мини-вехи (90% пути!) С объединением API и CLI в основное репозиторий Safe Network, что означает отсутствие несоответствий версий. Что это значит и почему это важно? @ChrisO объясняет все ниже.

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

Как вы, вероятно, знаете, с такими функциями, как AE, сеть спроектирована как «CRDT-подобная» с гарантированной конечной согласованностью. Это означает, что если мы отправляем сообщение или фрагмент данных и не получаем их сразу, это не имеет значения, потому что мы просто ждем или отправляем его снова. Никакой сложной синхронизации не требуется.

Большая часть работы, которую мы делаем в настоящий момент, заключается в том, чтобы заставить это поведение, подобное CRDT, работать должным образом. Поведение цикла, которое мы видели при обмене сообщениями между узлами, похоже, теперь в основном исправлено.

Сообщения AE позволяют клиенту узнать, нужно ли ему обновить свое понимание разделов, с которыми он разговаривает. Мы добавили несколько настроек в клиент, чтобы он предварительно связывался с любыми узлами начальной загрузки, чтобы получить обновленное представление о сети, прежде чем позволить ему перейти к запуску любых команд. Мы также добавили крошечное ожидание при отправке любых данных в сеть, поскольку ранее команда возвращалась сразу же, а обработка AE-сообщений происходит в фоновом режиме. Это не было проблемой с тестами библиотеки safe_network, поскольку все они удерживают клиента, но CLI этого не делает, поэтому это могло приводить к проблемам, когда клиент не знал о части сети, и пропущенная обработка / повторная отправка команды при получении этих AE-сообщений.

Мы также наблюдаем некоторые аномалии с тестами CI (непрерывной интеграции). Может быть трудно сказать, кроется ли проблема в сети или в самих тестах CI. В этом нам помогают разобраться тестовые сети. Еще раз спасибо всем, кто застрял. Вскоре должен появиться еще один кандидат, так как мы объединим API + CLI. Мы также рассматриваем варианты облачного кластера ELK для хранения журналов тестовой сети сообщества и обеспечения их доступности для поиска.

@Jimcollinson продолжает изучать потоки аутентификации n из m с использованием общих ключей BLS. Чтобы разблокировать Сейф, вы можете выбрать комбинацию пароля + кодовой фразы (или QR-кода) с ключом устройства на вашем телефоне в резерве (2 из 3). Если вы забыли свой пароль, вы можете использовать кодовую фразу и ключ устройства. Используя свои основные учетные данные (пароль и кодовую фразу), вы также можете создавать новые ключи на дополнительных устройствах, поэтому, если вы действительно забывчивы, вы можете разблокировать свой сейф с помощью нескольких устройств или резервных парольных фраз. Идея здесь состоит в достижении гибкости, позволяющей приспособиться к различным моделям угроз безопасности, сбалансированных с удобством, и при этом быть терпимым к потере учетных данных.

На фронте DBC @danda продолжает копаться в деноминациях. Ожидайте более подробной информации в будущем.

Единый репозиторий

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

Однако в этом начинании осталось несколько репозиториев, а именно sn_api и sn_cli. API и интерфейс командной строки на самом деле немного отличаются от ранее упомянутых репозиториев тем, что они не являются основными компонентами самой сети, а их цель - дать нам возможность использовать сеть. Из-за ограниченных ресурсов, сосредоточенных в основном на развитии сети, код как в API, так и в интерфейсе командной строки устарел, и их обновление потребовало значительных усилий. Так что, хотя мы тоже хотели их объединить, у нас не было возможности сделать это.

Мы работали над обновлением интерфейса командной строки и API, поэтому, к счастью, теперь мы находимся в положении, когда их можно объединить, и мы рады сообщить, что это почти готово. sn_api и sn_cli будут располагаться рядом с кодом для сети, поэтому репозиторий safe_network состоит из трех ящиков, которые будут обновляться и развертываться одновременно.

Важно знать, что на самом деле это довольно значительное изменение, а не просто удобство администрирования. Некоторые из преимуществ:

  • Все в одном ящике устраняет путаницу в отношении того, какие версии интерфейса командной строки и API совместимы с какой версией сети. Все, что есть в любом выпуске, будут совместимы.
  • Когда код для сети обновляется с критическими изменениями, разработкаr будет вынужден обновить API и интерфейс командной строки. Это предотвращает повторное устаревание кода API и CLI.
  • Новые версии сети немедленно доступны для тестирования с помощью интерфейса командной строки, совместимого с сетью.

По последнему пункту: теперь, когда мы увидели и приветствовали более активное участие сообщества в запуске тестовых сетей, с одновременным выпуском комбинации CLI / API / сети, мы можем создать гораздо более короткий цикл тестирования и выпуска, где практически любой новый выпуск в репозитории safe_network сразу же доступен для тестирования сообществом. В конечном итоге это имеет большой потенциал, чтобы помочь нам быстрее перейти к кандидату на запуск.


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

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

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