Replying to Avatar fiatjaf

nostr:nevent1qqsqqq90yfee6l3ahjz8ffglf22ga44r2sjk63gvhcu6264wr7wmr8cpypmhxue69uhkx6r0wf6hxtndd94k2erfd3nk2u3wvdhk6w35xs6z7qg4waehxw309an8yetwwvh82arcduhx7mn99uqsuamnwvaz7tmwdaejumr0dshspc9z9u

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.

nostr:npub10000000thpep7auj058803nqtymqlf3rw87lzhe6mkfeywnpxg5sjw7nql hopefully this helps, but I agree this must be described in a better way, as a guide or tutorial. Perhaps after I finish my kind:1 client I'll do it.

Reply to this note

Please Login to reply.

Discussion

Good idea, had a similar thought.

It'll also be a lot more simple when NIP-65 relay meta lists are standard for all follows. A lot of what Gossip has had to do won't be necessary then.

I also think some peer-to-peer (or rather relay-to-relay) networking will go a long way towards improving implementations. If more relays sync the profiles and relay lists for their wider network, the availability of these records will be far more accessible and efficient. Implementing this in a way that has a configured list of "discovery relays" is centralizing. Being able to ask anyone of known npubs/profiles listed relays, so long as they were in close proximity (based on a social graph) could be very useful and decentralizing.

Advocating for use of nprofile instead of just npub I think is also important.