Primer lanzamiento del cliente Peer-to-Peer para la red federada Matrix

Se ha lanzado un cliente experimental. Disturbios P2P.


Alboroto - originalmente un cliente para una red federada Matrix. La modificación P2P agrega una implementación de servidor y federación al cliente sin utilizar un DNS centralizado a través de la integración. libp2p, que también se utiliza en IPFS. Esta es la primera versión del cliente que guarda la sesión después de recargar la página, pero en las próximas actualizaciones importantes (por ejemplo, 0.2.0) los datos aún se eliminarán. Por lo tanto, no se recomienda utilizar el cliente para nada importante.

El cliente implementa la federación, la creación de salas y la visualización de un catálogo global (¡sin servidor!) de salas.

Sin embargo, la red Matrix principal que utiliza DNS y la red Matrix en libp2p aún no pueden federarse ni interactuar entre sí.

Para utilizar el cliente, simplemente haga clic en el botón de inicio de sesión, después de lo cual recibirá una identificación generada en la red. La exportación de datos aún no es compatible.

Dado que se trata de una presentación inestable de un posible concepto, es posible que tenga problemas:

  • No podrá iniciar sesión en su cuenta ni interactuar con otros clientes si el navegador cierra el servidor que se ejecuta como Service Worker cuando se agota el tiempo de espera. Qué problema visto en Firefox, que hace esto después de 30 segundos de inactividad].
  • A nivel de red libp2p, existen límites de tiempo en la cantidad de acciones que se pueden realizar, lo que puede causar problemas con la federación.

El inicio del trabajo en la versión P2P de Matrix se debió al deseo de los desarrolladores de dar más libertad a sus usuarios. El desacoplamiento del servidor central permite facilitar la comunicación dentro de las redes locales y de malla y, en general, en condiciones en las que el acceso a la red externa es limitado o inexistente. Esto también tiene un efecto positivo en la privacidad, debido a la minimización de los metadatos transmitidos, que en este escenario sólo son almacenados por los participantes en la correspondencia. En última instancia, esto lleva a considerar la refactorización de los conceptos actuales de Matrix para lograr una mayor portabilidad y seguridad.

La implementación de la API del servidor se logra mediante la compilación del servidor. Dendrita en código WebAssembly, que se ejecuta simultáneamente con el cliente en forma de Service Worker, utilizando IndexedDB y SQLite para almacenar datos localmente, en el caso de la versión web y el contenedor Electron.
Dendrite es un servidor Matrix de "segunda generación" en Go que se está desarrollando y está diseñado para ser completamente modular y también puede usarse de forma monolítica. En forma modular, Apache Kafka se utiliza para la interacción entre microservicios y en forma monolítica: Nafka. Puede encontrar documentación para crear la versión P2P de Dendrite en GitHub.

Originalmente, Dendrite estaba destinado a ser un servidor de propósito general que pretendía ser un reemplazo directo. Synapse, escrito en Python, que tiene problemas de rendimiento y escalabilidad. Pero debido a la necesidad de soporte y una refactorización importante de Synapse, el desarrollo de Dendrite quedó en el camino. Al final, el desarrollo se reanudó, pero decidieron desarrollar la base de código existente no en un contexto de propósito general, sino centrarse en la adaptación para su integración en dispositivos cliente portátiles y de bajo consumo, como navegadores y teléfonos.

La implementación actual de Dendrite aún se encuentra en sus primeras etapas de desarrollo, pero ya es suficiente para una federación simple:

API cliente-servidor: 34 % (227/672 pruebas), frente al 33 %
API de federación: 34 % (35/103 pruebas), frente al 27 %

Este no es el primer intento de implementar P2P. Anteriormente, hubo una iniciativa para crear Proxy CoAP a la red Yggdrasil para Synapse.


Los desarrolladores del protocolo Matrix no se centran únicamente en la federación y están experimentando con herramientas para una descentralización aún mayor. Por ejemplo, se realizó un experimento para reducir costos a nivel de transporte. Un demonio evoluciona Pantalaimon - un proxy al que cualquier cliente sin soporte de cifrado puede conectarse e interactuar con mensajes cifrados. Todas las iniciativas emprendidas tienen como objetivo garantizar que en el futuro deshacerse del enlace de inicio de sesión al servidor, eliminando MXID, interactuando con la red mediante una clave pública, que ya está parcialmente implementada en Riot P2P.


Puede encontrar información más detallada sobre los conceptos de implementaciones planificadas. en la presentación de FOSDEM 2020 en YouTube и publicación de blog reciente.

También hay una variante de Riot P2P para Android, basada en el código de la aplicación anterior. En el futuro está previsto trasladarlo al actual. RiotX.

por otra parte

  • Proyecto presentado TARDIS (Servicio de inspección DAG de salas independientes del tiempo) es un depurador de gráfico de eventos lineales (DAG) para salas Matrix basado en Riot P2P.

  • el proyecto Conducto (un servidor desarrollado por la comunidad en Rust) ahora es cifrado y archivos adjuntos implementados.

  • Ha aparecido un servidor experimental en Scala: mascarene.

Fuente: linux.org.ru

Añadir un comentario