Ah, very cool!
Discussion
gotta fix this shit :)
How to fix Nostr lists:
1. Use a CRDT
2. Use a hash chain and have the user resolve conflicts
3. Rely on Amethyst users to keep everything in sync
Yep, #3 requires no work from me so Iām on board š«”
What if all clients were running an instance of relay.tools and coordinated all of this Blastr mechanics upstream to a domain-level interface instead of trying to manage some mystical protocol-level social network?
To me it seems like to biggest questions of relays are "how should they be used, and whose relays should I be using?"
Do I use my client's relays?
Do I host my own?
Does everyone host their own?
It would make sense for most people who are capable to do so, especially if it were simple. But it isn't "normie simple" just quite yet.
It seems like most clients do not offer much in terms of paving the way for social structures to adhere to relay structures.
I want to challenge this with relay.tools.
I think that for a large-scale Nostr operation we should aim to decentralize the platforms and the relays. This isn't decidedly easy but is certainly possible. I shouldn't expect Will or Vitor to have much consideration for my social network. And Nostr is clearly going to amount to lots and lots of data. So it makes sense to distribute and share as often as possible.
What Vitor is suggesting sounds good to me, but only seems to be pressing because the demands of relay organization have outgrown the current structure. We don't have to give up anything to continue growing.
We need to fix lists and NIP-02. We can do this by storing them where they are necessary: at the backbone of client relay structure, application structure, and eventually at the foreground of user interfacing.
Relay.tools API fixes this. And also would eventually integrate this same idea Vitor is discussing if the demand is still there.
But trying to consistently update a totally variable network seems begrudging.
"Let Amethyst handle it" doesn't seem like much of a solution yet. But it will when it's operating at the API level of relay.tools