È stato rilasciato un client sperimentale Riot P2P.
Riot — inizialmente un client per la rete federativa Matrix. La modifica P2P aggiunge al client l'implementazione del server e la federazione senza l'uso di DNS centralizzati attraverso l'integrazione libp2p, che è utilizzato anche in IPFS. Questa è la prima versione del client che conserva la sessione dopo il riavvio della pagina, ma negli aggiornamenti maggiori successivi (ad esempio, 0.2.0) i dati verranno comunque eliminati. Pertanto, non è consigliabile utilizzare il client per cose importanti.
Nel client è implementata la federazione, la creazione di stanze e la visualizzazione di un catalogo globale (senza server!) di stanze.
Tuttavia, la rete principale di Matrix, che utilizza DNS, e la rete Matrix su libp2p al momento non possono federarsi e interagire tra loro.
Per utilizzare il client è sufficiente premere il pulsante di accesso, dopo di che riceverai un ID generato nella rete. L'esportazione dei dati non è ancora supportata.
Poiché questa è una presentazione instabile di un possibile concetto, potresti incontrare delle difficoltà:
- Non potrai accedere al tuo account o interagire con altri client se il server, eseguito come Service Worker, viene terminato dal browser al termine del tempo di attesa. Questo problema è stato riscontrato in Firefox, che lo fa dopo 30 secondi di inattività].
- A livello di rete, libp2p ha delle limitazioni sul numero di operazioni eseguibili nel tempo, il che può causare problemi di federazione.
L'inizio dei lavori sulla versione P2P di Matrix è motivato dalla volontà degli sviluppatori di dare maggiore libertà ai propri utenti. La disconnessione dal server centrale consente di facilitare la comunicazione all'interno di reti locali e mesh, e in generale, in condizioni in cui l'accesso alla rete esterna è limitato o assente. Inoltre, ciò ha un impatto positivo sulla privacy, riducendo al minimo i metadati trasmessi, che in questo scenario vengono conservati solo dai partecipanti alla conversazione. Alla fine, ciò porta a riflettere su un rifactoring delle attuali concezioni di Matrix per ottenere una maggiore portabilità e sicurezza.
L'implementazione dell'API del server è raggiunta tramite la compilazione del server Dendrite nel codice WebAssembly, che viene eseguito simultaneamente con il client come Service Worker, utilizzando IndexedDB e SQLite per memorizzare i dati localmente, nel caso della versione web e del wrapper Electron.
Dendrite è un "server di seconda generazione" in fase di sviluppo per Matrix, scritto in Go, mirato a una completa modularità, che può anche essere utilizzato in forma monolitica. In forma modulare, per l'interazione dei microservizi si utilizza Apache Kafka, mentre in forma monolitica — Naffka. La documentazione per la compilazione della versione P2P di Dendrite può essere trovata su GitHub.
Dendrite è stato inizialmente concepito come un server di uso generale, che doveva essere un sostituto diretto Synapse, scritto in Python, che presenta problemi di prestazioni e scalabilità. Tuttavia, a causa della necessità di supporto e di un serio refactoring di Synapse, lo sviluppo di Dendrite ha preso una piega secondaria. Alla fine, lo sviluppo è ripreso, ma si è deciso di evolvere il codice esistente non nel contesto di uso generale, ma concentrandosi sull'adattamento per l'integrazione in dispositivi client portatili e a basso consumo, come browser e telefoni.
L'attuale implementazione di Dendrite è ancora nelle fasi iniziali di sviluppo, ma è già sufficiente per una semplice federazione:
Client-Server APIs: 34% (227/672 test) — in aumento dal 33%
Federation APIs: 34% (35/103 test) — in aumento dal 27%
Questa non è la prima prova di implementazione del P2P. In precedenza, era stata lanciata un'iniziativa per la creazione di un proxy CoAP nella rete Yggdrasil per Synapse.
I sviluppatori del protocollo Matrix non si concentrano solo sulla federazione e sperimentano strumenti per una decentralizzazione ancora maggiore. Ad esempio, è stato condotto un esperimento per ridurre i costi a livello di trasporto. Si sta sviluppando un demone Pantalaimon — un proxy a cui può connettersi qualsiasi client senza supporto per la crittografia e interagire con messaggi crittografati. Tutte le iniziative condotte mirano a eliminare il legame dell'accesso al server, abolendo l'MXID, interagendo con la rete tramite una chiave pubblica, il che è già parzialmente realizzato in Riot P2P.
È possibile trovare ulteriori informazioni sui concetti delle implementazioni pianificate nella presentazione FOSDEM 2020 su YouTube e in un recente post sul blog.
Esiste anche una versione di Riot P2P per Android, basata sul codice dell'applicazione precedente. In futuro è previsto di trasferirla su un codice aggiornato. RiotX.
Inoltre
-
È stato presentato il progetto TARDIS (Servizio di ispezione del DAG indipendente dal tempo) — debugger del grafo degli eventi (DAG) per le stanze Matrix basate su Riot P2P.
-
Nel progetto Conduit (un server sviluppato dalla comunità in Rust) ora sono stati implementati la crittografia e gli allegati.
-
È stato introdotto un server sperimentale in Scala — Mascarene.
Fonte: linux.org.ru
