@pineappleman it’s a great question and one that has a lot of nuance to it,(Zooko's triangle, why not use the DHT? has some more info). You seem to have the basic idea already.
TLDR: You can do this without leaving the decentralized web if you’re willing to either hook into a decentralized consensus system (like a blockchain), or have the users start off in an unnamed state before transitioning into a named state. You cannot have a unique, choosable name without a consensus mechanism.
Basically it depends on your application. Think of getting a new phone number, how do your friends know that it’s you? It’s a bunch of digits that are pretty annoying to remember so either you do something like:
- bootstrap from an existing identity system (e.g. use a service that forwards calls to/from you so it looks like you’re using your old number)
- have a trusted exchange (e.g. tell your friend your phone number in person or via another messaging system you trust like email)
- build/rebuild your identity (e.g. call them and you your voice to convince them it’s you)
You can use any of these approaches (or more) to help turn your random looking identity (hash of a public key) into something tied to your real world ID. Some of the technical examples of the above would be:
- Have people use some other system like Keybase (centralized although it can be mirrored and the merkle root is published in a blockchain), ENS (blockchain), or DNSLink (centralized/federated) to associate a public key with some recognizable name
- Out of band exchange, like email
- You just start chatting with with me using your public key based ID and then when user
QmABC says “hey, it’s @pineappleman from the IPFS discuss forums” I can challenge you with more questions or tag you on my local machine as
QmABC = @pineappleman
Perhaps other folks have found some nice friendly tools to share.