 Documentation
      ¶
      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.