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

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

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

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

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

Прямо сейчас мы модернизируем машинный процесс CI, чтобы сделать его немного компактнее и безопаснее. Это во многом детище @chriso, и он работает над тем, чтобы установить все элементы, включая API, инстансы EC2, бессерверные функции и защиту от DDoS. Почти там сейчас.

Мы работаем над удалением как можно большего количества блокировок чтения/записи во время репликации данных. В основном это домен @joshuef. Джош и @bochaco также в значительной степени завершили рефакторинг sn_node, чтобы повторно ввести в код двунаправленную связь. Это то, что у нас было раньше, но это стало очень сложным. Упрощение кодовой базы означает, что мы можем вернуть ее. Все еще тестируется, но мы уже видим улучшения стабильности.

@roland удаляет функцию трассировки. Это вызывает раздувание, оно не доказало свою полезность (и тем более с двунаправленными потоками), поэтому мы избавляемся.

Механизмы консенсуса

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

Safe — это асинхронная децентрализованная сеть. Все постоянно меняется; «состояние», означающее моментальный снимок нашего текущего понимания мира, почти всегда отличается с точки зрения каждого отдельного узла. И все же, по крайней мере, на короткое время, эти узлы должны прийти к соглашению.

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

Так как же узлы достигают соглашения о состоянии? Ну, это зависит от обстоятельств, действия и масштаба.

Часто в Safe мы можем прийти к соглашению с помощью антиэнтропии (AE). Это простой обмен информацией, чтобы убедиться, что мы разговариваем с нынешними старейшинами в секции. Таким образом, AE можно рассматривать как простой двоичный механизм локального консенсуса, хотя мы просто думаем о нем как о проверке того, что все стороны, которые должны быть синхронизированы, находятся на одной странице. Конечно, это далеко от общего порядка биткойнов в масштабах всей системы.

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

Затем у нас есть бесконфликтные реплицированные типы данных (CRDT), которые мы используем для изменяемых данных. Они имеют логические часы, допускают одновременный доступ и в конечном итоге разрешают ответвления в одно состояние. Все это происходит без какого-либо согласия. Вилки прекрасны и саморазрешаются.

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

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

Так где же муравьям может понадобиться техническая помощь? Один набирает новые узлы из списка, возможно, сотен кандидатов, все с нулевым возрастом узла — какой из них мы выбираем? Здесь нам может понадобиться полагаться на более высокий интеллект, который может предоставить группа.

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

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

Это то, на чем сейчас сосредоточена команда, особенно Мостафа и @davidrusu: реализация правильного протокола в нужном месте в нужное время. Скоро народ!


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

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

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