Documentation ¶
Overview ¶
Package config contains NeoGo node configuration definition.
Index ¶
- Constants
- Variables
- func IsHardforkValid(s string) bool
- type AnnounceableAddress
- type ApplicationConfiguration
- type BasicService
- type Blockchain
- type Config
- type Consensus
- type Hardfork
- type InternalService
- type Ledger
- type NeoFSConfiguration
- type OracleConfiguration
- type P2P
- type P2PNotary
- type ProtocolConfiguration
- func (p *ProtocolConfiguration) Equals(o *ProtocolConfiguration) bool
- func (p *ProtocolConfiguration) GetCommitteeSize(height uint32) int
- func (p *ProtocolConfiguration) GetNumOfCNs(height uint32) int
- func (p *ProtocolConfiguration) ShouldUpdateCommitteeAt(height uint32) bool
- func (p *ProtocolConfiguration) Validate() error
- type RPC
- type StateRoot
- type TLS
- type Wallet
Constants ¶
const ( // UserAgentWrapper is a string that user agent string should be wrapped into. UserAgentWrapper = "/" // UserAgentPrefix is a prefix used to generate user agent string. UserAgentPrefix = "NEO-GO:" // UserAgentFormat is a formatted string used to generate user agent string. UserAgentFormat = UserAgentWrapper + UserAgentPrefix + "%s" + UserAgentWrapper // DefaultMaxIteratorResultItems is the default upper bound of traversed // iterator items per JSON-RPC response. DefaultMaxIteratorResultItems = 100 )
Variables ¶
var Version string
Version is the version of the node, set at the build time.
Functions ¶
func IsHardforkValid ¶ added in v0.99.0
IsHardforkValid denotes whether the provided string represents a valid Hardfork name.
Types ¶
type AnnounceableAddress ¶ added in v0.100.0
AnnounceableAddress is a pair of node address in the form of "[host]:[port]" with optional corresponding announced port to be used in version exchange.
type ApplicationConfiguration ¶
type ApplicationConfiguration struct { Ledger `yaml:",inline"` // Deprecated: please, use Addresses field of P2P section instead, this field will be removed in future versions. Address *string `yaml:"Address,omitempty"` // Deprecated: please, use Addresses field of P2P section instead, this field will be removed in future versions. AnnouncedNodePort *uint16 `yaml:"AnnouncedPort,omitempty"` // Deprecated: this option is moved to the P2P section. AttemptConnPeers int `yaml:"AttemptConnPeers"` // BroadcastFactor is the factor (0-100) controlling gossip fan-out number optimization. // // Deprecated: this option is moved to the P2P section. BroadcastFactor int `yaml:"BroadcastFactor"` DBConfiguration dbconfig.DBConfiguration `yaml:"DBConfiguration"` // Deprecated: this option is moved to the P2P section. DialTimeout int64 `yaml:"DialTimeout"` LogLevel string `yaml:"LogLevel"` LogPath string `yaml:"LogPath"` // Deprecated: this option is moved to the P2P section. MaxPeers int `yaml:"MaxPeers"` // Deprecated: this option is moved to the P2P section. MinPeers int `yaml:"MinPeers"` // Deprecated: please, use Addresses field of P2P section instead, this field will be removed in future versions. NodePort *uint16 `yaml:"NodePort,omitempty"` P2P P2P `yaml:"P2P"` // Deprecated: this option is moved to the P2P section. PingInterval int64 `yaml:"PingInterval"` // Deprecated: this option is moved to the P2P section. PingTimeout int64 `yaml:"PingTimeout"` Pprof BasicService `yaml:"Pprof"` Prometheus BasicService `yaml:"Prometheus"` // Deprecated: this option is moved to the P2P section. ProtoTickInterval int64 `yaml:"ProtoTickInterval"` Relay bool `yaml:"Relay"` Consensus Consensus `yaml:"Consensus"` RPC RPC `yaml:"RPC"` UnlockWallet Wallet `yaml:"UnlockWallet"` Oracle OracleConfiguration `yaml:"Oracle"` P2PNotary P2PNotary `yaml:"P2PNotary"` StateRoot StateRoot `yaml:"StateRoot"` // ExtensiblePoolSize is the maximum amount of the extensible payloads from a single sender. // // Deprecated: this option is moved to the P2P section. ExtensiblePoolSize int `yaml:"ExtensiblePoolSize"` }
ApplicationConfiguration config specific to the node.
func (*ApplicationConfiguration) EqualsButServices ¶ added in v0.99.2
func (a *ApplicationConfiguration) EqualsButServices(o *ApplicationConfiguration) bool
EqualsButServices returns true when the o is the same as a except for services (Oracle, P2PNotary, Pprof, Prometheus, RPC, StateRoot and UnlockWallet sections) and LogLevel field.
func (*ApplicationConfiguration) GetAddresses ¶ added in v0.100.0
func (a *ApplicationConfiguration) GetAddresses() ([]AnnounceableAddress, error)
GetAddresses parses returns the list of AnnounceableAddress containing information gathered from both deprecated Address / NodePort / AnnouncedNodePort and newly created Addresses fields.
type BasicService ¶ added in v0.99.1
type BasicService struct { Enabled bool `yaml:"Enabled"` // Deprecated: please, use Addresses section instead. This field will be removed later. Address *string `yaml:"Address,omitempty"` // Deprecated: please, use Addresses section instead. This field will be removed later. Port *string `yaml:"Port,omitempty"` // Addresses holds the list of bind addresses in the form of "address:port". Addresses []string `yaml:"Addresses"` }
BasicService is used as a simple base for node services like Pprof, RPC or Prometheus monitoring.
func (BasicService) GetAddresses ¶ added in v0.100.0
func (s BasicService) GetAddresses() []string
GetAddresses returns the set of unique (in terms of raw strings) pairs host:port for the given basic service.
type Blockchain ¶ added in v0.100.0
type Blockchain struct { ProtocolConfiguration Ledger }
Blockchain is a set of settings for core.Blockchain to use, it includes protocol settings and local node-specific ones.
type Config ¶
type Config struct { ProtocolConfiguration ProtocolConfiguration `yaml:"ProtocolConfiguration"` ApplicationConfiguration ApplicationConfiguration `yaml:"ApplicationConfiguration"` }
Config top level struct representing the config for the node.
func LoadFile ¶ added in v0.90.0
LoadFile loads config from the provided path. It also applies backwards compatibility fixups if necessary.
func (Config) Blockchain ¶ added in v0.100.0
func (c Config) Blockchain() Blockchain
Blockchain generates a Blockchain configuration based on Protocol and Application settings.
func (Config) GenerateUserAgent ¶
GenerateUserAgent creates a user agent string based on the build time environment.
type Consensus ¶ added in v0.100.0
type Consensus InternalService
Consensus contains consensus service configuration.
type Hardfork ¶ added in v0.99.0
type Hardfork byte
Hardfork represents the application hard-fork identifier.
const ( // HFAspidochelone represents hard-fork introduced in #2469 (ported from // https://github.com/neo-project/neo/pull/2712) and #2519 (ported from // https://github.com/neo-project/neo/pull/2749). HFAspidochelone Hardfork = 1 << iota // Aspidochelone )
type InternalService ¶ added in v0.100.0
type InternalService struct { Enabled bool `yaml:"Enabled"` UnlockWallet Wallet `yaml:"UnlockWallet"` }
InternalService stores configuration for internal services that don't have any network configuration, but use a wallet and can be enabled/disabled.
type Ledger ¶ added in v0.100.0
type Ledger struct { // GarbageCollectionPeriod sets the number of blocks to wait before // starting the next MPT garbage collection cycle when RemoveUntraceableBlocks // option is used. GarbageCollectionPeriod uint32 `yaml:"GarbageCollectionPeriod"` // KeepOnlyLatestState specifies if MPT should only store the latest state. // If true, DB size will be smaller, but older roots won't be accessible. // This value should remain the same for the same database. KeepOnlyLatestState bool `yaml:"KeepOnlyLatestState"` // RemoveUntraceableBlocks specifies if old data should be removed. RemoveUntraceableBlocks bool `yaml:"RemoveUntraceableBlocks"` // SaveStorageBatch enables storage batch saving before every persist. SaveStorageBatch bool `yaml:"SaveStorageBatch"` // SkipBlockVerification allows to disable verification of received // blocks (including cryptographic checks). SkipBlockVerification bool `yaml:"SkipBlockVerification"` }
Ledger contains core node-specific settings that are not a part of the ProtocolConfiguration (which is common for every node on the network).
type NeoFSConfiguration ¶ added in v0.94.0
type NeoFSConfiguration struct { Nodes []string `yaml:"Nodes"` Timeout time.Duration `yaml:"Timeout"` }
NeoFSConfiguration is a config for the NeoFS service.
type OracleConfiguration ¶ added in v0.93.0
type OracleConfiguration struct { Enabled bool `yaml:"Enabled"` AllowPrivateHost bool `yaml:"AllowPrivateHost"` AllowedContentTypes []string `yaml:"AllowedContentTypes"` Nodes []string `yaml:"Nodes"` NeoFS NeoFSConfiguration `yaml:"NeoFS"` MaxTaskTimeout time.Duration `yaml:"MaxTaskTimeout"` RefreshInterval time.Duration `yaml:"RefreshInterval"` MaxConcurrentRequests int `yaml:"MaxConcurrentRequests"` RequestTimeout time.Duration `yaml:"RequestTimeout"` ResponseTimeout time.Duration `yaml:"ResponseTimeout"` UnlockWallet Wallet `yaml:"UnlockWallet"` }
OracleConfiguration is a config for the oracle module.
type P2P ¶ added in v0.100.0
type P2P struct { // Addresses stores the node address list in the form of "[host]:[port][:announcedPort]". Addresses []string `yaml:"Addresses"` AttemptConnPeers int `yaml:"AttemptConnPeers"` // BroadcastFactor is the factor (0-100) controlling gossip fan-out number optimization. BroadcastFactor int `yaml:"BroadcastFactor"` DialTimeout time.Duration `yaml:"DialTimeout"` ExtensiblePoolSize int `yaml:"ExtensiblePoolSize"` MaxPeers int `yaml:"MaxPeers"` MinPeers int `yaml:"MinPeers"` PingInterval time.Duration `yaml:"PingInterval"` PingTimeout time.Duration `yaml:"PingTimeout"` ProtoTickInterval time.Duration `yaml:"ProtoTickInterval"` }
P2P holds P2P node settings.
type P2PNotary ¶ added in v0.93.0
type P2PNotary InternalService
P2PNotary stores configuration for Notary node service.
type ProtocolConfiguration ¶
type ProtocolConfiguration struct { // CommitteeHistory stores committee size change history (height: size). CommitteeHistory map[uint32]int `yaml:"CommitteeHistory"` // GarbageCollectionPeriod sets the number of blocks to wait before // starting the next MPT garbage collection cycle when RemoveUntraceableBlocks // option is used. // // Deprecated: please use the same setting in the ApplicationConfiguration, this field will be removed in future versions. GarbageCollectionPeriod uint32 `yaml:"GarbageCollectionPeriod"` Magic netmode.Magic `yaml:"Magic"` MemPoolSize int `yaml:"MemPoolSize"` // Hardforks is a map of hardfork names that enables version-specific application // logic dependent on the specified height. Hardforks map[string]uint32 `yaml:"Hardforks"` // InitialGASSupply is the amount of GAS generated in the genesis block. InitialGASSupply fixedn.Fixed8 `yaml:"InitialGASSupply"` // P2PNotaryRequestPayloadPoolSize specifies the memory pool size for P2PNotaryRequestPayloads. // It is valid only if P2PSigExtensions are enabled. P2PNotaryRequestPayloadPoolSize int `yaml:"P2PNotaryRequestPayloadPoolSize"` // KeepOnlyLatestState specifies if MPT should only store the latest state. // If true, DB size will be smaller, but older roots won't be accessible. // This value should remain the same for the same database. // // Deprecated: please use the same setting in the ApplicationConfiguration, this field will be removed in future versions. KeepOnlyLatestState bool `yaml:"KeepOnlyLatestState"` // RemoveUntraceableBlocks specifies if old data should be removed. // // Deprecated: please use the same setting in the ApplicationConfiguration, this field will be removed in future versions. RemoveUntraceableBlocks bool `yaml:"RemoveUntraceableBlocks"` // MaxBlockSize is the maximum block size in bytes. MaxBlockSize uint32 `yaml:"MaxBlockSize"` // MaxBlockSystemFee is the maximum overall system fee per block. MaxBlockSystemFee int64 `yaml:"MaxBlockSystemFee"` // MaxTraceableBlocks is the length of the chain accessible to smart contracts. MaxTraceableBlocks uint32 `yaml:"MaxTraceableBlocks"` // MaxTransactionsPerBlock is the maximum amount of transactions per block. MaxTransactionsPerBlock uint16 `yaml:"MaxTransactionsPerBlock"` // MaxValidUntilBlockIncrement is the upper increment size of blockchain height in blocks // exceeding that a transaction should fail validation. It is set to estimated daily number // of blocks with 15s interval. MaxValidUntilBlockIncrement uint32 `yaml:"MaxValidUntilBlockIncrement"` // NativeUpdateHistories is a list of histories of native contracts updates. NativeUpdateHistories map[string][]uint32 `yaml:"NativeActivations"` // P2PSigExtensions enables additional signature-related logic. P2PSigExtensions bool `yaml:"P2PSigExtensions"` // P2PStateExchangeExtensions enables additional P2P MPT state data exchange logic. P2PStateExchangeExtensions bool `yaml:"P2PStateExchangeExtensions"` // ReservedAttributes allows to have reserved attributes range for experimental or private purposes. ReservedAttributes bool `yaml:"ReservedAttributes"` // SaveStorageBatch enables storage batch saving before every persist. // // Deprecated: please use the same setting in the ApplicationConfiguration, this field will be removed in future versions. SaveStorageBatch bool `yaml:"SaveStorageBatch"` // SecondsPerBlock is the time interval (in seconds) between blocks that consensus nodes work with. // // Deprecated: replaced by TimePerBlock, to be removed in future versions. SecondsPerBlock int `yaml:"SecondsPerBlock"` SeedList []string `yaml:"SeedList"` StandbyCommittee []string `yaml:"StandbyCommittee"` // StateRooInHeader enables storing state root in block header. StateRootInHeader bool `yaml:"StateRootInHeader"` // StateSyncInterval is the number of blocks between state heights available for MPT state data synchronization. // It is valid only if P2PStateExchangeExtensions are enabled. StateSyncInterval int `yaml:"StateSyncInterval"` // TimePerBlock is the time interval between blocks that consensus nodes work with. // It must be an integer number of milliseconds. TimePerBlock time.Duration `yaml:"TimePerBlock"` ValidatorsCount int `yaml:"ValidatorsCount"` // Validators stores history of changes to consensus node number (height: number). ValidatorsHistory map[uint32]int `yaml:"ValidatorsHistory"` // Whether to verify received blocks. // // Deprecated: please use the same setting in the ApplicationConfiguration, this field will be removed in future versions. VerifyBlocks bool `yaml:"VerifyBlocks"` // Whether to verify transactions in the received blocks. VerifyTransactions bool `yaml:"VerifyTransactions"` }
ProtocolConfiguration represents the protocol config.
func (*ProtocolConfiguration) Equals ¶ added in v0.99.2
func (p *ProtocolConfiguration) Equals(o *ProtocolConfiguration) bool
Equals allows to compare two ProtocolConfiguration instances, returns true if they're equal.
func (*ProtocolConfiguration) GetCommitteeSize ¶ added in v0.98.2
func (p *ProtocolConfiguration) GetCommitteeSize(height uint32) int
GetCommitteeSize returns the committee size for the given height. It implies valid configuration file.
func (*ProtocolConfiguration) GetNumOfCNs ¶ added in v0.98.2
func (p *ProtocolConfiguration) GetNumOfCNs(height uint32) int
GetNumOfCNs returns the number of validators for the given height. It implies valid configuration file.
func (*ProtocolConfiguration) ShouldUpdateCommitteeAt ¶ added in v0.98.2
func (p *ProtocolConfiguration) ShouldUpdateCommitteeAt(height uint32) bool
ShouldUpdateCommitteeAt answers the question of whether the committee should be updated at the given height.
func (*ProtocolConfiguration) Validate ¶ added in v0.98.2
func (p *ProtocolConfiguration) Validate() error
Validate checks ProtocolConfiguration for internal consistency and returns an error if anything inappropriate found. Other methods can rely on protocol validity after this.
type RPC ¶ added in v0.99.1
type RPC struct { BasicService `yaml:",inline"` EnableCORSWorkaround bool `yaml:"EnableCORSWorkaround"` // MaxGasInvoke is the maximum amount of GAS which // can be spent during an RPC call. MaxGasInvoke fixedn.Fixed8 `yaml:"MaxGasInvoke"` MaxIteratorResultItems int `yaml:"MaxIteratorResultItems"` MaxFindResultItems int `yaml:"MaxFindResultItems"` MaxNEP11Tokens int `yaml:"MaxNEP11Tokens"` MaxWebSocketClients int `yaml:"MaxWebSocketClients"` SessionEnabled bool `yaml:"SessionEnabled"` SessionExpirationTime int `yaml:"SessionExpirationTime"` SessionBackedByMPT bool `yaml:"SessionBackedByMPT"` SessionPoolSize int `yaml:"SessionPoolSize"` StartWhenSynchronized bool `yaml:"StartWhenSynchronized"` TLSConfig TLS `yaml:"TLSConfig"` }
RPC is an RPC service configuration information.
type StateRoot ¶ added in v0.94.0
type StateRoot InternalService
StateRoot contains state root service configuration.
type TLS ¶ added in v0.99.1
type TLS struct { BasicService `yaml:",inline"` CertFile string `yaml:"CertFile"` KeyFile string `yaml:"KeyFile"` }
TLS describes SSL/TLS configuration.