Now, I’m happy to announce that I’ve acquired the .bit top-level domain (TLD) for my site. You can now browse to loganmarchione.com, or loganmarchione.bit. The former will use a central DNS server, while the latter will use a completely decentralized DNS server. This is made possible through the use of Namecoin.

What is Namecoin?

Namecoin was the first fork of the Bitcoin cryptocurrency and is certainly one of the most interesting. Like Bitcoin, Namecoin trades an asset (called namecoin, NMC, or ℕ), but unlike Bitcoin, Namecoin allows data to be stored in its blockchain. This makes Namecoin more of a data store, compared to Bitcoin, which is marketed as more of currency. In this case, Namecoin stores DNS information in its blockchain.

Using the Namecoin client (namecoind or namecoin-qt), users can purchase a .bit TLD. This DNS data is saved to Namecoin’s blockchain and then synced to the rest of the Namecoin nodes. Using specific DNS servers allows users to browse .bit TLDs using DNS data from the Namecoin blockchain. Every 36,000 blocks, the .bit TLD expires and must be renewed.

How to buy Namecoin

I’ll preface this by saying there are two ways to purchase a .bit TLD. You can use a thirdparty service (which is the wrong way, since it contributes to centralization), or do it yourself (which is the right way, since it contributes to decentralization). I’ll be using the namecoin-qt client to purchase a domain myself.

Download client

You’ll need to start by downloading the Namecoin client. In this case, I’m using the namecoin-qt client. However, since I’m using Arch Linux, I’m going to use the packaged version from the AUR.

yaourt -S namecoin-qt

Once downloaded and installed, you’ll need to let it run for a few hours to sync the Namecoin blockchain.

Purchase Namecoin

Now, you’ll need to send some NMC to your wallet, which you can purchase directly through various exchanges. However, if you already use Bitcoin, I highly recommend ShapeShift.io. ShapeShift allows you to exchange over 30 different types of cryptocurrencies without registration and with minimal fees. Just enter your send-from currency type, send-to currency type (Namecoin), and address, then send your payment.

How to register a .bit TLD

Registering a .bit TLD is a three-stage process.

name_new – pre-order the domain name

name_firstupdate – finalize registration (name goes live and you own it for 36,000 blocks)

name_update – renew, update, or transfer a name

Note – Interestingly enough, during the name_firstupdate stage, any NMC spent will be subtracted from the total 21 million NMC that will ever exist (i.e., those NMC are destroyed).

First, in the New name box, enter your desired name. Leave the d/ there and do not add .bit to the end. When you’re ready, click Submit.

In the next box, confirm your selection.

On the next few screens, you’ll be configuring your name to point to a specific IP (which is what DNS does). I left the first tab blank, but here is what it looks like.

I’m going to move to the second tab and enter the IP of my server (I’m assuming you have a static IP, either provided by your ISP or hosting provider).

Again, I did not fill out anything on the third tab.

The fourth tab is the actual JSON string that the namecoin-qt client will submit to the Namecoin network. When you’re ready, click OK.

Now, back on the Manage Names screen, you’ll see that your name is in a pending state. You need to wait 12 blocks in order for your name to be live. Also, do not close namecoin-qt during this process 🙂

After 12 blocks have passed, you can see your status has changed. The number in the Expires in column is the number of blocks remaining until the domain expires.

You can also see more information in the Transactions screen. You should see the initial purchase, then the name_new operation (this took about six hours for me), and then the name_firstupdate update (this took about six more hours). You can confirm this on a blockchain explorer as well.

Renewing a domain

You’ll need to return to the Manage Names screen to renew a domain. You own the domain for exactly 36,000 blocks (about 6 months at the current rate), after which it will expire. You can renew it for 0 NMC (minus the .005 NMC transaction fee).

Nginx configuration

You will also need to setup your webserver to serve a .bit TLD. In my case, I added the .bit TLD to my Nginx config, shown below.

How to browse a .bit TLD

Browsing a .bit TLD will take a little setup on the client side. The various options are listed in the Namecoin wiki, but the easiest are explained below.

Install local DNS resolver

The most “official” way of resolving .bit TLDs (and the most “correct”, since it contributes to decentralization) is to use a local DNS resolver that runs on your machine (or LAN). Programs like NMControl and ncdns install and run a DNS server on your machine. Using the data in the Namecoin blockchain (provided by namecoind or namecoin-qt) they perform lookups for .bit TLDs, while using a different resolver for other TLD lookups. However, they do require a bit of setup and require you to change the DNS settings on your local connection (e.g., wired or wireless).

OpenNIC DNS servers

The OpenNIC project allows users to browse .bit TLDs, along with other TLDs. In my opinion, this is the easiest setup and it’s the one I run on my OpenWrt router. I have my WAN interface set to use OpenNIC’s servers for DNS (instead of my ISPs), so all my clients (laptops, phones, etc…) can browse .bit TLDs without any additional configuration.

Note – It took a few days from when I registered the domain to when OpenNIC’s servers were updated with the new information.

Browser extensions

There are various browser extensions available to browse .bit TLDs. Both PeerName and DotBit.me offer extensions for Chrome. However, the most popular seems to be FreeSpeechMe for Firefox. FreeSpeechMe adds a Namecoin wallet and client to Firefox, downloads its own copy of the blockchain, and changes Firefox’s DNS to look for .bit TLDs. It can also use namecoind or namecoin-qt, if you have either already installed, to avoid having to download the blockchain using the extension. I haven’t tested this personally, but it seems easy enough to setup.

Final result

Here, you can see the result of browsing to loganmarchione.bit. Again, this is using OpenNIC’s DNS servers and waiting a few days for them to update.

Note – You can see I’m receiving the security warning because my SSL certificate is setup for the .com TLD, while the browser is trying to load the .bit TLD. See below for more details.

Tools

Working with Namecoin, I’ve come across a few tools that were really helpful, but really buried in obscure forums posts and pages. Here are some of the most helpful, all in one place.

Drawbacks

Personally, I think Namecoin is a great idea, but there a still a few major hurdles and drawbacks that it will have to overcome.

Documentation – The documentation for Namecoin is sparse and incomplete. It is scattered over Github, Namecoin’s official website, and various sites that all seem to be offline.

Ease-of-use – Obviously, Namecoin and .bit TLDs are not easy to setup or browse. The general public is definitely not ready for Namecoin adoption.

CMS-managed systems (e.g., WordPress) – Currently, it’s easy to serve a single HTML page over a .bit TLD. However, the trouble comes when using a CMS, like WordPress, that is hard-coded with a specific TLD. I’m trying to figure out a way to mirror my .com WordPress site to .bit, but currently only have the front page working. This is resolved, see this post.

SSL – As you can see on loganmarchione.bit, visitors receive a security warning because the certificate is for the .com site, not the .bit site. The Namecoin specification does allow a fingerprint field, but I have yet to experiment with it.

Expired domains – It seems that most .bit sites that I visit are expired, since having not been renewed. There is no alert system setup (like with a traditional name registrar), so it remains up to the user to check their domain expiration and renew it accordingly.