NIP-77:Negentropy集合协调
NIP-77定义了Nostr中继和客户端如何使用Negentropy集合协调协议来高效同步事件集合,在不重新发送完整数据集的情况下找出双方各自缺少哪些事件。
工作原理
Negentropy协调通过WebSocket连接使用专用消息类型运行。客户端和中继在各自已排序的事件集合上交换紧凑的范围指纹,逐步缩小到仅有差异的范围。一旦确定差异,只传输缺失的事件ID(然后是缺失的事件本身)。
NIP-77对消息框架进行标准化,使任何实现该规范的客户端和中继都能协商高效的同步会话。协议在现有Nostr WebSocket连接上使用NEG-OPEN、NEG-MSG和NEG-CLOSE消息类型。
为何重要
传统的Nostr同步使用基于时间戳的since过滤器,可能因时钟漂移、具有相同时间戳的事件或乱序到达的事件而遗漏事件。Negentropy比较实际事件集合而非依赖时间戳,与简单轮询相比,以明显更少的往返次数实现可证明完整的同步。
这对以下场景特别有用:
- 离线后需要追赶同步的移动端客户端
- 中继间复制
- 本地中继同步(如Citrine的中继聚合器)
实现
- Citrine — PR #139 为Android中继节点添加了高效集合协调同步的NIP-77支持
- strfry — 中继端Negentropy支持
- nostr-tools — 客户端Negentropy实现
主要来源:
提及于:
另见: