github.com/btcsuite/btcd@v0.24.0/chaincfg/doc.go (about)

     1  // Package chaincfg defines chain configuration parameters.
     2  //
     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.
     9  //
    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.
    15  //
    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).
    20  //
    21  //	package main
    22  //
    23  //	import (
    24  //	        "flag"
    25  //	        "fmt"
    26  //	        "log"
    27  //
    28  //	        "github.com/btcsuite/btcd/btcutil"
    29  //	        "github.com/btcsuite/btcd/chaincfg"
    30  //	)
    31  //
    32  //	var testnet = flag.Bool("testnet", false, "operate on the testnet Bitcoin network")
    33  //
    34  //	// By default (without -testnet), use mainnet.
    35  //	var chainParams = &chaincfg.MainNetParams
    36  //
    37  //	func main() {
    38  //	        flag.Parse()
    39  //
    40  //	        // Modify active network parameters if operating on testnet.
    41  //	        if *testnet {
    42  //	                chainParams = &chaincfg.TestNet3Params
    43  //	        }
    44  //
    45  //	        // later...
    46  //
    47  //	        // Create and print new payment address, specific to the active network.
    48  //	        pubKeyHash := make([]byte, 20)
    49  //	        addr, err := btcutil.NewAddressPubKeyHash(pubKeyHash, chainParams)
    50  //	        if err != nil {
    51  //	                log.Fatal(err)
    52  //	        }
    53  //	        fmt.Println(addr)
    54  //	}
    55  //
    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).
    61  package chaincfg