Networks
Mainnet, testnet, signet, regtest — and the SLIP-44 derivation split between them
| Network | Purpose | Default Esplora endpoint |
|---|---|---|
mainnet | Production — real BTC, real fees, irreversible transactions. | https://blockstream.info/api |
testnet | Public test network with free faucet coins. Safe for pipeline development. | https://blockstream.info/testnet/api |
signet | Signed test network, more stable block times than testnet. NBitcoin has no distinct Signet network object — this node decodes signet addresses using testnet's address-encoding version bytes as a compatible fallback. | Not pre-configured — add your own signet Esplora instance's URL. |
regtest | Local/private regression-test network — mine blocks on demand. Typical for integration tests. | Not pre-configured — add your own regtest node/Esplora instance's URL. |
Only mainnet and testnet ship pre-configured. Add a
signet or
regtest entry under Bitcoin:Networks in appsettings.json
(see Configuration) pointing at your own Esplora-compatible
instance to use them.
Adding a Network
"Bitcoin": {
"Networks": {
"mainnet": { "EsploraApiUrl": "https://blockstream.info/api", "BroadcastEndpoint": "https://blockstream.info/api/tx" },
"testnet": { "EsploraApiUrl": "https://blockstream.info/testnet/api", "BroadcastEndpoint": "https://blockstream.info/testnet/api/tx" },
"signet": { "EsploraApiUrl": "https://your-signet-esplora/api", "BroadcastEndpoint": "https://your-signet-esplora/api/tx" }
}
}
Both EsploraApiUrl and BroadcastEndpoint must use http or
https — startup validation rejects any other scheme (e.g. a file:// URL or a
typo) before the node can serve traffic.
SLIP-44 Coin Type by Network
When deriving a key from a BIP-39 mnemonic (wallet/deriveAddress, psbt/sign
with walletType: mnemonic), the default derivation path picks the SLIP-44
coin_type based on the requested network — this is not optional or configurable per call,
it's derived automatically so a testnet wallet can never silently derive a mainnet-path address:
| Network | coin_type | Default path (P2WPKH, BIP-84) | Default path (P2TR, BIP-86) |
|---|---|---|---|
mainnet | 0' | m/84'/0'/0'/0/0 | m/86'/0'/0'/0/0 |
testnet / signet / regtest | 1' | m/84'/1'/0'/0/0 | m/86'/1'/0'/0/0 |
Supply your own derivationPath on any wallet operation to override this default.
Network is required on every write/signing operation. Read operations fall back to
Bitcoin:DefaultNetwork when network is omitted, but psbt.*,
wallet.deriveAddress/signMessage, and transaction.broadcast all
require it explicitly — see Configuration.