1 // Package chaincfg defines chain configuration parameters.
3 // In addition to the main Bitcoin network, which is intended for the transfer
4 // of monetary value, there also exists two currently active standard networks:
5 // regression test and testnet (version 3). These networks are incompatible
6 // with each other (each sharing a different genesis block) and software should
7 // handle errors where input intended for one network is used on an application
8 // instance running on a different network.
10 // For library packages, chaincfg provides the ability to lookup chain
11 // parameters and encoding magics when passed a *Params. Older APIs not updated
12 // to the new convention of passing a *Params may lookup the parameters for a
13 // wire.BitcoinNet using ParamsForNet, but be aware that this usage is
14 // deprecated and will be removed from chaincfg in the future.
16 // For main packages, a (typically global) var may be assigned the address of
17 // one of the standard Param vars for use as the application's "active" network.
18 // When a network parameter is needed, it may then be looked up through this
19 // variable (either directly, or hidden in a library call).
28 // "github.com/btcsuite/btcutil"
29 // "github.com/btcsuite/btcd/chaincfg"
32 // var testnet = flag.Bool("testnet", false, "operate on the testnet Bitcoin network")
34 // // By default (without -testnet), use mainnet.
35 // var chainParams = &chaincfg.MainNetParams
40 // // Modify active network parameters if operating on testnet.
42 // chainParams = &chaincfg.TestNet3Params
47 // // Create and print new payment address, specific to the active network.
48 // pubKeyHash := make([]byte, 20)
49 // addr, err := btcutil.NewAddressPubKeyHash(pubKeyHash, chainParams)
56 // If an application does not use one of the three standard Bitcoin networks,
57 // a new Params struct may be created which defines the parameters for the
58 // non-standard network. As a general rule of thumb, all network parameters
59 // should be unique to the network, but parameter collisions can still occur
60 // (unfortunately, this is the case with regtest and testnet3 sharing magics).