ethconfig

package
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 26, 2025 License: GPL-3.0 Imports: 19 Imported by: 0

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:           FullSync,
	NetworkId:          1,
	TxLookupLimit:      2350000,
	TransactionHistory: 2350000,
	StateHistory:       params.FullImmutabilityThreshold,
	DatabaseCache:      512,
	TrieCleanCache:     154,
	TrieDirtyCache:     256,
	TrieTimeout:        10 * time.Minute,
	TriesInMemory:      128,
	TriesVerifyMode:    core.LocalVerify,
	SnapshotCache:      102,
	DiffBlock:          uint64(86400),
	FilterLogCacheSize: 32,
	Miner:              minerconfig.DefaultConfig,
	TxPool:             legacypool.DefaultConfig,
	BlobPool:           blobpool.DefaultConfig,
	RPCGasCap:          50000000,
	RPCEVMTimeout:      5 * time.Second,
	GPO:                FullNodeGPO,
	RPCTxFeeCap:        1,
	BlobExtraReserve:   params.DefaultExtraReserveForBlobRequests,
}

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

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

FullNodeGPO contains default gasprice oracle settings for full node.

Functions

func ApplyDefaultEthConfig added in v1.0.4

func ApplyDefaultEthConfig(cfg *Config)

func CreateConsensusEngine

func CreateConsensusEngine(config *params.ChainConfig, iniConfig *inihash.Config, notify []string, noverify bool, db ethdb.Database, ee *ethapi.BlockChainAPI, genesisHash common.Hash) (consensus.Engine, error)

CreateConsensusEngine creates a consensus engine for the given chain config. Clique is allowed for now to live standalone, but ethash is forbidden and can only exist on already merged networks.

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"`

	// Network ID separates blockchains on the peer-to-peer networking level. When left
	// zero, the chain ID is used as network ID.
	NetworkId uint64
	SyncMode  SyncMode

	// DisablePeerTxBroadcast is an optional config and disabled by default, and usually you do not need it.
	// When this flag is enabled, you are requesting remote peers to stop broadcasting new transactions to you, and
	// it does not mean that your node will stop broadcasting transactions to remote peers.
	// If your node does care about new mempool transactions (e.g., running rpc services without the need of mempool
	// transactions) or is continuously under high pressure (e.g., mempool is always full), then you can consider
	// to turn it on.
	DisablePeerTxBroadcast bool
	EVNNodeIDsToAdd        []enode.ID
	EVNNodeIDsToRemove     []enode.ID
	// This can be set to list of enrtree:// URLs which will be queried for
	// nodes to connect to.
	EthDiscoveryURLs   []string
	SnapDiscoveryURLs  []string
	TrustDiscoveryURLs []string
	BscDiscoveryURLs   []string

	// State options.
	NoPruning  bool // Whether to disable pruning and flush everything to disk
	NoPrefetch bool // Whether to disable prefetching and only load state on demand

	DirectBroadcast     bool
	DisableSnapProtocol bool // Whether disable snap protocol
	EnableTrustProtocol bool // Whether enable trust protocol
	RangeLimit          bool

	// Deprecated: use 'TransactionHistory' instead.
	TxLookupLimit uint64 `toml:",omitempty"` // The maximum number of blocks from head whose tx indices are reserved.

	TransactionHistory uint64 `toml:",omitempty"` // The maximum number of blocks from head whose tx indices are reserved.
	StateHistory       uint64 `toml:",omitempty"` // The maximum number of blocks from head whose state histories are reserved.
	// State scheme represents the scheme used to store ethereum states and trie
	// nodes on top. It can be 'hash', 'path', or none which means use the scheme
	// consistent with persistent state.
	StateScheme        string `toml:",omitempty"` // State scheme used to store ethereum state and merkle trie nodes on top
	PathSyncFlush      bool   `toml:",omitempty"` // State scheme used to store ethereum state and merkle trie nodes on top
	JournalFileEnabled bool   // Whether the TrieJournal is stored using journal file

	DisableTxIndexer bool `toml:",omitempty"` // Whether to enable the transaction indexer

	// RequiredBlocks is a set of block number -> hash mappings which must be in the
	// canonical chain of all remote peers. Setting the option makes geth verify the
	// presence of these blocks for every new peer connection.
	RequiredBlocks map[uint64]common.Hash `toml:"-"`

	// Database options
	SkipBcVersionCheck bool `toml:"-"`
	DatabaseHandles    int  `toml:"-"`
	DatabaseCache      int
	DatabaseFreezer    string
	DatabaseDiff       string
	PersistDiff        bool
	DiffBlock          uint64
	// PruneAncientData is an optional config and disabled by default, and usually you do not need it.
	// When this flag is enabled, only keep the latest 9w blocks' data, the older blocks' data will be
	// pruned instead of being dumped to freezerdb, the pruned data includes CanonicalHash, Header, Block,
	// Receipt and TotalDifficulty.
	// Notice: the PruneAncientData once be turned on, the get/chaindata/ancient dir will be removed,
	// if restart without the pruneancient flag, the ancient data will start with the previous point that
	// the oldest unpruned block number.
	PruneAncientData bool

	TrieCleanCache  int
	TrieDirtyCache  int
	TrieTimeout     time.Duration
	SnapshotCache   int
	TriesInMemory   uint64
	TriesVerifyMode core.VerifyMode
	Preimages       bool

	// This is the number of blocks for which logs will be cached in the filter system.
	FilterLogCacheSize int

	// Mining options
	Miner minerconfig.Config

	Inihash inihash.Config `toml:",omitempty"`
	// Transaction pool options
	TxPool   legacypool.Config
	BlobPool blobpool.Config

	// Gas Price Oracle options
	GPO gasprice.Config

	// Enables tracking of SHA3 preimages in the VM
	EnablePreimageRecording bool

	// Enables VM tracing
	VMTrace           string
	VMTraceJsonConfig string

	// RPCGasCap is the global gas cap for eth-call variants.
	RPCGasCap uint64

	// RPCEVMTimeout is the global timeout for eth-call.
	RPCEVMTimeout time.Duration

	// RPCTxFeeCap is the global transaction fee(price * gaslimit) cap for
	// send-transaction variants. The unit is ether.
	RPCTxFeeCap float64

	// OverridePassedForkTime
	OverridePassedForkTime *uint64 `toml:",omitempty"`

	// OverrideLorentz (TODO: remove after the fork)
	OverrideLorentz *uint64 `toml:",omitempty"`

	// OverrideMaxwell (TODO: remove after the fork)
	OverrideMaxwell *uint64 `toml:",omitempty"`

	// OverrideFermi (TODO: remove after the fork)
	OverrideFermi *uint64 `toml:",omitempty"`

	// OverrideVerkle (TODO: remove after the fork)
	OverrideVerkle *uint64 `toml:",omitempty"`

	// blob setting
	BlobExtraReserve uint64
}

Config contains configuration options for 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.

type SyncMode added in v1.0.4

type SyncMode uint32

SyncMode represents the synchronisation mode of the downloader. It is a uint32 as it is used with atomic operations.

const (
	FullSync SyncMode = iota // Synchronise the entire blockchain history from full blocks
	SnapSync                 // Download the chain and the state via compact snapshots
)

func (SyncMode) IsValid added in v1.0.4

func (mode SyncMode) IsValid() bool

func (SyncMode) MarshalText added in v1.0.4

func (mode SyncMode) MarshalText() ([]byte, error)

func (SyncMode) String added in v1.0.4

func (mode SyncMode) String() string

String implements the stringer interface.

func (*SyncMode) UnmarshalText added in v1.0.4

func (mode *SyncMode) UnmarshalText(text []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL