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

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

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

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

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

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

@Jimcollinson, @heather_burns и @andrew.james работали над документацией, необходимой швейцарским властям для создания там нового фонда. Хорошая новость заключается в том, что все это в высшей степени выполнимо, и нет никаких очевидных препятствий, что подтверждает наш выбор этой страны. Наша документация была подана для регистрации фонда, и вскоре мы начнем работу над нашей регистрацией в швейцарском финансовом органе.

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

Помимо окончательной доработки модели вытягивания и тестов живучести (см. ниже), @Yogesh настроил локальную панель управления с помощью ELK и Filebeat, поэтому мы может более легко анализировать журналы. Пока что результаты хорошие, и сейчас он работает над тем, чтобы сделать его более надежным и гарантировать, что он фиксирует все необходимые показатели.

Узлы здесь, чтобы помочь — так что перестаньте их подавлять

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

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

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

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

Репликация данных

Репликация данных — еще один важный фактор бесперебойной и стабильной работы сети.

Когда узел отключается, нам нужно передать его данные другим узлам. В прошлом данные передавались от одного узла к другому под контролем старейшин.

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

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

Новый подход, над которым работает @yogesh, направлен на устранение этих ограничений путем реализации модели «вытягивания». Всякий раз, когда есть изменениеe в наборе Adult узлы будут уведомлять друг друга о том, какие данные они должны хранить. Затем принимающие узлы будут нести ответственность за извлечение этих данных из любого из существующих узлов, которые их содержат.

Это гарантирует, что взрослые извлекают только те данные, которые они должны хранить, и несут ответственность за их обработку. Если у них уже есть данные, поток прерывается на раунде уведомлений. Данные отправляются только тогда, когда требуется репликация — вместо текущего обмена сообщениями по принципу «запустил и забыл», который использует пропускную способность сети как должное.

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

Как только это будет полностью готово, мы запустим новую игровую площадку, чтобы протестировать ее.


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

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

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