github.com/aychain/blockbook@v0.1.1-0.20181121092459-6d1fc7e07c5b/bchain/coins/litecoin/litecoinparser.go (about) 1 package litecoin 2 3 import ( 4 "blockbook/bchain/coins/btc" 5 6 "github.com/btcsuite/btcd/wire" 7 "github.com/jakm/btcutil/chaincfg" 8 ) 9 10 const ( 11 MainnetMagic wire.BitcoinNet = 0xdbb6c0fb 12 TestnetMagic wire.BitcoinNet = 0xf1c8d2fd 13 RegtestMagic wire.BitcoinNet = 0xdab5bffa 14 ) 15 16 var ( 17 MainNetParams chaincfg.Params 18 TestNetParams chaincfg.Params 19 ) 20 21 func init() { 22 MainNetParams = chaincfg.MainNetParams 23 MainNetParams.Net = MainnetMagic 24 MainNetParams.PubKeyHashAddrID = []byte{48} 25 MainNetParams.ScriptHashAddrID = []byte{50} 26 MainNetParams.Bech32HRPSegwit = "ltc" 27 28 TestNetParams = chaincfg.TestNet3Params 29 TestNetParams.Net = TestnetMagic 30 TestNetParams.PubKeyHashAddrID = []byte{111} 31 TestNetParams.ScriptHashAddrID = []byte{58} 32 TestNetParams.Bech32HRPSegwit = "tltc" 33 } 34 35 // LitecoinParser handle 36 type LitecoinParser struct { 37 *btc.BitcoinParser 38 } 39 40 // NewLitecoinParser returns new LitecoinParser instance 41 func NewLitecoinParser(params *chaincfg.Params, c *btc.Configuration) *LitecoinParser { 42 return &LitecoinParser{BitcoinParser: btc.NewBitcoinParser(params, c)} 43 } 44 45 // GetChainParams contains network parameters for the main Litecoin network, 46 // and the test Litecoin network 47 func GetChainParams(chain string) *chaincfg.Params { 48 // register bitcoin parameters in addition to litecoin parameters 49 // litecoin has dual standard of addresses and we want to be able to 50 // parse both standards 51 if !chaincfg.IsRegistered(&chaincfg.MainNetParams) { 52 chaincfg.RegisterBitcoinParams() 53 } 54 if !chaincfg.IsRegistered(&MainNetParams) { 55 err := chaincfg.Register(&MainNetParams) 56 if err == nil { 57 err = chaincfg.Register(&TestNetParams) 58 } 59 if err != nil { 60 panic(err) 61 } 62 } 63 switch chain { 64 case "test": 65 return &TestNetParams 66 default: 67 return &MainNetParams 68 } 69 }