Прототип P2P-версии клиента Matrix поверх новой overlay-сети Pinecone

Материал из InnerEq.org
Перейти к навигации Перейти к поиску

Matrix Element Android P2P Pinecone.png

Эксперименты с децентрализацией продолжаются!

Ранее разработчики Matrix предложили бессерверный вариант веб-клиента Element с использованием библиотеки libp2p (использующуюся в IPFS). Параллельно с этим шло тестирование iOS-клиента Element поверх overlay-сети Yggdrasil. Изучив доступные инструменты, был привлечён Neil Alexander (разработчик Yggdrasil и Dendrite) для создания дизайна и разработки новой P2P overlay-сети, оптимизированной специально для Matrix — Pinecone (видеопрезентация для FOSDEM 2021).

Пользователям предлагаются для тестирования мобильные клиенты, работающие поверх Pinecone в условиях локальной mesh-сети и глобального Интернета.

>>> Прототип для Android (10+)

>>> Прототип для iOS

Для тестирования достаточно установить клиент на свой смартфон. После запуска программы вам будет доступна связь между клиентами с помощью локальной mesh-сети. Для подключения к глобальной Интернет-сети зайдите в настройки, раздел «Peer-to-Peer», и включите опцию «Connect to static peer». После этого вы можете зайти в тестовую комнату, предлагаемую самими разработчиками, по адресу #beachparty:3bf0258d23c60952639cc4c69c71d1508a7d43a0475d9000ff900a1848411ec7 или создать свою, оставив её адрес в комментариях! После входа в комнату должна загрузиться история предыдущих отправленных сообщений и картинок.

Matrix[править | править код]

Протокол Matrix построен на основе линейной истории событий (events) в формате JSON внутри ациклического графа событий (DAG): простыми словами, является распределённой базой данных, хранящей полную историю отправленных сообщений и данные участвующих пользователей, реплицируя эту информацию между участвующими серверами — ближайшей аналогичной по работе технологией может быть Git и блокчейн.

Основной реализацией этой сети является мессенджер с поддержкой сквозного шифрования и VoIP (аудио- и видеозвонков, групповых конференций). Эталонные реализации клиентов и серверов разрабатываются коммерческой компанией Element, сотрудники которой также возглавляют некоммерческую организацию Matrix.org Foundation, курирующую разработку спецификации протокола Matrix.

Dendrite — сервер сети Matrix нового поколения, основанный на микросервисной архитектуре, написанный на Go.

Yggdrasil — зашифрованная (с поддержкой TLS), одноранговая (P2P), IPv6, overlay-сеть, написанная на Go.

Pinecone[править | править код]

Дизайн Pinecone вдохновлён Yggdrasil и создан для решения проблемы создания маршрутов между пирами сети, используя source routing или virtual ring routing вместо greedy routing. Введение overlay-сети решает только часть проблем, сам протокол Matrix всё ещё остаётся full-mesh. В дальнейшем могут быть введены оптимизации, вроде механизма gossip или store-and-forward. Больше подробностей во всё той же видеопрезентации для FOSDEM 2021 от Neil Alexander.

В текущем виде на телефонах пользователей запускается полноценный Matrix-сервер на Go — Dendrite, встроенный прямо в клиенте Element и работающий в фоне. Всё ещё не предусмотрено никакого механизма для использования одного пользовательского идентификатора на нескольких устройствах, но это может измениться после принятия правки в протокол под номером MSC2787: Portable Identities. Она позволит отвязать идентификатор пользователя от конкретного сервера, используя вместо этого публичный ключ и привязку внешних идентификаторов к этому публичному ключу. Подразумевается, что после этого пользователь сможет привязать к своему публичному ключу произвольное количество человекочитаемых алиасов вида @username:domain.tld, настроив синхронизацию своего профиля с избранными публично доступными серверами. Пользователь сможет дать и забрать разрешение серверу отправлять сообщения от своего имени.

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

P2P и создание маршрутов не единственные нововведение, также стоит ожидать появление нового транспортного протокола вместо текущего JSON over HTTPS.