Обновление Safe Network 🇷🇺 09 ноября 2023 г

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

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

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

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

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

Для тестирования самого GossipSub мы ужесточили проверку. Вместо того, чтобы просто ожидать минимального количества сообщений, теперь мы проверяем точное количество.

PR @southside для улучшения результатов журналирования теперь в базе кода. А также спасибо @loziniak за PR по клонированию ClientRegister. :palms_up_together:

Теперь мы передадим @anselme информацию о том, как работают платежи.

Платежи в безопасной сети

Это краткое описание того, как мы платим за данные в Safe Network, а также введение в денежные переводы в целом.

Трансферы

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

Вот как выглядит MainPublicKey:

93d01b3c6c0d41c4e50c855c753f906ba478f97a838415e6d74615a4b037a7101e724f935727bbf23d17293ab74a3027

Вы можете получить свой собственный с помощью команды: адрес безопасного кошелька

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

Когда кто-то хочет отправить деньги, он создает транзакцию, в которой тратит свои собственные «CashNotes» в обмен на новые «CashNotes», принадлежащие получателю. Поскольку эти «CashNotes» содержат секреты, которые могут повлиять на конфиденциальность отправителя и получателя («MainPublicKey»), они никогда не отправляются и не хранятся в Сети.

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

Эти «CashNoteRedemptions» зашифровываются и упаковываются в перевод, который отправляется непосредственно получателю. Получатель перевода может затем расшифровать его, используя свой «MainSecretKey», проверить и восстановить «CashNotes», прежде чем добавлять их в свой кошелек. На этом передача завершена!

Вы можете отправить перевод с помощью: safe Wallet send <сумма> <кому>

Пример: безопасный кошелек отправить 42 93d01b3c6c0d41c4e50c855c753f906ba478f97a838415e6d74615a4b037a7101e724f935727bbf23d17293ab74a3027

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

Они могут получить его с помощью: safe Wallet get <transfer>

Платежи за данные

Данные в Безопасной сети оплачиваются с помощью тех же Переводов.

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

Узлы в сети также имеют NetworkAddress. Данные хранятся на узлах, которые имеют ближайший сетевой адрес к самим данным. Вот почему мы говорим, что данные адресуются по содержимому.

Опрашивая сеть, клиент может получить ближайшие узлы к NetworkAddress. Как только мы их узнаем, мы сначала выполняем запрос StoreCost, чтобы узнать цену за хранение данных в этом месте. Цена зависит от емкости хранения узлов, которая в конечном итоге зависит от спроса.

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

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

Все это делается автоматически при загрузке данных с помощью CLI:

безопасные файлы загружают some_file

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

@chriso завершил работу над многообещающим расширением диспетчера служб WinSW, помогающим управлять узлами для Windows, и отправил на него PR.

@roland отправил PR для возобновления загрузки через CLI при нескольких запусках. Это сохраняет фрагменты локально и перемещает/удаляет их после оплаты/проверки. Он также провел рефакторинг кодовой базы, выпустив RPC-клиент в виде двоичного файла, чтобы исправить некоторые ошибки развертывания тестовой сети.

Несколько членов команды изучали механизм выплаты роялти узлам Foundation, как описано выше, включая @bochaco, @bzee и @qi_ma.

@qi_ma также создал PR, чтобы избежать дублирования хеш-работы, максимально используя последние изменения в libp2p.

@jimcollinson изучал, что необходимо для запуска MVP, уделяя особое внимание начальным и отрицательным стадиям мягкого запуска.

А @joshuef составил приоритетный список оставшейся технической работы, прежде чем мы перейдем к бета-тестированию.


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

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

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