mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-19 11:20:45 +00:00
remove some AI comments and BAL perf option flags
This commit is contained in:
parent
a5a452512f
commit
504bb79b7b
12 changed files with 10 additions and 80 deletions
|
|
@ -317,11 +317,7 @@ func ExecutableDataToBlockNoHash(data ExecutableData, versionedHashes []common.H
|
|||
}
|
||||
|
||||
// If Amsterdam is enabled, data.BlockAccessList is always non-nil,
|
||||
// even for empty blocks with no state transitions. The wire format is
|
||||
// the RLP-encoded access list; the header hash is keccak256(rlp).
|
||||
//
|
||||
// If Amsterdam is not enabled yet, blockAccessListHash is expected
|
||||
// to be nil.
|
||||
// even for empty blocks with no state transitions.
|
||||
var blockAccessListHash *common.Hash
|
||||
if data.BlockAccessList != nil {
|
||||
hash := crypto.Keccak256Hash(data.BlockAccessList)
|
||||
|
|
@ -388,8 +384,6 @@ func BlockToExecutableData(block *types.Block, fees *big.Int, sidecars []*types.
|
|||
ExcessBlobGas: block.ExcessBlobGas(),
|
||||
SlotNumber: block.SlotNumber(),
|
||||
}
|
||||
// Per Engine API spec (Amsterdam): blockAccessList is the RLP-encoded
|
||||
// access list, serialized as a hex string. Encode it to bytes here.
|
||||
if al := block.AccessList(); al != nil {
|
||||
var buf bytes.Buffer
|
||||
if err := rlp.Encode(&buf, al); err == nil {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ import (
|
|||
"bufio"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/ethereum/go-ethereum/core/types/bal"
|
||||
"os"
|
||||
"reflect"
|
||||
"runtime"
|
||||
|
|
@ -246,28 +245,6 @@ func makeFullNode(ctx *cli.Context) *node.Node {
|
|||
cfg.Eth.OverrideUBT = &v
|
||||
}
|
||||
|
||||
if ctx.IsSet(utils.BALExecutionModeFlag.Name) {
|
||||
val := ctx.String(utils.BALExecutionModeFlag.Name)
|
||||
switch val {
|
||||
case utils.BalExecutionModeOptimized:
|
||||
cfg.Eth.BALExecutionMode = bal.BALExecutionOptimized
|
||||
case utils.BalExecutionModeNoBatchIO:
|
||||
cfg.Eth.BALExecutionMode = bal.BALExecutionNoBatchIO
|
||||
case utils.BalExecutionModeSequential:
|
||||
cfg.Eth.BALExecutionMode = bal.BALExecutionSequential
|
||||
default:
|
||||
utils.Fatalf("invalid option for --bal.executionmode: %s. acceptable values are full|nobatchio|sequential", val)
|
||||
}
|
||||
}
|
||||
cfg.Eth.BlockingPrefetch = ctx.Bool(utils.BlockingPrefetchFlag.Name)
|
||||
|
||||
prefetchWorkers := ctx.Uint(utils.PrefetchWorkersFlag.Name)
|
||||
if ctx.IsSet(utils.PrefetchWorkersFlag.Name) && prefetchWorkers == 0 {
|
||||
prefetchWorkers = uint(runtime.NumCPU())
|
||||
log.Warn(fmt.Sprintf("invalid value for --bal.prefetchworkers. got 0. sanitizing to %d", prefetchWorkers))
|
||||
}
|
||||
cfg.Eth.PrefetchWorkers = prefetchWorkers
|
||||
|
||||
// Start metrics export if enabled.
|
||||
utils.SetupMetrics(&cfg.Metrics)
|
||||
|
||||
|
|
|
|||
|
|
@ -92,9 +92,6 @@ var (
|
|||
utils.BinTrieGroupDepthFlag,
|
||||
utils.LightKDFFlag,
|
||||
utils.EthRequiredBlocksFlag,
|
||||
utils.BALExecutionModeFlag,
|
||||
utils.PrefetchWorkersFlag,
|
||||
utils.BlockingPrefetchFlag,
|
||||
utils.CacheFlag,
|
||||
utils.CacheDatabaseFlag,
|
||||
utils.CacheTrieFlag,
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ import (
|
|||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
godebug "runtime/debug"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
|
@ -244,22 +243,6 @@ var (
|
|||
Usage: "Comma separated block number-to-hash mappings to require for peering (<number>=<hash>)",
|
||||
Category: flags.EthCategory,
|
||||
}
|
||||
BALExecutionModeFlag = &cli.StringFlag{
|
||||
Name: "bal.executionmode",
|
||||
Usage: "EIP-7928 block-access-list execution mode (no-op placeholder)",
|
||||
Category: flags.EthCategory,
|
||||
}
|
||||
PrefetchWorkersFlag = &cli.UintFlag{
|
||||
Name: "bal.prefetchworkers",
|
||||
Usage: "The number of concurrent state loading tasks to perform when prefetching BAL state. Default to the number of cpus",
|
||||
Value: uint(runtime.NumCPU()),
|
||||
Category: flags.MiscCategory,
|
||||
}
|
||||
BlockingPrefetchFlag = &cli.BoolFlag{
|
||||
Name: "bal.blockingprefetch",
|
||||
Usage: "only relevant when executing in parallel with a BAL: if true, the prefetcher will block tx/state-root calculation until all scheduled fetching tasks have completed.",
|
||||
Category: flags.MiscCategory,
|
||||
}
|
||||
BloomFilterSizeFlag = &cli.Uint64Flag{
|
||||
Name: "bloomfilter.size",
|
||||
Usage: "Megabytes of memory allocated to bloom-filter for pruning",
|
||||
|
|
|
|||
|
|
@ -226,10 +226,6 @@ type BlockChainConfig struct {
|
|||
// Execution configs
|
||||
StatelessSelfValidation bool // Generate execution witnesses and self-check against them (testing purpose)
|
||||
EnableWitnessStats bool // Whether trie access statistics collection is enabled
|
||||
|
||||
BALExecutionMode bal.BALExecutionMode
|
||||
BlockingPrefetch bool
|
||||
PrefetchWorkers int
|
||||
}
|
||||
|
||||
// DefaultConfig returns the default config.
|
||||
|
|
@ -2127,13 +2123,12 @@ func (bc *BlockChain) processBlockWithAccessList(parentRoot common.Hash, block *
|
|||
|
||||
sdb := state.NewMPTDatabase(bc.triedb, bc.codedb).WithSnapshot(bc.snaps)
|
||||
|
||||
useAsyncReads := bc.cfg.BALExecutionMode != bal.BALExecutionNoBatchIO
|
||||
al := block.AccessList()
|
||||
// Preprocess the access list once for the whole block; the resulting
|
||||
// structure is read-only and shared by the prefetch reader, the state
|
||||
// transition and every per-transaction execution reader.
|
||||
prepared := bal.NewAccessListReader(*al)
|
||||
prefetchReader, err := sdb.ReaderWithPrefetch(parentRoot, prepared.StorageKeys(useAsyncReads), bc.cfg.PrefetchWorkers, bc.cfg.BlockingPrefetch)
|
||||
prefetchReader, err := sdb.ReaderWithPrefetch(parentRoot, prepared.StorageKeys())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -2245,7 +2240,7 @@ func (bc *BlockChain) ProcessBlock(ctx context.Context, parentRoot common.Hash,
|
|||
blockHasAccessList = block.AccessList() != nil
|
||||
)
|
||||
|
||||
if blockHasAccessList && bc.cfg.BALExecutionMode != bal.BALExecutionSequential {
|
||||
if blockHasAccessList {
|
||||
return bc.processBlockWithAccessList(parentRoot, block, config.WriteHead)
|
||||
}
|
||||
defer interrupt.Store(true) // terminate the prefetch at the end
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ type Database interface {
|
|||
|
||||
// ReaderWithPrefetch returns a reader which asynchronously fetches block
|
||||
// access list state in the background.
|
||||
ReaderWithPrefetch(stateRoot common.Hash, accessList map[common.Address][]common.Hash, threads int, block bool) (Reader, error)
|
||||
ReaderWithPrefetch(stateRoot common.Hash, accessList map[common.Address][]common.Hash) (Reader, error)
|
||||
|
||||
// Iteratee returns a state iteratee associated with the specified state root,
|
||||
// through which the account iterator and storage iterator can be created.
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ type HistoricDB struct {
|
|||
codedb *CodeDB
|
||||
}
|
||||
|
||||
func (db *HistoricDB) ReaderWithPrefetch(stateRoot common.Hash, accessList map[common.Address][]common.Hash, threads int, block bool) (Reader, error) {
|
||||
func (db *HistoricDB) ReaderWithPrefetch(stateRoot common.Hash, accessList map[common.Address][]common.Hash) (Reader, error) {
|
||||
panic("not implemented")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import (
|
|||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/ethereum/go-ethereum/trie"
|
||||
"github.com/ethereum/go-ethereum/triedb"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
// MPTDatabase is an implementation of Database interface for Merkle Patricia Tries.
|
||||
|
|
@ -186,7 +187,7 @@ func (db *MPTDatabase) Iteratee(root common.Hash) (Iteratee, error) {
|
|||
return newStateIteratee(true, root, db.triedb, db.snap)
|
||||
}
|
||||
|
||||
func (db *MPTDatabase) ReaderWithPrefetch(stateRoot common.Hash, accessList map[common.Address][]common.Hash, threads int, block bool) (Reader, error) {
|
||||
func (db *MPTDatabase) ReaderWithPrefetch(stateRoot common.Hash, accessList map[common.Address][]common.Hash) (Reader, error) {
|
||||
base, err := db.StateReader(stateRoot)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -195,12 +196,7 @@ func (db *MPTDatabase) ReaderWithPrefetch(stateRoot common.Hash, accessList map[
|
|||
r := newStateReaderWithStats(newStateReaderWithCache(base))
|
||||
|
||||
// Construct the state reader with background prefetching
|
||||
pr := newPrefetchStateReader(r, accessList, threads)
|
||||
if block {
|
||||
if err := pr.Wait(); err != nil {
|
||||
panic("this should unreachable")
|
||||
}
|
||||
}
|
||||
pr := newPrefetchStateReader(r, accessList, runtime.NumCPU())
|
||||
|
||||
return newReaderWithPrefetch(db.codedb.Reader(), pr, pr), nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ func (db *UBTDatabase) Reader(stateRoot common.Hash) (Reader, error) {
|
|||
return newReader(db.codedb.Reader(), sr), nil
|
||||
}
|
||||
|
||||
func (db *UBTDatabase) ReaderWithPrefetch(stateRoot common.Hash, accessList map[common.Address][]common.Hash, threads int, block bool) (Reader, error) {
|
||||
func (db *UBTDatabase) ReaderWithPrefetch(stateRoot common.Hash, accessList map[common.Address][]common.Hash) (Reader, error) {
|
||||
panic("not implemented")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -153,15 +153,12 @@ type StorageKeys map[common.Address][]common.Hash
|
|||
|
||||
// StorageKeys returns the set of accounts and storage keys mutated in the access
|
||||
// list. If reads is set, the un-mutated accounts/keys are included in the result.
|
||||
func (p *AccessListReader) StorageKeys(reads bool) (keys StorageKeys) {
|
||||
func (p *AccessListReader) StorageKeys() (keys StorageKeys) {
|
||||
keys = make(StorageKeys)
|
||||
for addr, a := range p.accounts {
|
||||
for _, storageChange := range a.StorageChanges {
|
||||
keys[addr] = append(keys[addr], storageChange.Slot.Bytes32())
|
||||
}
|
||||
if !(reads && len(a.StorageReads) > 0) {
|
||||
continue
|
||||
}
|
||||
for _, storageRead := range a.StorageReads {
|
||||
keys[addr] = append(keys[addr], storageRead.Bytes32())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -294,10 +294,6 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) {
|
|||
}
|
||||
options.Overrides = &overrides
|
||||
|
||||
options.BALExecutionMode = config.BALExecutionMode
|
||||
options.BlockingPrefetch = config.BlockingPrefetch
|
||||
options.PrefetchWorkers = int(config.PrefetchWorkers)
|
||||
|
||||
eth.blockchain, err = core.NewBlockChain(chainDb, config.Genesis, eth.engine, options)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ package ethconfig
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/ethereum/go-ethereum/core/types/bal"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
|
|
@ -225,10 +224,6 @@ type Config struct {
|
|||
|
||||
// RangeLimit restricts the maximum range (end - start) for range queries.
|
||||
RangeLimit uint64 `toml:",omitempty"`
|
||||
|
||||
BALExecutionMode bal.BALExecutionMode
|
||||
PrefetchWorkers uint
|
||||
BlockingPrefetch bool
|
||||
}
|
||||
|
||||
// CreateConsensusEngine creates a consensus engine for the given chain config.
|
||||
|
|
|
|||
Loading…
Reference in a new issue