Primeira versão do cliente Peer-to-Peer para a rede federada Matrix

Um cliente experimental foi lançado Motim P2P.


Tumulto - originalmente um cliente para uma rede federada Matriz. A modificação P2P adiciona uma implementação de servidor e federação ao cliente sem usar um DNS centralizado por meio de integração libp2p, que também é usado em IPFS. Esta é a primeira versão do cliente que salva a sessão após recarregar a página, mas nas próximas atualizações importantes (por exemplo, 0.2.0) os dados ainda serão excluídos. Portanto, não é recomendado usar o cliente para qualquer coisa importante.

O cliente implementa federação, criação de salas e exibição de um catálogo global (sem servidor!) de salas.

No entanto, a rede Matrix principal que usa DNS e a rede Matrix em libp2p ainda não podem federar e interagir entre si.

Para utilizar o cliente, basta clicar no botão de login, após o qual você receberá um ID gerado na rede. A exportação de dados ainda não é suportada.

Como esta é uma apresentação instável de um conceito possível, você pode ter problemas:

  • Você não poderá fazer login em sua conta ou interagir com outros clientes se o servidor executado como Service Worker for encerrado pelo navegador quando atingir o tempo limite. Tal problema visto no Firefox, que faz isso após 30 segundos de inatividade].
  • No nível da rede libp2p, existem limites de tempo para o número de ações que podem ser executadas, o que pode causar problemas de federação.

O início dos trabalhos na versão P2P do Matrix se deu pelo desejo dos desenvolvedores de dar mais liberdade aos seus usuários. A dissociação do servidor central permite facilitar a comunicação em redes locais e mesh e, em geral, em condições onde o acesso à rede externa é limitado ou ausente. Isto também tem um efeito positivo na privacidade, devido à minimização dos metadados transmitidos, que neste cenário são armazenados apenas pelos participantes da correspondência. Em última análise, isso leva a considerar a refatoração dos conceitos atuais do Matrix para obter maior portabilidade e segurança.

A implementação da API do servidor é obtida através da compilação do servidor Dendrito em código WebAssembly, que roda simultaneamente com o cliente na forma de Service Worker, utilizando IndexedDB e SQLite para armazenar dados localmente, no caso da versão web e do wrapper Electron.
Dendrite é um servidor Matrix de “segunda geração” em Go que está sendo desenvolvido e projetado para ser totalmente modular e também pode ser usado monoliticamente. De forma modular, o Apache Kafka é usado para interação entre microsserviços, e de forma monolítica - Naffka. A documentação para construir a versão P2P do Dendrite pode ser encontrada no GitHub.

O Dendrite foi originalmente planejado para ser um servidor de uso geral que pretendia ser um substituto direto Sinapse, escrito em Python, que apresenta problemas de desempenho e escalabilidade. Mas devido à necessidade de suporte e grande refatoração do Synapse, o desenvolvimento do Dendrite caiu no esquecimento. No final das contas, o desenvolvimento foi retomado, mas eles decidiram desenvolver a base de código existente não em um contexto de uso geral, mas focar na adaptação para incorporação em dispositivos clientes portáteis e de baixo consumo de energia, como navegadores e telefones.

A implementação atual do Dendrite ainda está em seus estágios iniciais de desenvolvimento, mas já é suficiente para uma federação simples:

APIs cliente-servidor: 34% (227/672 testes) – acima dos 33%
APIs de federação: 34% (35/103 testes) — acima dos 27%

Esta não é a primeira tentativa de implementar o P2P. Anteriormente, houve uma iniciativa de criação Proxy CoAP para a rede Yggdrasil para Synapse.


Os desenvolvedores do protocolo Matrix não estão focados apenas na federação e estão experimentando ferramentas para uma descentralização ainda maior. Por exemplo, foi realizado um experimento reduzir custos ao nível dos transportes. Um demônio evolui Pantalaimon - um proxy ao qual qualquer cliente sem suporte de criptografia pode se conectar e interagir com mensagens criptografadas. Todas as iniciativas empreendidas visam garantir que no futuro livrar-se da ligação de login ao servidor, eliminando o MXID, interagindo com a rede por meio de uma chave pública, que já está parcialmente implementada no Riot P2P.


Você pode encontrar informações mais detalhadas sobre os conceitos de implementações planejadas na apresentação do FOSDEM 2020 no YouTube и postagem recente no blog.

Há também uma variante Riot P2P para Android, baseada no código do aplicativo antigo. No futuro está prevista a sua transferência para o atual. RiotX.

Além disso

  • Projeto apresentado TARDIS (Time Agnostic Room DAG Inspection Service) é um depurador de gráfico de eventos lineares (DAG) para salas Matrix baseado em Riot P2P.

  • No projeto Conduto (um servidor desenvolvido pela comunidade em Rust) agora é criptografia e anexos implementados.

  • Um servidor experimental em Scala apareceu - Mascareno.

Fonte: linux.org.ru

Adicionar um comentário