不知道各个客户端处理metadata,followings以及relays list逻辑是怎样的?

这些数据因为种种原因在各个relay之间不可避免存在不一致的情况,很容易出现新旧数据覆盖的情况,客户端似乎应该要有选项,可以对每个npub选择一个优先级最高的relay。

这种覆盖已经发生很多次了…

Reply to this note

Please Login to reply.

Discussion

PURA VIDA 🤙

应该不同relay同步,就像各个矿工同步最长区块链一样

也许是留存用户的一种手段?😅

应该会判断时间戳,新的覆盖旧的

如果客户端默认的relay保存的是旧数据,旧数据就可能会被广播,事件是最新的时间。

即使重新广播,时间也是不会变的,广播出去会被拒绝。

但我的确碰到过很多次旧数据覆盖新数据的情况。

今早Damus升级又一次覆盖了我的relay list。

客户端第一次初始化时只拿到key去面对metadata/followings/relaylist数据可能不同步的多个relay,几乎一定会出问题。

客户端需要拿到key和自己指定的某个relay才能有确定结果。

最好是key附加metadata/followings/relaylist最新信息的完整配置文件才一定不会出问题。

#[0]

应该可选两种初始化方案,让用户自己选。

取并集就好

很多时候是冲突,比如新旧钱包地址,新旧签名档。

metadata的event有时间的,客户端可以按时间取最新

问题是第一次登陆时,保留最新数据relay未必在列表中,这种情况只能拿到已配置relay中相对最新的,然后客户端就会把这个数据广播为最新。

一会换美区号更新试试,理论上说不应该广播啊,除非你等不及点了save

damus会广播relay列表,元数据不会,各个客户端实现的不一样,除非你按照一个特定逻辑去初始化,否则很容易出现新旧覆盖。

比如第一次使用新客户端,登入后什么也别干,先去编辑relay列表,保证需要的relay被添加,这之前的其它操作很容易导致混乱,但这样的逻辑不应该丢给用户。

卸载后重装,好像全程无痛恢复了,什么都没丢。

不是一定会出问题,如果damus默认的relay有你之前用的,出问题几率会小很多。

https://coracle.social 已经解决了这个问题,登陆时候在众多relay中搜索最新数据,也可以手动指定relay,其它客户端还没看到。

这个不错。

确实,我之前用的就是damus默认7金刚外加几个亚洲的。

不过我还是倾向于导出元数据等包括key,比如JSON,客户端直接导入就可以使用,这种最稳妥。

也有一种做法是出现一批目录型的relay专门存储这些最新数据,客户端初始化都从这些relay拉数据。

可以建议客户端搞个加密导入导出数据的功能