A file that takes care of registering and connecting a Nostros public address with a human-readable name... This Nosweb file would be held by relays that choose to host it, and gets updated with every new name that's registered. First come first served.
There are a couple of critical problems here:
  • there needs to be a way for relays (or whoever wants to reference the file) to come to consensus on what the current state of "the file" is
  • there needs to be a way to prevent someone from registering and squatting on every possible name
ICANN solves these problems in a relatively centralized way by controlling the allocation of TLDs and domains.
Namecoin was the first protocol to solve the problem in a decentralized way, and since then many other re-implementations or extensions of this solution have been created (ref: https://lightco.in/2017/11/06/bns-2017/).
These days, I think "solving the naming problem" using a global naming system is probably an antipattern, and public keys + petnames is the better solution. See this thread by Zooko of "Zooko's triangle" fame, which has helped nudge me further in this direction: https://twitter.com/zooko/status/1434220535240482819
The problem with public keys is that it moves the centralization out toward discoverability rather than the actual name store. This is why something like a global source of truth like the bitcoin blockchain actually offers some technical advantages here.
Ultimately a Bitcoin L2 protocol that hashes current namespace to a Merkle tree on the Bitcoin blockchain would certainly work nicely. The question then becomes, how does this protocol work? Can we make it work without a federation?
Imagine a network that uses proof of work to find solutions for global names. These miners (or name finders) could just spend their time searching for solutions for names. When they find a solution for a name, they publish it to the Bitcoin blockchain. They could do this on demand, or use free time to search for solutions to common names/words.
Of course, this ties the economics to Bitcoin. Finding a name must be at least as expensive as publishing a transaction, but the benefit to the miner would actually need to be more than the benefits of mining Bitcoin with the same time.
The difficulty for finding a name solution could be tied to the current Bitcoin difficulty, but also to the entropy of a chosen name (using some common algorithm). Less entropy -> higher difficulty
There's a lot to think on there, and I am just spitballing, of course.
I've been toying with an idea that changes the paradigm with respect to the two critical problems mentioned above: Just allow multiple registrations of the same name, and let the user disambiguate, and allow the user to "pin" the one that is relevant.
  • Squatting would probably be solved, because common names that are over-registered would intrinsically lose value.
  • Scamming might be solved, if people could distinguish by popularity rating.
  • Relay records could be kept truthful by requiring updates to be signed by the owner as determined by the Bitcoin blockchain.
  • This solves the problem of lost keys, because a new registration could simply replace an old one, and eventually the old one would become stale and drop out of relevance. (Of course such things as the popularity rating would restart, but that's probably a good punishment for losing one's keys.)
reply
what is the benefit of "registering" a name then? why not simply have users share their keys wherever they would have shared their name, and have the name embedded in the key? e.g. if I go to your profile here on stackernews and see you've shared your nostr key, then when I import it into my nostr client you could be added to my address book as "kandycoder".
reply