copy header prior to applying overrides

This commit is contained in:
Sina Mahmoodi 2024-01-03 18:34:25 +03:30
parent c77da8c488
commit 3d29c1f39d
2 changed files with 15 additions and 12 deletions

View file

@ -1048,32 +1048,35 @@ func (o *BlockOverrides) Apply(blockCtx *vm.BlockContext) {
} }
} }
// ApplyToHeader overrides the given fields into a header. // MakeHeader returns a new header object with the overridden
func (o *BlockOverrides) ApplyToHeader(header *types.Header) { // fields.
func (o *BlockOverrides) MakeHeader(header *types.Header) *types.Header {
if o == nil { if o == nil {
return return header
} }
h := types.CopyHeader(header)
if o.Number != nil { if o.Number != nil {
header.Number = o.Number.ToInt() h.Number = o.Number.ToInt()
} }
if o.Difficulty != nil { if o.Difficulty != nil {
header.Difficulty = o.Difficulty.ToInt() h.Difficulty = o.Difficulty.ToInt()
} }
if o.Time != nil { if o.Time != nil {
header.Time = uint64(*o.Time) h.Time = uint64(*o.Time)
} }
if o.GasLimit != nil { if o.GasLimit != nil {
header.GasLimit = uint64(*o.GasLimit) h.GasLimit = uint64(*o.GasLimit)
} }
if o.FeeRecipient != nil { if o.FeeRecipient != nil {
header.Coinbase = *o.FeeRecipient h.Coinbase = *o.FeeRecipient
} }
if o.PrevRandao != nil { if o.PrevRandao != nil {
header.MixDigest = *o.PrevRandao h.MixDigest = *o.PrevRandao
} }
if o.BaseFeePerGas != nil { if o.BaseFeePerGas != nil {
header.BaseFee = o.BaseFeePerGas.ToInt() h.BaseFee = o.BaseFeePerGas.ToInt()
} }
return h
} }
// ChainContextBackend provides methods required to implement ChainContext. // ChainContextBackend provides methods required to implement ChainContext.

View file

@ -319,6 +319,7 @@ func repairLogs(results []mcBlockResult, blockHash common.Hash) {
} }
} }
} }
func makeHeaders(config *params.ChainConfig, blocks []mcBlock, base *types.Header) ([]*types.Header, error) { func makeHeaders(config *params.ChainConfig, blocks []mcBlock, base *types.Header) ([]*types.Header, error) {
res := make([]*types.Header, len(blocks)) res := make([]*types.Header, len(blocks))
var ( var (
@ -360,8 +361,7 @@ func makeHeaders(config *params.ChainConfig, blocks []mcBlock, base *types.Heade
//MixDigest: header.MixDigest, //MixDigest: header.MixDigest,
BaseFee: baseFee, BaseFee: baseFee,
} }
overrides.ApplyToHeader(header) res[bi] = overrides.MakeHeader(header)
res[bi] = header
} }
return res, nil return res, nil
} }