Hello Steemians! In our previous post outlining the changes that would be coming to the Steem blockchain with Hardfork 20 we also shared that we’ll be releasing a Testnet which would “give developers the opportunity to test the upcoming changes in a non-production environment prior to launch.” We are happy to announce the release of that Testnet today!
Testnet is a big deal, not just for Hardfork 20, but for Steem generally. We are adding a major tool to the developer’s toolbox that will make it far easier for them to build and test their applications in a risk-free environment. Steemit will be using, breaking, and updating Testnet over time‒and especially over the course of the next couple of weeks‒so it will continue to get better and more useful over time. As we said in our second Dev Portal update, “We believe Steem’s unique properties can make it the blockchain of opportunity for developers, and we understand that the key to doing this is world-class developer resources.” Testnet is one big step toward delivering on that promise.
What is a Hardfork/TestNet?
For those who are confused about all of this hardfork and Testnet business, all you really need to know is that hardforks are a blockchain-specific term for software upgrades. As you probably know, blockchains are impossible to change by design. That’s why we call them immutable. The chain grows as new information is added to it in new blocks while the old information‒the information earlier in the the chain of blocks‒stays the same. This code has to be carefully designed because it protects all the tokens stored on the blockchain, all the social information Steemians choose to store on it, and it also governs the interactions between these two systems. This code has to be “bulletproof” so that as long as people are running Steem nodes, and as long as people are transacting on the blockchain, the chain will continue to grow in accordance with the rules embedded into the blockchain.
You can think of a hardfork as an update of the rules going forward. We can’t go back and change the rules that governed the creation of the chain in the past, but we can change the rules in a way that governs the future growth of the chain. This rule change is a little like taking a fork in the road. Some people running the blockchain may choose to continue using the old rules, isolating themselves in the process. Because this change requires a firm commitment going forward, whether one chooses the new or old rules, it is hard. And that’s how we get the term hardfork.
A Benefit of DPoS
In many protocols, hardforks are a chaotic event that threatens the stability of the ecosystem. This is because protocols like Ethereum and Bitcoin enable any person with any motivation to become a node and, as long as any nodes prefer the old software over the new, the result is a splitting of the chain into two competing protocols. Examples of these can be found with Bitcoin Cash, Bitcoin Gold, and Ethereum Classic.
With DPoS, while anyone can produce blocks, only the top 20 block producers, as determined by stake-weighted upvote, are canonical, which means they have to come to a consensus in order for new software to be be integrated into the blockchain. The Steem blockchain guarantees that if a supermajority of Witnesses begin running the new software, any transactions from Witness nodes that have not upgraded will be invalidated. This is a classic hardfork.
However, because a super-majority is required, and because the Witnesses are ultimately accountable to Steem’s stakeholders, the odds are maximized toward only positive changes being made, along with very little interest in creating sister-forks; chains that continue to being run based on the old rules. Note that, if you have an account, or if you have STEEM, you are a stakeholder.
Why a Testnet is Important
These new rules are extremely important and represent a new direction for the Steem blockchain. They are a change to the rules that have governed the production of blocks to this point and enabled us to come as far as we have. We as a community should not, and cannot, change these rules lightly. That being said, in order to improve and continue to outpace other protocols, we have to use the knowledge we’ve gained to make the protocol even better. At the same time, we must ensure the changes we make are safe. The goal is not to simply grow, but to grow strong. To support strong growth, we need to improve the efficiency of how the blockchain consumes resources and how it governs the creation of new accounts, which is what Hardfork 20 is all about.
Running a Testnet will allow us to find corner cases that are not normally presented on Mainnet (a term for the main Steem blockchain we all use). We will be able to attack the Testnet, push it to its limits (and beyond if possible) so that we can be sure Steem will continue to be safe. We have also created a tool to perform something called a Pitchfork of the new data on Mainnet to Testnet, which allows Testnet to act more like Mainnet. The result is that we get the best of both worlds.
Performing a Pitchfork is like establishing a one way street from Mainnet to Testnet. The data that hundreds of thousands of people are putting on Mainnet when they use applications like Steemit.com, d.tube, dlive.io, steemmonsters.com, etc is read by our tool and pumped into the Testnet. A Pitchfork in this context is the process of copying data from the live blockchain to the test blockchain. This enables developers to make their tests more realistic. But, since data does not flow from the Testnet back to the Mainnet, it poses no threat to the blockchain we all use and love.
One way to Pitchfork would be to simply import account balances. But the more data we copy from Mainnet to Testnet, the more Testnet will act like a real, active blockchain. With a Pitchfork, you can make it so that every vote that occurs on the Mainnet is mirrored on the Testnet, but nothing that happens on the Testnet makes its way back to the Mainnet.
All of this is about guaranteeing that the changes coming in Hardfork 20 are safe. It will enable anyone who wants to secure the future of Steem to launch every kind of attack they can think of at this new code. This way, we can be sure that it will be able to survive and thrive once it goes into production.
If you want to help ensure the safety and security of the Steem blockchain head on over to our more technical post which that will include connection information.