Ever since I’ve read Michael Nielsen’s introduction to Bitcoin a few months back I have been interested in blockchain based technologies. Specifically Namecoin strikes me as a very interesting topic: It’s a decentralized and secure name registration service with its own cryptocurrency (NMC). Namecoin records are stored in a blockchain and neither governments nor corporations have the ability to tinker with it.
My first encounter with Namecoin was Onename, which is meant to be a digital passport. Its main purpose initially was to be able to receive and send bitcoin without having to know a user’s bitcoin address. Personally, however, I’m looking forward to the ability to use Onename as a login service. This will be a great alternative to using Twitter or Facebook as a centralized identity provider.
Namecoin also provides new top level domains (TLD) that are not controlled by the ICANN but by the owner and thus are not vulnerable to censorship. Currently you can register a .bit domain name, but others will be introduced in the future (e.g. .p2p, .nxt, .eth). Domain names are generally resolved through Domain Name System servers and since traditional DNS servers don’t integrate with Namecoin based TLDs, you won’t be able to access such domains without some additional steps. Fortunatly, there’s different ways to get started and some of them are not difficult at all.
Neither Bitcoin nor Namecoin are mainstream technologies yet and you have to invest quite some time to get started. In this post I will try to explain how you set up your system to resolve Namecoin based domains and explain the difficulties that I had trying to register my own domain: donneo.bit.
Disclaimer: I’m by no means an expert on the topic, so if you find that I’m inaccurate or I have factual errors, please point me to it!
Why to use blockchain based domains
In 2010 Wikileaks had published the Collateral murder video and later a massive trove of US diplomatic cables. It came under attack and eventually it’s domain wikileaks.org got suspended. A year before it already lost its iranian domain. Countries like China, Syria or Iran have their own censorship measures in place and many services that others take for granted are not available there. Similarily, popular BitTorrent sites like The Pirate Bay in the past have had to battle DNS blockades and domain seizures because of alleged copyright infringement.
Today, for governments it’s pretty easy to have providers block domain names and/or seize records from name registries. There’s many reasons why you would want to have a robust and censorship resistant name resolution system in place and Namecoin is a robust alternative.
If you go all the way and setup local name resolution, you enjoy dramatically improved security, privacy and also performance, since name resolution cannot be intercepted, manipulated or eavesdropped on, when it’s done locally. If you like to read up on it some more, I suggest you continue here.
How to browse Namecoin enabled domains
The Namecoin Wiki provides a number of different approaches to access blockchain domains. I will not cover all of them and instead focus on the ones that I find most practical currently. Depending on your needs, you can obviously go further, but that will require more technical knowledge and a certain amount of experimentiveness, given the early stages of development.
Use OpenNIC Domain Name Service
The easiest way to enable Namecoin domains is to switch to the DNS servers provided by the OpenNIC project for domain name resolution. OpenNIC is an independent domain name service that offers DNS servers in multiple different countries and also integrates blockchain domains. You can either configure the network settings in your operating system, or if you are connecting to the internet using a router, you could also setup custom nameservers there. The latter will enable all network clients to access the new TLDs. Changing your DNS settings is easy and there is plenty of tutorials out there, so that even inexperienced users should be able to do this. It is a very convenient way to get started, even though it doesn’t provide you with the advantage of fully decentralized name resolution, which is obviously a key point if you care about the censorship aspect. Still for normal users in my opinion right now it’s probably the best way to get started and help spread the use of blockchain-based domains.
Use a browser plugin
Changing DNS settings requires admin privileges and a little knowledge of the networking configuration of your computer (or router). While the knowledge part is not very complicated, sometimes you just don’t have the rights to change network settings. If that’s the case, you can try to use a browser plugin called FreeSpeechMe. Currently this only works when you are using Firefox on Windows or Linux. When installing the plugin, you will setup a background process that uses the Namecoin blockchain to resolve names. Everytime you enter an address into you browser, the plugin will resolve the name using this background process. Further information on using this option can be found here. It’s also worth mentioning that FreeSpeechMe is a good resource for further information on the topic in general.
It’s a bit unfair to mention DNSchain as merely another alternative for accessing blockchain domains, since that’s only one problem it solves. The main focus of DNSchain is to offer a secure replacement for the way that encryption keys are transferred when browsing encrypted websites – it’s basically implementing blockchain-based certificate pinning. It can be used to securly distribute PGP keys, mitigate denial of service attacks, and also to access Namecoin based domains. There’s a number of public DNS servers that integrate with DNSchain and you can set it up in the same way that you can setup OpenNIC. Again, using a public DNS server doesn’t give you the advantage of decentralized name resolution. DNSchain is really meant to be run by individual users and if you’re interested and you have the necessary technical savvy and curiosity you should look into running your own DNSchain server.
How to buy blockchain domains
If you want to go one step further and you have you already have your own website, than you might be interested in registering your own domain. It’s worth mentioning that you at least need to be in control of your webserver so you eventually can make use of your domain. Thus, all of the following explanations aim at people who are comfortable managing their own webservers.
There’s different ways to buy namecoin and the easiest one that I know of would be to simply refer you to btc-e.com, a Bitcoin exchange based in Bulgaria where you can trade different cryptocurrencies. You could deposit some euros there using a bank transfer and then buy namecoins from it. While this will work, btc-e.com charges a substantial fee for depositing money (currently it’s 15 Euro per bank transfer).
Everything else I’ve found involves first buying bitcoin and then exchanging to namecoin. There’s a variety of exchanges that can be used for that, I’ll lay out my process and the remaining difficulties I experienced below.
The gist of registering donneo.bit
Before going into lots of detail, let me sum up the essential process. I had previously already signed up for Coinbase and after proving my identity, I was able to deposit some money there and buy bitcoin with it. After that, I transferred my bitcoin to btc-e.com, where I could then buy namecoin and transfer that back to my local namecoin wallet. With the namecoin available locally, I could then register a domain name. As you see, there’s some steps involved and some of them had their own challenges.
Setting up your local wallet
I’m currently still using a Mac and so the easiest way to do that was to download the Namecoin-QT wallet. There’s alternatives for Windows and Linux, obviously. The initial synchronisation of your local wallet with the Namecoin network can take some time so it makes sense to do this early. This way you won’t have to wait for the synchronisation to finish later.
Namecoin-QT has a simple, intuitive but not necessarily pretty user interface. It can manage multiple Namecoin addresses and you will later be able to register your domain name in here. Since you will be in control of your domain name, it’s important to make sure to have a backup of your local data. If you loose it, you will loose access to your domains.
Proving your identity with Coinbase
Signing up to Coinbase is easy, but before you can buy or sell bitcoin you need to prove your identity. Coinbase provides a wizard for that and ideally after uploading some of the documents that they are asking for you should be ready to go quite quickly. For me, this didn’t work very well. I’ve tried to get my documents accepted several times before I finally had customer support manually prove my identity. If you have the same problems, don’t spend too much time re-submitting your documents. Save yourself some time and talk to customer support early.
After your identity is confirmed you can transfer money to your Coinbase account. Again, this is supposed to be easy and the Coinbase website will provide you with the necessary details that you can use for making a bank transfer. Unfortunatly, I again needed the support of Coinbase customer services, because after several tries my payments would not be automatically confirmed by Coinbase and instead be sent back to my account after a few days. As before, I suggest to speak to the Coinbase team early, they have been really helpful once I got in touch with them.
Coinbase only supports bitcoin currently and I don’t know if they plan on expanding to other cryptocurrencies in the future. BTC-e however supports a number of different cryptocurrencies so I signed up there and transfered some of my bitcoin to my new account. Compared to Coinbase the user interface is not very intuitive but once you get how the site works, it’s actually quite easy to buy namecoin. BTC-e has a number of security measures in place, one of them prevents you to withdraw in the first three days after sign-up. Have that in mind and maybe open your account early to speed things up.
In order to register a domain name we now need to transfer namecoin back to our local wallet. Lookup your namecoin address in Namecoin-QT, go to the finances page on BTC-e. Next to the NMC section you’ll find a withdraw button. You’ll be asked to enter the receiving address and the amount you want to send.
After some wait time the namecoin appeared in Namecoin-QT. As with all cryptocurrencies you’ll have to wait until the transaction has been confirmed before you can then use it to register domain names.
The Manage Names section is where you can register and renew your domain names. Each domain name will cost you a small amount of namecoin, I’ve been charged 0.02 NMC, which at the time of my purchase was roughly one euro cent. You’ll have to renew your domain names regularly (after 200-250 days), currently you will not be charged for this, however this will probably change in the future.
To register a .bit domain name, you have to use the d/ prefix, so in order to register donneo.bit, I registered for d/donneo. Namecoin-QT does a good job in explaining this. After a confirmation dialog, you will be asked to configure your new domain. I’m using virtual hosts on my webserver so I just entered the ip address of the server and ignored the rest of the configuration options. At this point, Namecoin-QT could provide a little more information about the various options I think.
Having configured a new record, it took some time for the blockchain to be updated. In the meantime I configured my webserver to respond to correctly pick up on incoming requests to the new domain name.
I was pretty excited when I was able to access a .bit domain for the first time. When I accessed my own webpage through a blockchain based domain name it felt even better. But it took me weeks to get though the process I explained above and it’s clear that few people will go through all those hoops. Still I hope that this post will spark your interest in the topic, that you will have less trouble finding the necessary information and be aware of some of the difficulties getting your hand on some namecoin and registering a domain name.
I’m curious how the Namecoin universe will evolve and I would like to see a lot more non-experts get involved with the topic. By spreading the use of the technology we can all help advance decentralized alternatives to the current infrastructure of the internet.