Matrix ဖက်ဒရယ်ကွန်ရက်အတွက် Peer-to-Peer client ၏ ပထမဆုံး ထုတ်ဝေမှု

Состоялся выпуск экспериментального клиента Riot P2P.


ပုန်ကန် — изначально клиент для федеративной сети matrix. P2P-модификация добавляет в клиент реализацию сервера и федерацию без использования централизованного DNS посредством интеграции libp2p, которая также используется в IPFS. Это первая версия клиента, которая сохраняет сессию после перезагрузки страницы, но в следующих мажорных обновлениях (например, 0.2.0) данные всё равно будут удалены. Поэтому использовать клиент для чего-то важного не рекомендуется.

В клиенте реализована федерация, создание комнат и отображение глобального (бессерверного!) каталога комнат.

При этом основная сеть Matrix, использующая DNS, и сеть Matrix на libp2p пока что не могут федерироваться и взаимодействовать друг с другом.

Для использования клиента достаточно нажать кнопку входа, после чего вы получите сгенерированный ID в сети. Экспорт данных пока не поддерживается.

Так как это нестабильная презентация возможной концепции, вы можете столкнуться с неприятностями:

  • Вы не сможете зайти в свой аккаунт или взаимодействовать с другими клиентами, если сервер, запущенный в виде Service Worker, будет убит браузером по истечении времени ожидания. Такая проблема замечена у Firefox, который делает это спустя 30 секунд бездействия].
  • На уровне сети libp2p действуют ограничения на количество выполняемых действий по времени, что может вызвать проблемы с федерацией.

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

Реализация серверного API достигается благодаря компиляции сервера Dendrite в код WebAssembly, который запускается одновременно с клиентом в виде Service Worker, использующий IndexedDB и SQLite для хранения данных локально, в случае с веб-версией и Electron-обёрткой.
Dendrite — это разрабатываемый «сервер второго поколения» Matrix на языке Go, ориентированный на полную модульность, который также возможно использовать в монолитном виде. В модульном виде для взаимодействия микросервисов используется Apache Kafka, а в монолитном — Naffka. Документацию по сборке P2P-версии Dendrite можно найти GitHub တွင်.

Dendrite изначально задумывался как сервер общего назначения, который должен был быть прямой заменой synapses, написанного на Python, имеющего проблемы с производительностью и масштабируемостью. Но из-за необходимости в поддержке и серьёзном рефакторинге Synapse, разработка Dendrite отошла на второй план. В конечном итоге разработка возобновилась, однако уже существующую кодовую базу решили развивать не в контексте общего назначения, а сфокусироваться на адаптации для встраивания в портативные и маломощные клиентские устройства, вроде браузеров и телефонов.

Текущая реализация Dendrite находится ещё на ранней стадии разработки, но этого уже достаточно для простой федерации:

Client-Server APIs: 34% (227/672 tests) — up from 33%
Federation APIs: 34% (35/103 tests) — up from 27%

Это не первая попытка реализации P2P. Ранее появлялась инициатива по созданию CoAP-прокси в сеть Yggdrasil для Synapse.


Разработчики протокола Matrix не зацикливаются на одной только федерации и экспериментируют с инструментами для ещё большей децентрализации. Например, был проведён эксперимент для сокращения издержек на транспортном уровне. Развивается демон ပန်းတလိုင်းမွန် — прокси, к которому может подключиться любой клиент без поддержки шифрования и взаимодействовать с зашифрованными сообщениями. Все проведённые инициативы нацелены на то, чтобы в будущем избавиться от привязки логина к серверу, упразднив MXID, взаимодействуя с сетью с помощью публичного ключа, что уже частично реализовано в Riot P2P.


Найти более подробную информацию по концепциям планируемых реализаций можно в презентации FOSDEM 2020 на YouTube и недавно вышедшем блог-посте.

Существует также вариант Riot P2P для Android, основанный на коде старого приложения. В будущем планируется перевести его на актуальный RiotX.

ထိုမှတပါး

source: linux.org.ru

မှတ်ချက် Add