From 7bb496d580b6e2534ce9cdfe07eea13b2f3a8c6a Mon Sep 17 00:00:00 2001 From: spencer-tb Date: Thu, 2 Jul 2026 16:22:47 +0100 Subject: [PATCH] cmd/evm, core: fixes for eels tests@v20.0.0 release --- core/blockchain_test.go | 10 +++++++-- core/state_processor.go | 8 +++++++ tests/init.go | 47 ++++++++++++++++++----------------------- 3 files changed, 37 insertions(+), 28 deletions(-) diff --git a/core/blockchain_test.go b/core/blockchain_test.go index 4530895b9d..b493b117e7 100644 --- a/core/blockchain_test.go +++ b/core/blockchain_test.go @@ -4127,6 +4127,8 @@ func TestEIP7702(t *testing.T) { Nonce: 0, Balance: big.NewInt(0), }, + params.WithdrawalQueueAddress: {Code: params.WithdrawalQueueCode}, + params.ConsolidationQueueAddress: {Code: params.ConsolidationQueueCode}, }, } @@ -4431,8 +4433,12 @@ func TestGetCanonicalReceipt(t *testing.T) { address = crypto.PubkeyToAddress(key.PublicKey) funds = big.NewInt(1000000000000000000) gspec = &Genesis{ - Config: params.MergedTestChainConfig, - Alloc: types.GenesisAlloc{address: {Balance: funds}}, + Config: params.MergedTestChainConfig, + Alloc: types.GenesisAlloc{ + address: {Balance: funds}, + params.WithdrawalQueueAddress: {Code: params.WithdrawalQueueCode}, + params.ConsolidationQueueAddress: {Code: params.ConsolidationQueueCode}, + }, BaseFee: big.NewInt(params.InitialBaseFee), } signer = types.LatestSigner(gspec.Config) diff --git a/core/state_processor.go b/core/state_processor.go index bc565db6f9..1cd2eeb2f9 100644 --- a/core/state_processor.go +++ b/core/state_processor.go @@ -188,6 +188,14 @@ func PostExecution(ctx context.Context, config *params.ChainConfig, number *big. rules := config.Rules(number, true, time) // IsMerge is always true // Read requests if Prague is enabled. if config.IsPrague(number, time) { + // EIP-7002, EIP-7251: the block is invalid if either requests + // contract has no code, as an empty system call result is + // indistinguishable from a successful call returning no requests. + for _, addr := range []common.Address{params.WithdrawalQueueAddress, params.ConsolidationQueueAddress} { + if evm.StateDB.GetCodeSize(addr) == 0 { + return nil, nil, fmt.Errorf("requests contract %v has no code", addr) + } + } requests = [][]byte{} // EIP-6110 if err := ParseDepositLogs(&requests, allLogs, config); err != nil { diff --git a/tests/init.go b/tests/init.go index 67f199203f..38af9ef17b 100644 --- a/tests/init.go +++ b/tests/init.go @@ -487,7 +487,7 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, }, }, "OsakaToBPO1AtTime15k": { @@ -515,7 +515,7 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, }, }, "BPO2": { @@ -544,8 +544,8 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, - BPO2: bpo2BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, + BPO2: params.DefaultBPO2BlobConfig, }, }, "BPO1ToBPO2AtTime15k": { @@ -574,8 +574,8 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, - BPO2: bpo2BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, + BPO2: params.DefaultBPO2BlobConfig, }, }, "BPO3": { @@ -605,8 +605,8 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, - BPO2: bpo2BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, + BPO2: params.DefaultBPO2BlobConfig, BPO3: params.DefaultBPO3BlobConfig, }, }, @@ -637,8 +637,8 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, - BPO2: bpo2BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, + BPO2: params.DefaultBPO2BlobConfig, BPO3: params.DefaultBPO3BlobConfig, }, }, @@ -670,8 +670,8 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, - BPO2: bpo2BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, + BPO2: params.DefaultBPO2BlobConfig, BPO3: params.DefaultBPO3BlobConfig, BPO4: params.DefaultBPO4BlobConfig, }, @@ -704,8 +704,8 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, - BPO2: bpo2BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, + BPO2: params.DefaultBPO2BlobConfig, BPO3: params.DefaultBPO3BlobConfig, BPO4: params.DefaultBPO4BlobConfig, }, @@ -739,8 +739,8 @@ var Forks = map[string]*params.ChainConfig{ BlobScheduleConfig: ¶ms.BlobScheduleConfig{ Cancun: params.DefaultCancunBlobConfig, Prague: params.DefaultPragueBlobConfig, - BPO1: bpo1BlobConfig, - BPO2: bpo2BlobConfig, + BPO1: params.DefaultBPO1BlobConfig, + BPO2: params.DefaultBPO2BlobConfig, BPO3: params.DefaultBPO3BlobConfig, BPO4: params.DefaultBPO4BlobConfig, }, @@ -793,16 +793,11 @@ var Forks = map[string]*params.ChainConfig{ }, } -var bpo1BlobConfig = ¶ms.BlobConfig{ - Target: 9, - Max: 14, - UpdateFraction: 8832827, -} - -var bpo2BlobConfig = ¶ms.BlobConfig{ - Target: 14, - Max: 21, - UpdateFraction: 13739630, +func init() { + // Execution-spec-tests fixtures use the historical upgrade names for + // the EIP150 and EIP158 rulesets. + Forks["TangerineWhistle"] = Forks["EIP150"] + Forks["SpuriousDragon"] = Forks["EIP158"] } // AvailableForks returns the set of defined fork names