Update: This post was migrated to our new blog.
Since earlier this year, we have been planning to migrate Blockstack's underlying blockchain from Namecoin to Bitcoin. This process started with the experimental release of Blockstack Core, which includes 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 Blockstack Core could perform at scale.
We are now confident that Blockstack Core meets these requirements and this past weekend at the Blockstack Summit 2015, we announced that we are currently using Blockstack Core 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 name 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 & 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 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 Core is built on top of an underlying blockchain, like 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 Blockstack's underlying blockchain 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 names to the respective keys that owned their names 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 name registrations and profile updates will only be reflected on the Bitcoin blockchain.
If you want to continue managing your names through the Onename registrar, no action is needed on your part. If you want to manage your name yourself either on Bitcoin or Namecoin, you can use a transfer tool on the Onename app that will let you transfer your name 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 name 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 Core for name registrations on the Bitcoin blockchain and how to deploy your own Blockstack Core nodes.
If you're interested in the software that is empowering us to do decentralized name registration and resolution on top of the Bitcoin blockchain, check out Blockstack Core 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 Core.