hcocoa on Nostr: 今天上午遇到了和 #[0] ...
今天上午遇到了和
diystar (npub1y36…3yrp) 兄一样的问题,发出的消息在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聚合器的作用。
好像新版本的damus发消息时计算出来的event id有问题?有些relay不接收?
大家能看到我上一条消息吗?
盲猜是草稿箱功能带来的bug……
Published at
2023-03-07 10:47:34Event JSON
{
"id": "9cf6655e2ea9746b10a9be72eb4eadacde376fbbfad1d601bb2374e32e0457c5",
"pubkey": "7d9bcf523acc5b4b3ca3406cb62517b1b8a160cf07a164462bc587e8424f7b78",
"created_at": 1678186054,
"kind": 1,
"tags": [
[
"p",
"24753be4434316c063dcda0dd24fbb236ece52bd1c34961a648f7a2f950a321c"
],
[
"e",
"dd4204019926d875f36a2015319a860d1f875fb35b15bcb5d7c06a9b5e4307ee"
]
],
"content": "今天上午遇到了和 #[0] 兄一样的问题,发出的消息在nostr.band看不到。\n\n为了调查这个问题,我使用websocket手动连接relay并重放event来测试,发现了几个有趣的点,和大家分享:\n\n1.通过damus消息右上角的三个点,可以选择复制json,但这个json会丢掉emoji 表情,这就导致我在手动重放时,relay一直返回event id错误(event id 是把消息体sha256得到的,因为消息体少了emoji 表情,所以sha256就对不上了),但是换成其他消息又是正常的,于是就怀疑是早上damus更新导致的问题。后来证实是因为json串里丢了那个⚡️emoji 表情,这应该是个bug。\n\n2.从上面一条就可以看出,虽然nostr文档提到relay不校验event id ,但起码对于重放的event(比如在damus中点击广播,或者手动通过websocket发json),nostream和strfry这两个relay是会校验event id的。\n\n3.早上最初的消息不显示问题,大概率是 nostr.band网页自身的问题,或者我自己手机到relay的连接性问题,这就让我有个猜测:damus在发消息时类似udp,只管发送,不管relay有没有收到,就算超时也不会重发。这个其实在网络不好时有一定的隐患,可能消息只发到了少数几个relay,对于消息传播性和可用性都有不良影响。这也就凸显了relay聚合器的作用。\n #[1]",
"sig": "a17a6d32fbe4e3b76fbec1b08b180d22f138cf6cef89a737974a40f29d523c945eb240aaa6d5579ef559c5b17773245ec9efb9ffb26c5e732bdf52a8f6ec660c"
}