Første udgivelse af Matrix Federated Network Peer-to-Peer Client

En eksperimentel klient er blevet frigivet Riot P2P.


Riot - oprindeligt en klient til et fødereret netværk Matrix. P2P-modifikationen tilføjer en serverimplementering og federation til klienten uden at bruge en centraliseret DNS gennem integration libp2p, som også bruges i IPFS. Dette er den første version af klienten, der gemmer sessionen efter en genindlæsning af siden, men i de næste større opdateringer (f.eks. 0.2.0) vil dataene stadig blive slettet. Derfor anbefales det ikke at bruge klienten til noget vigtigt.

Klienten implementerer federation, oprettelse af lokale og visning af et globalt (serverløst!) katalog af rum.

Det primære Matrix-netværk, der bruger DNS, og Matrix-netværket på libp2p kan dog endnu ikke føderere og interagere med hinanden.

For at bruge klienten skal du blot klikke på login-knappen, hvorefter du vil modtage et genereret ID på netværket. Dataeksport er endnu ikke understøttet.

Da dette er en ustabil præsentation af et muligt koncept, kan du løbe ind i problemer:

  • Du vil ikke være i stand til at logge ind på din konto eller interagere med andre klienter, hvis serveren, der kører som en Service Worker, bliver dræbt af browseren, når den timeout. Sådan et problem fundet på Firefox, som gør dette efter 30 sekunders inaktivitet].
  • På libp2p netværksniveau er der tidsbegrænsninger på antallet af handlinger, der kan udføres, hvilket kan give problemer med føderation.

Starten på arbejdet med P2P-versionen af ​​Matrix skyldtes udviklernes ønske om at give mere frihed til deres brugere. Afkobling fra den centrale server gør det muligt at lette kommunikationen inden for lokale og mesh-netværk og generelt under forhold, hvor adgangen til det eksterne netværk er begrænset eller fraværende. Dette har også en positiv effekt på privatlivets fred på grund af minimeringen af ​​transmitterede metadata, som i dette scenarie kun gemmes af deltagerne i korrespondancen. I sidste ende får dette en til at overveje at omstrukturere nuværende Matrix-koncepter for at opnå større portabilitet og sikkerhed.

Implementering af server-API'en opnås gennem serverkompilering dendritceller ind i WebAssembly-kode, som kører samtidigt med klienten i form af en Service Worker, ved hjælp af IndexedDB og SQLite til at gemme data lokalt, i tilfælde af webversionen og Electron wrapper.
Dendrite er en "andengenerations" Matrix-server i Go, der er under udvikling og er designet til at være fuldt modulopbygget og kan også bruges monolitisk. I en modulær form bruges Apache Kafka til interaktion mellem mikrotjenester og i en monolitisk form - Naffka. Dokumentation til opbygning af P2P-versionen af ​​Dendrite kan findes på GitHub.

Dendrite var oprindeligt beregnet til at være en generel server, der var beregnet til at være en direkte erstatning Synapse, skrevet i Python, som har problemer med ydeevne og skalerbarhed. Men på grund af behovet for støtte og større refactoring af Synapse, faldt Dendrite-udviklingen af ​​vejen. I sidste ende blev udviklingen genoptaget, men de besluttede at udvikle den eksisterende kodebase ikke i en generel sammenhæng, men for at fokusere på tilpasning til indlejring i bærbare klientenheder med lavt strømforbrug, såsom browsere og telefoner.

Den nuværende Dendrite-implementering er stadig i sine tidlige udviklingsstadier, men den er allerede tilstrækkelig til en simpel føderation:

Client-Server API'er: 34 % (227/672 tests) — op fra 33 %
Federation API'er: 34% (35/103 test) - op fra 27%

Dette er ikke det første forsøg på at implementere P2P. Tidligere var der et initiativ til at skabe CoAP-proxy til Yggdrasil-netværket for Synapse.


Udviklerne af Matrix-protokollen er ikke fokuseret på føderation alene og eksperimenterer med værktøjer til endnu større decentralisering. For eksempel blev der udført et eksperiment at reducere omkostningerne på transportniveau. En dæmon udvikler sig Pantalaimon - en proxy, som enhver klient uden krypteringsunderstøttelse kan forbinde og interagere med krypterede beskeder til. Alle initiativer, der tages, har til formål at sikre det i fremtiden slippe af med login-binding til serveren, eliminerer MXID, interagerer med netværket ved hjælp af en offentlig nøgle, som allerede er delvist implementeret i Riot P2P.


Du kan finde mere detaljeret information om koncepterne for planlagte implementeringer i FOSDEM 2020-præsentationen på YouTube и seneste blogindlæg.

Der findes også en Riot P2P-variant til Android, baseret på koden fra den gamle app. I fremtiden er det planlagt at overføre det til det nuværende. RiotX.

Endvidere

Kilde: linux.org.ru

Tilføj en kommentar