diff --git a/params.go b/params.go index 7d119f9c..9eda0038 100644 --- a/params.go +++ b/params.go @@ -1,26 +1,73 @@ package main -import "github.com/roasbeef/btcd/chaincfg" +import ( + litecoinCfg "github.com/ltcsuite/ltcd/chaincfg" + bitcoinCfg "github.com/roasbeef/btcd/chaincfg" + "github.com/roasbeef/btcd/wire" +) // activeNetParams is a pointer to the parameters specific to the currently // active bitcoin network. -var activeNetParams = testNetParams +var activeNetParams = bitcoinTestNetParams -// netParams couples the p2p parameters of a network with the corresponding RPC -// port of a daemon running on the particular network. -type netParams struct { - *chaincfg.Params +// bitcoinNetParams couples the p2p parameters of a network with the +// corresponding RPC port of a daemon running on the particular network. +type bitcoinNetParams struct { + *bitcoinCfg.Params rpcPort string } -// testNetParams contains parameters specific to the 3rd version of the test network. -var testNetParams = netParams{ - Params: &chaincfg.TestNet3Params, +// litecoinNetParams couples the p2p parameters of a network with the +// corresponding RPC port of a daemon running on the particular network. +type litecoinNetParams struct { + *litecoinCfg.Params + rpcPort string +} + +// bitcoinTestNetParams contains parameters specific to the 3rd version of the +// test network. +var bitcoinTestNetParams = bitcoinNetParams{ + Params: &bitcoinCfg.TestNet3Params, rpcPort: "18334", } -// simNetParams contains parameters specific to the simulation test network. -var simNetParams = netParams{ - Params: &chaincfg.SimNetParams, +// bitcoinSimNetParams contains parameters specific to the simulation test +// network. +var bitcoinSimNetParams = bitcoinNetParams{ + Params: &bitcoinCfg.SimNetParams, rpcPort: "18556", } + +// liteTestNetParams contains parameters specific to the 4th version of the +// test network. +var liteTestNetParams = litecoinNetParams{ + Params: &litecoinCfg.TestNet4Params, + rpcPort: "19334", +} + +// applyLitecoinParams applies the relevant chain configuration parameters that +// differ for litecoin to the chain parameters typed for btcsuite derivation. +// This function is used in place of using something like interface{} to +// abstract over _which_ chain (or fork) the parameters are for. +func applyLitecoinParams(params *bitcoinNetParams) { + params.Name = liteTestNetParams.Name + params.Net = wire.BitcoinNet(liteTestNetParams.Net) + params.DefaultPort = liteTestNetParams.DefaultPort + params.CoinbaseMaturity = liteTestNetParams.CoinbaseMaturity + + copy(params.GenesisHash[:], liteTestNetParams.GenesisHash[:]) + + // Address encoding magics + params.PubKeyHashAddrID = liteTestNetParams.PubKeyHashAddrID + params.ScriptHashAddrID = liteTestNetParams.ScriptHashAddrID + params.PrivateKeyID = liteTestNetParams.PrivateKeyID + params.WitnessPubKeyHashAddrID = liteTestNetParams.WitnessPubKeyHashAddrID + params.WitnessScriptHashAddrID = liteTestNetParams.WitnessScriptHashAddrID + + copy(params.HDPrivateKeyID[:], liteTestNetParams.HDPrivateKeyID[:]) + copy(params.HDPublicKeyID[:], liteTestNetParams.HDPublicKeyID[:]) + + params.HDCoinType = liteTestNetParams.HDCoinType + + params.rpcPort = liteTestNetParams.rpcPort +}