github.com/dashpay/godash@v0.0.0-20160726055534-e038a21e0e3d/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/dashpay/godashutil" 29 // "github.com/dashpay/godash/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 := godashutil.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