Първи релиз на Peer-to-Peer клиента на федеративната мрежа Matrix

Състоя се пускането на експериментален клиент Riot P2P.


Riot — първоначално клиент за федеративна мрежа 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 първоначално е замислен като универсален сървър, който да бъде директна замяна на Synapse, написан на Python, който има проблеми с производителността и мащабируемостта. Но заради необходимостта от поддръжка и сериозен рефакторинг на Synapse, разработването на Dendrite отстъпи на втори план. В крайна сметка разработката беше възобновена, но решиха да развиват вече съществуващата кодова база не в контекста на универсалност, а да се фокусират върху адаптацията за вграждане в портативни и слабо мощни клиентски устройства, като браузъри и телефони.

Текущата реализация на Dendrite е все още в ранен етап на разработка, но е достатъчна за проста федерация:

Client-Server APIs: 34% (227/672 теста) — увеличение от 33%
Federation APIs: 34% (35/103 теста) — увеличение от 27%

Това не е първият опит за реализиране на P2P. Преди това имаше инициатива за създаване на CoAP прокси в мрежата Yggdrasil за Synapse.


Разработчиците на протокола Matrix не се ограничават само с федерация и експериментират с инструменти за още по-голяма децентрализация. Например, беше проведен експеримент за намаляване на разходите на транспортно ниво. Развива се демон Pantalaimon — прокси, към който може да се свърже всеки клиент без поддръжка на криптиране и да взаимодействат със защитени съобщения. Всички предприети инициативи са насочени към това в бъдеще да се освободи от привързаността на логина към сървъра, премахвайки MXID, взаимодействайки с мрежата чрез публичен ключ, което вече частично е реализирано в Riot P2P.


Можете да намерите по-подробна информация относно концепциите за предстоящите реализации в презентацията за FOSDEM 2020 в YouTube и в неотдавна публикуван блог пост.

Съществува също така вариант на Riot P2P за Android, базиран на кода на старото приложение. В бъдеще се планира да бъде прехвърлен на актуалния RiotX.

Освен това

  • Представен проект TARDIS (Time Agnostic Room DAG Inspection Service) — дебъгер на линейния граф на събития (DAG) за Matrix стаи, базиран на Riot P2P.

  • В проекта Conduit (сървър, разработван от общността на Rust) сега реализирано е криптиране и вложения.

  • Появи се експериментален сървър на Scala — Mascarene.

Източник: linux.org.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster