OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / btcsuite / btcd / chaincfg / doc.go
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/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