查了旧数据/没有,然后再去广播,就能有效避免历史信息被覆盖。

你说的方法:用户登录新客户端后,手工添加原来使用的relay

这种方式,在这个不分青红皂白就广播的客户端上,恰好可以清空用户历史数据。

Reply to this note

Please Login to reply.

Discussion

没有数据则啥也不做,不要广播relay列表,relay列表数据只在用户手动post时才进行广播。就解决了这个问题。

不管是一开始就广播,还是用户post时再广播,只要不查历史数据,直接发新数据,就会覆盖Relay Server上的信息。

Nostr的核心思想是,Relay上不要做太多事,就是存储,删除,完全靠created time和id来对应消息,剩下很多拉取,合并等工作,要在客户端完成。

或者说,可以把Nostr Relay Server的设计,当成一个消息队列服务器。

用户不主动post, 就不存在新数据, 覆盖啥?

说的是手动post前也得查

还有一种方案是,任何relay里保存的relay列表中任何元素,只能写入,不可删除。

不再喜欢的following,用户可手动Block

Nostr的核心思想是服务端做尽可能少的事,这样可以用很低廉的硬件资源就建立服务,从而让服务器遍及全球。

你想啊,要是把Twitter或者微博服务器端开源,没几个人有那么多服务器去建立一套微博服务。最终还是只有少数几个服务。也就根本谈不上一个分布式全球服务。

Nostr协议层试图协调所有relay做同一件事,比如删除历史数据。

是完全错误的理念。

真正的去中心化协议,是不会允许有删除选项的。

有意思,尝试理解一下你的逻辑。

客户端初始化第一步都是先请求内置relay的元数据和联系人,显示给用户,如果这些内置relay比如都是一个月前用过的,客户端得到的就是旧数据,但用户需要今天的最新数据,接下来该怎么处理?