If you have any experience building on blockchain technology, this chart should strike fear into your heart. It did for us.
At Onename, we let you register a blockchain ID - an identity that you have complete control over simply by virtue of the fact that you have unique access to your private key.
A year and a half ago, we built out our system on top of Namecoin, a blockchain that is similar to Bitcoin's blockchain but with an added service: decentralized name registration.
We ran our service on this open network for quite some time, and while Namecoin had quite a few issues in terms of ease of working with the software and the reliability of the network, and while we were concerned with staying on the Namecoin blockchain indefinitely, we managed to get by and decided to stick with it, at least in the short term.
But at some point, the situation turned for the worse. We started to notice that the hashing power distribution was beginning to shift - a single mining pool was climbing in it's percent control of the network as certain miners were dropping out. It even surpassed the dreaded 51% mark, which means that the mining pool obtained the power to start re-writing the chain and censor transactions.
This is when we knew we had to move.
We wanted to move over to the Bitcoin blockchain, but unfortunately it doesn't natively support decentralized name registration, so we had to build something that would extend its functionality.
We came up with an idea for a system we called Blockstore. It would work like a "virtual blockchain," reading in the sequence of operations in any arbitrary blockchain and then using its own internal logic to interpret the sequence of operations and build a state of the system. In addition, instead of storing the identity information associated with each name in the blockchain, it would instead store a hash of the information in the blockchain and have the actual information stored elsewhere (a Kademlia DHT, Amazon S3, etc.).
Knowing that time was of the essence, we buckled down and got to work. We released the first version of the system this February, but it was very rudimentary and not well-tested. By the time that September rolled around, we were confident enough in the system and decided to pull the trigger.
We were going to migrate to Bitcoin.
We knew that migrating meant a few things. On the one hand, it meant that we would enjoy quite a few benefits in terms of security, reliability, ease of software development, flexibility to add new features, and massive resources available from building on the largest network.
But on the other hand, it meant that we'd have to be extremely careful in our migration and make sure that we didn't disrupt anything.
Think about it - this isn't as simple as swapping out your database from underneath your centralized service/app. We had to figure out a way to swap the blockchain out from under our decentralized system for name registration and name resolution. That meant getting other services on board that were building on top of the system and communicating to them why we thought it was a good idea to move and why they needed to upgrade their apps to support the new services. It also meant making sure that the cryptographic identities that owned the names on the first blockchain were identical to those that owned the names on the new blockchain (it turns out it's super simple to convert between a Namecoin address and a Bitcoin address). Further, it meant setting up a network of Blockstore nodes and DHT nodes and filling them with lots and lots of name registration and bits of data, respectively.
Anyway, we started making the move and I know I'm biased but it was one of the coolest things ever. We started sending tens of thousands of transactions on the Bitcoin blockchain each day in order to build up the state of our system. By the end of it, two days ago, we had migrated our entire userbase over.
Now, we're ready to flip the switch on starting to resolve names off of the Bitcoin blockchain and we're set to do so exactly ten days from now.
Time will tell how well our system operates on the new blockchain, but for now, with all said and done, we were happy we made the decision to move.
The network effects of blockchains are real. For us, this is a lesson to always build on the strongest chain with the largest community.
P.S. If Blockstore is something that sounds interesting to you, I highly recommend checking it out on Github and giving it a spin. Link to the code below.