Documentation ¶
Index ¶
- Constants
- Variables
- func LesTopic(netid int) string
- func NewValidator() *validator.Validate
- type BrowsersConfig
- type Cluster
- type ClusterConfig
- type DatabaseConfig
- type IncentivisationConfig
- type LightEthConfig
- type Limits
- type MailserversConfig
- type NodeConfig
- func NewConfigFromJSON(configJSON string) (*NodeConfig, error)
- func NewNodeConfig(dataDir string, networkID uint64) (*NodeConfig, error)
- func NewNodeConfigWithDefaults(dataDir string, networkID uint64, opts ...Option) (*NodeConfig, error)
- func NewNodeConfigWithDefaultsAndFiles(dataDir string, networkID uint64, opts []Option, files []string) (*NodeConfig, error)
- type Option
- type PGConfig
- type PermissionsConfig
- type ShhextConfig
- type SwarmConfig
- type UpstreamRPCConfig
- type WakuConfig
- type WalletConfig
- type WhisperConfig
Constants ¶
const ( FleetUndefined = "" FleetBeta = "eth.beta" FleetStaging = "eth.staging" )
Define available fleets.
const ( // StatusDatabase path relative to DataDir. StatusDatabase = "status-db" // 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" // DefaultGas default amount of gas used for transactions DefaultGas = 180000 // 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 // WakuMinimumPoW amount of work for Whisper message to be added to sending queue WakuMinimumPoW = 0.001 // WakuTTL is time to live for messages, in seconds WakuTTL = 120 // 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" // GoerliEthereumNetworkURL is an open RPC endpoint to Goerli network // Other RPC endpoints are available here: http://goerli.blockscout.com/ GoerliEthereumNetworkURL = "http://goerli.blockscout.com/" // 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 // GoerliNetworkID is id of goerli test network (PoA) GoerliNetworkID = 5 // 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") // MailServerDiscv5Topic used to register and search for mail server peers using discovery v5. MailServerDiscv5Topic = discv5.Topic("whispermail") // LESDiscoveryIdentifier is a prefix for topic used for LES peers discovery. LESDiscoveryIdentifier = "LES2@" )
Variables ¶
var ( // WhisperDiscv5Limits declares min and max limits for peers with whisper topic. WhisperDiscv5Limits = Limits{2, 2} // LesDiscoveryLimits default limits used if LES and discovery are enabled. LesDiscoveryLimits = Limits{2, 2} )
var GitCommit string
GitCommit is a commit hash.
var Version string
Version is defined in VERSION file. We set it in loadNodeConfig() in api/backend.go.
Functions ¶
func LesTopic ¶ added in v0.13.0
LesTopic returns discovery v5 topic derived from genesis of the provided network. 1 - mainnet, 3 - ropsten, 4 - rinkeby
func NewValidator ¶
func NewValidator() *validator.Validate
NewValidator returns a new validator.Validate.
Types ¶
type BrowsersConfig ¶ added in v0.35.0
type BrowsersConfig struct {
Enabled bool
}
BrowsersConfig extra configuration for browsers.Service.
type Cluster ¶ added in v0.12.0
type Cluster struct { 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.
type ClusterConfig ¶
type ClusterConfig struct { // Enabled flag specifies that nodes in this configuration are taken into account. Enabled bool // Fleet is a name of a selected fleet. If it has a value, nodes are loaded // from a file, namely `fleet-*.{{ .Fleet }}.json`. Nodes can be added to any list // in `ClusterConfig`. Fleet string // StaticNodes is a list of static nodes. StaticNodes []string // BootNodes is a list of bootnodes. BootNodes []string // TrustedMailServers is a list of verified and trusted Mail Server nodes. TrustedMailServers []string // RendezvousNodes is a list rendezvous discovery nodes. 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 DatabaseConfig ¶ added in v0.35.0
type DatabaseConfig struct {
PGConfig PGConfig
}
type IncentivisationConfig ¶ added in v0.35.0
type IncentivisationConfig struct { // Enabled flag specifies whether protocol is enabled Enabled bool `validate:"required"` // Endpoint for the RPC calls RPCEndpoint string `validate:"required"` // Contract address ContractAddress string `validate:"required"` // IP address that is used IP string `validate:"required"` // Port Port uint16 `validate:"required"` }
IncentivisationConfig holds incentivisation-related configuration
func (*IncentivisationConfig) String ¶ added in v0.35.0
func (c *IncentivisationConfig) String() string
String dumps config object as nicely indented JSON
type LightEthConfig ¶
type LightEthConfig struct { // Enabled flag specifies whether protocol is enabled Enabled bool // DatabaseCache is memory (in MBs) allocated to internal caching (min 16MB / database forced) DatabaseCache int // TrustedNodes is a list of trusted servers TrustedNodes []string //MinTrustedFraction is minimum percentage of connected trusted servers to validate header(1-100) MinTrustedFraction int }
LightEthConfig holds LES-related configuration Status nodes are always lightweight clients (due to mobile platform constraints)
type MailserversConfig ¶ added in v0.35.0
type MailserversConfig struct {
Enabled bool
}
MailserversConfig extra configuration for mailservers.Service.
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. KeyStoreDir string `validate:"required"` // NodeKey is the hex-encoded node ID (private key). Should be a valid secp256k1 private key that will be used for both // remote peer identification as well as network traffic encryption. NodeKey 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 // HTTPEnabled specifies whether the http RPC server is to be enabled by default. HTTPEnabled bool // 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 // HTTPPort is the TCP port number on which to start the Geth's HTTP RPC server. HTTPPort int // HTTPVirtualHosts is the list of virtual hostnames which are allowed on incoming requests. // This is by default {'localhost'}. Using this prevents attacks like // DNS rebinding, which bypasses SOP by simply masquerading as being within the same // origin. These attacks do not utilize CORS, since they are not cross-domain. // By explicitly checking the Host-header, the server will not allow requests // made against the server with a malicious host domain. // Requests using an IP address directly are not affected. HTTPVirtualHosts []string // HTTPCors is the Cross-Origin Resource Sharing header to send to requesting // clients. Please be aware that CORS is a browser enforced security, it's fully // useless for custom HTTP clients. HTTPCors []string // IPCEnabled specifies whether IPC-RPC Server is enabled or not IPCEnabled bool // IPCFile is filename of exposed IPC RPC Server IPCFile string // 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"` // LogMobileSystem enables log redirection to android/ios system logger. LogMobileSystem bool // LogFile is a folder which contains LogFile LogDir string // 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"` // LogMaxBackups defines number of rotated log files that will be stored. LogMaxBackups int // LogMaxSize in megabytes after current size is reached log file will be rotated. LogMaxSize int // LogCompressRotated if true all rotated files will be gzipped. LogCompressRotated bool // LogToStderr defines whether logged info should also be output to os.Stderr LogToStderr bool // EnableStatusService should be true to enable methods under status namespace. EnableStatusService bool // EnableNTPSync enables NTP synchronizations EnableNTPSync bool // UpstreamConfig extra config for providing upstream infura server. UpstreamConfig UpstreamRPCConfig `json:"UpstreamConfig"` // 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"` // WakuConfig provides a configuration for Waku subprotocol. WakuConfig WakuConfig `json:"WakuConfig" validate:"structonly"` // IncentivisationConfig extra configuration for incentivisation service IncentivisationConfig IncentivisationConfig `json:"IncentivisationConfig," validate:"structonly"` // ShhextConfig extra configuration for service running under shhext namespace. ShhextConfig ShhextConfig `json:"ShhextConfig," validate:"structonly"` // WalletConfig extra configuration for wallet.Service. WalletConfig WalletConfig // BrowsersConfig extra configuration for browsers.Service. BrowsersConfig BrowsersConfig // PermissionsConfig extra configuration for permissions.Service. PermissionsConfig PermissionsConfig // MailserversConfig extra configuration for mailservers.Service // (persistent storage of user's mailserver records). MailserversConfig MailserversConfig // 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"` // MailServerRegistryAddress is the MailServerRegistry contract address MailServerRegistryAddress string // contains filtered or unexported fields }
NodeConfig stores configuration options for a node
func NewConfigFromJSON ¶ added in v0.15.0
func NewConfigFromJSON(configJSON string) (*NodeConfig, error)
NewConfigFromJSON parses incoming JSON and returned it as Config
func NewNodeConfig ¶
func NewNodeConfig(dataDir string, networkID uint64) (*NodeConfig, error)
NewNodeConfig creates new node configuration object with bare-minimum defaults. Important: the returned config is not validated.
func NewNodeConfigWithDefaults ¶ added in v0.15.0
func NewNodeConfigWithDefaults(dataDir string, networkID uint64, opts ...Option) (*NodeConfig, error)
NewNodeConfigWithDefaults creates new node configuration object with some defaults suitable for adhoc use.
func NewNodeConfigWithDefaultsAndFiles ¶ added in v0.15.1
func NewNodeConfigWithDefaultsAndFiles( dataDir string, networkID uint64, opts []Option, files []string, ) (*NodeConfig, error)
NewNodeConfigWithDefaultsAndFiles creates new node configuration object with some defaults suitable for adhoc use and applies config files on top.
func (*NodeConfig) AddAPIModule ¶
func (c *NodeConfig) AddAPIModule(m string)
AddAPIModule adds a mobule to APIModules
func (*NodeConfig) FormatAPIModules ¶
func (c *NodeConfig) FormatAPIModules() []string
FormatAPIModules returns a slice of APIModules.
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 Option ¶ added in v0.15.1
type Option func(*NodeConfig) error
Option is an additional setting when creating a NodeConfig using NewNodeConfigWithDefaults.
func WithMailserver ¶ added in v0.15.1
func WithMailserver() Option
WithMailserver enables MailServer.
type PermissionsConfig ¶ added in v0.35.0
type PermissionsConfig struct {
Enabled bool
}
PermissionsConfig extra configuration for permissions.Service.
type ShhextConfig ¶ added in v0.35.0
type ShhextConfig struct { PFSEnabled bool // BackupDisabledDataDir is the file system folder the node should use for any data storage needs that it doesn't want backed up. BackupDisabledDataDir string // InstallationId id of the current installation InstallationID string // MailServerConfirmations should be true if client wants to receive confirmatons only from a selected mail servers. MailServerConfirmations bool // EnableConnectionManager turns on management of the mail server connections if true. EnableConnectionManager bool // EnableLastUsedMonitor guarantees that last used mail server will be tracked and persisted into the storage. EnableLastUsedMonitor bool // ConnectionTarget will be used by connection manager. It will ensure that we connected with configured number of servers. ConnectionTarget int // RequestsDelay used to ensure that no similar requests are sent within short periods of time. RequestsDelay time.Duration // MaxServerFailures defines maximum allowed expired requests before server will be swapped to another one. MaxServerFailures int // MaxMessageDeliveryAttempts defines how many times we will try to deliver not-acknowledged envelopes. MaxMessageDeliveryAttempts int // WhisperCacheDir is a folder where whisper filters may persist messages before delivering them // to a client. WhisperCacheDir string // DisableGenericDiscoveryTopic indicates whether we should be listening on the old discovery DisableGenericDiscoveryTopic bool // SendV1Messages indicates whether we should be sending v1-compatible only messages SendV1Messages bool // DatasyncEnabled indicates whether we should enable dataasync DataSyncEnabled bool // VerifyTransactionURL is the URL for verifying transactions. // IMPORTANT: It should always be mainnet unless used for testing VerifyTransactionURL string // VerifyENSURL is the URL for verifying ens names. // IMPORTANT: It should always be mainnet unless used for testing VerifyENSURL string // VerifyENSContractAddress is the address of the contract used to verify ENS // No default is provided and if not set ENS resolution is disabled VerifyENSContractAddress string VerifyTransactionChainID int64 }
ShhextConfig defines options used by shhext service.
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 WakuConfig ¶ added in v0.39.0
type WakuConfig struct { // Enabled set to true enables Waku subprotocol. 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 // MailServerPassword for symmetric encryption of whisper message history requests. // (if no account file selected, then this password is used for symmetric encryption). MailServerPassword string // MailServerRateLimit minimum time between queries to mail server per peer. MailServerRateLimit int // MailServerDataRetention is a number of days data should be stored by MailServer. MailServerDataRetention int // TTL time to live for messages, in seconds TTL int // MaxMessageSize is a maximum size of a devp2p packet handled by the Whisper protocol, // not only the size of envelopes sent in that packet. MaxMessageSize uint32 // DatabaseConfig is configuration for which data store we use. DatabaseConfig DatabaseConfig // EnableRateLimiter set to true enables IP and peer ID rate limiting. EnableRateLimiter bool // RateLimitIP sets the limit on the number of messages per second // from a given IP. RateLimitIP int64 // RateLimitPeerID sets the limit on the number of messages per second // from a given peer ID. RateLimitPeerID int64 // RateLimitTolerance is a number of how many a limit must be exceeded // in order to drop a peer. // If equal to 0, the peers are never dropped. RateLimitTolerance int64 }
WakuConfig provides a configuration for Waku service.
type WalletConfig ¶ added in v0.35.0
type WalletConfig struct {
Enabled bool
}
WalletConfig extra configuration for wallet.Service.
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 // MailServerPassword for symmetric encryption of whisper message history requests. // (if no account file selected, then this password is used for symmetric encryption). MailServerPassword string // MailServerAsymKey is an hex-encoded asymmetric key to decrypt messages sent to MailServer. MailServerAsymKey string // MailServerRateLimit minimum time between queries to mail server per peer. MailServerRateLimit int // MailServerDataRetention is a number of days data should be stored by MailServer. MailServerDataRetention int // TTL time to live for messages, in seconds TTL int // MaxMessageSize is a maximum size of a devp2p packet handled by the Whisper protocol, // not only the size of envelopes sent in that packet. MaxMessageSize uint32 // DatabaseConfig is configuration for which datastore we use DatabaseConfig DatabaseConfig // EnableRateLimiter set to true enables IP and peer ID rate limiting. EnableRateLimiter bool // RateLimitIP sets the limit on the number of messages per second // from a given IP. RateLimitIP int64 // RateLimitPeerID sets the limit on the number of messages per second // from a given peer ID. RateLimitPeerID int64 // RateLimitTolerance is a number of how many a limit must be exceeded // in order to drop a peer. // If equal to 0, the peers are never dropped. RateLimitTolerance int64 }
WhisperConfig holds SHH-related configuration
func (*WhisperConfig) String ¶
func (c *WhisperConfig) String() string
String dumps config object as nicely indented JSON