Matrix 联合网络的点对点客户端的第一个版本

实验性客户端已发布 防暴P2P.


防暴 - 最初是联合网络的客户端 矩阵。 P2P 修改通过集成添加了服务器实现和联合到客户端,无需使用集中式 DNS 库文件2p,也用于 IPFS。 这是第一个在页面重新加载后保存会话的客户端版本,但在下一个重大更新(例如 0.2.0)中,数据仍将被删除。 因此,不建议将客户端用于任何重要的事情。

客户端实现联合、房间创建和全局(无服务器!)房间目录的显示。

然而,使用 DNS 的主 Matrix 网络和 libp2p 上的 Matrix 网络尚无法相互联合和交互。

要使用客户端,只需单击登录按钮,之后您将在网络上收到生成的 ID。 尚不支持数据导出。

由于这是一个可能概念的不稳定表示,因此您可能会遇到麻烦:

  • 如果作为 Service Worker 运行的服务器在超时时被浏览器终止,您将无法登录您的帐户或与其他客户端交互。 这样的问题 在 Firefox 上发现,在 30 秒不活动后执行此操作]。
  • 在 libp2p 网络级别,可以执行的操作数量存在时间限制,这可能会导致联合问题。

Matrix P2P 版本的开发是由于开发人员希望为用户提供更多自由的愿望。 与中央服务器的解耦使得可以促进本地和网状网络内的通信,并且通常在对外部网络的访问受到限制或不存在的情况下。 由于传输的元数据最小化,这对隐私也有积极的影响,在这种情况下,元数据仅由通信中的参与者存储。 最终,这导致人们考虑重构当前的 Matrix 概念,以实现更高的可移植性和安全性。

服务器API的实现是通过服务器编译来实现的 树突 WebAssembly 代码以 Service Worker 的形式与客户端同时运行,在 Web 版本和 Electron 包装器的情况下,使用 IndexedDB 和 SQLite 在本地存储数据。
Dendrite 是 Go 中的“第二代”Matrix 服务器,正在开发中,设计为完全模块化,也可以整体使用。 以模块化形式,Apache Kafka 用于微服务之间的交互,以整体形式 - 纳夫卡。 可以找到构建 P2P 版本 Dendrite 的文档 在GitHub上.

Dendrite 最初旨在成为通用服务器,旨在直接替代 突触,用Python编写,存在性能和可扩展性问题。 但由于需要对 Synapse 的支持和重大重构,Dendrite 的开发被搁置了。 最终,开发恢复了,但他们决定不在通用环境中开发现有的代码库,而是专注于嵌入便携式和低功耗客户端设备(例如浏览器和手机)中的适配。

当前的 Dendrite 实现仍处于开发的早期阶段,但对于简单的联合来说已经足够了:

客户端-服务器 API:34%(227/672 次测试)— 高于 33%
联合 API:34%(35/103 测试) — 高于 27%

这并不是 P2P 的第一次尝试。 此前,曾有一项倡议创建 Synapse 的 Yggdrasil 网络的 CoAP 代理.


Matrix 协议的开发人员不仅仅专注于联邦,而且正在尝试使用工具来实现更大程度的去中心化。 例如,进行了一个实验 降低运输层面的成本。 恶魔进化了 潘塔莱蒙 - 任何不支持加密的客户端都可以连接到加密消息并与之交互的代理。 采取的所有举措都是为了确保未来 摆脱与服务器的登录绑定,消除 MXID,使用公钥与网络交互,这已经在 Riot P2P 中部分实现。


您可以找到有关计划实施的概念的更多详细信息 在 YouTube 上的 FOSDEM 2020 演示中 и 最近的博客文章.

Android 上还有一个 Riot P2P 变体,基于旧应用程序的代码。 将来计划将其转移到现在的位置。 防暴X.

而且

  • 项目介绍 TARDIS (与时间无关的房间 DAG 检查服务)是基于 Riot P2P 的 Matrix 房间的线性事件图(DAG)调试器。

  • 在项目中 管道 (Rust 中的社区开发的服务器)现在 已实施加密和附件.

  • Scala 中的一个实验服务器已经出现 - 马斯卡林.

来源: linux.org.ru

添加评论