Primer lanzamiento del cliente Peer-to-Peer de la red federativa Matrix

Se lanzó un cliente experimental. Riot P2P.


Riot — originalmente un cliente para una red federativa. Matrix. La modificación P2P añade al cliente la implementación de un servidor y la federación sin el uso de DNS centralizado mediante la integración. libp2p, que también se utiliza en IPFS. Esta es la primera versión del cliente que conserva la sesión después de recargar la página, pero en futuras actualizaciones mayores (por ejemplo, 0.2.0) los datos aún serán eliminados. Por lo tanto, no se recomienda usar el cliente para algo 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 principal de Matrix, que utiliza DNS, y la red Matrix en libp2p no pueden federarse ni interactuar entre sí por el momento.

Para usar el cliente, basta con presionar el botón de inicio de sesión, tras lo cual recibirás un ID generado en la red. La exportación de datos aún no es compatible.

Dado que esta es una presentación inestable de un concepto posible, puedes encontrar problemas:

  • No podrás acceder a tu cuenta ni interactuar con otros clientes si el servidor, que se ejecuta como Service Worker, es terminado por el navegador tras el tiempo de espera. Este problema ha sido observado en Firefox, que lo hace después de 30 segundos de inactividad].
  • A nivel de red libp2p hay limitaciones en el número de acciones que se pueden realizar en el tiempo, 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. La desvinculación del servidor central facilita la comunicación dentro de redes locales y de malla, y en general, en condiciones donde el acceso a la red externa es limitado o inexistente. Esto también afecta positivamente la privacidad, dado que minimiza los metadatos transmitidos, que en este escenario son almacenados solo por los participantes de la conversación. En última instancia, esto lleva a reflexionar sobre 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 Dendrite en código WebAssembly, que se ejecuta simultáneamente con el cliente como Service Worker, utilizando IndexedDB y SQLite para almacenar datos localmente, en el caso de la versión web y el paquete de Electron.
Dendrite es un "servidor de segunda generación" para Matrix desarrollado en Go, enfocado en una completa modularidad, que también se puede utilizar en un formato monolítico. En formato modular, se usa Apache Kafka para la interacción de microservicios, y en el monolítico — Naffka. La documentación sobre la construcción de la versión P2P de Dendrite se puede encontrar en GitHub.

Dendrite se pensó originalmente como un servidor de propósito general que debía ser un reemplazo directo Synapse, escrito en Python, que tenía problemas de rendimiento y escalabilidad. Pero debido a la necesidad de soporte y un serio refactorizado de Synapse, el desarrollo de Dendrite quedó en un segundo plano. Sin embargo, el desarrollo se reanudó, aunque decidieron desarrollar la base de código existente no en el contexto de un propósito general, sino enfocándose en su adaptación para ser integrada en dispositivos cliente portátiles y de bajo consumo, como navegadores y teléfonos.

La implementación actual de Dendrite está aún en una fase temprana de desarrollo, pero ya es suficiente para una federación simple:

APIs Cliente-Servidor: 34% (227/672 pruebas) — un aumento de 33%
APIs de Federación: 34% (35/103 pruebas) — un aumento de 27%

No es el primer intento de implementar P2P. Anteriormente surgió una iniciativa para crear un proxy CoAP en la red Yggdrasil para Synapse.


Los desarrolladores del protocolo Matrix no se enfocan solo en la federación y están experimentando con herramientas para una mayor descentralización. Por ejemplo, se realizó un experimento para reducir costos en el nivel de transporte. Se está desarrollando un demonio Pantalaimon — un proxy al que puede conectarse cualquier cliente sin soporte de cifrado e interactuar con mensajes cifrados. Todas las iniciativas realizadas están dirigidas a que en el futuro se elimine la vinculación del inicio de sesión al servidor, abolishing MXID, interactuando con la red mediante una clave pública, lo cual ya se ha implementado parcialmente en Riot P2P.


Se puede encontrar información más detallada sobre los conceptos de las implementaciones planificadas en la presentación de FOSDEM 2020 en YouTube y en un reciente blog.

También existe una versión de Riot P2P para Android, basada en el código de la antigua aplicación. En el futuro, se planea migrarla a la actual RiotX.

Además

  • Se presenta el proyecto TARDIS (Time Agnostic Room DAG Inspection Service) — un depurador de grafos de eventos lineales (DAG) para salas de Matrix basado en Riot P2P.

  • En el proyecto Conduit (servidor desarrollado por la comunidad en Rust) ahora se han implementado cifrado y adjuntos.

  • Ha surgido un servidor experimental en Scala — Mascarene.

Fuente: linux.org.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster