mirror of
https://github.com/LBRYFoundation/lbcd.git
synced 2025-08-23 17:47:24 +00:00
btcctl: add regtest mode to btcctl
This commit is contained in:
parent
b298415583
commit
b470eee477
1 changed files with 47 additions and 25 deletions
|
@ -14,6 +14,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/btcjson"
|
"github.com/btcsuite/btcd/btcjson"
|
||||||
|
"github.com/btcsuite/btcd/chaincfg"
|
||||||
"github.com/btcsuite/btcutil"
|
"github.com/btcsuite/btcutil"
|
||||||
flags "github.com/jessevdk/go-flags"
|
flags "github.com/jessevdk/go-flags"
|
||||||
)
|
)
|
||||||
|
@ -98,6 +99,7 @@ type config struct {
|
||||||
Proxy string `long:"proxy" description:"Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)"`
|
Proxy string `long:"proxy" description:"Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)"`
|
||||||
ProxyPass string `long:"proxypass" default-mask:"-" description:"Password for proxy server"`
|
ProxyPass string `long:"proxypass" default-mask:"-" description:"Password for proxy server"`
|
||||||
ProxyUser string `long:"proxyuser" description:"Username for proxy server"`
|
ProxyUser string `long:"proxyuser" description:"Username for proxy server"`
|
||||||
|
RegressionTest bool `long:"regtest" description:"Connect to the regression test network"`
|
||||||
RPCCert string `short:"c" long:"rpccert" description:"RPC server certificate chain for validation"`
|
RPCCert string `short:"c" long:"rpccert" description:"RPC server certificate chain for validation"`
|
||||||
RPCPassword string `short:"P" long:"rpcpass" default-mask:"-" description:"RPC password"`
|
RPCPassword string `short:"P" long:"rpcpass" default-mask:"-" description:"RPC password"`
|
||||||
RPCServer string `short:"s" long:"rpcserver" description:"RPC server to connect to"`
|
RPCServer string `short:"s" long:"rpcserver" description:"RPC server to connect to"`
|
||||||
|
@ -111,23 +113,31 @@ type config struct {
|
||||||
|
|
||||||
// normalizeAddress returns addr with the passed default port appended if
|
// normalizeAddress returns addr with the passed default port appended if
|
||||||
// there is not already a port specified.
|
// there is not already a port specified.
|
||||||
func normalizeAddress(addr string, useTestNet3, useSimNet, useWallet bool) string {
|
func normalizeAddress(addr string, chain *chaincfg.Params, useWallet bool) (string, error) {
|
||||||
_, _, err := net.SplitHostPort(addr)
|
_, _, err := net.SplitHostPort(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
var defaultPort string
|
var defaultPort string
|
||||||
switch {
|
switch chain {
|
||||||
case useTestNet3:
|
case &chaincfg.TestNet3Params:
|
||||||
if useWallet {
|
if useWallet {
|
||||||
defaultPort = "18332"
|
defaultPort = "18332"
|
||||||
} else {
|
} else {
|
||||||
defaultPort = "18334"
|
defaultPort = "18334"
|
||||||
}
|
}
|
||||||
case useSimNet:
|
case &chaincfg.SimNetParams:
|
||||||
if useWallet {
|
if useWallet {
|
||||||
defaultPort = "18554"
|
defaultPort = "18554"
|
||||||
} else {
|
} else {
|
||||||
defaultPort = "18556"
|
defaultPort = "18556"
|
||||||
}
|
}
|
||||||
|
case &chaincfg.RegressionNetParams:
|
||||||
|
if useWallet {
|
||||||
|
// TODO: add port once regtest is supported in btcwallet
|
||||||
|
paramErr := fmt.Errorf("cannot use -wallet with -regtest, btcwallet not yet compatible with regtest")
|
||||||
|
return "", paramErr
|
||||||
|
} else {
|
||||||
|
defaultPort = "18334"
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
if useWallet {
|
if useWallet {
|
||||||
defaultPort = "8332"
|
defaultPort = "8332"
|
||||||
|
@ -136,9 +146,9 @@ func normalizeAddress(addr string, useTestNet3, useSimNet, useWallet bool) strin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return net.JoinHostPort(addr, defaultPort)
|
return net.JoinHostPort(addr, defaultPort), nil
|
||||||
}
|
}
|
||||||
return addr
|
return addr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// cleanAndExpandPath expands environement variables and leading ~ in the
|
// cleanAndExpandPath expands environement variables and leading ~ in the
|
||||||
|
@ -246,17 +256,27 @@ func loadConfig() (*config, []string, error) {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// default network is mainnet
|
||||||
|
network := &chaincfg.MainNetParams
|
||||||
|
|
||||||
// Multiple networks can't be selected simultaneously.
|
// Multiple networks can't be selected simultaneously.
|
||||||
numNets := 0
|
numNets := 0
|
||||||
if cfg.TestNet3 {
|
if cfg.TestNet3 {
|
||||||
numNets++
|
numNets++
|
||||||
|
network = &chaincfg.TestNet3Params
|
||||||
}
|
}
|
||||||
if cfg.SimNet {
|
if cfg.SimNet {
|
||||||
numNets++
|
numNets++
|
||||||
|
network = &chaincfg.SimNetParams
|
||||||
}
|
}
|
||||||
|
if cfg.RegressionTest {
|
||||||
|
numNets++
|
||||||
|
network = &chaincfg.RegressionNetParams
|
||||||
|
}
|
||||||
|
|
||||||
if numNets > 1 {
|
if numNets > 1 {
|
||||||
str := "%s: The testnet and simnet params can't be used " +
|
str := "%s: Multiple network params can't be used " +
|
||||||
"together -- choose one of the two"
|
"together -- choose one"
|
||||||
err := fmt.Errorf(str, "loadConfig")
|
err := fmt.Errorf(str, "loadConfig")
|
||||||
fmt.Fprintln(os.Stderr, err)
|
fmt.Fprintln(os.Stderr, err)
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
|
@ -273,8 +293,10 @@ func loadConfig() (*config, []string, error) {
|
||||||
|
|
||||||
// Add default port to RPC server based on --testnet and --wallet flags
|
// Add default port to RPC server based on --testnet and --wallet flags
|
||||||
// if needed.
|
// if needed.
|
||||||
cfg.RPCServer = normalizeAddress(cfg.RPCServer, cfg.TestNet3,
|
cfg.RPCServer, err = normalizeAddress(cfg.RPCServer, network, cfg.Wallet)
|
||||||
cfg.SimNet, cfg.Wallet)
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return &cfg, remainingArgs, nil
|
return &cfg, remainingArgs, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue