And bip70 name. And on demand (meaning you don’t have to mine a genesis block for it to pass minimal pow).
This allows the daemon to create a new regtest-like chains on demand. The hash of the genesis block is dependent on the “petname” of the chain. Examples: “regtest2, custom, chain_2, aaa, bbbb”
The hash of the genesis block could depend on more things. For example, for signet chains, it could depend on the signet_blockscript in the case of BIP325 (signet) https://github.com/bitcoin/bitcoin/pull/16411/
In fact, #16411 could be simplified if this was merged first, for the genesis block wouldn’t need to be mined anymore (which requires a special case in grindblock which in turn requires CreateSignetGenesisBlock to be exposed in chainparams). So I guess perhaps signet could be counted as a use case, or perhaps only part of this.
But why would somebody want more than one regtest?
I’m personally using it for doing cross-chain payments in lightning, see https://github.com/jtimon/multi-ln-demo/blob/master/conf/bitcoind.conf I would like to work on what I call “cross chain trampoline payments” and I plan to keep using it for that too.
I imagine other developers could find this useful for other developments involving bitcoin-like chains. For example atomic swaps or submarine swaps.
Of course, an alternative for these use cases is to use other regtests from other bitcoin-like networks, for example litecoin regtest or liquid regtest.
Another use case is creating temporal testnets for testing upcoming features. For example, had this been in place before segwit, when “segwitnet” (was that its name) was created, it could have simply been some shared configuration instead of an additional hardoced chainparams. Something like:
0[segwitnet]
1segwitheight=0
2rpcport=18555
3port=18556
4...
We’re not going to use it for a segwitnet now, obviously, but perhaps for a taprootnet or something. Perhaps #17032 would be needed too for this use case in particular to be more useful though, or at least make that for some of the fields that are different between testnet3 and regtest.