The Koinos testnet recently went live, on schedule and we’re happy to say that the release went very smoothly. Almost too smoothly! Developers are already digging into the code and providing valuable feedback — the thing we were looking forward to most!

One of the most exciting things to see is how the design decisions we made when architecting Koinos so many months ago are already being validated and paying dividends.

Easy Fork #1

In my last hackernoon article I talked about how modular upgradeability allowed us to rapidly make a seemingly minor change to the blockchain that would have been a major pain in the butt on older blockchains; changing the name of the token from KOIN to tKOIN.

While seemingly trivial, the name of the token is part of the Koinos system logic, which is what usually requires a hard fork to change. But because the KOIN token is implemented as an upgradeable smart contract with system-level privileges, all we needed to do was upgrade the contract. Because this process of changing the system logic is so easy, we’re calling such changes “easy forks,” a term coined by Koinos blockchain architect Nathaniel Caldwell.

This was an exciting moment because it was really the first time we were able to take modular upgradeability for a spin in a live environment, but it wasn’t a very exciting change. Fortunately, the amazing people who are already using Koinos and providing feedback brought to our attention an even “meatier” issue that was a more exciting test for modular upgradeability because it involved a big change to the consensus algorithm.

Easy Fork #2

Within the first few days of the launch of the testnet, community members running nodes were noticing block heights that were out of sync with the main chain. This also highlights why it’s so important to make it so easy to run a node and why every Koinos community member, no matter their technical skill level, should at least try running a node. The thoughtful design behind how we represent information within the interface made it easy for anyone to see that something wasn’t right and report it to us, even if they didn’t understand what exactly the issue was.

Thanks to the modularity of Koinos, we were able to quickly trace the problem to an issue with the PoW algorithm which allowed nodes to produce blocks at a faster rate than the main chain. Finding issues like this is exactly what the testnet is for because even though we will be ditching PoW, this particular problem would still need to be solved for mainnet.

How we approached solving the problem is a fantastic illustration of how modular upgradeability helps us more rapidly solve problems.

While there might be another blockchain out there that could make the “tKOIN” change without a hard fork, there are very few, if any, that could make a similar change to something as mission critical as the consensus algorithm. But what modular upgradeability means is that everything is implemented just like the token was; as an upgradeable smart contract module. This means that fixing this problem followed the same path as fixing the name of the token. Find the module containing the source of the problem. Identify the fix. Submit a transaction with the upgraded smart contract. The end.

Innovation Hoovering

This example also illustrates how modular upgradeability isn’t always about generating totally novel solutions. It’s as much about taking already existing solutions and rapidly integrating them into Koinos. This makes Koinos like an “innovation vacuum” capable of rapidly sucking in the solutions from every other platform.

Ethereum PoW

Since Ethereum already has a working PoW algorithm, we simply decided to use that one. After just a few hours of work, the Koinos testnet PoW algorithm was updated to Ethereum PoW, fixing the out-of-sync problem and those running the testnet suffered no interruption of service!

In order to take advantage of this change, all anyone running a node has to do is shut their node down, delete the block producer microservice in the docker control panel, and then start up their node as usual using the ‘docker-compose up’ command.

Mainnet Governance

Of course, on the main network such a change would have to be approved by governance, but the process of upgrading the system would be the same, meaning no disruptive, political, and risky hard fork.

In short, the testnet is currently doing exactly what it’s supposed to do; helping us unearth problems, generate solutions, and rapidly push fixes to the network and all in a fraction of the time it would take on other blockchains.

This is evolution at work and we can’t wait to see what happens next!

If you’d like to help make Koinos get even better, no matter your technical skills, you can be up and running a node in minutes by heading over to the Koinos github.