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

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

Большая часть команды занята рефакторингом «Полномочия», кода, который сообщает нам какие акторы могут выполнять какие действия и какой уровень разрешение они требуют. Мы передаем слово молодому парню по имени @dirvine для дальнейших объяснений.

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

Другие исправления также продолжаются.

@anselme исправил ошибку в ящике sn_sdkg, связанную с рекурсивной обработкой голосов. При этом узел, выполняющий DKG самостоятельно, будет рекурсивно завершаться при обработке своего первого голоса за один вызов! (Нехорошо).

@bochaco продолжает отлаживать связь между узлами вместе с @qi_ma, а также исправлять проблемы, обнаруженные с однопоточными командами и запросами/запросами в конвейере непрерывной интеграции (CI).

Тем временем @bzee и @chriso продолжают изучать работу Quinn, реализацию протокола Quic в Rust для установления и поддержания соединений между peers, с целью рефакторинга qp2p.

Полномочия по рефакторингу

На данный момент у нас есть Полномочия для каждого сообщения, и эти полномочия разделены между узлом, клиентом, разделом и разделом_раздела. Это и сбивает с толку, и подвержено ошибкам. Совсем недавно мы копались в «Авторитете», что это значит и что оно нам покупает.

Первым шагом в этой очистке является удаление прав доступа к сообщениям и сосредоточение внимания на «Операциях». Под этим мы подразумеваем операцию в сообщении, где мы хотим проверить полномочия, а также иметь возможность применить их непосредственно к данным. Эта часть спасает нас: 1: наличие полномочий (подписей) дважды и 2: обеспечение того, чтобы любая мутация данных (включая хранение) имела соответствующие «полномочия».

Чтобы немного разбить это. Чтобы хранить куски или контейнер (регистр), мы требуем, чтобы клиенты платили. Когда они заплатили, каждый старейшина возвращает подпись части раздела. Затем клиент объединяет подпись для создания подписи раздела. Подпись этой секции остается с данными и делает данные NetworkValid. Таким образом, нет смысла подписывать все сообщение целиком, а только ту его часть, где написано «Сохранить ABC», где ABC — имя данных. Таким образом, каждый фрагмент данных теперь имеет SectionAuthority, и нам все равно, в каком сообщении или формате мы получаем подписанную операцию.

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

  1. Снова меньше кода
  2. Более конкретные типы данных
  3. Удаление требования любых подписей сообщений (предостережение через минуту).
  4. И большой… см. ниже

В этот момент проницательные могут заметить большую победу децентрализованных сетей. С элементами данных SectionSigned и SectionTree из нескольких обновлений назад у нас есть независимые от сети достоверные данные. то есть любая сеть, которая также доверяет нашему SectionTree, даже большая ее часть (в случае мегахака) может проверять и доверять данным NetworkValid. Эта функция позволяет перемещать данные в другие сети или даже в Safe II, кто знает?

Однако у нас есть узлы, подписывающие сообщения, и мы думаем об этом как о «доказательстве». Узлы сообщают друг другу и клиентам данные или предложения (например, узел X мертв или узел Y хочет присоединиться и т. д.), и мы рассматриваем их сообщения как команды инфраструктуры (т. е. временные) или команды службы клиента (дайте мне данные). Поскольку эти сообщения приводят к последствиям в сети, мы требуем, чтобы узлы вели себя правильно. Если обнаруживается, что они плохо себя ведут, у нас должны быть неопровержимые доказательства плохого поведения, чтобы мы могли их наказать. Подписанное сообщение дает нам неопровержимое доказательство поведения узла.

Принимая все это во внимание, текущий рефакторинг довольно быстрый, всего несколько дней, но он дает нам массу простоты и в то же время дает нам больше гибкости в хранении/перепубликации данных. Представьте, что вы нашли какие-то старые данные на своем узле, которых нет в сети, но они должны быть. Тогда вам не нужно платить за его хранение, вы должны просто сказать, что это данные SectionSigned, вы ДОЛЖНЫ их сохранить. Это контракт сети с планетой.

Мало того, клиенты, которые платят за хранение, на самом деле платят за получение «SectionAuthority» для данных, что делает их «NetworkValid». Теперь это означает, что они могут добавить полномочия раздела к своим данным и сохранить их в любое время. Они также могут опубликовать его повторно, если сеть каким-то образом подвела их.

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


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

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

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