Why Nostr? What is Njump?
2023-03-07 11:08:00
in reply to

hcocoa on Nostr: ...

以下是我常用的三个web客户端,可以查看你发的每条消息具体保存在哪些relay上,送给有需要的朋友:

nostr.band
最全,进去搜索一下自己或别人的公钥

astral.ninja
只检测你添加的relay

flycat-web.vercel.app
只检测右上角添加的relay

希望以后手机客户端也可以看到每条消息的relay保存情况。

今天上午遇到了和 #[0] 兄一样的问题,发出的消息在nostr.band看不到。

为了调查这个问题,我使用websocket手动连接relay并重放event来测试,发现了几个有趣的点,和大家分享:

1.通过damus消息右上角的三个点,可以选择复制json,但这个json会丢掉emoji 表情,这就导致我在手动重放时,relay一直返回event id错误(event id 是把消息体sha256得到的,因为消息体少了emoji 表情,所以sha256就对不上了),但是换成其他消息又是正常的,于是就怀疑是早上damus更新导致的问题。后来证实是因为json串里丢了那个⚡️emoji 表情,这应该是个bug。

2.从上面一条就可以看出,虽然nostr文档提到relay不校验event id ,但起码对于重放的event(比如在damus中点击广播,或者手动通过websocket发json),nostream和strfry这两个relay是会校验event id的。

3.早上最初的消息不显示问题,大概率是 nostr.band网页自身的问题,或者我自己手机到relay的连接性问题,这就让我有个猜测:damus在发消息时类似udp,只管发送,不管relay有没有收到,就算超时也不会重发。这个其实在网络不好时有一定的隐患,可能消息只发到了少数几个relay,对于消息传播性和可用性都有不良影响。这也就凸显了relay聚合器的作用。
#[1]
Author Public Key
npub10kdu7536e3d5k09rgpktvfghkxu2zcx0q7skg33tckr7ssj00duqypfru0