Jun 2026
The key is the address
Stop registering names in a database. Make the public key be the name, and the lookup problem disappears.
The simplest way to name a thing on a network is to not name it at all. Use its public key. The key is the address. There is no registry to query, no DNS to poison, no certificate authority to bribe. You hand someone k51qzi5uqu5dk... and they can reach exactly one machine: the one holding the matching private key. Forging that identity means factoring the key. Good luck.
This sounds like a trick. It is not. It is the load-bearing idea under Tor onion addresses, IPFS peer IDs, libp2p, Nostr, SSH host keys, and Bitcoin. Every one of them quietly threw out the name-to-key lookup and replaced it with "the name is a hash of the key." Once you see the pattern you see it everywhere.
Zooko's Triangle, and the corner everyone forgets
This runs straight into Zooko's Triangle, the old observation that a name gets to be memorable, secure, or decentralized, and you only ever pick two of the three at once.
DNS picks memorable and secure and pays for it with ICANN, registrars, and a root zone someone controls. Pet names (your phone's contact list) pick memorable and decentralized and give up global security: my "Mom" is not your "Mom." The forgotten corner is secure plus decentralized, and you reach it by surrendering memorability completely. That is what a public key as an address does. 3g2upl4pq6kufc4m.onion is secure and decentralized and utterly unmemorable, and that tradeoff is the whole point. The string is ugly because the ugliness is the security.
The trap is wanting all three so badly that you sneak a registry back in and call it decentralized. Namecoin tried to mint memorable names on a blockchain. It is "decentralized" only if you believe a global consensus ledger with miners is decentralized, and it still leaks the deeper problem: who got google.bit first? Whoever paid first. Squatting is not a bug you can patch. It is what happens the instant names become both memorable and scarce.
What you actually buy by dropping the name
When the key is the address, three hard problems evaporate at once.
Authentication is free. You don't verify a certificate that says "this key belongs to this name." The name is the key, so connecting to the address and completing a handshake with the matching private key is the proof. No CA, no web of trust, no expiry. SSH already half-works this way: the first time you connect, it shows you a host key fingerprint, and every later connection checks the host still holds that key. The annoying "host key has changed" warning is the entire trust model doing its job.
Routing gets honest. A self-certifying address can be gossiped through any untrusted intermediary, because nobody in the middle can lie about who they're sending you to. Tamper with the address and the handshake fails. This is why content-addressed and key-addressed systems can be aggressively peer-to-peer: you don't need to trust the messenger, only the math.
And rotation becomes the one genuinely sharp edge. If the key is the name, losing the key loses the name, and there is no support line. Lose the private key behind an onion service and that address is dead forever, because there is no authority that can reassign it to you. Bitcoin has buried an estimated three to four million coins behind keys nobody can produce anymore, which is the same failure mode wearing a more expensive coat. The honest fix is indirection: let the key-address point at a small signed record that names your current key, so you can roll forward without changing the identity humans actually share. You have not escaped the triangle. You've just moved the unmemorable part one level down where machines deal with it and people never see it.
Build the boring layer first
The practical lesson for anyone building a network: start with the self-certifying layer, because it is the only layer that needs no trusted party, and bolt human-readable names on top as a convenience you can lose without losing the system. Get this backwards (names first, keys as an afterthought) and you've built another thing that breaks when the registry goes down or gets captured.
Petnames are the clean top layer. Each user keeps their own private mapping from a memorable label to a public key, exactly like a phone contacts list, signed introductions optional. The global layer stays keys: secure and decentralized. The local layer stays names: memorable and decentralized. Nobody is forced to trust a global namespace, and Zooko's Triangle is satisfied not by cheating it but by splitting it across two layers that each take two corners.
The mental flip is small and it changes how you design everything downstream. Don't ask "what do we name this and who runs the directory." Ask "what is its key." The key was the address the whole time. You were just paying a registry to pretend otherwise.
This is how Verse names things
None of this is hypothetical for us. A name on Verse is @key/label: the key is the address, the label is sugar. You publish a signed record that points your name at your current content, so you can roll the key forward without changing the identity people share. A gateway turns that into an ordinary URL, resolves it, pulls the hash-verified bytes, and hands them to your browser, so the mesh is reachable from plain Chrome and never touches DNS. Secure and decentralized live in the key. Memorable lives in a contact book on your machine. We did not beat Zooko’s Triangle. We split it across two layers and stopped pretending one string could hold all three.