bitcoin node: what is the difference between simnet and regtest? btcd, and presumably other bitcoin node implementations, seem to have 4 network options:


mainnet
testnet
regtest
simnet.


I get that mainnet and testnet both are "public" in that your node will communicate with other nodes and that both have an existing blockchain and genesis block.

However, from what I can tell, both simenet and regtest both create a local only blockchain, and both will create a new genesis block. I this case, what is the difference, and which is better (easier) for developing bitcoin applications?

This is what the documentation has to say:

--regtest             Use the regression test network
--simnet              Use the simulation test network
Simnet is only available for btcd (bitcoin node) and lnd (lightning node) afaik, while regtest is also available for bitcoind (bitcoin node), lnd and eclair (lightning nodes). The two modes are similar, according to documenation of LND:


  Simnet is similar to regtest in that you'll be able to instantly mine blocks as needed to test lnd locally


Both also are similar in the fact that the payment addresses are unique, to prevent confusion with the main network.

Where they differ, I think, is that simnet goes a bit further and also applies some network changes to disable things like peer discovery.

But I couldn't find conclusive evidence for this. Since I do a lot of tests with multiple Lightning clients, I tend to use regtest, since that's more broadly supported.