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

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

Резюме

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

  • Сегодня День конфиденциальности данных (также известный как День защиты данных). Мы призываем всех в нашем сообществе, а также всех, кто связан с другими проектами со схожими целями, приложить еще больше усилий для достижения этих общих целей. Каждый день мы все приближаемся на шаг.
  • PR вознаграждения сейчас проходит экспертную оценку и тестирование - наблюдение за заработанными монетами очень близко!
  • Мы наконец нашли и исправили ошибку зависания соединения, от которой мы ускользали в течение нескольких недель.
  • Отладка проблемы зависания соединений выявила некоторые области, требующие улучшения, чтобы упростить процесс, если что-то подобное снова возникнет, и поэтому ведется работа по обновлению qp2p и упрощению его API.
  • После объединения этот PR теперь интерфейс командной строки может проверять баланс своего собственного SafeKey.
  • Опубликованы новые версии sn_authd (v0.0.15), CLI (v0.17.2) и sn_node (v0.25.39), при этом CLI и authd теперь построены с использованием MUSL для Linux.

Пока нет общедоступной тестовой сети …

Сегодня мы действительно были в напряжении, когда думали, продолжать ли исправлять обмен сообщениями, вознаграждения и вносить некоторые улучшения qp2p (все это более подробно описано ниже) или создать общедоступную тестовую сеть со всем, что у нас было до сих пор. Мы решили, что правильным решением было продолжить исправления и улучшения, над которыми мы сейчас работаем, и поэтому отложили общедоступную тестовую сеть на то, что, как мы думаем, продлится еще несколько дней. Мы решили, что команда будет слишком много отвлекаться при настройке и поддержке тестовой сети, плюс выпуски «* могли *» были бы менее стабильными и трудными для отладки, чем хотелось бы, если бы исправления и улучшения для обмена сообщениями и qp2p отсутствовали. Отсрочка также дает нам возможность завершить и включить работу по потоку вознаграждений, подробно описанную ниже (зарабатывание монет :wink:), в любой общедоступной тестовой сети.

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

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

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

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

Награды

Работа с вознаграждениями была продолжена с упрощением запуска раздела в sn_node, что теперь требует минимального количества старейшин для существования в разделе перед созданием экземпляра распределенного актера - актера раздела - ответственного за средства раздела.

Теперь мы подошли к началу выплаты вознаграждений. Черновик PR был преобразован в правильный PR и тестируется клиентом P.O.V. перед объединением этой работы в мастер после прохождения тестов.
Следующим шагом будет завершение выплаты вознаграждения, после чего функция фарма более или менее готова для включения в тестовую сеть.

PR сообщества

На этой неделе у нас было объединено несколько PR, @mav отправил один, который добавляет некоторые недостающие клиентские функции, и еще один, повышающий эффективность вызов sequence.in_range.

Подключение зависает

На прошлой неделе мы продолжили отладку зависания нашего соединения и, наконец, нашли в этом основную причину. Qp2p ошибочно сбрасывал соединения, которые возвращали ошибку. В этом случае ошибка была действительной и не требовала сброса соединения из пула. Благодаря этому исправлению теперь объединено мы больше не наблюдаем длительных тайм-аутов из-за потерянных соединений, что здорово: облегчено: Ходят слухи, что у @joshuef была полная шевелюра до того, как возникла эта ошибка!

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

Упрощенный API qp2p

Недавняя проблема с зависанием соединения в qp2p показала нам, что пользователь API взял на себя большую ответственность, такую ​​как поддержание соединений и удержание слушателей и потоков, по которым поступают сообщения. Это делало отладку относительно сложной, поскольку обработка соединений была частью маршрутизации и клиентских ящиков, которые имеют свой собственный набор функций. Перенеся обслуживание сетевых компонентов в ящик qp2p, мы можем изолировать и протестировать несколько сценариев и убедиться, что все соединения и обработка сообщений выполняются правильно. Это в конечном итоге также упрощает API qp2p, так что это беспроигрышный вариант. Мы начали этот рефакторинг в qp2p в качестве доказательства концепции предоставления простого асинхронного API, который маршрутизация и клиенты могут использовать для p2p-коммуникаций.

API и CLI

Репо sn_api на этой неделе вызвало большую активность со стороны членов сообщества, что является отличной новостью, особенно потому, что все эти приложения ориентированы на пользователя и, следовательно, чем больше информации мы получаем от реальных конечных пользователей, тем лучше мы сможем их улучшить, даже лучше, если вводится реальный код!

@Latch работает над новой функцией, которая вводит команду reset в CLI, которая может позволить нам очистить все данные и файлы конфигурации, которые приложения CLI, sn_authd и sn_node хранят локально, сохраняя фактические двоичные файлы приложения. нетронутый. Все, кто заинтересован в помощи, присоединяйтесь к обсуждениям и обзорам на: WIP: feat(cli): implements 'safe reset' subcommand - #6 by bochaco - Core Libraries - Safe Dev Forum.

Некоторые улучшения, представленные @mav в наш API, также были объединены, были исправлены некоторые опечатки в сообщениях об ошибках, а также добавление проверки имен NRS для отклонения символов косой черты.

Некоторые примеры приложений qjsonrpc разрабатываются @scorch (feat: qjsonrpc Async Server Example by Scorch-Dev · Pull Request #690 · maidsafe/sn_api · GitHub), которые помогут пользователям понять, как можно использовать API qjsonrpc и как приложениям, требующим JSON-RPC по протоколу QUIC может быть создан. Некоторая предыстория и контекстная информация очень хорошо детализирована в этом сообщении для всех, кто хочет больше узнать об этих усилиях. .

Теперь, когда этот PR объединен, интерфейс командной строки также может проверять баланс своего собственного SafeKey, то есть баланс, который был передан ему при авторизации с authd, который используется CLI для оплаты всех операций, выполняемых им / с его помощью. Таким образом, вызывая $ safe keys balance без предоставления секретного ключа, теперь по умолчанию проверяется текущий баланс пары ключей / SafeKey CLI.

Опубликованы новые версии sn_authd (v0.0.15), CLI (v0.17.2) и sn_node (v0.25.39) для тех, кто играл с ними локально. Поскольку двоичные файлы CLI и authd теперь создаются с использованием MUSL для платформ Linux, если вы используете Linux убедитесь, что вы устанавливаете их, а не пытаетесь обновить их с помощью CLI, вы можете найти полные инструкции по их установке в Руководстве пользователя CLI.

BRB - Византийская надежная трансляция

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

Было довольно много дискуссий по поводу интеграции BLS Distributed Key Generation (DKG) в BRB. Была надежда, что DKG сможет как бы использовать операции динамического членства в BRB (присоединение / выход). Однако в конечном итоге мы определили, что это не работает, поскольку DKG требует 100% -ного участия и должен происходить как отдельный процесс после создания группы голосования BRB.

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

План проекта

Эта неделя была в основном тихой с точки зрения фактических изменений кода в маршрутизации, потому что одна часть команды была занята обсуждением алгоритмов BRB / DKG, а другая помогала отслеживать проблемы с зависаниями клиентского соединения. Мы также приостановили работу по улучшению обработки ошибок, так как решили, что в первую очередь нужно решить более насущные проблемы.

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

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

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


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

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