Første utgivelse av Peer-to-Peer-klient for det fødererte Matrix-nettverket

En eksperimentell klient er utgitt Riot P2P.


Riot - opprinnelig en klient for et forent nettverk Matrix. P2P-modifikasjonen legger til en serverimplementering og federasjon til klienten uten å bruke en sentralisert DNS gjennom integrasjon libp2p, som også brukes i IPFS. Dette er den første versjonen av klienten som lagrer økten etter en sideinnlasting, men i de neste store oppdateringene (for eksempel 0.2.0) vil dataene fortsatt bli slettet. Derfor anbefales det ikke å bruke klienten til noe viktig.

Klienten implementerer føderasjon, romoppretting og visning av en global (serverløs!) katalog over rom.

Hovedmatrixnettverket som bruker DNS og Matrix-nettverket på libp2p kan imidlertid ennå ikke forene og samhandle med hverandre.

For å bruke klienten klikker du bare på påloggingsknappen, hvoretter du vil motta en generert ID på nettverket. Dataeksport støttes ikke ennå.

Siden dette er en ustabil presentasjon av et mulig konsept, kan du få problemer:

  • Du vil ikke kunne logge på kontoen din eller samhandle med andre klienter hvis serveren som kjører som en Service Worker blir drept av nettleseren når den blir tidsavbrutt. Et slikt problem funnet på Firefox, som gjør dette etter 30 sekunders inaktivitet].
  • På libp2p nettverksnivå er det tidsbegrensninger på antall handlinger som kan utføres, noe som kan forårsake problemer med føderasjon.

Starten på arbeidet med P2P-versjonen av Matrix skyldtes utviklernes ønske om å gi brukerne mer frihet. Frakobling fra den sentrale serveren gjør det mulig å lette kommunikasjonen innenfor lokale og mesh-nettverk, og generelt under forhold der tilgangen til det eksterne nettverket er begrenset eller fraværende. Dette har også en positiv effekt på personvernet, på grunn av minimering av overførte metadata, som i dette scenariet kun lagres av deltakerne i korrespondansen. Til syvende og sist fører dette til at man vurderer å refaktorere gjeldende Matrix-konsepter for å oppnå større portabilitet og sikkerhet.

Implementering av server-API oppnås gjennom serverkompilering dendritt inn i WebAssembly-kode, som kjører samtidig med klienten i form av en Service Worker, ved hjelp av IndexedDB og SQLite for å lagre data lokalt, når det gjelder webversjonen og Electron-omslaget.
Dendrite er en "andregenerasjons" Matrix-server i Go som utvikles og er designet for å være fullt modulær og kan også brukes monolittisk. I en modulær form brukes Apache Kafka for interaksjon mellom mikrotjenester, og i en monolitisk form - Naffka. Dokumentasjon for å bygge P2P-versjonen av Dendrite finner du på GitHub.

Dendrite var opprinnelig ment å være en generell server som var ment å være en direkte erstatning Synapse, skrevet i Python, som har problemer med ytelse og skalerbarhet. Men på grunn av behovet for støtte og stor refaktorisering av Synapse, falt Dendrite-utviklingen i veien. Til slutt ble utviklingen gjenopptatt, men de bestemte seg for å utvikle den eksisterende kodebasen ikke i en generell sammenheng, men for å fokusere på tilpasning for innbygging i bærbare klientenheter med lavt strømforbruk, som nettlesere og telefoner.

Den nåværende Dendrite-implementeringen er fortsatt i sine tidlige utviklingsstadier, men den er allerede tilstrekkelig for en enkel føderasjon:

Client-Server APIer: 34 % (227/672 tester) – opp fra 33 %
Federation APIer: 34 % (35/103 tester) – opp fra 27 %

Dette er ikke det første forsøket på å implementere P2P. Tidligere var det et initiativ for å lage CoAP proxy til Yggdrasil-nettverket for Synapse.


Utviklerne av Matrix-protokollen er ikke fokusert på føderasjon alene og eksperimenterer med verktøy for enda større desentralisering. For eksempel ble det utført et eksperiment å redusere kostnadene på transportnivå. En demon utvikler seg Pantalaimon - en proxy som enhver klient uten krypteringsstøtte kan koble til og samhandle med krypterte meldinger. Alle initiativer som tas er rettet mot å sikre det i fremtiden bli kvitt påloggingsbinding til serveren, eliminere MXID, samhandle med nettverket ved hjelp av en offentlig nøkkel, som allerede er delvis implementert i Riot P2P.


Du kan finne mer detaljert informasjon om konseptene for planlagte implementeringer i FOSDEM 2020-presentasjonen på YouTube и siste blogginnlegg.

Det finnes også en Riot P2P-variant for Android, basert på koden fra den gamle appen. I fremtiden er det planlagt å overføre den til den nåværende. RiotX.

Videre

  • Prosjekt presentert TARDIS (Time Agnostic Room DAG Inspection Service) er en lineær hendelsesgraf (DAG) debugger for Matrix-rom basert på Riot P2P.

  • I prosjekt Conduit (en fellesskapsutviklet server i Rust) er nå kryptering og vedlegg implementert.

  • En eksperimentell server i Scala har dukket opp - Mascarene.

Kilde: linux.org.ru

Legg til en kommentar