Damus Nostr 协议

Damus 的协议 Nostr 是怎么去中心化的?其实 Nostr 不是 P2P,不是区块链,而是若干个简单的中继服务器(Relay)。

Nostr 协议

Damus 发帖流程

  • 客户端用自己的密钥创建帖子,然后把帖子发给所有的中继服务器,中继服务器把事件转发给订阅者;
  • 中继服务器记录管理订阅关系;
  • 中继服务器缓存发帖数据。

中继服务器协议就定义了这些东西。所以要实现 Damus 类似 Twitter 的功能,很多业务逻辑需要在客户端实现。比如:

  • 客户端要记录用户所有的数据,中继服务器的数据可以认为只是缓存;
  • 添加新的中继服务器后,客户段需要把自己的数据全量同步给中继服务器;
  • 中继服务器网络中断,等网络恢复时,也需要同步数据;

因为这个设计可能出现的现象:

  • 不同的中继服务器之间的数据可能是不一样的,取决于客户端跟中继服务器的同步情况;
  • 订阅、拉黑这些功能会出现紊乱

总之,是个好玩的东西。