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.
func (o *BlockOverrides) ApplyToHeader(header *types.Header) {
// MakeHeader returns a new header object with the overridden
// fields.
func (o *BlockOverrides) MakeHeader(header *types.Header) *types.Header {
if o == nil {
return
return header
}
h := types.CopyHeader(header)
if o.Number != nil {
header.Number = o.Number.ToInt()
h.Number = o.Number.ToInt()
}
if o.Difficulty != nil {
header.Difficulty = o.Difficulty.ToInt()
h.Difficulty = o.Difficulty.ToInt()
}
if o.Time != nil {
header.Time = uint64(*o.Time)
h.Time = uint64(*o.Time)
}
if o.GasLimit != nil {
header.GasLimit = uint64(*o.GasLimit)
h.GasLimit = uint64(*o.GasLimit)
}
if o.FeeRecipient != nil {
header.Coinbase = *o.FeeRecipient
h.Coinbase = *o.FeeRecipient
}
if o.PrevRandao != nil {
header.MixDigest = *o.PrevRandao
h.MixDigest = *o.PrevRandao
}
if o.BaseFeePerGas != nil {
header.BaseFee = o.BaseFeePerGas.ToInt()
h.BaseFee = o.BaseFeePerGas.ToInt()
}
return h
}
// 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) {
res := make([]*types.Header, len(blocks))
var (
@ -360,8 +361,7 @@ func makeHeaders(config *params.ChainConfig, blocks []mcBlock, base *types.Heade
//MixDigest: header.MixDigest,
BaseFee: baseFee,
}
overrides.ApplyToHeader(header)
res[bi] = header
res[bi] = overrides.MakeHeader(header)
}
return res, nil
}