Documentation
¶
Index ¶
Constants ¶
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,debug" // 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 )
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 ¶
var ( UseMainnetFlag = "false" // to be overridden via -ldflags '-X geth/params.UseMainnetFlag' UseMainnet = false )
default node configuration options
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
var Version = fmt.Sprintf("%d.%d.%d-%s", VersionMajor, VersionMinor, VersionPatch, VersionMeta)
Version exposes string representation of program version.
Functions ¶
func NewValidator ¶
NewValidator returns a new validator.Validate.
Types ¶
type BootClusterConfig ¶
type BootClusterConfig struct {
// Enabled flag specifies whether feature is enabled
Enabled bool
// 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
// Discovery set to true will enabled discovery protocol.
Discovery bool
// 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) 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
// 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
// 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
// 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) 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