kaspad/config/network.go
Ori Newman 6d765f58ba [NOD-570] Separate genesis variables for different netwroks (#578)
* [NOD-570] Separate genesis variables for different netwroks

* [NOD-570] Make Testnet genesis

* [NOD-570] Make simnet and regtest genesis

* [NOD-570] Remake devnet genesis

* [NOD-570] Rename regNet -> regTest testnet->testNet

* [NOD-570] Change network names to one word instead of camel case

* [NOD-570] Change network names to one word instead of camel case

* [NOD-570] Fix test names

* [NOD-570] Fix TestGHOSTDAG

Co-authored-by: Dan Aharoni <dereeno@protonmail.com>
2020-01-08 18:42:47 +02:00

69 lines
2.2 KiB
Go

package config
import (
"fmt"
"github.com/jessevdk/go-flags"
"github.com/kaspanet/kaspad/dagconfig"
"github.com/pkg/errors"
"os"
)
// NetworkFlags holds the network configuration, that is which network is selected.
type NetworkFlags struct {
Testnet bool `long:"testnet" description:"Use the test network"`
RegressionTest bool `long:"regtest" description:"Use the regression test network"`
Simnet bool `long:"simnet" description:"Use the simulation test network"`
Devnet bool `long:"devnet" description:"Use the development test network"`
ActiveNetParams *dagconfig.Params
}
// ResolveNetwork parses the network command line argument and sets NetParams accordingly.
// It returns error if more than one network was selected, nil otherwise.
func (networkFlags *NetworkFlags) ResolveNetwork(parser *flags.Parser) error {
//NetParams holds the selected network parameters. Default value is main-net.
networkFlags.ActiveNetParams = &dagconfig.MainnetParams
// Multiple networks can't be selected simultaneously.
numNets := 0
// default net is main net
// Count number of network flags passed; assign active network params
// while we're at it
if networkFlags.Testnet {
numNets++
networkFlags.ActiveNetParams = &dagconfig.TestnetParams
}
if networkFlags.RegressionTest {
numNets++
networkFlags.ActiveNetParams = &dagconfig.RegressionNetParams
}
if networkFlags.Simnet {
numNets++
networkFlags.ActiveNetParams = &dagconfig.SimnetParams
}
if networkFlags.Devnet {
numNets++
networkFlags.ActiveNetParams = &dagconfig.DevnetParams
}
if numNets > 1 {
message := "Multiple networks parameters (testnet, simnet, devnet, etc.) cannot be used" +
"together. Please choose only one network"
err := errors.Errorf(message)
fmt.Fprintln(os.Stderr, err)
parser.WriteHelp(os.Stderr)
return err
}
if numNets == 0 {
message := "Mainnet has not launched yet, use --testnet to run in testnet mode"
err := errors.Errorf(message)
fmt.Fprintln(os.Stderr, err)
return err
}
return nil
}
// NetParams returns the ActiveNetParams
func (networkFlags *NetworkFlags) NetParams() *dagconfig.Params {
return networkFlags.ActiveNetParams
}