Foi lançada a versão experimental do cliente Riot P2P.
Riot — originalmente um cliente para a rede federativa Matrix. A modificação P2P adiciona ao cliente a implementação do servidor e a federação sem o uso de DNS centralizado por meio da integração libp2p, que também é usada em IPFS. Esta é a primeira versão do cliente que mantém a sessão após uma recarga da página, mas nas próximas atualizações maiores (por exemplo, 0.2.0) os dados ainda serão excluídos. Portanto, não é recomendável usar o cliente para algo importante.
O cliente implementa federação, criação de salas e exibição de um catálogo global (sem servidor!) de salas.
Nesse contexto, a rede principal Matrix, que usa DNS, e a rede Matrix em libp2p ainda não podem se federar e interagir entre si.
Para usar 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 encontrar dificuldades:
- Você não conseguirá acessar sua conta ou interagir com outros clientes se o servidor, executado como Service Worker, for encerrado pelo navegador após um tempo de espera. Este problema foi observado no Firefox, que faz isso após 30 segundos de inatividade].
- No nível da rede libp2p, existem limitações sobre o número de ações executáveis ao longo do tempo, o que pode causar problemas de federação.
O início do trabalho na versão P2P do Matrix é motivado pelo desejo dos desenvolvedores de dar mais liberdade aos seus usuários. A desvinculação do servidor central facilita a comunicação dentro de redes locais e mesh, especialmente em situações onde o acesso à rede externa é limitado ou ausente. Isso também impacta positivamente a privacidade, minimizando os metadados transmitidos, que nesse cenário são armazenados apenas pelos participantes da conversa. No final, isso leva a uma reflexão sobre o refatoramento dos conceitos atuais do Matrix para alcançar maior portabilidade e segurança.
A implementação da API do servidor é alcançada por meio da compilação do servidor Dendrite no código WebAssembly, que é executado simultaneamente com o cliente na forma de um Service Worker, utilizando o IndexedDB e SQLite para armazenar dados localmente, no caso da versão web e do wrapper Electron.
Dendrite é um "servidor de segunda geração" Matrix em desenvolvimento, escrito em Go, voltado para total modularidade, que também pode ser usado em forma monolítica. Na forma modular, para a interação dos microsserviços é utilizado o Apache Kafka, enquanto na forma monolítica — Naffka. A documentação para a construção da versão P2P do Dendrite pode ser encontrada no GitHub.
O Dendrite foi inicialmente concebido como um servidor de uso geral, que deveria ser uma substituição direta Synapse, escrito em Python, que enfrenta problemas de desempenho e escalabilidade. Mas devido à necessidade de manutenção e reforma significativa do Synapse, o desenvolvimento do Dendrite foi colocado em segundo plano. No final, o desenvolvimento foi retomado, mas a base de código existente decidiu-se desenvolver não no contexto de uso geral, mas focar na adaptação para integração em dispositivos clientes portáteis e de baixo consumo, como navegadores e telefones.
A implementação atual do Dendrite ainda está em estágio inicial de desenvolvimento, mas já é suficiente para uma federação simples:
APIs Client-Server: 34% (227/672 testes) — aumento de 33%
APIs de Federação: 34% (35/103 testes) — aumento de 27%
Esta não é a primeira tentativa de implementação de P2P. Anteriormente, houve uma iniciativa para criar um proxy CoAP na rede Yggdrasil para o Synapse.
Os desenvolvedores do protocolo Matrix não se concentram apenas na federação e experimentam ferramentas para uma descentralização ainda maior. Por exemplo, foi realizado um experimento para reduzir custos no nível de transporte. Um daemon está sendo desenvolvido Pantalaimon — um proxy ao qual qualquer cliente pode se conectar sem suporte à criptografia e interagir com mensagens criptografadas. Todas as iniciativas realizadas têm como objetivo, no futuro, eliminar a vinculação do login ao servidor, abolindo o MXID, interagindo com a rede através de uma chave pública, o que já foi parcialmente implementado no Riot P2P.
Para encontrar informações mais detalhadas sobre os conceitos de implementações planejadas, pode-se assistir à apresentação FOSDEM 2020 no YouTube e recentemente publicada em um post no blog.
Há também uma versão do Riot P2P para Android, baseada no código do antigo aplicativo. No futuro, está planejada a sua migração para a versão atual RiotX.
Além disso
-
Foi apresentado um projeto TARDIS (Serviço de Inspeção de DAG de Sala Agnóstico ao Tempo) — depurador de gráfico de eventos linear (DAG) para salas Matrix baseadas em Riot P2P.
-
No projeto Conduit (servidor desenvolvido pela comunidade na linguagem Rust) agora implementaram criptografia e anexos.
-
Surge um servidor experimental em Scala — Mascarene.
Fonte: linux.org.ru
