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

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

Ошибки бывает трудно найти, их сложнее устранить, а иногда еще сложнее объяснить. В этих обновлениях мы стараемся изложить последние новости о нашем прогрессе и наших планах на следующие шаги, но в некотором смысле это несложно. Это все равно что сказать, что мы постоянно продвигаемся вверх по определенному ручью, не говоря уже о том, как далеко находится наш пункт назначения, сколько весел в нашем распоряжении, и не обращая внимания на крокодилов, пороги и другие неприятности, которые встречаются на пути. Сложнее всего объяснить эти ошибки, не заблудившись в сорняках. Это грязная работа, но в интересах предоставления столь необходимого контекста кто-то должен просмотреть журналы. @joshuef нарисовал короткую соломинку.

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

Код API и CLI теперь объединен с основным репозиторием Safe Network, хотя новой версии пока нет, так как есть несколько неудачных тестов CLI. Процесс выпуска также необходимо скорректировать, чтобы учесть дополнения к этому репо. @Chriso ведет дело.

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

Тем временем @Joshuef избавился от огромного блокировщика на этой неделе, сумев снизить нагрузку на сообщения в некоторых случаях (между good узлами) с ~ 65000 до ~ 500, и все в порядке.

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

А @ Lionel.faber старался приоритезировать типы сообщений. Некоторые сообщения важнее других. Сообщения BLS DKG, которые обрабатывают авторизацию, должны иметь высший приоритет. Ничего важного не должно происходить без согласия старейшин. Освобождение каналов для этих сообщений ускорит все. С другой стороны, запросы, команды данных и сообщения об ошибках могут спокойно ждать своей очереди, не влияя на производительность.

Ошибки

Я не думаю, что кто-то когда-либо утверждал, что Safe - это simple. Это не. Но это тоже не не. У нас есть части, выложенные так, как люди видели в различных тестовых сетях. И с момента последнего (которое, как мы знаем, чувствуется некоторое время назад), мы изо всех сил старались сделать все более стабильным.

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

У вас есть классические ошибки

2 + 2 = 5

Или сбросил сообщения между узлами (ваш пост не приходит).

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

Условия гонки, при которых проблема может возникнуть только в том случае, если какой-то код или программа завершается быстрее, чем другая часть системы. (Так что, возможно, вы видите это только в том случае, если ваша лошадь LuckyProblems появляется непосредственно перед AgainWeWork и сразу после ThisAlreadyHappened; но любая другая комбинация проходит нормально).

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

Зависает. Также известен как тупиковые ситуации. Эти ошибки - уловка 22 мира ошибок. Вы можете продолжить, только если у вас есть «number = 5», но вы можете установить «number», только если у вас есть «number = 5». Это, очевидно, симптом классической ошибки, но также часто идет рука об руку с чем-то гоночным, поэтому вы не замечаете этого, пока не станет слишком поздно (и теперь вы не совсем уверены, почему это может происходить …: мышление :.)

Тогда у вас есть еще несколько подробностей о безопасности

Часто это просто симптомы вышеперечисленного …

Расширение сообщения. Это когда мы можем ожидать, что получим 5 сообщений на наши узлы хранения, но вместо этого получим 500. Что, в свою очередь, приведет к возвращению еще 15000. Обычно это ошибка (2 + 2 = 5), когда мы видим это, или может случиться так, что система не делает то, что мы думали, поэтому нам нужно переосмыслить дизайн. (Недавно мы наивно отправляли AE-попытки все старейшинам. Чтобы усугубить это, следующий набор повторных попыток будет отправлен от всех старейшин … всем старейшинам.: Chart_with_upwards_trend :slight_smile:

Иногда мы получаем некачественную пропускную способность. Сообщения не сбрасываются. Но дела идут медленно. Почему!? Иногда сочетание всего вышеперечисленного.

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

Вилки! Разветвляется на пути нашего знания раздела (кто был до нас … кто кого породил) … если узлы неЯ согласен по какой-то причине (причина ошибки), тогда мы, возможно, можем иметь два набора достоверных знаний, но не знаем, какой из них действительно имеет отношение к нашей текущей ситуации.

Данные не найдены. Очевидный … но почему? Что ж, любое из вышеперечисленного может привести к тому, что данные _ фактически не будут PUT_. Так что удачи в поисках того, чего не существует!

Никакого раскола! Нам нужны разделения, чтобы поддерживать работоспособность сети (например, чтобы легче разделить рабочую нагрузку и поддерживать устойчивость к взломам). Отсутствие разделения может быть ошибкой в ​​алгоритме DKG (Генерация распределенного ключа … Или то, как мы передаем нашим старейшинам их полномочия).

Выбор неправильной цели. Иногда кажется, что система обмена сообщениями работает и посылка доставляется. Но на самом деле мы отправили его не тому человеку (или отправили его целому району / сектору !?).

Слишком взволнован! Иногда мы делаем что-то, как только можем. Но сеть на ее необходимом пути к конечной согласованности еще не готова. (Представьте, что вы ПОСТАВЛЯЕТЕ кусок, но он еще не был сохранен, но вы уже пытаетесь ПОЛУЧИТЬ.) Это может показать, как будто есть ошибка. Но на самом деле, если вы попробуете еще раз через несколько секунд, возможно, все будет в порядке. Вы думали, что у вас ошибка, но вы были слишком увлечены.

SooOOooo

Так. Это краткое изложение различных вещей, которые мы можем увидеть и встретить в системе. Это может быть для каждого узла, для каждого клиента или для раздела … И только иногда, или только во вторник в малоизвестной сборке Linux. И когда вы видите проблему, она может скрываться за пределами 3 или 4 различных типов ошибок, прежде чем вы доберетесь до корня проблемы.

Все это мы рассматриваем в системе из 45 узлов и нескольких клиентов (в среднем на данный момент во время внутреннего тестирования).

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

Удаление ненужного кода и сложности помогает подвести нас к чему-то простому, что, наряду с решением ваших классических ошибок в системе, часто является одним из наиболее важных способов решения ошибок. _ Меньше кода, меньше проблем. _: Лампочка:

Мы приближаемся! Это не всегда кажется быстрым, но всегда кажется, что мы движемся вперед (даже когда нам иногда нужно немного вернуться назад).


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

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

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