From 992883df313d51fd03fb18006787e9152423a5e5 Mon Sep 17 00:00:00 2001 From: nethoxa Date: Thu, 13 Feb 2025 21:06:22 +0100 Subject: [PATCH 1/2] internal/ethapi: Fix processBlock not handling EL requests --- internal/ethapi/simulate.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/internal/ethapi/simulate.go b/internal/ethapi/simulate.go index c461b1f0a1..6c94c47d98 100644 --- a/internal/ethapi/simulate.go +++ b/internal/ethapi/simulate.go @@ -194,6 +194,7 @@ func (sim *simulator) processBlock(ctx context.Context, block *simBlock, header, if precompiles != nil { evm.SetPrecompiles(precompiles) } + var allLogs []*types.Log for i, call := range block.Calls { if err := ctx.Err(); err != nil { return nil, nil, err @@ -234,9 +235,23 @@ func (sim *simulator) processBlock(ctx context.Context, block *simBlock, header, } } else { callRes.Status = hexutil.Uint64(types.ReceiptStatusSuccessful) + allLogs = append(allLogs, callRes.Logs...) } callResults[i] = callRes } + var requests [][]byte + // Process EIP-7685 requests + if sim.chainConfig.IsPrague(header.Number, header.Time) { + requests = [][]byte{} + // EIP-6110 + if err := core.ParseDepositLogs(&requests, allLogs, sim.chainConfig); err != nil { + return nil, nil, err + } + // EIP-7002 + core.ProcessWithdrawalQueue(&requests, evm) + // EIP-7251 + core.ProcessConsolidationQueue(&requests, evm) + } header.Root = sim.state.IntermediateRoot(true) header.GasUsed = gasUsed if sim.chainConfig.IsCancun(header.Number, header.Time) { @@ -246,6 +261,10 @@ func (sim *simulator) processBlock(ctx context.Context, block *simBlock, header, if sim.chainConfig.IsShanghai(header.Number, header.Time) { withdrawals = make([]*types.Withdrawal, 0) } + if requests != nil { + reqHash := types.CalcRequestsHash(requests) + header.RequestsHash = &reqHash + } b := types.NewBlock(header, &types.Body{Transactions: txes, Withdrawals: withdrawals}, receipts, trie.NewStackTrie(nil)) repairLogs(callResults, b.Hash()) return b, callResults, nil From 5aa511ecf2b28c5dda8d36066d33dc8e7ee988cc Mon Sep 17 00:00:00 2001 From: nethoxa Date: Tue, 18 Feb 2025 21:57:28 +0100 Subject: [PATCH 2/2] internal/ethapi: Fix processBlock not calling ProcessParentBlockHash --- internal/ethapi/simulate.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/ethapi/simulate.go b/internal/ethapi/simulate.go index 6c94c47d98..227fd0e8e5 100644 --- a/internal/ethapi/simulate.go +++ b/internal/ethapi/simulate.go @@ -194,6 +194,9 @@ func (sim *simulator) processBlock(ctx context.Context, block *simBlock, header, if precompiles != nil { evm.SetPrecompiles(precompiles) } + if sim.chainConfig.IsPrague(header.Number, header.Time) || sim.chainConfig.IsVerkle(header.Number, header.Time) { + core.ProcessParentBlockHash(header.ParentHash, evm) + } var allLogs []*types.Log for i, call := range block.Calls { if err := ctx.Err(); err != nil {