Skip to content
⚠️ 本页面为机器翻译,母语者审校尚未完成,译文可能存在错误。

架构

Raiznet 分为三层。本页区分 今日 运行的内容与 设计阶段 的内容 —— 完整图景请参阅 路线图

边缘层 —— ESP32 传感器

所有设备运行相同的基础固件。模式由配置决定,而非硬件:

模式供电行为
sensor_mains市电始终在线,保持 Wi-Fi 活动;未来为邻居提供 ESP-NOW 中继
sensor_battery电池大部分时间休眠,按计划唤醒
gateway市电仅中继 —— 将 ESP-NOW 设备桥接到 Wi-Fi(计划中)

每个设备都有相同的身份模型:在配置时(由硬件 TRNG)生成的 Ed25519 密钥对,存储于闪存,用于对每个遥测数据包签名。参考固件还会在其强制门户中从 BIP-39 助记词生成所有者身份 —— 参阅 设备生命周期

网格层 —— 服务器节点

每个服务器都是一个对等节点。不存在“主服务器”。节点 今日 所做的:

  • 通过 HTTP(POST /v1/telemetry)接收已签名的遥测并验证每个签名
  • 在摄取时应用按字段的 隐私策略
  • 将读数存储于 两个本地 SQLite 数据库(公共/私有)
  • 在两个端口上暴露 HTTP API:一个公共,一个本地

设计阶段 (ADR-004):节点将把公共数据持久化为已签名的仅追加事件日志,并与同一 网络 中的其他节点点对点复制 —— 先在已配置的对等节点之间通过 HTTP,然后通过基于 pubkey 拨号的传输(借助社区运行的中继)。复制尚未实现 —— 今日节点彼此独立。

服务器可以在任何运行 Node.js 的地方运行:VPS、Raspberry Pi、迷你 PC、通过 Termux 的 Android。为面向极小的 ARM 主板(静态二进制),节点的 Rust 重新实现(raiznetd)正在进行中 —— 参阅 路线图

单进程中的双端点

单个服务器进程暴露两个 HTTP 接口:

端点默认端口绑定devices 路由访问认证
公共:30000.0.0.0raiznet_public.db无(仅公共数据)
本地:3001127.0.0.1raiznet_private.db暂无 —— 计划中: 所有者质询-响应

WARNING

在所有者认证落地前,本地端点的唯一保护是其回环绑定。请通过 Tailscale/VPN 远程访问 —— 切勿直接暴露。

两个数据库

数据库来源内容服务方
raiznet_public.db公共摄取(复制计划中)可向网络公开的设备与读数公共端点
raiznet_private.db仅本地摄取local_only 设备 + 排除在公共侧之外的字段仅本地端点

通过隔离实现安全: 公共端点上的查询无法返回私有数据,因为私有数据库的连接根本不可用。隔离在数据库层强制执行,而非 API 层。

客户端层

客户端描述状态
CLI运维与调试工具仓库内
Web 仪表盘可视化 UI仓库内
公共网关暴露在互联网上的节点 —— 只是另一个对等节点,无特权数据计划中
桌面应用(Tauri)捆绑完整节点 + UI,离线工作未来阶段
移动应用React Native 或 Capacitor未来阶段