In eksperimintele klant is frijlitten Riot P2P.
Riot - oarspronklik in klant foar in federearre netwurk Matrix. De P2P-modifikaasje foeget in server-ymplemintaasje en federaasje ta oan 'e kliïnt sûnder in sintralisearre DNS te brûken troch yntegraasje libb2p, dat ek brûkt wurdt yn IPFS. Dit is de earste ferzje fan 'e kliïnt dy't de sesje bewarret nei in side opnij laden, mar yn 'e folgjende grutte updates (bygelyks 0.2.0) sille de gegevens noch wiske wurde. Dêrom is it net oan te rieden om de klant te brûken foar alles wat wichtich is.
De klant ymplemintearret federaasje, keamer oanmeitsjen en werjaan fan in globale (serverless!) Katalogus fan keamers.
It wichtichste Matrix-netwurk dat DNS en it Matrix-netwurk op libp2p brûkt kin lykwols noch net federearje en mei-inoar ynteraksje.
Om de kliïnt te brûken, klikje jo gewoan op de oanmeldknop, wêrnei't jo in generearre ID krije op it netwurk. Gegevens eksportearje wurdt noch net stipe.
Om't dit in ynstabile presintaasje is fan in mooglik konsept, kinne jo yn problemen komme:
- Jo kinne net oanmelde by jo akkount of ynteraksje mei oare kliïnten as de tsjinner dy't rint as Service Worker wurdt fermoarde troch de browser as it time-out. Sa'n probleem opspoard op Firefox, dy't dit docht nei 30 sekonden fan ynaktiviteit].
- Op it libp2p-netwurknivo binne d'r tiidlimiten op it oantal aksjes dat kin wurde útfierd, wat problemen mei federaasje feroarsaakje kinne.
It begjin fan wurk oan 'e P2P-ferzje fan Matrix wie te tankjen oan' e winsk fan 'e ûntwikkelders om mear frijheid te jaan oan har brûkers. Decoupling fan de sintrale tsjinner makket it mooglik om te fasilitearjen kommunikaasje binnen lokale en mesh netwurken, en yn it algemien, yn betingsten dêr't tagong ta it eksterne netwurk is beheind of ôfwêzich. Dit hat ek in posityf effekt op privacy, troch it minimalisearjen fan oerdroegen metadata, dy't yn dit senario allinich troch de dielnimmers yn 'e korrespondinsje opslein wurdt. Uteinlik liedt dit ien om te beskôgjen om hjoeddeistige Matrix-konsepten te refactorearjen om gruttere portabiliteit en feiligens te berikken.
Ymplemintaasje fan de server API wurdt berikt fia server kompilaasje dendrite yn WebAssembly-koade, dy't tagelyk mei de kliïnt rint yn 'e foarm fan in Service Worker, mei IndexedDB en SQLite om gegevens lokaal op te slaan, yn it gefal fan' e webferzje en de Electron-wrapper.
Dendrite is in "twadde generaasje" Matrix-tsjinner yn Go dy't wurdt ûntwikkele en is ûntworpen om folslein modulêr te wêzen en kin ek monolithysk brûkt wurde. Yn in modulêre foarm wurdt Apache Kafka brûkt foar ynteraksje tusken mikrotsjinsten, en yn in monolityske foarm - Naffka. Dokumintaasje foar it bouwen fan de P2P-ferzje fan Dendrite is te finen op GitHub.
Dendrite wie oarspronklik bedoeld as in tsjinner foar algemiene doelen dy't bedoeld wie om in direkte ferfanging te wêzen Synapse, skreaun yn Python, dy't problemen mei prestaasjes en skalberens hat. Mar troch de needsaak foar stipe en grutte refactoring fan Synapse, foel Dendrite-ûntwikkeling troch de wei. Uteinlik gie de ûntwikkeling opnij, mar se besleaten om de besteande koadebasis te ûntwikkeljen net yn in algemiene kontekst, mar om te fokusjen op oanpassing foar ynbêde yn draachbere en leech-macht kliïntapparaten, lykas browsers en tillefoans.
De hjoeddeistige Dendrite-ymplemintaasje is noch yn syn iere stadia fan ûntwikkeling, mar it is al genôch foar in ienfâldige federaasje:
Client-tsjinner API's: 34% (227/672 tests) - omheech fan 33%
Federaasje API's: 34% (35/103 tests) - omheech fan 27%
Dit is net de earste poging om P2P út te fieren. Earder wie der in inisjatyf om te meitsjen CoAP proxy nei it Yggdrasil netwurk foar Synapse.
De ûntwikkelders fan it Matrix-protokol binne net rjochte op federaasje allinich en eksperimintearje mei ark foar noch gruttere desintralisaasje. Der waard bygelyks in eksperimint dien om kosten te ferminderjen op it ferfiernivo. In demon evoluearret Pantalaimon - in proxy wêrmei elke kliïnt sûnder fersiferingsstipe kin ferbine en ynteraksje mei fersifere berjochten. Alle ûndernommen inisjativen binne rjochte om dat yn 'e takomst te garandearjen kwytreitsje login binding oan de tsjinner, elimineren MXID, ynteraksje mei it netwurk mei help fan in iepenbiere kaai, dat is al foar in part ymplemintearre yn Riot P2P.
Jo kinne mear detaillearre ynformaasje fine oer de konsepten fan plande ymplemintaasjes yn 'e FOSDEM 2020-presintaasje op YouTube и resinte blog post.
D'r is ek in Riot P2P-fariant foar Android, basearre op de koade fan 'e âlde app. Yn 'e takomst is it plan om it oer te setten nei de hjoeddeistige. RiotX.
Oanfoljend
-
Projekt presintearre TARDIS (Time Agnostic Room DAG Inspection Service) is in lineêre evenemintgrafyk (DAG) debugger foar Matrix keamers basearre op Riot P2P.
-
Yn projekt Conduit (in mienskip ûntwikkele server yn Rust) is no fersifering en taheaksels útfierd.
-
In eksperimintele tsjinner yn Scala is ferskynd - Mascarene.
Boarne: linux.org.ru
