params

package
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2018 License: MPL-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FleetUndefined = ""
	FleetBeta      = "eth.beta"
	FleetStaging   = "eth.staging"
)

Define available fleets.

View Source
const (
	// ClientIdentifier is client identifier to advertise over the network
	ClientIdentifier = "StatusIM"

	// DataDir is default data directory used by statusd executable
	DataDir = "statusd-data"

	// StatusDatabase path relative to DataDir.
	StatusDatabase = "status-db"

	// KeyStoreDir is default directory where private keys are stored, relative to DataDir
	KeyStoreDir = "keystore"

	// IPCFile is filename of exposed IPC RPC Server
	IPCFile = "geth.ipc"

	// RPCEnabledDefault is the default state of whether the http rpc server is supposed
	// to be started along with a node.
	RPCEnabledDefault = false

	// HTTPHost is host interface for the HTTP RPC server
	HTTPHost = "localhost"

	// HTTPPort is HTTP RPC port (replaced in unit tests)
	HTTPPort = 8545

	// ListenAddr is an IP address and port of this node (e.g. 127.0.0.1:30303).
	ListenAddr = ":0"

	// APIModules is a list of modules to expose via HTTP and `CallRPC()` binding.
	// We also expose all handlers registered with `rpc.Client.RegisterHandler` to `CallRPC()` binding.
	APIModules = "eth,net,web3,peer"

	// SendTransactionMethodName defines the name for a giving transaction.
	SendTransactionMethodName = "eth_sendTransaction"

	// AccountsMethodName defines the name for listing the currently signed accounts.
	AccountsMethodName = "eth_accounts"

	// PersonalSignMethodName defines the name for `personal.sign` API.
	PersonalSignMethodName = "personal_sign"

	// PersonalRecoverMethodName defines the name for `personal.recover` API.
	PersonalRecoverMethodName = "personal_ecRecover"

	// MaxPeers is the maximum number of global peers
	MaxPeers = 25

	// MaxPendingPeers is the maximum number of peers that can be pending in the
	// handshake phase, counted separately for inbound and outbound connections.
	MaxPendingPeers = 0

	// DefaultGas default amount of gas used for transactions
	DefaultGas = 180000

	// DefaultFileDescriptorLimit is fd limit that database can use
	DefaultFileDescriptorLimit = uint64(2048)

	// DatabaseCache is memory (in MBs) allocated to internal caching (min 16MB / database forced)
	DatabaseCache = 16

	// LogFile defines where to write logs to
	LogFile = ""

	// LogLevel defines the minimum log level to report
	LogLevel = "ERROR"

	// LogLevelSuccinct defines the log level when only errors are reported.
	// Useful when the default INFO level becomes too verbose.
	LogLevelSuccinct = "ERROR"

	// LogToStderr defines whether logged info should also be output to os.Stderr
	LogToStderr = true

	// WhisperDataDir is directory where Whisper data is stored, relative to DataDir
	WhisperDataDir = "wnode"

	// WhisperMinimumPoW amount of work for Whisper message to be added to sending queue
	WhisperMinimumPoW = 0.001

	// WhisperTTL is time to live for messages, in seconds
	WhisperTTL = 120

	// FirebaseNotificationTriggerURL is URL where FCM notification requests are sent to
	FirebaseNotificationTriggerURL = "https://fcm.googleapis.com/fcm/send"

	// MainnetEthereumNetworkURL is URL where the upstream ethereum network is loaded to
	// allow us avoid syncing node.
	MainnetEthereumNetworkURL = "https://mainnet.infura.io/nKmXgiFgc2KqtoQ8BCGJ"

	// RopstenEthereumNetworkURL is URL where the upstream ethereum network is loaded to
	// allow us avoid syncing node.
	RopstenEthereumNetworkURL = "https://ropsten.infura.io/nKmXgiFgc2KqtoQ8BCGJ"

	// RinkebyEthereumNetworkURL is URL where the upstream ethereum network is loaded to
	// allow us avoid syncing node.
	RinkebyEthereumNetworkURL = "https://rinkeby.infura.io/nKmXgiFgc2KqtoQ8BCGJ"

	// MainNetworkID is id of the main network
	MainNetworkID = 1

	// RopstenNetworkID is id of a test network (on PoW)
	RopstenNetworkID = 3

	// RinkebyNetworkID is id of a test network (on PoA)
	RinkebyNetworkID = 4

	// StatusChainNetworkID is id of a test network (private chain)
	StatusChainNetworkID = 777

	// WhisperDiscv5Topic used to register and search for whisper peers using discovery v5.
	WhisperDiscv5Topic = discv5.Topic("whisper")
)
View Source
const (
	// VersionMajor is a major version component of the current release
	VersionMajor = 0

	// VersionMinor is a minor version component of the current release
	VersionMinor = 9

	// VersionPatch is a patch version component of the current release
	VersionPatch = 9
)

Variables

View Source
var (
	ErrMissingDataDir             = errors.New("missing required 'DataDir' parameter")
	ErrMissingNetworkID           = errors.New("missing required 'NetworkID' parameter")
	ErrEmptyPasswordFile          = errors.New("password file cannot be empty")
	ErrNoPasswordFileValueSet     = errors.New("password file path not set")
	ErrEmptyAuthorizationKeyFile  = errors.New("authorization key file cannot be empty")
	ErrAuthorizationKeyFileNotSet = errors.New("authorization key file is not set")
)

errors

Version exposes string representation of program version.

View Source
var VersionMeta string // rely on linker: -ldflags -X github.com/status-im/status-go/params.VersionMeta"

VersionMeta is metadata to append to the version string

View Source
var (
	// WhisperDiscv5Limits declares min and max limits for peers with whisper topic.
	WhisperDiscv5Limits = Limits{2, 2}
)

Functions

func GetStatusHome added in v0.12.0

func GetStatusHome() string

GetStatusHome gets home directory of status-go

func NewValidator

func NewValidator() *validator.Validate

NewValidator returns a new validator.Validate.

Types

type Cluster added in v0.12.0

type Cluster struct {
	NetworkID       int      `json:"networkID"`
	StaticNodes     []string `json:"staticnodes"`
	BootNodes       []string `json:"bootnodes"`
	MailServers     []string `json:"mailservers"` // list of trusted mail servers
	RendezvousNodes []string `json:"rendezvousnodes"`
}

Cluster defines a list of Ethereum nodes.

func ClusterForFleet added in v0.12.0

func ClusterForFleet(fleet string) ([]Cluster, error)

ClusterForFleet returns a cluster for a given fleet.

func ClusterForNetwork added in v0.12.0

func ClusterForNetwork(clusters []Cluster, networkID int) (Cluster, bool)

ClusterForNetwork selects a cluster for a given network ID.

type ClusterConfig

type ClusterConfig struct {
	// Enabled flag specifies whether feature is enabled
	Enabled bool

	// Fleet is a type of selected fleet.
	Fleet string

	// StaticNodes lists the static nodes taken from compiled or passed cluster.json
	StaticNodes []string

	// BootNodes list of cluster peer nodes for a given network (Mainnet, Ropsten, Rinkeby, Homestead),
	// for a given mode (production vs development)
	BootNodes []string

	// TrustedMailServers is a list of verified Mail Servers.
	TrustedMailServers []string

	// RendezvousNodes is a rendezvous discovery server.
	RendezvousNodes []string
}

ClusterConfig holds configuration for supporting cluster peers, which is a temporary means for mobile devices to get connected to Ethereum network (UDP-based discovery may not be available, so we need means to discover the network manually).

func (*ClusterConfig) String

func (c *ClusterConfig) String() string

String dumps config object as nicely indented JSON

type FirebaseConfig

type FirebaseConfig struct {
	// AuthorizationKeyFile file path that contains FCM authorization key
	AuthorizationKeyFile string

	// NotificationTriggerURL URL used to send push notification requests to
	NotificationTriggerURL string
}

FirebaseConfig holds FCM-related configuration

func (*FirebaseConfig) ReadAuthorizationKeyFile

func (c *FirebaseConfig) ReadAuthorizationKeyFile() ([]byte, error)

ReadAuthorizationKeyFile reads and loads FCM authorization key

type LightEthConfig

type LightEthConfig struct {
	// Enabled flag specifies whether protocol is enabled
	Enabled bool

	// Genesis is JSON to seed the chain database with
	Genesis string

	// DatabaseCache is memory (in MBs) allocated to internal caching (min 16MB / database forced)
	DatabaseCache int
}

LightEthConfig holds LES-related configuration Status nodes are always lightweight clients (due to mobile platform constraints)

type Limits

type Limits struct {
	Min, Max int
}

Limits represent min and max amount of peers

func NewLimits

func NewLimits(min, max int) Limits

NewLimits creates new Limits config with given min and max values.

type NodeConfig

type NodeConfig struct {
	// NetworkID sets network to use for selecting peers to connect to
	NetworkID uint64 `json:"NetworkId" validate:"required"`

	// DataDir is the file system folder the node should use for any data storage needs.
	DataDir string `validate:"required"`

	// KeyStoreDir is the file system folder that contains private keys.
	// If KeyStoreDir is empty, the default location is the "keystore" subdirectory of DataDir.
	KeyStoreDir string

	// NodeKeyFile is a filename with node ID (private key)
	// This file should contain a valid secp256k1 private key that will be used for both
	// remote peer identification as well as network traffic encryption.
	NodeKeyFile string

	// NoDiscovery set to true will disable discovery protocol.
	NoDiscovery bool

	// Rendezvous enables discovery protocol.
	Rendezvous bool

	// ListenAddr is an IP address and port of this node (e.g. 127.0.0.1:30303).
	ListenAddr string

	// AdvertiseAddr is a public IP address the node wants to be found with.
	// It is especially useful when using floating IPs attached to a server.
	AdvertiseAddr string

	// Name sets the instance name of the node. It must not contain the / character.
	Name string `validate:"excludes=/"`

	// Version exposes program's version. It is used in the devp2p node identifier.
	Version string

	// APIModules is a comma-separated list of API modules exposed via *any* (HTTP/WS/IPC) RPC interface.
	APIModules string

	// HTTPHost is the host interface on which to start the HTTP RPC server.
	// Pass empty string if no HTTP RPC interface needs to be started.
	HTTPHost string

	// RPCEnabled specifies whether the http RPC server is to be enabled by default.
	RPCEnabled bool

	// HTTPPort is the TCP port number on which to start the Geth's HTTP RPC server.
	HTTPPort int

	// IPCFile is filename of exposed IPC RPC Server
	IPCFile string

	// IPCEnabled specifies whether IPC-RPC Server is enabled or not
	IPCEnabled bool

	// TLSEnabled specifies whether TLS support should be enabled on node or not
	// TLS support is only planned in go-ethereum, so we are using our own patch.
	TLSEnabled bool

	// MaxPeers is the maximum number of (global) peers that can be connected.
	// Set to zero, if only static or trusted peers are allowed to connect.
	MaxPeers int

	// MaxPendingPeers is the maximum number of peers that can be pending in the
	// handshake phase, counted separately for inbound and outbound connections.
	MaxPendingPeers int

	// LogEnabled enables the logger
	LogEnabled bool `json:"LogEnabled"`

	// LogFile is filename where exposed logs get written to
	LogFile string

	// LogLevel defines minimum log level. Valid names are "ERROR", "WARN", "INFO", "DEBUG", and "TRACE".
	LogLevel string `validate:"eq=ERROR|eq=WARN|eq=INFO|eq=DEBUG|eq=TRACE"`

	// LogToStderr defines whether logged info should also be output to os.Stderr
	LogToStderr bool

	// UpstreamConfig extra config for providing upstream infura server.
	UpstreamConfig UpstreamRPCConfig `json:"UpstreamConfig"`

	// ClusterConfigFile contains the file name of the cluster configuration. If
	// empty the statical configuration data will be taken.
	ClusterConfigFile string `json:"ClusterConfigFile"`

	// ClusterConfig extra configuration for supporting cluster peers.
	ClusterConfig *ClusterConfig `json:"ClusterConfig," validate:"structonly"`

	// LightEthConfig extra configuration for LES
	LightEthConfig *LightEthConfig `json:"LightEthConfig," validate:"structonly"`

	// WhisperConfig extra configuration for SHH
	WhisperConfig *WhisperConfig `json:"WhisperConfig," validate:"structonly"`

	// SwarmConfig extra configuration for Swarm and ENS
	SwarmConfig *SwarmConfig `json:"SwarmConfig," validate:"structonly"`

	// RegisterTopics a list of specific topics where the peer wants to be
	// discoverable.
	RegisterTopics []discv5.Topic `json:"RegisterTopics"`

	// RequiredTopics list of topics where a client wants to search for
	// discoverable peers with the discovery limits.
	RequireTopics map[discv5.Topic]Limits `json:"RequireTopics"`

	// StatusServiceEnabled enables status service api
	StatusServiceEnabled bool

	// DebugAPIEnabled enables debug api
	DebugAPIEnabled bool

	// MailServerRegistryAddress is the MailServerRegistry contract address
	MailServerRegistryAddress string
	// contains filtered or unexported fields
}

NodeConfig stores configuration options for a node

func LoadNodeConfig

func LoadNodeConfig(configJSON string) (*NodeConfig, error)

LoadNodeConfig parses incoming JSON and returned it as Config

func NewNodeConfig

func NewNodeConfig(dataDir, clstrCfgFile, fleet string, networkID uint64) (*NodeConfig, error)

NewNodeConfig creates new node configuration object

func (*NodeConfig) AddAPIModule

func (c *NodeConfig) AddAPIModule(m string)

AddAPIModule adds a mobule to APIModules

func (*NodeConfig) DefaultStatusChainGenesisBlock

func (c *NodeConfig) DefaultStatusChainGenesisBlock() (*core.Genesis, error)

DefaultStatusChainGenesisBlock returns the StatusChain network genesis block.

func (*NodeConfig) FormatAPIModules

func (c *NodeConfig) FormatAPIModules() []string

FormatAPIModules returns a slice of APIModules.

func (*NodeConfig) Save

func (c *NodeConfig) Save() error

Save dumps configuration to the disk

func (*NodeConfig) String

func (c *NodeConfig) String() string

String dumps config object as nicely indented JSON

func (*NodeConfig) Validate

func (c *NodeConfig) Validate() error

Validate checks if NodeConfig fields have valid values.

It returns nil if there are no errors, otherwise one or more errors can be returned. Multiple errors are joined with a new line.

A single error for a struct:

type TestStruct struct {
    TestField string `validate:"required"`
}

has the following format:

Key: 'TestStruct.TestField' Error:Field validation for 'TestField' failed on the 'required' tag

type SwarmConfig

type SwarmConfig struct {
	// Enabled flag specifies whether protocol is enabled
	Enabled bool
}

SwarmConfig holds Swarm-related configuration

func (*SwarmConfig) String

func (c *SwarmConfig) String() string

String dumps config object as nicely indented JSON

type UpstreamRPCConfig

type UpstreamRPCConfig struct {
	// Enabled flag specifies whether feature is enabled
	Enabled bool

	// URL sets the rpc upstream host address for communication with
	// a non-local infura endpoint.
	URL string
}

UpstreamRPCConfig stores configuration for upstream rpc connection.

type WhisperConfig

type WhisperConfig struct {
	// Enabled flag specifies whether protocol is enabled
	Enabled bool

	// LightClient should be true if the node should start with an empty bloom filter and not forward messages from other nodes
	LightClient bool

	// EnableMailServer is mode when node is capable of delivering expired messages on demand
	EnableMailServer bool

	// DataDir is the file system folder Whisper should use for any data storage needs.
	// For instance, MailServer will use this directory to store its data.
	DataDir string

	// MinimumPoW minimum PoW for Whisper messages
	MinimumPoW float64

	// MailServerPasswordFile contains a password for symmetric encryption with MailServer.
	MailServerPasswordFile string

	// MailServerPassword for symmetric encryption with MailServer.
	// (if no account file selected, then this password is used for symmetric encryption).
	MailServerPassword string

	// MailServerAsymKeyFile is a file with an asymmetric key to decrypt messages sent to MailServer.
	MailServerAsymKeyFile string

	// MailServerAsymKey is an asymmetric key to decrypt messages sent to MailServer.
	MailServerAsymKey *ecdsa.PrivateKey

	// RateLimit minimum time between queries to mail server per peer
	MailServerRateLimit int

	// MailServerCleanupPeriod time in seconds to wait to run mail server cleanup
	MailServerCleanupPeriod int

	// TTL time to live for messages, in seconds
	TTL int

	// FirebaseConfig extra configuration for Firebase Cloud Messaging
	FirebaseConfig *FirebaseConfig `json:"FirebaseConfig,"`

	// EnableNTPSync enables NTP synchronizations
	EnableNTPSync bool
}

WhisperConfig holds SHH-related configuration

func (*WhisperConfig) ReadMailServerAsymKeyFile

func (c *WhisperConfig) ReadMailServerAsymKeyFile() (err error)

ReadMailServerAsymKeyFile reads and returns a private key from a given file.

func (*WhisperConfig) ReadMailServerPasswordFile

func (c *WhisperConfig) ReadMailServerPasswordFile() error

ReadMailServerPasswordFile reads and returns content of the password file

func (*WhisperConfig) String

func (c *WhisperConfig) String() string

String dumps config object as nicely indented JSON

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL