Обновление Safe Network 🇷🇺 28 сентябрь 2023 г

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

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

Загрузка больших файлов иногда не удавалась из-за отсутствия одного или нескольких фрагментов при загрузке. Спасибо всем, кто сообщил об этом. Одна из причин, по которой мы подозреваем это, связана с кешированием. При получении записи из Кадемлии у нас есть несколько вариантов выбора. «Quorum::One» означает, что мы принимаем первый полученный ответ, «Quorum::All» означает, что мы ждем поступления всех ответов и проверяем их совпадение. Поскольку чанки являются самопроверяемыми (контент адресуется), одного ответа должно быть достаточно, поскольку мы можем проверить его достоверность на месте.

Однако похоже, что кэширование Kademlia, которое должно кэшировать фрагменты на более близких узлах при использовании Quorum::One, работает не совсем так, как мы думали… Кажется, оно гарантирует, что данные будут храниться только на одном узле (поскольку в отличие от все еще обеспечения того, чтобы они передавались всем владельцам данных, хотя нам требуется только одна копия обратно). Поэтому мы пока отключаем это и возвращаемся к Quorum::All, чтобы посмотреть, как поживем.

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

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

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

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

Как обычно, спасибо всем, кто не поленился и проверил это дело. В качестве награды вы получите удовольствие от жизни в гиперинфляционной среде, а также один или два человека станут чрезвычайно богатыми SNT. Ребята, не тратьте все сразу.

Денежные заметки

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

По сути, они являются локальным представлением токенов в кошельке. Они могут быть потрачены в сети в обмен на новые такой же стоимости (общая стоимость ввода/вывода) получателями.

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

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

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

@joshuef и @qi_ma были основными членами команды, занимавшимися поиском неправильных затрат на хранение, сбоев репликации и отсутствующих фрагментов. Джош поднял пиар, чтобы быстро провалиться, как только во время загрузки пропадают фрагменты, и временно удалил кеширование Kademlia и снова переключился на Quorum::All, чтобы решить проблему с отсутствующими фрагментами.

Помимо помощи в отладке, Ци продолжает исследовать кэширование libp2p, чтобы лучше его понять, а также изучил реализацию pub/sub GossipSub, над которой также работает @bochaco. Сейчас это находится на этапе тестирования, и они отслеживают, как сообщения распространяются между узлами. Еще немного по этому поводу. @bochaco также работал над уведомлениями о вознаграждениях в узле.

@Anselme очистил неиспользуемый код в ящике sn_transfers, минимизировал риск безопасности, сделав модули конфиденциальными, и переписал тесты, используя API-интерфейсы передачи высокого уровня для решения этой проблемы. изменять.

@bzee работает над повторным использованием передач при изменении стоимости узла. Когда магазинУзел увеличивает свою цену между моментом, когда клиент запрашивает магазин, и моментом, когда он производит платеж, этого платежа недостаточно. Вместо того, чтобы начинать заново, мы хотим повторить попытку с исходным CashNote, а затем, если это не удастся, снова пополнить его дополнительным CashNote, что быстрее.

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

@roland также работал над исправлениями в ответ на результаты тестовой сети, а @dirvine уменьшил размер закрытой группы с 8 до 5, чтобы повысить производительность. Дэвид также размышляет над механизмом безопасного обновления Safe.


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

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

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