技术 · 系统架构

App、节点、节点网络

Gather 由两部分组成:装在手机上的 App,和彼此对等连接的节点。App 只连一个入口节点;节点之间组成网络,负责转发和暂存密文。

App

  • 用 Flutter 编写,一套代码同时支持 Android 与 iOS。
  • 所有加密与解密都在 App 内完成,密钥保存在系统安全存储中。
  • 群、黑名单、收藏、标签等用户数据只保存在 App 本机或加密备份里,不交给节点。
  • 支持品牌化构建:同一套代码可以生成不同品牌的 App。

App 如何连到节点

  • 通过加密的 WebSocket(TLS)连接入口节点。
  • App 不依赖 TLS 证书来认节点:它向节点发送随机数,节点用自己的 Ed25519 密钥签名,App 核对公钥能推出节点 ID,并核对运营方归属证与发布清单。
  • App 内置多个入口;当前节点不可用时自动换到下一台。

节点之间

  • go-libp2p 与 Kademlia DHT,连接用 TLS 或 Noise 加密,支持 NAT 探测、打洞与中继。
  • 自研 gossip 在节点之间传播心跳与发布清单,传播范围有上限。
  • 节点发现做了分片,避免全网都去问同一台节点。
  • 代码里不内置任何种子节点,种子只从配置读取。

运维

  • 运营方可以在自己的节点之间做私有汇总:只上报白名单里的计数与枚举,不带地址或 IP,报告要验签名、防重放。
  • 节点二进制采用可复现构建流程,附软件物料清单(SBOM)。