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.
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.
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.
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
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.
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.