mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 13:46:43 +00:00
apply block header overrides to enable get the correct blockhash
This commit is contained in:
parent
355228b011
commit
78c435f590
2 changed files with 31 additions and 1 deletions
|
|
@ -953,7 +953,14 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc
|
||||||
}
|
}
|
||||||
defer release()
|
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.
|
// Apply the customization rules if required.
|
||||||
if config != nil {
|
if config != nil {
|
||||||
if overrideErr := config.BlockOverrides.Apply(&vmctx); overrideErr != nil {
|
if overrideErr := config.BlockOverrides.Apply(&vmctx); overrideErr != nil {
|
||||||
|
|
|
||||||
|
|
@ -171,6 +171,29 @@ func (o *BlockOverrides) Apply(blockCtx *vm.BlockContext) error {
|
||||||
return nil
|
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
|
// MakeHeader returns a new header object with the overridden
|
||||||
// fields.
|
// fields.
|
||||||
// Note: MakeHeader ignores BlobBaseFee if set. That's because
|
// Note: MakeHeader ignores BlobBaseFee if set. That's because
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue