From da402f4b06ad8a27581e914e04eedf330d13f2c0 Mon Sep 17 00:00:00 2001 From: felipe Date: Wed, 29 Apr 2026 12:04:54 +0200 Subject: [PATCH] cmd/evm: wire up t8n with EELS binary fork (#575) --- cmd/evm/internal/t8ntool/execution.go | 16 +++++++++++++-- tests/init.go | 28 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/cmd/evm/internal/t8ntool/execution.go b/cmd/evm/internal/t8ntool/execution.go index 2d8535cb6d..38e11fad02 100644 --- a/cmd/evm/internal/t8ntool/execution.go +++ b/cmd/evm/internal/t8ntool/execution.go @@ -393,8 +393,20 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, return statedb, execRs, body, nil } +// newPrestateTrieDBConfig returns the triedb config used to construct the +// prestate. UBT mode requires the path-based backend; the legacy hash-based +// backend cannot decode UBT-encoded nodes. +func newPrestateTrieDBConfig(isBintrie bool) *triedb.Config { + if isBintrie { + cfg := *triedb.UBTDefaults + cfg.Preimages = true + return &cfg + } + return &triedb.Config{Preimages: true} +} + func MakePreState(db ethdb.Database, accounts types.GenesisAlloc, isBintrie bool) *state.StateDB { - tdb := triedb.NewDatabase(db, &triedb.Config{Preimages: true, IsUBT: isBintrie}) + tdb := triedb.NewDatabase(db, newPrestateTrieDBConfig(isBintrie)) sdb := state.NewDatabase(tdb, nil) if isBintrie { sdb.(*state.UBTDatabase).EnableAllocRecording() @@ -436,7 +448,7 @@ func MakePreState(db ethdb.Database, accounts types.GenesisAlloc, isBintrie bool // MakePreStateStreaming is like MakePreState, but decodes the alloc from disk // one account at a time so the full map is never held in memory. func MakePreStateStreaming(db ethdb.Database, allocPath string, isBintrie bool) (*state.StateDB, error) { - tdb := triedb.NewDatabase(db, &triedb.Config{Preimages: true, IsUBT: isBintrie}) + tdb := triedb.NewDatabase(db, newPrestateTrieDBConfig(isBintrie)) sdb := state.NewDatabase(tdb, nil) if isBintrie { sdb.(*state.UBTDatabase).EnableAllocRecording() diff --git a/tests/init.go b/tests/init.go index 3db988a993..2550eb1231 100644 --- a/tests/init.go +++ b/tests/init.go @@ -776,6 +776,34 @@ var Forks = map[string]*params.ChainConfig{ ShanghaiTime: u64(0), UBTTime: u64(0), }, + "Binary": { + ChainID: big.NewInt(1), + HomesteadBlock: big.NewInt(0), + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + ArrowGlacierBlock: big.NewInt(0), + MergeNetsplitBlock: big.NewInt(0), + TerminalTotalDifficulty: big.NewInt(0), + ShanghaiTime: u64(0), + CancunTime: u64(0), + PragueTime: u64(0), + OsakaTime: u64(0), + UBTTime: u64(0), + DepositContractAddress: params.MainnetChainConfig.DepositContractAddress, + BlobScheduleConfig: ¶ms.BlobScheduleConfig{ + Cancun: params.DefaultCancunBlobConfig, + Prague: params.DefaultPragueBlobConfig, + Osaka: params.DefaultOsakaBlobConfig, + }, + }, } var bpo1BlobConfig = ¶ms.BlobConfig{