Inside the blockchain developer’s mind: What is a testnet?
By familiarizing themselves with the nuances of testnets, blockchain developers can become better equipped to evaluate specific testnet releases.
Cointelegraph is following the development of an entirely new blockchain from inception to mainnet and beyond through its series, Inside the Blockchain Developer’s Mind. In previous parts, Andrew Levine of Koinos Group discussed some of the challenges the team has faced since identifying the key issues they intend to solve and outlined three of the “crises” that are holding back blockchain adoption: upgradeability, scalability, and governance.
Blockchain testnets are an interesting subject because they come in all shapes and sizes. So, in this post, my goal is to leverage my inside experience as the CEO of Koinos Group (developers of Koinos) to demystify testnets and perhaps give some insight into why they seem to have such an impact on price.
The most obvious place to start is with the name: testnet. The purpose of a testnet is to test a network. At a very high level, there are two “flavors” of testnet. The first is a testnet that is released prior to a mainnet (main network), and the second is a testnet that is released after a mainnet is already in operation. The functions these serve are similar, but the context in which they are released dramatically impacts the perception, and impact, of the release.
I’ll start with the second kind of testnet because, in a way, this is the more straightforward context. When you’re talking about existing networks like Bitcoin and Ethereum, testnets serve two primary functions. The first is that they are a live environment in which developers can test their decentralized applications. Every good developer knows that there’s no such thing as perfect code, so testnets give developers an environment that is very similar to the “main chain” (e.g. Ethereum) in which they can test their code with effectively zero risk. Things running on a testnet are expected to break, and the tokens used are expected to be worthless.
So, testnets are an environment that enables decentralized application (DApp) developers to increase the value of their applications (i.e., make their apps better) precisely because there is no expectation of full functionality or wealth creation. In a sense, the value of a testnet stems from its worthlessness.
DApp developers vs. blockchain developers
But testnets have a two-sided nature, which brings us to the second function that testnets serve, and that function is to the benefit of, not the DApp developer, but the platform developer (in our case, the blockchain developer). One thing I have been surprised to see from my unique perspective is how commonly DApp developers are conflated with blockchain developers. Typically, people who write smart contracts are not blockchain developers, and blockchain developers generally spend very little time writing smart contracts.
Ironically, Koinos is throwing a huge wrench in this distinction because its entire system is implemented as smart contracts! Since Koinos smart contracts are upgradeable, this means that any feature can be added to the blockchain without a hard fork, but it also means that the people developing the blockchain (like members of the Koinos Group) are using and developing the very same toolchain and toolkit that developers will use to build their DApps. But this is a feature that is totally unique to Koinos, so we can put that aside for the sake of this discussion.
In every other blockchain, the blockchain developers have to develop updates in whatever programming language the blockchain is written in (C++, Rust, Haskell, etc.), and they are working on a very large and complicated system called a “monolithic architecture.” Within monolithic architectures, changing any part of the system can impact any other part of the system, so the risk of making changes is that much higher.
Blockchain developers also need a live environment with low stakes that they can use to test out their changes and see what breaks. Like application developers, they want this environment to be as close to the real network as possible, which means that they want their code to interact with code that application developers will be running as well.
Two sides of testnets
This reveals the two-sided aspect of testnets. They enable both the developers of applications and the developers of platforms to interact with one another and safely test their code in as close to a live environment as possible, but with very low stakes. This enables both groups to improve their products and make them more valuable to their users.
Now we can start to see why testnets seem to have such an impact on token price. If we assume that price is a function of value, and that testnets help developers increase the value of their products, then price impact should be expected. The problem is that this correlation has led to several undesirable outcomes. Projects will often release a “testnet” that has no utility to developers for the sole purpose of boosting their token price. Unfortunately, many people will see the testnet announcement and just assume that something valuable has been released, and so the act will have the desired effect on the price.
Testnets before mainnet
Up until now, I’ve been focusing on the utility of testnets in the context of existing blockchains, which is that they create a safe space for application developers to test their applications and for blockchain developers to test upgrades to the underlying platform. This will help you understand the other important context in which testnets are released, which is prior to the release of the mainnet.
Once again, testing is the primary objective, but the focus is far more on the system itself, as it has never before been operational. Of course, since it is new, there won’t be any applications running on it anyway. Now the situation is more one-sided. The majority of the people working with the codebase will be blockchain developers, and the goal is to get the platform to a place where developers want to actually build on it.
The first requirement developers will have is that the platform is proven to be sufficiently safe, and that should be the prime directive behind the specific tests that are run. Assuming developers are convinced that the platform is sufficiently safe, then they’ll need to be educated on how to use the platform. In other words, the testnet must be thought of as an educational tool that enables developers to gain a deeper understanding of how they will be able to use the platform while they are also helping to test the security of the network.
Finally, as they are testing the network and learning how to use it, they will inevitably find places where the platform could be improved — important libraries might be needed, or important documentation might be needed to help them understand the system. This information is invaluable feedback that the platform developers absolutely have to use to make the platform better before mainnet implementations are finalized.
Computer networks have become a major part of our lives whether we realize it or not, and they are only increasing in importance. Testnets are a critical step in the process of releasing new and innovative computer networks that can add ever-increasing value to our lives. Hopefully, by gaining a deeper understanding of the nuances of testnets and the important contexts in which they are released, you are now better equipped to evaluate specific testnet releases and whether they are being designed and launched for the right reasons.
This article does not contain investment advice or recommendations. Every investment and trading move involves risk, and readers should conduct their own research when making a decision.
The views, thoughts and opinions expressed here are the author’s alone and do not necessarily reflect or represent the views and opinions of Cointelegraph.
Koinos Group recently released version 2 of their testnet, which features stability improvements, their mana fee-less transactions system and a contract development toolkit that will allow developers to build and run smart contracts on Koinos.