Documentation

Overview

    Package ethconfig contains the configuration of the ETH and LES protocols.

    Index

    Constants

    This section is empty.

    Variables

    View Source
    var Defaults = Config{
    	SyncMode: downloader.FastSync,
    	Ethash: ethash.Config{
    		CacheDir:         "ethash",
    		CachesInMem:      2,
    		CachesOnDisk:     3,
    		CachesLockMmap:   false,
    		DatasetsInMem:    1,
    		DatasetsOnDisk:   2,
    		DatasetsLockMmap: false,
    	},
    	NetworkId:               1,
    	TxLookupLimit:           2350000,
    	LightPeers:              100,
    	UltraLightFraction:      75,
    	DatabaseCache:           512,
    	TrieCleanCache:          154,
    	TrieCleanCacheJournal:   "triecache",
    	TrieCleanCacheRejournal: 60 * time.Minute,
    	TrieDirtyCache:          256,
    	TrieTimeout:             60 * time.Minute,
    	SnapshotCache:           102,
    	Miner: miner.Config{
    		GasFloor: 8000000,
    		GasCeil:  8000000,
    		GasPrice: big.NewInt(params.GWei),
    		Recommit: 3 * time.Second,
    	},
    	TxPool:      core.DefaultTxPoolConfig,
    	RPCGasCap:   25000000,
    	GPO:         FullNodeGPO,
    	RPCTxFeeCap: 1,
    }

      Defaults contains default settings for use on the Ethereum main net.

      View Source
      var FullNodeGPO = gasprice.Config{
      	Blocks:     20,
      	Percentile: 60,
      	MaxPrice:   gasprice.DefaultMaxPrice,
      }

        FullNodeGPO contains default gasprice oracle settings for full node.

        View Source
        var LightClientGPO = gasprice.Config{
        	Blocks:     2,
        	Percentile: 60,
        	MaxPrice:   gasprice.DefaultMaxPrice,
        }

          LightClientGPO contains default gasprice oracle settings for light client.

          Functions

          func CreateConsensusEngine

          func CreateConsensusEngine(stack *node.Node, chainConfig *params.ChainConfig, config *ethash.Config, notify []string, noverify bool, db ethdb.Database) consensus.Engine

            CreateConsensusEngine creates a consensus engine for the given chain configuration.

            Types

            type Config

            type Config struct {
            	// The genesis block, which is inserted if the database is empty.
            	// If nil, the Ethereum main net block is used.
            	Genesis *core.Genesis `toml:",omitempty"`
            
            	// Protocol options
            	NetworkId uint64 // Network ID to use for selecting peers to connect to
            	SyncMode  downloader.SyncMode
            
            	// This can be set to list of enrtree:// URLs which will be queried for
            	// for nodes to connect to.
            	EthDiscoveryURLs  []string
            	SnapDiscoveryURLs []string
            
            	NoPruning  bool // Whether to disable pruning and flush everything to disk
            	NoPrefetch bool // Whether to disable prefetching and only load state on demand
            
            	TxLookupLimit uint64 `toml:",omitempty"` // The maximum number of blocks from head whose tx indices are reserved.
            
            	// Whitelist of required block number -> hash values to accept
            	Whitelist map[uint64]common.Hash `toml:"-"`
            
            	// Light client options
            	LightServ          int  `toml:",omitempty"` // Maximum percentage of time allowed for serving LES requests
            	LightIngress       int  `toml:",omitempty"` // Incoming bandwidth limit for light servers
            	LightEgress        int  `toml:",omitempty"` // Outgoing bandwidth limit for light servers
            	LightPeers         int  `toml:",omitempty"` // Maximum number of LES client peers
            	LightNoPrune       bool `toml:",omitempty"` // Whether to disable light chain pruning
            	LightNoSyncServe   bool `toml:",omitempty"` // Whether to serve light clients before syncing
            	SyncFromCheckpoint bool `toml:",omitempty"` // Whether to sync the header chain from the configured checkpoint
            
            	// Ultra Light client options
            	UltraLightServers      []string `toml:",omitempty"` // List of trusted ultra light servers
            	UltraLightFraction     int      `toml:",omitempty"` // Percentage of trusted servers to accept an announcement
            	UltraLightOnlyAnnounce bool     `toml:",omitempty"` // Whether to only announce headers, or also serve them
            
            	// Database options
            	SkipBcVersionCheck bool `toml:"-"`
            	DatabaseHandles    int  `toml:"-"`
            	DatabaseCache      int
            	DatabaseFreezer    string
            
            	TrieCleanCache          int
            	TrieCleanCacheJournal   string        `toml:",omitempty"` // Disk journal directory for trie cache to survive node restarts
            	TrieCleanCacheRejournal time.Duration `toml:",omitempty"` // Time interval to regenerate the journal for clean cache
            	TrieDirtyCache          int
            	TrieTimeout             time.Duration
            	SnapshotCache           int
            	Preimages               bool
            
            	// Mining options
            	Miner miner.Config
            
            	// Ethash options
            	Ethash ethash.Config
            
            	// Transaction pool options
            	TxPool core.TxPoolConfig
            
            	// Gas Price Oracle options
            	GPO gasprice.Config
            
            	// Enables tracking of SHA3 preimages in the VM
            	EnablePreimageRecording bool
            
            	// Miscellaneous options
            	DocRoot string `toml:"-"`
            
            	// Type of the EWASM interpreter ("" for default)
            	EWASMInterpreter string
            
            	// Type of the EVM interpreter ("" for default)
            	EVMInterpreter string
            
            	// RPCGasCap is the global gas cap for eth-call variants.
            	RPCGasCap uint64
            
            	// RPCTxFeeCap is the global transaction fee(price * gaslimit) cap for
            	// send-transction variants. The unit is ether.
            	RPCTxFeeCap float64
            
            	// Checkpoint is a hardcoded checkpoint which can be nil.
            	Checkpoint *params.TrustedCheckpoint `toml:",omitempty"`
            
            	// CheckpointOracle is the configuration for checkpoint oracle.
            	CheckpointOracle *params.CheckpointOracleConfig `toml:",omitempty"`
            
            	// Berlin block override (TODO: remove after the fork)
            	OverrideBerlin *big.Int `toml:",omitempty"`
            }

              Config contains configuration options for of the ETH and LES protocols.

              func (Config) MarshalTOML

              func (c Config) MarshalTOML() (interface{}, error)

                MarshalTOML marshals as TOML.

                func (*Config) UnmarshalTOML

                func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error

                  UnmarshalTOML unmarshals from TOML.