> because it breaks the assumption that coins don't expire
Technically, they can expire, if the client can see some chain reorganization. And it is something to think about: if the consensus will force miners to go back to some previous block height, and produce a stronger, alternative chain, then such testnet would automatically perform full chain reorganization, wired into its consensus rules. And then, coins would expire in a backward-compatible way, while also battle testing full chain reorganization (which may need testing anyway, for other reasons, like checkpoints).
> This will eventually overflow, but that seems fine for a testnet.
As far as I remember, there were some additional limits, introduced after Value Overflow Incident, for example that a single UTXO cannot hold more than 21 million coins:
https://github.com/bitcoin/bitcoin/blob/master/src/consensus/tx_check.cpp#L29```
// Check for negative or overflow output values (see CVE-2010-5139)
CAmount nValueOut = 0;
for (const auto& txout : tx.vout)
{
if (txout.nValue < 0)
return state.Invalid(TxValidationResult::TX_CONSENSUS, "bad-txns-vout-negative");
if (txout.nValue > MAX_MONEY)
return state.Invalid(TxValidationResult::TX_CONSENSUS, "bad-txns-vout-toolarge");
nValueOut += txout.nValue;
if (!MoneyRange(nValueOut))
return state.Invalid(TxValidationResult::TX_CONSENSUS, "bad-txns-txouttotal-toolarge");
}
```
Which means that in practice, instead of seeing huge or overflowed amounts in UTXOs, we will probably see a lot of repeated entries in the UTXO set, holding MAX_MONEY each.