imagine a kind of animal. how do you identify it? with a binomial. genus and species. homo sapiens. felis catus. to identify an individual member of a species, you say something like “my cat Spottie”.
how do you identify an individual person? first name, last name. you can add little decorators on like middle initial slash name or generational suffixes, but generally most people have converged on first name last name.
what’s the most basic primitive for identification, addressing, and
communication on the internet? something that everyone who uses the
internet has. this isn’t a riddle. you don’t have to think too hard. for
this basic identifier to exist, it has to have been around since the
beginning. email! here since 1971, and everyone has one now. the number of worldwide email users will grow from over
4.4 billion in 2024 to over 4.9 billion by 2028. now how do email
addresses look? since 1986, user@domain.ext. well, for
about 15 years after 1971 addressing was a bit janky, bang path percent
hacks and all; but in 1982 @ got standardized and that
works fine. it costs around $10 to buy a not-in-demand domain for a year
(the thought of having to use american dollars as a currency to buy a
domain really annoys me). once you have a domain, it’s pretty easy to
issue as many email addresses as you want. the user is the specific, the
domain is the higher-level set.
if we look at domains as the primitive that internet names run on (DNS, or, domain name system), those too run off of a specific and next-level up schema, and the next-level up is the TLDs (top-level domains). there were originally just a few of them historically for american administrative reasons (.com, .gov, .edu, .mil, .org, .net); today there are about 1440. again, your domain is the specific thing, the higher-level set is the TLD/extension. of course, DNS is not ideal for the following very obvious reason:
Forever after you will be vulnerable to MicrosoftNSIVerisignICANNUSGovInc. and anyone (including their employees) who can subvert one of their servers. When this bloated monopoly screws something up, your system will pay the price for their incompetence. You will not be able to choose a different name authority, because everyone else will also be tied to the central monopoly and you will need their service in order to interoperate with the world. (Does this scenario sound familiar to anyone?) In addition, they will charge you a tax on every packet for the privilege of continued service.
even worse: DNS (and Verisign) going down is probably the single biggest potential point of failure for the internet going down, and if there ever was a time to take a crack at it, it would be when something like Abliterated exists. honestly it takes a good deal of self-restraint for me to not look into how this might happen, because that is, like, an insane infohazard. i use DNS every day and my life would be a lot worse off if it wasn’t working in ways i couldn’t imagine, so… you won’t be hearing about how that could happen from me.
the urbit network’s approach to namespace (user is a planet which belongs to a star which belongs to one of 256 galaxies) has globally unique semi-mnemonic (mnemonic, or, human-meaningful) names, and each user id falls into a hierarchy for user accountability: each star sponsors each planet, and each galaxy sponsors each star.
on being human-meaningful: there are only so many names, and you need the names to be memorizable so you aren’t memorizing a 128 bit string. i’m gonna refer to “human-meaningful” as “memorable” from here-on out. an ex-lover can be human-meaningful, but she has one name, not billions.
this means that a human being has a chance of remembering the name. Memorable names pass the “moving bus test”: if you see the name on the side of a bus as it drives past you, you should be able to remember the name long enough to use it when you get home.
so the way to go is to make two sets that are both memorable, and cross them so you can make your namespace that much bigger, and then pick something from that. introducing the context of what you are naming helps disambiguate which thing you are talking about if there is a name collision in one set or the other. humans have always done this with group affiliation. who you are is always what tribe you’re from or what town or nation or family.
introducing decentralized as Zooko describes it:
I use the word “decentralized” to denote that the system spans trust boundaries. This means that two peers can use this system to interoperate with each other, while neither of them is vulnerable to the other nor is either vulnerable to a third party.
can you have a decentralized namespace that utilizes hierarchical sets to disambiguate context? GNS covers hierarchical delegation without a root, which is kind of close conceptually but not quite the same thing. but we’re getting warmer.
what i’m getting at here is that names in namespace are distinguished contextually, and namespaces do this by crossing sets that have a clear hierarchy. the most prominent namespace for computer networks, DNS, does this implicitly, and this seems to be something intrinsic to almost all namespace systems. this connection (afaik) hasn’t been made explicitly yet for computer networks, but it has been explored in the field of linguistics. we will continue looking at this in a future (version of this) post.
actually, it seems like the namespaces that aren’t memorable but are decentralized (like onion, ipfs addresses, bitcoin addresses) don’t cross sets at all; they’re flat fields of entropy. so it might be requisite that to score high on both the memorable spoke and the secure spoke (once you get above any arbitrary dunbar number) (not literally 150, i mean where everyone knows everyone), you have to cross sets. from the original zooko post:
- You can have a namespace that is decentralized and uses human-memorizable keys but is not secure, in the sense that anyone can change any name to point to any value at any time. It may sound silly, but such namespaces do actually get deployed, usually when the user base is very small or when they all know one another.
- You can have a namespace that is decentralized and secure but does not have human-memorizable keys.
of course, crossing a high-entropy field with a memorable field
defeats the point of being memorable in the first place, unless your
entropy field is very short. actually, there was one prominent platform
that did this (username#1234) (before 2023): discord!
again, that’s not 100% on the memorable spoke, that’s more like 75%.
it’s kinda like memorizing the bus’s license plate as it’s driving by,
but that’s not impossible. (discord, of course, is a zero on
decentralized).
also later we’ll get into where namespace gets really fucked
up: the way we identify standard IANA URI schemes like
file: and https: (that unsuspecting prefix
before every URL) uses namespace too! it seems like it might be
namespaces all the way down…