params

package
v0.0.0-...-953790c Latest Latest
Warning

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

Go to latest
Published: Jan 11, 2018 License: MPL-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

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"

	// 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 any type of RPC (HTTP, IPC, in-proc)
	APIModules = "db,eth,net,web3,shh,personal,admin"

	// WSHost is a host interface for the websocket RPC server
	WSHost = "localhost"

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

	// WSPort is a WS-RPC port (replaced in unit tests)
	WSPort = 8546

	// 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
)
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

	// VersionMeta is metadata to append to the version string
	VersionMeta = "unstable"
)

Variables

View Source
var (
	UseMainnetFlag = "false" // to be overridden via -ldflags '-X geth/params.UseMainnetFlag'
	UseMainnet     = false
)

default node configuration options

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")
	ErrNoIdentityFileValueSet     = errors.New("identity file path not set")
	ErrEmptyIdentityFile          = errors.New("identity file cannot be empty")
	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.

Functions

func NewValidator

func NewValidator() *validator.Validate

NewValidator returns a new validator.Validate.

Types

type BootClusterConfig

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

	// RootNumber CHT root number
	RootNumber int

	// RootHash is hash of CHT root for a given root number
	RootHash string

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

BootClusterConfig holds configuration for supporting boot cluster, 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 (*BootClusterConfig) String

func (c *BootClusterConfig) 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 NodeConfig

type NodeConfig struct {
	// DevMode is true when given configuration is to be used during development.
	// For production, this flag should be turned off, so that more strict requirements
	// are applied to node's configuration
	DevMode bool

	// 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

	// PrivateKeyFile 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

	// ListenAddr is an IP address and port of this node (e.g. 127.0.0.1:30303).
	ListenAddr 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

	// WSHost is a host interface for the WebSocket RPC server
	WSHost string

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

	// WSEnabled specifies whether WS-RPC Server is enabled or not
	WSEnabled bool

	// 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

	// 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"`

	// BootClusterConfig extra configuration for supporting cluster
	BootClusterConfig *BootClusterConfig `json:"BootClusterConfig," 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"`
}

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 string, networkID uint64, devMode bool) (*NodeConfig, error)

NewNodeConfig creates new node configuration object

func (*NodeConfig) DefaultStatusChainGenesisBlock

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

DefaultStatusChainGenesisBlock returns the StatusChain network genesis block.

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

	// IdentityFile path to private key, that will be loaded as identity into Whisper.
	// Currently, it's used by Push Notification service.
	IdentityFile string

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

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

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

	// EnablePushNotification is mode when node is capable of sending Push (and probably other kinds) Notifications
	EnablePushNotification 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

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

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

WhisperConfig holds SHH-related configuration

func (*WhisperConfig) ReadIdentityFile

func (c *WhisperConfig) ReadIdentityFile() (*ecdsa.PrivateKey, error)

ReadIdentityFile reads and loads identity private key

func (*WhisperConfig) ReadPasswordFile

func (c *WhisperConfig) ReadPasswordFile() error

ReadPasswordFile 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