Update: We migrated our blog. Check out the new Blockstack blog!
Right now, Bitcoin is simply too difficult for the average person to use.
Paving the way for mainstream adoption, it seems, requires that we simplify and obfuscate away the confusing parts.
And what better place to start than with Bitcoin addresses?
Bitcoin addresses are:
- really long
- too difficult to remember, verbalize, or type
- usually copy-pasted or embedded in QR codes
- often misleadingly compared to bank account numbers, suggesting that you just get one per account and it rarely (if ever) changes
- hard for mainstream users to wrap their heads around
In fact, using a Bitcoin address as an identifier is just as inconvenient as using an IP address as the primary lookup for a website. You can go read news on http://18.104.22.168, but it’s so much easier to visit http://cnn.com. Domain names like cnn.com, provided by the naming layer of the Internet (DNS), provide human-readability, convenience, and memorability.
Our view is that given these problems, Bitcoin addresses should not be used as identifiers for Bitcoin payments. Rather, we need a naming layer for Bitcoin. After all, wouldn’t you rather send money to “barrysilbert” than “1N9rsxZimC8z8SRfocEh9pAa5RweBa76st”?
Beyond human-readability, naming layers also provide other benefits and make the architecture more flexible in general. It’s possible to do failover and load-balancing in the DNS to IP address mapping because of the “binding” between what you’re looking for and what it’s called in the namespace. A user says “I want to read a webpage from cnn.com, wherever it is hosted”. Similarly, a “binding” step between a username like “barrysilbert” and the BTC address would enable a lot more flexibility where Barry could decide to change his BTC address without notifying anyone.
How about transaction privacy you ask? The simple answer is that you can provide mappings that return a different Bitcoin address with each lookup (either using stealth addresses or URL endpoints), but this is a discussion of its own.
There are a bunch of ways to actually implement this, all in a decentralized way, such as on top of Namecoin or Bitcoin, but we’ll leave that for another post. The important point to realize is that not having a DNS-like layer for Bitcoin is actually making Bitcoin hard to use. Years from now we’ll be laughing at ourselves that we actually copy/pasted these long numbers to send each other bitcoins.