# Namecoin

Namecoin is a peer-to-peer generic name/value datastore system based on the bitcoin technology (a decentralized Cryptocurrency). Namecoin allows you to securely register names (domains for example) with no possible censorship, and trade namecoins, the digital currency NMC. Namecoin is the first "Altcoin", and came about after the bitcoin developers chose not to support the BitDNS idea which would allow data for other types of application to reside on the bitcoin blockchain. This was an intense debate that even Satoshi himself weighed in on saying that,
 Piling every proof-of-work quorum system in the world into one dataset doesn't scale. Bitcoin and BitDNS can be used separately. Users shouldn't have to download all of both to use one or the other. BitDNS users may not want to download everything the next several unrelated networks decide to pile in either. — Satoshi Nakamoto

Dot-BIT, the first project using namecoin, is building a domain name system (DNS) using the .bit top-level-domain (TLD). Their goal is to spread .bit domains by providing resources and tools to the community, from developers to end users.

It is very useful to build the DNS system into the currency system because both are prone to corruption and control when they require a central authority to manage them. By making these decentralised and removing the requirement for a central authority we can have the foundation of a secure private internet and domain-name system which has the payment and registration system built in to it.

## Namecoin exchanges

The best way to get namecoins is with bitcoins since it's still very early days for namecoin which means there's not much support for buying them with standard currencies like there is with bitcoin.

## Installation and usage

Installation and usage is now much simpler with the QT client which can be installed from here. For Linux Mint 16, I found that the Ubuntu 14 package worked fine, but the Debian 7 package had unsatisfiable dependencies. I was able to replace the wallet.dat file with a very old one from 2011 and the program launched correctly and listed all my balance and names.

## The Namecoin wallet

As with Bitcoin, Namecoin has a file called ~/.namecoin/wallet.dat in which all your coins are stored, but in the case of Namecoin, all your domain names (and any other kinds of names you've created) are also stored in this file as special kinds of coin that can't be spent. You must take care to back this file up and keep it safe from prying eyes because if you lose this data, you lose all your coins and names!

If you use PGP email (which you should) then the simplest way to get a secure backup is to make a tar file of your wallet (you can do you Bitcoin wallet at the same time if you like) and send it to yourself as an encrypted email. This way it's stored off-site in your IMAP folder but cannot be viewed without having access to your private key. To create a tar file of your Namecoin and Bitcoin wallets, do the following.

tar -cf ~/.namecoin/wallet.dat ~/.bitcoin/wallet.dat

You should delete this file after sending it since it's not encrypted.

Note: If you need to reinstall the system, start the daemon and then stop it again to create the .namecoin directory, then overwrite the wallet.dat file with your backed up wallet and restart the daemon. Your balance will show as zero or negative until the blockchain has loaded which could take a few hours or more depending on your bandwidth.

## Namecoin domain names

Names can now be registered from within the QT client itself.

### Unicode names

You can register full unicode dotBit names no problem, but the DNS system will convert them to punycode. Most modern browsers support punycode, but only certain domains and names are whitelisted by default because unicode characters open up massive potential for phishing attacks by linking unsuspecting users to fake sites with very similar characters in their domain to the real site. Some TLD configurations have protection against this so the browsers can whitelist the whole TLD be default, whereas others that do not only have some specific domain names in the whitelist.

To view the currentl TLDs and domains in Firefox's configuration, go to about:config in the browser and filter the listing with the term "IDN". To whitelist dotBit domains, add a new boolean value called network.IDN.whitelist.bit with the value true.

Note servers handling requests for domains containing unicode characters need to be configured with the punycode version of the name not the unicode version. For example, the domain 道.bit resolves to this site but is converted to the punycode name of xn--8b4a.bit and will only display as unicode in browsers that have made the whitelist change mentioned in the previous paragraph.

## Namecoin as an identity system

In addition to domain names, namecoin now officially supports registration of identity information. Currently Bitmessage, OneID.io is a presentation layer for this identity information, and also the NameID (Namecoin ID's + OpenID and an OTR plugin for Pidgin) can use this information. This method uses the id/ namespace for it's information storage in the Namecoin blockchain.

The easiest way to use the NameID system is to use their browser plugin, but you can also use it natively with the namecoin client. The NameID system will provide a message which needs to be signed with namecoin's signmessage function, which can be done from the command-line or from the debug window depending on whether you're using the daemon or the desktop application. The function takes two parameters, the first is the Namecoin address of the ID you're asking to sign in with, and the second is the message which needs to be enclosed within quotes since it contains spaces. This returns a signature hash which is given to the NameID app so it can ensure that you are the holder of the ID in question.

There are also other identity systems such as OneName and OpenName that are based on Namecoin and use the u/ namespace for their data storage in the blockchain.