From 78c435f5904f7db581f7a9a3e1792b23983426ec Mon Sep 17 00:00:00 2001 From: shantichanal <158101918+shantichanal@users.noreply.github.com> Date: Thu, 10 Jul 2025 19:26:34 +0200 Subject: [PATCH] apply block header overrides to enable get the correct blockhash --- eth/tracers/api.go | 9 ++++++++- internal/ethapi/override/override.go | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/eth/tracers/api.go b/eth/tracers/api.go index 6962023343..d7e3ad1fff 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -953,7 +953,14 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc } defer release() - vmctx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) + hdr := *block.Header() + if config != nil { + if err := config.BlockOverrides.ApplyHeader(&hdr); err != nil { + return nil, err + } + } + + vmctx := core.NewEVMBlockContext(&hdr, api.chainContext(ctx), nil) // Apply the customization rules if required. if config != nil { if overrideErr := config.BlockOverrides.Apply(&vmctx); overrideErr != nil { diff --git a/internal/ethapi/override/override.go b/internal/ethapi/override/override.go index 0bcf3c444d..95fbe15b76 100644 --- a/internal/ethapi/override/override.go +++ b/internal/ethapi/override/override.go @@ -171,6 +171,29 @@ func (o *BlockOverrides) Apply(blockCtx *vm.BlockContext) error { return nil } +func (o *BlockOverrides) ApplyHeader(h *types.Header) error { + if o == nil { + return nil + } + if o.Number != nil { + h.Number = o.Number.ToInt() + } + if o.Time != nil { + h.Time = uint64(*o.Time) + } + if o.GasLimit != nil { + h.GasLimit = uint64(*o.GasLimit) + } + if o.Difficulty != nil { + h.Difficulty = o.Difficulty.ToInt() + } + if o.BaseFeePerGas != nil { + h.BaseFee = o.BaseFeePerGas.ToInt() + } + + return nil +} + // MakeHeader returns a new header object with the overridden // fields. // Note: MakeHeader ignores BlobBaseFee if set. That's because