One of the official products I'm working on at Steemit, Inc. is a tool called Tinman:
The tinman set of utilities is a set of scripts to create a testnet. A tinman testnet allows all, or some subset of, user accounts to easily be ported from the main network.
See: tinman
I didn't design it. It was actually something the blockchain engineers originally cooked up. But we're adhering to the design goals. When I say "we", I'm referring to the SteemWorks Team, which I'm part of. We took over development of Tinman in July.
The first official testnet was created on 2018-08-27 and shortly after that it activated HF20, announced on both @steemitblog and @steemitdev:
https://steemit.com/hardfork20/@steemitblog/released-hardfork-20-testnet https://steemit.com/hardfork20/@steemitdev/hardfork-20-testnet-details
Snapshot
Before creating a testnet, we take a snapshot of the mainnet. This is done by asking mainnet for every account, 1,000 at a time. This results in a snapshot file containing over 2 GB of account data, plus other things we need to recreate blockchain conditions.
HF19
So far, every testnet bootstraps (starts out) ready for HF19. Then we copy the accounts from the snapshot and initialize each account so that they have a proportional balance to the mainnet.
This means that if alice
had 1% of the total value on mainnet and bob
had 5%, we try to keep the same proportion on the testnet so that alice
continues to have 1% and bob
continues to have 5%.
A testnet doesn't have the same number of tokens as mainnet, so we have to adjust the actual tokens for alice
and bob
, yet maintain proportionality.
In the initial version of Tinman, this was accomplished by creating accounts with an account creation fee above the recommended fee. The fee was then automatically applied to the account as STEEM Power, on the testnet. It's a "fee shortcut" that allows us to avoid extra steps.
HF20
In HF20, this process must be altered. Due to the changes involving account creation, this "fee shortcut" is no longer available. If we attempt to create an account with a fee above the recommendation, the blockchain will reject it and no accounts would be created.
The new process just requires that extra step we were avoiding before (no "fee shortcut"). It's just an additional transfer, no biggie. But if it weren't for this change, the current testnet would be the last.
I want to highlight this because sometimes, getting ahead of a potential problem isn't always noticed. We don't need to deploy a new testnet right this moment. But if we did, and we didn't have this fix in place, it would go badly.
Often in software development, people only see the failures. That's understandable because failures can have huge impact. But getting ahead of problems is what good software developers do. And they do it very often at Steemit, Inc.