Looking forward to decentralized domains whoever figures that out, however, I have an idea but it has a problem:
I'm not sure if this is possible, but here goes. What about putting a name, and then from that name a public and private key pair is generated, inputting that public key in a (Nostr-based or supported via extension) that name would make the browser read the associated public key for it, and loading in the data that it has from relays.
Example:
-I generated a public/private key pair using the word whatever.com (or just whatever)
-I type that word, whatever, in the browser, which would then load in the data from its associated public key.
The issue, as you've realized, is that the private key would be known to everyone as they generate the same key pair from the name.
If this issue is solved, meaning there'd be a way to make the private key.. well.. private, then that's that, I think, we've achieved decentralized domains! =3
Thinking it through while considering different solutions that others have made, here's a potential solution:
Nosweb
A file that takes care of registering and connecting a Nostros public address with a human-readable name.
Aside from not allowing a user to take/register a name by connecting it to the address that they control with one that someone else already took/registered, this file would only hold the data that connects an address with a name and nothing else. Saving on storage.
Clients (web browsers) that are built on top of Nosweb, or current ones that implement it, would have users type the name in the URL field, and the browser would look through the Nosweb file for said name and its connected public address, and find the site files (HTML, CSS, etc) to load it in.
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.
The site files would be hosted on a relay, and the user that controls a name/address sets that info and can change it.
The name can also be given/connected to a different public key as well, where that new info gets update on the Nosweb file as well.
I'd also imagine that if this gets developed and is out in the wild, there'd be different Nosweb files with different IDs (Nosweb#204, Nosweb#201, etc) where some relays might want to control what names with their addresses they want to respect/host, as a result, clients (web browsers) would have a section in their settings page where the user would control which relay, or rather, Nosweb file to prioritize first over the other, to resolve conflict of names/domains.
With that same, keep in mind that a ".com" or ".whatever" is not needed when registering a name with an address.
In terms of sharing an address from one person to another, there'd be two ways of doing so, considering the different Nosweb files out there:
-Check out my website: whatever
-Check out my website: whatever@nosweb403
In the first example, the user would just enter "whatever" and see the website load in, and the browser would showcase in the URL field next to that name what Nosweb file this is from.
In the second example, it's more secure for both parties to know this, the send is assured that they received would enter that name-address and see what's intended, and the receiver is assured that they exactly received the correct address with no worry.
The only issue left now is the spam-registration problem.
Other than that, I think this is a good idea to solve the domain ICANN issue.