fiatjaf on Nostr: ...
What do you mean by outbox model?
The "outbox model" is kind of a misnomer actually, it can't be "implemented", it is just an idea.
The idea is: you have to organize your client in a way that it learns using all the information available where each pubkey is publishing their stuff to, then connect to those relays to fetch their stuff. That's it, the rest is your imagination.
The common tools that can be used for this are:
- kind:10002 relay lists
- relay hints in "p" tags
- relay hints in other tags
- relay hints in nprofile, nevent codes
- relays listed on nip05 /.well-known/nostr.json
- history of successes and failures when fetching events for a specific pubkey in a specific relay
I tried to convey the idea here:
https://how-nostr-works.pages.dev/#/outbox (notice the table with a dynamic ranking of relays for a specific pubkey on the right). This is just an example of one possible implementation. It follows roughly what is implemented on
https://pkg.go.dev/github.com/nbd-wtf/go-nostr/sdk/hints and is heavily inspired by some past version of
https://github.com/mikedilger/gossip.
Published at
2024-11-24 19:46:00Event JSON
{
"id": "0000005a09fcfa0ffa11e04f2db711cc14345c67541fb80ed8f367609c383d1a",
"pubkey": "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d",
"created_at": 1732477560,
"kind": 1,
"tags": [
[
"q",
"0000af22739d7e3dbc8474a51f4a948ed6a354256d450cbe39a56aae1f9db19f",
"wss://chorus.mikedilger.com:444/"
],
[
"nonce",
"9223372036854784121",
"16"
]
],
"content": "nostr:nevent1qqsqqq90yfee6l3ahjz8ffglf22ga44r2sjk63gvhcu6264wr7wmr8cpypmhxue69uhkx6r0wf6hxtndd94k2erfd3nk2u3wvdhk6w35xs6z7qg4waehxw309an8yetwwvh82arcduhx7mn99uqsuamnwvaz7tmwdaejumr0dshspc9z9u\n\nThe \"outbox model\" is kind of a misnomer actually, it can't be \"implemented\", it is just an idea.\n\nThe idea is: you have to organize your client in a way that it learns using all the information available where each pubkey is publishing their stuff to, then connect to those relays to fetch their stuff. That's it, the rest is your imagination.\n\nThe common tools that can be used for this are:\n- kind:10002 relay lists\n- relay hints in \"p\" tags\n- relay hints in other tags\n- relay hints in nprofile, nevent codes\n- relays listed on nip05 /.well-known/nostr.json\n- history of successes and failures when fetching events for a specific pubkey in a specific relay\n\nI tried to convey the idea here: https://how-nostr-works.pages.dev/#/outbox (notice the table with a dynamic ranking of relays for a specific pubkey on the right). This is just an example of one possible implementation. It follows roughly what is implemented on https://pkg.go.dev/github.com/nbd-wtf/go-nostr/sdk/hints and is heavily inspired by some past version of https://github.com/mikedilger/gossip.",
"sig": "f54b128febd5b52d0b567daedcb62cd7517f7a2acb66cad16634acaf14882f6d4edf4b29fb4501bb655da0b4806ccee469c8082acdf2d7a6e2a2bc88a13bed2e"
}