Question for Nostr client devs:
Badge definitions (kind:30009) should primarily stay on the issuers relays, right?
When someone issues a badge (kind:8), the client should publish on both creator and receiver relays.
Should the definition be sent too? I would say No.
Badge definitions (designs) can be updated, and if we send them to receivers, it means every update to the design, must also be pushed out to all previous issued user relays.
This means rendering the profile badges event (kind:30008) involves discovery of relays for each issuer of the badge, then query for the badge definition at those relays.
A user with 10 badges on their profile, could involve connecting to 40 (if each user has 4 relays in their relay lists) different relays to retrieve the definitions.
Pushing the definitions to receivers will optimize this (I can get definitions and awards from only relay of the current profile), but there are no true best way to do this so I'm asking what you all think?
Login to reply
Replies (2)
Then again, the more isolated a user's data is on their user relays, the better. So having the badge definition on the receivers relays will be the best. Nostr clients could grab the badge definition when rendering and re-publish to their own relays if it's missing. This is probably the better option.
I believe badge definitions (kind: 30009) should stay on the issuer’s relays and not be pushed to receivers. Since definitions can be updated, it’s cleaner to keep the source of truth with the issuer. When a badge is issued (kind: 8), it should be sent to both sender and receiver relays, but the definition can be fetched by clients when needed and cached locally. This keeps things simple, consistent, and decentralized.