První verze klienta Peer-to-Peer federované sítě Matrix

Bylo vydáno experimentálního klienta Riot P2P.


Riot — původně klient pro federovanou síť Matrix. P2P-modifikace přidává do klienta implementaci serveru a federaci bez použití centralizovaného DNS prostřednictvím integrace libp2p, které je také použito v IPFS. Toto je první verze klienta, která uchovává relaci po obnovení stránky, ale v následujících hlavních aktualizacích (např. 0.2.0) budou data stále odstraněna. Proto se tento klient nedoporučuje používat k důležitým účelům.

V klientu je implementována federace, vytváření místností a zobrazení globálního (bezserverového!) katalogu místností.

Hlavní síť Matrix, která používá DNS, a síť Matrix na libp2p prozatím nemohou federovat a vzájemně interagovat.

Pro použití klienta stačí stisknout tlačítko pro přihlášení, po čemž obdržíte vygenerované ID v síti. Export dat prozatím není podporován.

Jelikož se jedná o nestabilní prezentaci možné koncepce, můžete se setkat s obtížemi:

  • Nemůžete se přihlásit ke svému účtu nebo interagovat s ostatními klienty, pokud bude server spuštěný jako Service Worker zastaven prohlížečem po uplynutí doby čekání. Tento problém byl zaznamenán u Firefoxu, který tak činí po 30 sekundách nečinnosti].
  • Na úrovni sítě libp2p platí omezení počtu vykonávaných akcí za čas, což může vyvolat problémy s federací.

Zahájení práce na P2P verzi Matrix je dáno touhou vývojářů poskytnout svým uživatelům více svobody. Odpoutání od centrálního serveru usnadňuje komunikaci uvnitř lokálních a mesh sítí a obecně v podmínkách, kdy je vnější připojení omezeno nebo chybí. To také pozitivně ovlivňuje soukromí, protože minimalizuje přenášené metadata, která v tomto scénáři uchovávají pouze účastníci konverzace. Nakonec to vyvolává úvahy o refaktorizaci současných konceptů Matrix k dosažení větší přenositelnosti a bezpečnosti.

Implementace serverového API je dosažena díky kompilaci serveru Dendrite do kódu WebAssembly, který je spuštěn současně se klientem ve formě Service Worker, využívající IndexedDB a SQLite pro místní ukládání dat, v případě webové verze a Electron obalu.
Dendrite je vyvíjený "server druhé generace" Matrix napsaný v Go, zaměřený na plnou modularitu, který lze také používat v monolitické podobě. V modulární podobě pro interakci mikroslužeb se používá Apache Kafka, a v monolitické — Naffka. Dokumentaci pro sestavení P2P verze Dendrite lze najít na GitHubu.

Dendrite byl původně navržen jako server pro všeobecné použití, který měl být přímou náhradou Synapse, napsaného v Pythonu, který měl problémy s výkonem a škálovatelností. Ale kvůli potřebě podpory a vážnému refaktoringu Synapse, se vývoj Dendrite dostal do pozadí. Nakonec byl vývoj obnoven, avšak již stávající kódová základna se rozhodla rozvíjet nejen jako server pro všeobecné použití, ale zaměřit se na adaptaci pro integraci do přenosných a nízkovýkonných klientských zařízení, jako jsou prohlížeče a telefony.

Aktuální implementace Dendrite je stále v rané fázi vývoje, ale už to stačí pro jednoduchou federaci:

Client-Server API: 34% (227/672 testů) — nárůst z 33%
Federation API: 34% (35/103 testů) — nárůst z 27%

To není první pokus o realizaci P2P. Dříve se objevila iniciativa na vytvoření CoAP-proxy pro síť Yggdrasil pro Synapse.


Vývojáři protokolu Matrix se nezaměřují pouze na federaci a experimentují s nástroji pro ještě větší decentralizaci. Například byl proveden experiment na snížení nákladů na transportní úrovni. Vyvíjí se démon Pantalaimon — proxy, k němuž se může připojit jakýkoli klient bez podpory šifrování a interagovat se šifrovanými zprávami. Všechny provedené iniciativy mají za cíl v budoucnu zbavit se vazby přihlášení na server, odstraněním MXID, interagováním se sítí pomocí veřejného klíče, což je již částečně realizováno v Riot P2P.


Podrobnější informace o konceptech plánovaných realizací lze najít v prezentaci FOSDEM 2020 na YouTube a v nedávno zveřejněném blogovém příspěvku.

Existuje také varianta Riot P2P pro Android, založená na kódu staré aplikace. V budoucnu je plánováno převést ji na aktuální RiotX.

Kromě toho

  • Byl představen projekt TARDIS (Time Agnostic Room DAG Inspection Service) — ladicí nástroj pro lineární grafy událostí (DAG) pro Matrix místnosti založené na Riot P2P.

  • V projektu Conduit (vyvíjený komunitou server v jazyce Rust) nyní implementováno šifrování a přílohy.

  • Objevil se experimentální server na Scala — Mascarene.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster