mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-06 06:58:39 +00:00
attach block access list in ExecutableDataToBlockNoHash
This commit is contained in:
parent
e9f3b1735b
commit
704f795ed2
2 changed files with 54 additions and 40 deletions
|
|
@ -19,6 +19,7 @@ package engine
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types/bal"
|
||||||
"math/big"
|
"math/big"
|
||||||
"slices"
|
"slices"
|
||||||
|
|
||||||
|
|
@ -350,7 +351,18 @@ func ExecutableDataToBlockNoHash(data ExecutableData, versionedHashes []common.H
|
||||||
SlotNumber: data.SlotNumber,
|
SlotNumber: data.SlotNumber,
|
||||||
BlockAccessListHash: blockAccessListHash,
|
BlockAccessListHash: blockAccessListHash,
|
||||||
}
|
}
|
||||||
return types.NewBlockWithHeader(header).WithBody(types.Body{Transactions: txs, Uncles: nil, Withdrawals: data.Withdrawals}), nil
|
body := types.Body{Transactions: txs, Uncles: nil, Withdrawals: data.Withdrawals}
|
||||||
|
if data.BlockAccessList != nil {
|
||||||
|
balHash := crypto.Keccak256Hash(data.BlockAccessList)
|
||||||
|
header.BlockAccessListHash = &balHash
|
||||||
|
var accessList bal.BlockAccessList
|
||||||
|
if err := rlp.DecodeBytes(data.BlockAccessList, &accessList); err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to decode BAL: %w\n", err)
|
||||||
|
}
|
||||||
|
block := types.NewBlockWithHeader(header).WithBody(body).WithAccessList(&accessList)
|
||||||
|
return block, nil
|
||||||
|
}
|
||||||
|
return types.NewBlockWithHeader(header).WithBody(body), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// BlockToExecutableData constructs the ExecutableData structure by filling the
|
// BlockToExecutableData constructs the ExecutableData structure by filling the
|
||||||
|
|
|
||||||
|
|
@ -770,10 +770,12 @@ func (api *ConsensusAPI) NewPayloadV5(ctx context.Context, params engine.Executa
|
||||||
return invalidStatus, paramsErr("nil beaconRoot post-cancun")
|
return invalidStatus, paramsErr("nil beaconRoot post-cancun")
|
||||||
case executionRequests == nil:
|
case executionRequests == nil:
|
||||||
return invalidStatus, paramsErr("nil executionRequests post-prague")
|
return invalidStatus, paramsErr("nil executionRequests post-prague")
|
||||||
case params.SlotNumber == nil:
|
|
||||||
return invalidStatus, paramsErr("nil slotnumber post-amsterdam")
|
|
||||||
case !api.checkFork(params.Timestamp, forks.Amsterdam):
|
case !api.checkFork(params.Timestamp, forks.Amsterdam):
|
||||||
return invalidStatus, unsupportedForkErr("newPayloadV5 must only be called for amsterdam payloads")
|
return invalidStatus, unsupportedForkErr("newPayloadV5 must only be called for amsterdam payloads")
|
||||||
|
case params.SlotNumber == nil:
|
||||||
|
return invalidStatus, paramsErr("nil slotnumber post-amsterdam")
|
||||||
|
case params.BlockAccessList == nil:
|
||||||
|
return invalidStatus, paramsErr("nil block access list post-amsterdam")
|
||||||
}
|
}
|
||||||
requests := convertRequests(executionRequests)
|
requests := convertRequests(executionRequests)
|
||||||
if err := validateRequests(requests); err != nil {
|
if err := validateRequests(requests); err != nil {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue