Fix post-Bellatrix checkpoint sync (#4014)

* Recognise execution in post-merge blocks

* Remove `.body()`

* Fix typo

* Use `is_default_with_empty_roots`.
This commit is contained in:
Paul Hauner 2023-02-21 18:03:24 +11:00 committed by GitHub
parent eed7d65ce7
commit 1bce7a02c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -413,18 +413,18 @@ where
AttestationShufflingId::new(anchor_block_root, anchor_state, RelativeEpoch::Next)
.map_err(Error::BeaconStateError)?;
// Default any non-merge execution block hashes to 0x000..000.
let execution_status = anchor_block.message_merge().map_or_else(
|()| ExecutionStatus::irrelevant(),
|message| {
let execution_payload = &message.body.execution_payload;
if execution_payload == &<_>::default() {
let execution_status = anchor_block.message().execution_payload().map_or_else(
// If the block doesn't have an execution payload then it can't have
// execution enabled.
|_| ExecutionStatus::irrelevant(),
|execution_payload| {
if execution_payload.is_default_with_empty_roots() {
// A default payload does not have execution enabled.
ExecutionStatus::irrelevant()
} else {
// Assume that this payload is valid, since the anchor should be a trusted block and
// state.
ExecutionStatus::Valid(message.body.execution_payload.block_hash())
ExecutionStatus::Valid(execution_payload.block_hash())
}
},
);