Обновление Safe Network 🇷🇺 21 января 2021 г

Это машинный перевод. Оригинал на английском здесь: Safe Network Dev Update - January 21, 2021

Резюме

Вот некоторые из основных моментов, которые следует выделить после последнего обновления для разработчиков:

  • Мы нашли и объединили обходной путь для проблемы с запаздыванием, которая изо всех сил старалась оставаться нерешенной.
  • Проект PR для потока вознаграждений был поднят и близится к завершению.
  • Некоторые неработающие тесты клиентской сети, которые не позволили нам продолжить тестирование исправления для проблемы обмена сообщениями KeySection и DataSection (последняя проблема, блокирующая общедоступную тестовую сеть), теперь должны быть решены, и тестирование будет продолжено.
  • Мы объединили PR CI / CD в каждом из наших ящиков BRB, что привело к автоматическому тестированию, управлению версиями и нашим первым выпускам ящиков BRB на crates.io.
  • @JimCollinson представляет еще одну интересную новость о развитии приложения Safe Network и пользовательского интерфейса.

Безопасный клиент, узлы и qp2p

План проекта безопасного сетевого переноса
План проекта безопасного клиента
План проекта безопасного сетевого узла

Решение проблем с лагами

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

Суть этой проблемы заключалась в том, что что-то _ блокировало обработку клиентских запросов узлом. Это может быть связано с некоторым неоптимальным параллелизмом узлов (который мы также ищем для исправления), но корень, похоже, происходит из-за разорванных соединений, блокирующих способность узлов отвечать, и поэтому они фактически ждали соединения. чтобы от него полностью отказались нижние уровни - это ожидание и есть задержка, которую мы наблюдаем.

Кажется, что простая настройка тайм-аута простоя узла (снижение его с 30 до ~ 5 секунд … мы сейчас экспериментируем, чтобы найти оптимальные числа) разблокирует узлы в достаточной степени, чтобы мы снова смогли нормально запустить клиентские тесты. Итак, пока мы копаемся, чтобы увидеть, есть ли проблема в пуле соединений qp2p, и немного рефакторинг sn_node, мы можем двигаться дальше, снова протестировав все.

Поток вознаграждений

Ранее мы упоминали о продолжающейся работе над потоком вознаграждений. Награды выплачиваются старейшинами в секции с использованием распределенного актера AT2 (то есть `` актер раздела ‘’) и агрегированных подписей. Каждый раз, когда в созвездии Старших происходит изменение, ключ раздела меняется, и распределенный актор переходит на новый ключ, передавая ему все токены. Существует другой начальный путь в потоке передачи для субъекта раздела (и любого субъекта с несколькими владельцами) по сравнению с субъектами с одним владельцем, где проверка передачи _ предлагается_ большинством, до того, как будет проверка на репликах.
Переход с узла генезиса, а также тесты для этого завершены и подтверждены, сейчас мы работаем над последующими переходами.

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

Проблема обмена сообщениями KeySection и DataSection

В предыдущем обновлении для разработчиков мы упоминали, что исследуем удаление возможной дублированной работы агрегирования подписей, выполняемой выводится sn_node во время обмена сообщениями между KeySection и DataSection. Для этой цели создан WIP PR агрегат подписи удаления. Этот PR проходит модульные тесты sn_node, и мы использовали сетевые тесты sn_client для дальнейшей проверки. Однако из-за другой работы по рефакторингу в sn_node и sn_client, выполняемой параллельно, сетевые тесты sn_client были прерваны по другим причинам, поэтому работу по проверке пришлось приостановить на некоторое время.

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

Однако с недавним слиянием некоторых работ по рефакторингу в и то и другое sn_node и sn_client, теперь мы вернулись к этому как к приоритету и, надеюсь, сможем без проблем проработать тестовые примеры.

API и CLI

После появления ящика sn_messaging, в котором теперь определены все типы клиентских сообщений, мы работали над внесением необходимых изменений в sn_api и CLI, чтобы все они снова были совместимы с обменом сообщениями sn_node и sn_routing. Теперь это завершено, и все изменения были объединены с основными ветвями всех этих ящиков. Мы также добились некоторого прогресса в попытке переместить определения сообщений sn_routing в ящик sn_messaging, хотя это все еще текущая задача с более низким приоритетом, чем большинство других вещей, над которыми мы работаем.

Мы также интегрировали некоторые улучшения API , сделанные @Scorch, в ящик qjsonrpc, что делает параметры пути универсальными. Таким образом, мы хотели бы поблагодарить его за его вклад. : Raved_hands:

BRB - Византийское надежное вещание

Вторник ознаменовал еще одну веху, поскольку мы объединили PR CI / CD, что привело к автоматическому тестированию, управлению версиями и нашим первым выпускам brb crates на crates.io.

Существенным улучшением с момента обновления на прошлой неделе, которое вошло в этот выпуск, является поддержка общих типов актеров через черты ржавчины. Это означает, что код теперь достаточно гибкий, чтобы поддерживать большинство / любой алгоритм или библиотеку криптографии с открытым ключом без дальнейших изменений в основных библиотеках. Поддержка ed25519 уже включена, но мы рассмотрим возможность добавления поддержки BLS. В будущем могут быть добавлены даже аппаратные устройства подписи.

Дополнительные улучшения включают:

  • CLI brb_node_qp2p содержит некоторые исправления отображения и новую команду повтора в случае отбрасывания пакетов.
  • протоколирование. Все вызовы println были изменены на соответствующие функции регистрации.

Работа в процессе:

  • тестовые примеры улучшены, чтобы возвращать результаты и удалять любые вызовы, которые могут вызвать панику ()
  • добавлены комментарии к документации, чтобы сделать код более удобным для использования другими разработчиками

Наконец, еще несколько отличных новостей! Наш специалист по CRDT и большой мозг, стоящий за ящиками brb, согласились продлить свой контракт еще на 3 месяца, чтобы помочь в дальнейшей работе над функциями и интеграции. : тада:

Маршрутизация

План проекта

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

Мы также внесли несколько небольших изменений. Сначала мы убедились, что узлы никогда не создают подключения к клиентам - вместо этого, когда узлу нужно что-то отправить клиенту, он повторно использует соединение, созданное клиентом. ранее. Если такого соединения нет, он сообщает об ошибке. Само по себе это ничего не исправляет, но заставляет определенные сбои проявляться более очевидным образом, что упрощает отладку. Аналогичным образом мы улучшили обработку ошибок (PR находится на рассмотрении), чтобы ошибки стали более конкретными и содержали больше информации, опять же для упрощения отладки.

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

Безопасное сетевое приложение и пользовательский интерфейс

Функция отслеживания / Экраны и потоки

Если вы помните ноябрьское обновление UX, мы познакомили вас с предложенными обновлениями лексики Safe Network, представив новую метафору безопасной для замены учетной записи, токены, а не Safecoin, и отказ от использования термина “Сейф”.

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

Если вы перейдете в файл Figma для проектов безопасных сетевых приложений, вы начнете видеть их в действии, а также некоторые другие улучшения.

Это большой старый файл с hundrредакторы разных экранов и потоков, поэтому не всегда легко понять все, что происходит. Итак, вот несколько основных моментов:

Открытие сейфа

Здесь мы видим вводимую метафору Сейфа для данных пользователя - его блокировку и разблокировку - с некоторыми визуальными подсказками, которые, мы надеемся, усиливают это тоже.

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

Работа с токенами

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

Получение жетонов

После упразднения термина Vault мы можем увидеть здесь исследование того, как мы можем отдать предпочтение такому глаголу, как Earn, для запуска потоков для предложения ресурсов сети в обмен на безопасные сетевые токены.

Этот поток можно запустить с нескольких точек, в том числе с вкладки «Заработок» на экране «Токен», с домашнего экрана или экрана приложений, а также из самой утилиты (а также из меню действий или введенной команды).

Пара шагов по настройке, и мы готовы.

Меню действий

Вы уже видели это в превью, но вот Action Menu, названное так, потому что вы можете использовать его для поиска и доступа ко всем функциям приложения, а также для непосредственного запуска команд.

Теперь он доступен в верхнем левом углу приложения, и здесь вы можете увидеть его как в заблокированном, так и в разблокированном состоянии.

Небольшое напоминание о том, как можно искать и запускать команды. Удобно.

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

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


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

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