Damus
Damus Nostr 协议
Damus 的协议 Nostr 是怎么去中心化的?其实 Nostr 不是 P2P,不是区块链,而是若干个简单的中继服务器(Relay)。
Damus 发帖流程
- 客户端用自己的密钥创建帖子,然后把帖子发给所有的中继服务器,中继服务器把事件转发给订阅者;
- 中继服务器记录管理订阅关系;
- 中继服务器缓存发帖数据。
中继服务器协议就定义了这些东西。所以要实现 Damus 类似 Twitter 的功能,很多业务逻辑需要在客户端实现。比如:
- 客户端要记录用户所有的数据,中继服务器的数据可以认为只是缓存;
- 添加新的中继服务器后,客户段需要把自己的数据全量同步给中继服务器;
- 中继服务器网络中断,等网络恢复时,也需要同步数据;
因为这个设计可能出现的现象:
- 不同的中继服务器之间的数据可能是不一样的,取决于客户端跟中继服务器的同步情况;
- 订阅、拉黑这些功能会出现紊乱
总之,是个好玩的东西。