mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-09 17:46:37 +00:00
This PR addresses one of the biggest performance issue with binary tries: storing each internal node individually bloats the index, the disk, and triggers a lot of write amplifications. To fix this issue, this PR serializes groups of nodes together. Because we are still looking for the ideal group size, the "depth" of the group tree is made a parameter, but that will be removed in the future, once the perfect size is known. This is a rebase of #33658 --------- Co-authored-by: Copilot <copilot@github.com>
346 lines
11 KiB
Go
346 lines
11 KiB
Go
// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
|
|
|
|
package ethconfig
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/ethereum/go-ethereum/core"
|
|
"github.com/ethereum/go-ethereum/core/history"
|
|
"github.com/ethereum/go-ethereum/core/txpool/blobpool"
|
|
"github.com/ethereum/go-ethereum/core/txpool/legacypool"
|
|
"github.com/ethereum/go-ethereum/eth/gasprice"
|
|
"github.com/ethereum/go-ethereum/miner"
|
|
)
|
|
|
|
// MarshalTOML marshals as TOML.
|
|
func (c Config) MarshalTOML() (interface{}, error) {
|
|
type Config struct {
|
|
Genesis *core.Genesis `toml:",omitempty"`
|
|
NetworkId uint64
|
|
SyncMode SyncMode
|
|
HistoryMode history.HistoryMode
|
|
EthDiscoveryURLs []string
|
|
SnapDiscoveryURLs []string
|
|
NoPruning bool
|
|
NoPrefetch bool
|
|
TxLookupLimit uint64 `toml:",omitempty"`
|
|
TransactionHistory uint64 `toml:",omitempty"`
|
|
LogHistory uint64 `toml:",omitempty"`
|
|
LogNoHistory bool `toml:",omitempty"`
|
|
LogExportCheckpoints string
|
|
StateHistory uint64 `toml:",omitempty"`
|
|
TrienodeHistory int64 `toml:",omitempty"`
|
|
NodeFullValueCheckpoint uint32 `toml:",omitempty"`
|
|
StateScheme string `toml:",omitempty"`
|
|
BinTrieGroupDepth int `toml:",omitempty"`
|
|
RequiredBlocks map[uint64]common.Hash `toml:"-"`
|
|
SlowBlockThreshold time.Duration `toml:",omitempty"`
|
|
SkipBcVersionCheck bool `toml:"-"`
|
|
DatabaseHandles int `toml:"-"`
|
|
DatabaseCache int
|
|
DatabaseFreezer string
|
|
DatabaseEra string
|
|
TrieCleanCache int
|
|
TrieDirtyCache int
|
|
TrieTimeout time.Duration
|
|
SnapshotCache int
|
|
Preimages bool
|
|
FilterLogCacheSize int
|
|
LogQueryLimit int
|
|
Miner miner.Config
|
|
TxPool legacypool.Config
|
|
BlobPool blobpool.Config
|
|
GPO gasprice.Config
|
|
EnablePreimageRecording bool
|
|
EnableWitnessStats bool
|
|
StatelessSelfValidation bool
|
|
EnableStateSizeTracking bool
|
|
VMTrace string
|
|
VMTraceJsonConfig string
|
|
RPCGasCap uint64
|
|
RPCEVMTimeout time.Duration
|
|
RPCTxFeeCap float64
|
|
OverrideOsaka *uint64 `toml:",omitempty"`
|
|
OverrideBPO1 *uint64 `toml:",omitempty"`
|
|
OverrideBPO2 *uint64 `toml:",omitempty"`
|
|
OverrideUBT *uint64 `toml:",omitempty"`
|
|
TxSyncDefaultTimeout time.Duration `toml:",omitempty"`
|
|
TxSyncMaxTimeout time.Duration `toml:",omitempty"`
|
|
RangeLimit uint64 `toml:",omitempty"`
|
|
}
|
|
var enc Config
|
|
enc.Genesis = c.Genesis
|
|
enc.NetworkId = c.NetworkId
|
|
enc.SyncMode = c.SyncMode
|
|
enc.HistoryMode = c.HistoryMode
|
|
enc.EthDiscoveryURLs = c.EthDiscoveryURLs
|
|
enc.SnapDiscoveryURLs = c.SnapDiscoveryURLs
|
|
enc.NoPruning = c.NoPruning
|
|
enc.NoPrefetch = c.NoPrefetch
|
|
enc.TxLookupLimit = c.TxLookupLimit
|
|
enc.TransactionHistory = c.TransactionHistory
|
|
enc.LogHistory = c.LogHistory
|
|
enc.LogNoHistory = c.LogNoHistory
|
|
enc.LogExportCheckpoints = c.LogExportCheckpoints
|
|
enc.StateHistory = c.StateHistory
|
|
enc.TrienodeHistory = c.TrienodeHistory
|
|
enc.NodeFullValueCheckpoint = c.NodeFullValueCheckpoint
|
|
enc.StateScheme = c.StateScheme
|
|
enc.BinTrieGroupDepth = c.BinTrieGroupDepth
|
|
enc.RequiredBlocks = c.RequiredBlocks
|
|
enc.SlowBlockThreshold = c.SlowBlockThreshold
|
|
enc.SkipBcVersionCheck = c.SkipBcVersionCheck
|
|
enc.DatabaseHandles = c.DatabaseHandles
|
|
enc.DatabaseCache = c.DatabaseCache
|
|
enc.DatabaseFreezer = c.DatabaseFreezer
|
|
enc.DatabaseEra = c.DatabaseEra
|
|
enc.TrieCleanCache = c.TrieCleanCache
|
|
enc.TrieDirtyCache = c.TrieDirtyCache
|
|
enc.TrieTimeout = c.TrieTimeout
|
|
enc.SnapshotCache = c.SnapshotCache
|
|
enc.Preimages = c.Preimages
|
|
enc.FilterLogCacheSize = c.FilterLogCacheSize
|
|
enc.LogQueryLimit = c.LogQueryLimit
|
|
enc.Miner = c.Miner
|
|
enc.TxPool = c.TxPool
|
|
enc.BlobPool = c.BlobPool
|
|
enc.GPO = c.GPO
|
|
enc.EnablePreimageRecording = c.EnablePreimageRecording
|
|
enc.EnableWitnessStats = c.EnableWitnessStats
|
|
enc.StatelessSelfValidation = c.StatelessSelfValidation
|
|
enc.EnableStateSizeTracking = c.EnableStateSizeTracking
|
|
enc.VMTrace = c.VMTrace
|
|
enc.VMTraceJsonConfig = c.VMTraceJsonConfig
|
|
enc.RPCGasCap = c.RPCGasCap
|
|
enc.RPCEVMTimeout = c.RPCEVMTimeout
|
|
enc.RPCTxFeeCap = c.RPCTxFeeCap
|
|
enc.OverrideOsaka = c.OverrideOsaka
|
|
enc.OverrideBPO1 = c.OverrideBPO1
|
|
enc.OverrideBPO2 = c.OverrideBPO2
|
|
enc.OverrideUBT = c.OverrideUBT
|
|
enc.TxSyncDefaultTimeout = c.TxSyncDefaultTimeout
|
|
enc.TxSyncMaxTimeout = c.TxSyncMaxTimeout
|
|
enc.RangeLimit = c.RangeLimit
|
|
return &enc, nil
|
|
}
|
|
|
|
// UnmarshalTOML unmarshals from TOML.
|
|
func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error {
|
|
type Config struct {
|
|
Genesis *core.Genesis `toml:",omitempty"`
|
|
NetworkId *uint64
|
|
SyncMode *SyncMode
|
|
HistoryMode *history.HistoryMode
|
|
EthDiscoveryURLs []string
|
|
SnapDiscoveryURLs []string
|
|
NoPruning *bool
|
|
NoPrefetch *bool
|
|
TxLookupLimit *uint64 `toml:",omitempty"`
|
|
TransactionHistory *uint64 `toml:",omitempty"`
|
|
LogHistory *uint64 `toml:",omitempty"`
|
|
LogNoHistory *bool `toml:",omitempty"`
|
|
LogExportCheckpoints *string
|
|
StateHistory *uint64 `toml:",omitempty"`
|
|
TrienodeHistory *int64 `toml:",omitempty"`
|
|
NodeFullValueCheckpoint *uint32 `toml:",omitempty"`
|
|
StateScheme *string `toml:",omitempty"`
|
|
BinTrieGroupDepth *int `toml:",omitempty"`
|
|
RequiredBlocks map[uint64]common.Hash `toml:"-"`
|
|
SlowBlockThreshold *time.Duration `toml:",omitempty"`
|
|
SkipBcVersionCheck *bool `toml:"-"`
|
|
DatabaseHandles *int `toml:"-"`
|
|
DatabaseCache *int
|
|
DatabaseFreezer *string
|
|
DatabaseEra *string
|
|
TrieCleanCache *int
|
|
TrieDirtyCache *int
|
|
TrieTimeout *time.Duration
|
|
SnapshotCache *int
|
|
Preimages *bool
|
|
FilterLogCacheSize *int
|
|
LogQueryLimit *int
|
|
Miner *miner.Config
|
|
TxPool *legacypool.Config
|
|
BlobPool *blobpool.Config
|
|
GPO *gasprice.Config
|
|
EnablePreimageRecording *bool
|
|
EnableWitnessStats *bool
|
|
StatelessSelfValidation *bool
|
|
EnableStateSizeTracking *bool
|
|
VMTrace *string
|
|
VMTraceJsonConfig *string
|
|
RPCGasCap *uint64
|
|
RPCEVMTimeout *time.Duration
|
|
RPCTxFeeCap *float64
|
|
OverrideOsaka *uint64 `toml:",omitempty"`
|
|
OverrideBPO1 *uint64 `toml:",omitempty"`
|
|
OverrideBPO2 *uint64 `toml:",omitempty"`
|
|
OverrideUBT *uint64 `toml:",omitempty"`
|
|
TxSyncDefaultTimeout *time.Duration `toml:",omitempty"`
|
|
TxSyncMaxTimeout *time.Duration `toml:",omitempty"`
|
|
RangeLimit *uint64 `toml:",omitempty"`
|
|
}
|
|
var dec Config
|
|
if err := unmarshal(&dec); err != nil {
|
|
return err
|
|
}
|
|
if dec.Genesis != nil {
|
|
c.Genesis = dec.Genesis
|
|
}
|
|
if dec.NetworkId != nil {
|
|
c.NetworkId = *dec.NetworkId
|
|
}
|
|
if dec.SyncMode != nil {
|
|
c.SyncMode = *dec.SyncMode
|
|
}
|
|
if dec.HistoryMode != nil {
|
|
c.HistoryMode = *dec.HistoryMode
|
|
}
|
|
if dec.EthDiscoveryURLs != nil {
|
|
c.EthDiscoveryURLs = dec.EthDiscoveryURLs
|
|
}
|
|
if dec.SnapDiscoveryURLs != nil {
|
|
c.SnapDiscoveryURLs = dec.SnapDiscoveryURLs
|
|
}
|
|
if dec.NoPruning != nil {
|
|
c.NoPruning = *dec.NoPruning
|
|
}
|
|
if dec.NoPrefetch != nil {
|
|
c.NoPrefetch = *dec.NoPrefetch
|
|
}
|
|
if dec.TxLookupLimit != nil {
|
|
c.TxLookupLimit = *dec.TxLookupLimit
|
|
}
|
|
if dec.TransactionHistory != nil {
|
|
c.TransactionHistory = *dec.TransactionHistory
|
|
}
|
|
if dec.LogHistory != nil {
|
|
c.LogHistory = *dec.LogHistory
|
|
}
|
|
if dec.LogNoHistory != nil {
|
|
c.LogNoHistory = *dec.LogNoHistory
|
|
}
|
|
if dec.LogExportCheckpoints != nil {
|
|
c.LogExportCheckpoints = *dec.LogExportCheckpoints
|
|
}
|
|
if dec.StateHistory != nil {
|
|
c.StateHistory = *dec.StateHistory
|
|
}
|
|
if dec.TrienodeHistory != nil {
|
|
c.TrienodeHistory = *dec.TrienodeHistory
|
|
}
|
|
if dec.NodeFullValueCheckpoint != nil {
|
|
c.NodeFullValueCheckpoint = *dec.NodeFullValueCheckpoint
|
|
}
|
|
if dec.StateScheme != nil {
|
|
c.StateScheme = *dec.StateScheme
|
|
}
|
|
if dec.BinTrieGroupDepth != nil {
|
|
c.BinTrieGroupDepth = *dec.BinTrieGroupDepth
|
|
}
|
|
if dec.RequiredBlocks != nil {
|
|
c.RequiredBlocks = dec.RequiredBlocks
|
|
}
|
|
if dec.SlowBlockThreshold != nil {
|
|
c.SlowBlockThreshold = *dec.SlowBlockThreshold
|
|
}
|
|
if dec.SkipBcVersionCheck != nil {
|
|
c.SkipBcVersionCheck = *dec.SkipBcVersionCheck
|
|
}
|
|
if dec.DatabaseHandles != nil {
|
|
c.DatabaseHandles = *dec.DatabaseHandles
|
|
}
|
|
if dec.DatabaseCache != nil {
|
|
c.DatabaseCache = *dec.DatabaseCache
|
|
}
|
|
if dec.DatabaseFreezer != nil {
|
|
c.DatabaseFreezer = *dec.DatabaseFreezer
|
|
}
|
|
if dec.DatabaseEra != nil {
|
|
c.DatabaseEra = *dec.DatabaseEra
|
|
}
|
|
if dec.TrieCleanCache != nil {
|
|
c.TrieCleanCache = *dec.TrieCleanCache
|
|
}
|
|
if dec.TrieDirtyCache != nil {
|
|
c.TrieDirtyCache = *dec.TrieDirtyCache
|
|
}
|
|
if dec.TrieTimeout != nil {
|
|
c.TrieTimeout = *dec.TrieTimeout
|
|
}
|
|
if dec.SnapshotCache != nil {
|
|
c.SnapshotCache = *dec.SnapshotCache
|
|
}
|
|
if dec.Preimages != nil {
|
|
c.Preimages = *dec.Preimages
|
|
}
|
|
if dec.FilterLogCacheSize != nil {
|
|
c.FilterLogCacheSize = *dec.FilterLogCacheSize
|
|
}
|
|
if dec.LogQueryLimit != nil {
|
|
c.LogQueryLimit = *dec.LogQueryLimit
|
|
}
|
|
if dec.Miner != nil {
|
|
c.Miner = *dec.Miner
|
|
}
|
|
if dec.TxPool != nil {
|
|
c.TxPool = *dec.TxPool
|
|
}
|
|
if dec.BlobPool != nil {
|
|
c.BlobPool = *dec.BlobPool
|
|
}
|
|
if dec.GPO != nil {
|
|
c.GPO = *dec.GPO
|
|
}
|
|
if dec.EnablePreimageRecording != nil {
|
|
c.EnablePreimageRecording = *dec.EnablePreimageRecording
|
|
}
|
|
if dec.EnableWitnessStats != nil {
|
|
c.EnableWitnessStats = *dec.EnableWitnessStats
|
|
}
|
|
if dec.StatelessSelfValidation != nil {
|
|
c.StatelessSelfValidation = *dec.StatelessSelfValidation
|
|
}
|
|
if dec.EnableStateSizeTracking != nil {
|
|
c.EnableStateSizeTracking = *dec.EnableStateSizeTracking
|
|
}
|
|
if dec.VMTrace != nil {
|
|
c.VMTrace = *dec.VMTrace
|
|
}
|
|
if dec.VMTraceJsonConfig != nil {
|
|
c.VMTraceJsonConfig = *dec.VMTraceJsonConfig
|
|
}
|
|
if dec.RPCGasCap != nil {
|
|
c.RPCGasCap = *dec.RPCGasCap
|
|
}
|
|
if dec.RPCEVMTimeout != nil {
|
|
c.RPCEVMTimeout = *dec.RPCEVMTimeout
|
|
}
|
|
if dec.RPCTxFeeCap != nil {
|
|
c.RPCTxFeeCap = *dec.RPCTxFeeCap
|
|
}
|
|
if dec.OverrideOsaka != nil {
|
|
c.OverrideOsaka = dec.OverrideOsaka
|
|
}
|
|
if dec.OverrideBPO1 != nil {
|
|
c.OverrideBPO1 = dec.OverrideBPO1
|
|
}
|
|
if dec.OverrideBPO2 != nil {
|
|
c.OverrideBPO2 = dec.OverrideBPO2
|
|
}
|
|
if dec.OverrideUBT != nil {
|
|
c.OverrideUBT = dec.OverrideUBT
|
|
}
|
|
if dec.TxSyncDefaultTimeout != nil {
|
|
c.TxSyncDefaultTimeout = *dec.TxSyncDefaultTimeout
|
|
}
|
|
if dec.TxSyncMaxTimeout != nil {
|
|
c.TxSyncMaxTimeout = *dec.TxSyncMaxTimeout
|
|
}
|
|
if dec.RangeLimit != nil {
|
|
c.RangeLimit = *dec.RangeLimit
|
|
}
|
|
return nil
|
|
}
|