More outbox lessons learned for me, maybe useful for #devstr

npub1zafcms4xya5ap9zr7xxr0jlrtrattwlesytn2s42030lzu0dwlzqpd26k5
hex
0229245acab381168569e28aa9501d37239552e34a3fefd6debe7011aacd61f6nevent
nevent1qqsqy2fytt9t8qgks4579z4f2qwnwgu42t3550l06m0tuuq34txkrasprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgspw5udc2nzw6wsj3plrrphe0343744h0ucz9e4g248chl3w8kh03q0yguslKind-1 (TextNote)
More outbox lessons learned for me, maybe useful for #devstr
As far as I know
- Learned that no nostr app uses nip-66 to check if a relay is alive before firing off requests
- According to my benchmarks, by implementing nip-66, the relay success rate increases from 30% -> ~~75-85%, meaning fewer connections are wasted on dead relays.
- Nip-66 is therefore an efficiency improvement, and is not necessarily a coverage guarantee
- I have not measured time to outbox results yet.
- No nostr app spot checks what outbox relays return against an independent relay to detect gaps. Nip-66 liveness checks return relay health, but do not verify per-author delivery.
- Deterministic algos like greedy set coverage cannot be set up with a learning mechanism
- Stochastic algos like coracle’s are able to implement learning, and benefit significantly - coverage improves the more the app looks up a specific profile
- The theoretical CS algo I mentioned before (MAB-UCB) algo is not practical
- 20-44% of follows dont have a kind-10002, which hampers outbox.
From what I’ve seen so far the best starting point is coracle’s stochastic algo, with nip-66, and delivery scoring.
https://github.com/nostrability/outbox
cc nostr:npub1uac67zc9er54ln0kl6e4qp2y6ta3enfcg7ywnayshvlw9r5w6ehsqq99rx nostr:npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6 nostr:npub1utx00neqgqln72j22kej3ux7803c2k986henvvha4thuwfkper4s7r50e8 nostr:npub1acg6thl5psv62405rljzkj8spesceyfz2c32udakc2ak0dmvfeyse9p35c nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr nostr:npub1fgz3pungsr2quse0fpjuk4c5m8fuyqx2d6a3ddqc4ek92h6hf9ns0mjeck nostr:npub13v47pg9dxjq96an8jfev9znhm0k7ntwtlh9y335paj9kyjsjpznqzzl3l8
nostr:nevent1qqstev5upz37lcwpqxzc6prkk8rdy35sudpcj78a8zfa8gxfl33zfjqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsq3jamnwvaz7tms09exzmtfvshxv6tpw34xze3wvdhk6qglwaehxw309ac8junpd45kgtnxd9shg6npvchxxmmd9a5kucn00qpzq96n3hp2vfmf6z2y8uvvxl97xk86kkalnqghx4p25lzl79c76a7yqvzqqqqqqyuydjtd
原始 JSON
{
"kind": 1,
"id": "0229245acab381168569e28aa9501d37239552e34a3fefd6debe7011aacd61f6",
"pubkey": "17538dc2a62769d09443f18c37cbe358fab5bbf981173542aa7c5ff171ed77c4",
"created_at": 1772084369,
"tags": [
[
"q",
"bcb29c08a3efe1c101858d0476b1c6d24690e3438978fd3893d3a0c9fc6224c8",
"wss://relay.damus.io",
"17538dc2a62769d09443f18c37cbe358fab5bbf981173542aa7c5ff171ed77c4"
],
[
"p",
"17538dc2a62769d09443f18c37cbe358fab5bbf981173542aa7c5ff171ed77c4",
"wss://relay.damus.io"
],
[
"t",
"devstr"
],
[
"r",
"https://github.com/nostrability/outbox"
],
[
"p",
"e771af0b05c8e95fcdf6feb3500544d2fb1ccd384788e9f490bb3ee28e8ed66f"
],
[
"p",
"97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322"
],
[
"p",
"3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d"
],
[
"p",
"e2ccf7cf20403f3f2a4a55b328f0de3be38558a7d5f33632fdaaefc726c1c8eb"
],
[
"p",
"ee11a5dff40c19a555f41fe42b48f00e618c91225622ae37b6c2bb67b76c4e49"
],
[
"p",
"266815e0c9210dfa324c6cba3573b14bee49da4209a9456f9484e5106cd408a5"
],
[
"p",
"4a0510f26880d40e432f4865cb5714d9d3c200ca6ebb16b418ae6c555f574967"
],
[
"p",
"8b2be0a0ad34805d76679272c28a77dbede9adcbfdca48c681ec8b624a1208a6"
]
],
"content": "More outbox lessons learned for me, maybe useful for #devstr\n\nAs far as I know\n1. Learned that no nostr app uses nip-66 to check if a relay is alive before firing off requests\n2. According to my benchmarks, by implementing nip-66, the relay success rate increases from 30% -\u003e ~~75-85%, meaning fewer connections are wasted on dead relays. \n3. Nip-66 is therefore an efficiency improvement, and is not necessarily a coverage guarantee\n4. I have not measured time to outbox results yet. \n5. No nostr app spot checks what outbox relays return against an independent relay to detect gaps. Nip-66 liveness checks return relay health, but do not verify per-author delivery. \n6. Deterministic algos like greedy set coverage cannot be set up with a learning mechanism\n7. Stochastic algos like coracle’s are able to implement learning, and benefit significantly - coverage improves the more the app looks up a specific profile\n8. The theoretical CS algo I mentioned before (MAB-UCB) algo is not practical\n9. 20-44% of follows dont have a kind-10002, which hampers outbox. \n\nFrom what I’ve seen so far the best starting point is coracle’s stochastic algo, with nip-66, and delivery scoring. \n\nhttps://github.com/nostrability/outbox\n\ncc nostr:npub1uac67zc9er54ln0kl6e4qp2y6ta3enfcg7ywnayshvlw9r5w6ehsqq99rx nostr:npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6 nostr:npub1utx00neqgqln72j22kej3ux7803c2k986henvvha4thuwfkper4s7r50e8 nostr:npub1acg6thl5psv62405rljzkj8spesceyfz2c32udakc2ak0dmvfeyse9p35c nostr:npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr nostr:npub1fgz3pungsr2quse0fpjuk4c5m8fuyqx2d6a3ddqc4ek92h6hf9ns0mjeck nostr:npub13v47pg9dxjq96an8jfev9znhm0k7ntwtlh9y335paj9kyjsjpznqzzl3l8\n\nnostr:nevent1qqstev5upz37lcwpqxzc6prkk8rdy35sudpcj78a8zfa8gxfl33zfjqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsq3jamnwvaz7tms09exzmtfvshxv6tpw34xze3wvdhk6qglwaehxw309ac8junpd45kgtnxd9shg6npvchxxmmd9a5kucn00qpzq96n3hp2vfmf6z2y8uvvxl97xk86kkalnqghx4p25lzl79c76a7yqvzqqqqqqyuydjtd",
"sig": "ef054671e6401ae0f8488fbf766d9e535526a9d0595e9b8eab80c5be6ed84c3d8c3f8ed4f03ef203883342ec97de767d21ec0eb431decede99f424cce9c82bf3"
}