diff --git a/eth/tracers/api.go b/eth/tracers/api.go index d7e3ad1fff..0f98fca168 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -955,9 +955,7 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc hdr := *block.Header() if config != nil { - if err := config.BlockOverrides.ApplyHeader(&hdr); err != nil { - return nil, err - } + hdr = *config.BlockOverrides.MakeHeader(block.Header()) } vmctx := core.NewEVMBlockContext(&hdr, api.chainContext(ctx), nil) diff --git a/eth/tracers/api_test.go b/eth/tracers/api_test.go index 076e6fd8d4..434bbb21fe 100644 --- a/eth/tracers/api_test.go +++ b/eth/tracers/api_test.go @@ -689,6 +689,9 @@ func TestTracingWithOverrides(t *testing.T) { Failed bool ReturnValue string } + parentHashHex := backend.chain.GetHeaderByNumber(uint64(genBlocks - 1)).Hash().Hex()[2:] + return96 := fmt.Sprintf("0x%064s%s%064s", "", parentHashHex, "") + var testSuite = []struct { blockNumber rpc.BlockNumber call ethapi.TransactionArgs @@ -786,7 +789,7 @@ func TestTracingWithOverrides(t *testing.T) { config: &TraceCallConfig{ BlockOverrides: &override.BlockOverrides{Number: (*hexutil.Big)(big.NewInt(0x1337))}, }, - want: `{"gas":72666,"failed":false,"returnValue":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}`, + want: fmt.Sprintf(`{"gas":72666,"failed":false,"returnValue":"%s"}`, return96), }, /* pragma solidity =0.8.12; diff --git a/internal/ethapi/override/override.go b/internal/ethapi/override/override.go index 95fbe15b76..0bcf3c444d 100644 --- a/internal/ethapi/override/override.go +++ b/internal/ethapi/override/override.go @@ -171,29 +171,6 @@ 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