ethconfig

package
v0.0.2-tenderly Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2026 License: GPL-3.0, LGPL-3.0 Imports: 26 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:              downloader.SnapSync,
	HistoryMode:           history.KeepAll,
	NetworkId:             0,
	TxLookupLimit:         2350000,
	TransactionHistory:    2350000,
	LogHistory:            2350000,
	StateHistory:          params.FullImmutabilityThreshold,
	DatabaseCache:         512,
	TrieCleanCache:        154,
	TrieDirtyCache:        256,
	TrieTimeout:           60 * time.Minute,
	SnapshotCache:         102,
	FilterLogCacheSize:    32,
	LogQueryLimit:         1000,
	Miner:                 miner.DefaultConfig,
	TxPool:                legacypool.DefaultConfig,
	BlobPool:              blobpool.DefaultConfig,
	RPCGasCap:             50000000,
	RPCEVMTimeout:         5 * time.Second,
	GPO:                   FullNodeGPO,
	RPCTxFeeCap:           1,
	RPCLogQueryLimit:      1000,
	FastForwardThreshold:  6400,
	WitnessPruneThreshold: 64000,
	WitnessPruneInterval:  120 * time.Second,
	WitnessAPIEnabled:     false,
	TxSyncDefaultTimeout:  20 * time.Second,
	TxSyncMaxTimeout:      1 * time.Minute,
}

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

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

FullNodeGPO contains default gasprice oracle settings for full node.

Functions

func CreateConsensusEngine

func CreateConsensusEngine(chainConfig *params.ChainConfig, ethConfig *Config, db ethdb.Database, blockchainAPI *ethapi.BlockChainAPI) (consensus.Engine, error)

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

	// 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  downloader.SyncMode

	// HistoryMode configures chain history retention.
	HistoryMode history.HistoryMode

	// This can be set to list of enrtree:// URLs which will be queried for
	// nodes to connect to.
	EthDiscoveryURLs  []string
	SnapDiscoveryURLs []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

	// 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.
	LogHistory           uint64 `toml:",omitempty"` // The maximum number of blocks from head where a log search index is maintained.
	LogNoHistory         bool   `toml:",omitempty"` // No log search index is maintained.
	LogExportCheckpoints string // export log index checkpoints to file
	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"`

	// 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
	DatabaseEra        string

	// Database - LevelDB options
	LevelDbCompactionTableSize           uint64
	LevelDbCompactionTableSizeMultiplier float64
	LevelDbCompactionTotalSize           uint64
	LevelDbCompactionTotalSizeMultiplier float64

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

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

	// This is the maximum number of addresses or topics allowed in filter criteria
	// for eth_getLogs.
	LogQueryLimit int

	// Address-specific cache sizes for biased caching (pathdb only)
	// Maps account address to cache size in bytes
	AddressCacheSizes map[common.Address]int

	// PreloadRateLimit limits cache preload I/O in bytes per second per address.
	// This prevents preloading from overwhelming the disk during sync.
	// 0 = unlimited (legacy behavior), default = 1MB/s
	PreloadRateLimit int64

	// Mining options
	Miner miner.Config

	// 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 collection of witness trie access statistics
	EnableWitnessStats bool

	// Generate execution witnesses and self-check against them (testing purpose)
	StatelessSelfValidation bool

	// Enables tracking of state size
	EnableStateSizeTracking bool

	// Enables VM tracing
	VMTrace           string
	VMTraceJsonConfig string

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

	// Maximum size (in bytes) a result of an rpc request could have
	RPCReturnDataLimit uint64

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

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

	// RPCLogQueryLimit is the maximum number of addresses or topics allowed per search
	// position in eth_getLogs filter criteria (0 = no cap)
	RPCLogQueryLimit int

	// RPCBlockRangeLimit is the maximum block range allowed in eth_getLogs / bor_getLogs (0 = unlimited)
	RPCBlockRangeLimit uint64

	// URL to connect to Heimdall node (comma-separated for failover: "url1,url2,url3")
	HeimdallURL string

	// timeout in heimdall requests
	HeimdallTimeout time.Duration

	// No heimdall service
	WithoutHeimdall bool

	// Address to connect to Heimdall gRPC server (comma-separated for failover: "addr1,addr2")
	HeimdallgRPCAddress string

	// Address to connect to Heimdall WS subscription server (comma-separated for failover: "addr1,addr2")
	HeimdallWSAddress string

	// Run heimdall service as a child process
	RunHeimdall bool

	// Arguments to pass to heimdall service
	RunHeimdallArgs string

	// Use child heimdall process to fetch data, Only works when RunHeimdall is true
	UseHeimdallApp bool

	// OverrideHeimdallClient allows injecting a mock HeimdallClient for testing.
	// When set, this client is used instead of creating one from HeimdallURL/HeimdallgRPCAddress.
	OverrideHeimdallClient bor.IHeimdallClient `toml:"-"`

	// Bor logs flag
	BorLogs bool

	// Parallel EVM (Block-STM) related config
	ParallelEVM core.ParallelEVMConfig `toml:",omitempty"`

	// WitnessProtocol enabless the wit protocol
	WitnessProtocol bool

	// SyncWithWitnesses enables syncing blocks with witnesses
	SyncWithWitnesses bool

	// SyncAndProduceWitnesses enables producing witnesses while syncing
	SyncAndProduceWitnesses bool

	// Develop Fake Author mode to produce blocks without authorisation
	DevFakeAuthor bool `hcl:"devfakeauthor,optional" toml:"devfakeauthor,optional"`

	// OverrideOsaka (TODO: remove after the fork)
	OverrideOsaka *big.Int `toml:",omitempty"`

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

	// EnableBlockTracking allows logging of information collected while tracking block lifecycle
	EnableBlockTracking bool

	// Minimum necessary distance between local header and peer to fast forward
	FastForwardThreshold uint64

	// Minimum necessary distance between local header and latest non pruned witness
	WitnessPruneThreshold uint64

	// The time interval between each witness prune routine
	WitnessPruneInterval time.Duration

	// EnableParallelStatelessImport toggles parallel stateless block import (download path)
	EnableParallelStatelessImport bool

	// EnableParallelStatelessImportWorkers sets the number of workers (CPUs) used for parallel stateless import.
	// If 0, defaults to GOMAXPROCS.
	EnableParallelStatelessImportWorkers int

	// WitnessAPIEnabled enables witness API endpoints
	WitnessAPIEnabled bool

	// WitnessFileStore enables storing witness blobs on the filesystem
	// instead of in the key-value database. Reduces DB write amplification.
	WitnessFileStore bool

	// DisableBlindForkValidation disables additional fork validation and accept blind forks without tracing back to last whitelisted entry
	DisableBlindForkValidation bool

	// MaxBlindForkValidationLimit denotes the maximum number of blocks to traverse back in the database when validating blind forks
	MaxBlindForkValidationLimit uint64

	// EIP-7966: eth_sendRawTransactionSync timeouts
	TxSyncDefaultTimeout time.Duration `toml:",omitempty"`
	TxSyncMaxTimeout     time.Duration `toml:",omitempty"`

	// Preconf / Private transaction relay related settings
	EnablePreconfs            bool
	EnablePrivateTx           bool
	BlockProducerRpcEndpoints []string

	// Preconf / Private transaction related settings for block producers
	AcceptPreconfTx bool
	AcceptPrivateTx bool
}

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.

Jump to

Keyboard shortcuts

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