Antoine Poinsot wrote:The
given rationale for a difficulty reset was to let developers
occasionally mine blocks on their laptop. But you cannot have your cake
and eat it too: either the network is permissionless (PoW) or you assign
identities and privileges to some (Signet). By trying to do both at the
same time testnet4 created a loophole for abuse. As a result it failed
on both count: it neither mimics mainnet nor allows developers to mine
active blocks on their laptop.
Let me clarify why developers can't mine on their own laptop with testnet4.
The way you would do that is to move your computer clock forward by 20 minutes (or use faketime), at which point the difficulty drops to 1. You would then mine your (presumably non-standard transaction) and broadcast it to the network.
This is also the strategy used to acquire more testnet coins if you don't have an ASIC and don't want to use a faucet.
On testnet3 the latter wasn't very productive because at height 4 million the block subsidy is under 10k sats.
But on testnet4 every block yields 50 tBTC. So several people try to mine such a block, leading to the many parallel forks.
If you're a developer trying to mine a non-standard transaction, you have to be fast, well connected and lucky to be the first block picked up by the rest of the network.
But why mine just one if you can mine many?
Some CPU miners are now mining as many testnet4 blocks as they can by bumping their clock 20 minutes not just once, but several times in a row. Until they run against the limit other nodes put on how far a block can be in the future, namely two hours. So when a real difficulty block appears, you may see 5 blocks on top of it instantly.
This behavior is even worse from the point of view of a developer trying to mine a non-standard transaction. Because the tip of your node is always going to be about two hours in the future, when you mine on top of that by moving your clock even further, it will be rejected by your peers.
So this use case of CPU mining non-standard transactions is simply dead as long as this behaviour exists. We might as well reduce code complexity.
That said, testnet will never mimic mainnet. It has no value, or worse, very little value. So the incentives are different, which leads to different behavior. That's a whack-a-mole game, which we should probably not dedicate time to.
- Sjors