Since earlier this year, we have been planning to migrate our blockchain ID registration service from Namecoin to Bitcoin. This process started with the release of Blockstack Server, a decentralized DNS system built on the Bitcoin blockchain, and since then we've been running tests to ensure that we could perform a migration without incident and that Blockstore could perform at scale.
We are now confident that Blockstack Server meets these requirements and this past weekend at Blockstack Summit 2015, Onename co-founder Muneeb Ali announced that we are currently using Blockstack Server to migrate our users to the Bitcoin blockchain. The decision to migrate to the Bitcoin blockchain has been informed by over a year of experience and data from running a production system on the Namecoin blockchain. When working with Namecoin, we faced several challenges that Bitcoin helps us overcome.
The security of blockchain ID ownership is tied to the security of both the underlying blockchain and the software powering it. There are three security issues to take into consideration:
1. Cost of Attack
The more expensive the cost of attack for a particular blockchain, the more secure the blockchain. With a merge-mined cryptocurrency like Namecoin, the security of the blockchain is typically a subset of the “main chain.” We noticed in late 2014 that a single mining pool consistently had more than 51% of the hashing power on Namecoin while having significantly less of the hashing power on Bitcoin. Recently, the situation has been even worse with a single mining pool controlling over 60% of Namecoin’s hashrate. If this pool were to attack the network, it could reorganize the blockchain, censor name registrations, deny updates, and squat names as they expire. The Namecoin community has known about this for some time but there is little to nothing that they can do about it. Below is a mining power plot for the past 5 weeks (raw data here). We've actually seen Discus Fish controlling up to 75% mining power in a particular week.
2. Software Vulnerabilities
For software, the more actively developed the codebase is and the more frequently security reviews are performed, the lower the chances are that the code contains critical software vulnerabilities. Despite originally sharing the same codebase as Bitcoin, Namecoin was not kept up-to-date with advancements made in Bitcoin development. Namecoin has recently upgraded the codebase to build on the latest version of Bitcoin Core, but it’s unlikely that Namecoin code will continue to match the quality of Bitcoin Core, considering Bitcoin Core's total number of developers and frequency of security audits.
3. Networking Attacks
The more peers a cryptocurrency network has, the more resilient the network is to denial of service attacks. As a relatively small network, Namecoin has many fewer nodes than Bitcoin, which makes it more vulnerable in this respect.
Network Reliability & Throughput
The number of identities that can be registered and updated on Namecoin is directly proportional to the throughput of the underlying blockchain. It is important to us and our users that these network operations can be performed reliably and consistently. As a fork of Bitcoin, Namecoin shares many similar properties with Bitcoin, including a ten minute block time target and a 1MB block size limit. There was a period in August 2014 when a large quantity of small transactions were crashing the miners, making block confirmations take several hours while miners restarted their machines. Our service was severely affected when average block times became 2+ hours for several weeks.
Blockchain Bloat and Limits on Data Storage
Namecoin stores data directly in the blockchain and allows 520 bytes of space per key/value pair. This not only severely limits the amount of data that can be associated with keys, but also leads to blockchain bloat. It’s hard to imagine a system with hundreds of millions of users where all of the data is stored directly in the blockchain. Blockstack Server decouples the “control plane” from the “data plane” and uses external data stores (like a DHT, IPFS, Syndicate, etc) for storing data. Only the data hashes are announced in the blockchain and users can put large amounts of data in their profiles without worrying about blockchain bloat.
For updates to name pricing or other major changes, Namecoin requires a “hard fork” and requires miners to upgrade their software. Anecdotal evidence suggests that this is hard to do and oftentimes miners don’t have enough incentive to do software upgrades for a small cryptocurrency. Blockstack Server is built on top of Bitcoin and has greater flexibility for adding new features without requiring miners to upgrade their software.
Size of the Ecosystem
Cryptocurrencies are at a very early stage. It is hard to explain to people a) what Namecoin is and how it is different from Bitcoin, and then b) help them find a way to buy namecoins. Compared to Bitcoin, there are extremely few wallets and APIs out there that support Namecoin and this hampers the adoption of any system built on top of Namecoin.
All Things Considered
Namecoin deserves full credit for originally solving naming on a blockchain. But after considering all of the above factors, it was an easy decision to move our blockchain ID registration system from Namecoin to Bitcoin. In general, after our experience with running the production network we strongly believe that decentralized applications and services need to be on the largest, most secure blockchain. Currently, there is no other blockchain that even comes close to Bitcoin in terms of these security requirements.
The Final Stretch
So far, we have successfully registered over 32,000 users on the Bitcoin blockchain and have already transferred their blockchain IDs to the respective keys that owned their IDs on Namecoin. At the Namecoin block 250,000 we will deprecate the u/ namespace and discontinue support for Namecoin registrations and updates. From that point forward all new blockchain ID registrations and profile updates will only be reflected on the Bitcoin blockchain.
If you want to continue managing your blockchain ID through Onename, no action is needed on your part. If you want to manage your blockchain ID yourself either on Bitcoin or Namecoin, we are adding a transfer tool to the Settings page on your Onename account that will let you transfer your blockchain ID to either a Bitcoin address or a Namecoin address. Note, though, that we will continue to support transfers to Bitcoin addresses but will discontinue support for Namecoin blockchain ID transfers at the end of December 2015.
Since making the decision to migrate to Bitcoin, we have released many open-source tools and contributed them to the Blockstack community GitHub. Stay tuned for a follow-on post about how to use Blockstack Server for name registrations on the Bitcoin blockchain and how to deploy your own resolvers and registrars.
If you're interested in the software that is empowering us to do decentralized name registration and resolution on the Bitcoin blockchain, check out Blockstack Server and give it a spin!
* An earlier version of this post used the term Blockstore. This post has been edited to reflect that Blockstore's functionality was later merged into Blockstack Server.