mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-14 10:22:38 +00:00
Ensure VALID response from fcU updates protoarray (#3126)
## Issue Addressed NA ## Proposed Changes Ensures that a `VALID` response from a `forkchoiceUpdate` call will update that block in `ProtoArray`. I also had to modify the mock execution engine so it wouldn't return valid when all payloads were supposed to be some other static value. ## Additional Info NA
This commit is contained in:
@@ -337,20 +337,37 @@ impl ProtoArray {
|
||||
self.maybe_update_best_child_and_descendant(parent_index, node_index)?;
|
||||
|
||||
if matches!(block.execution_status, ExecutionStatus::Valid(_)) {
|
||||
self.propagate_execution_payload_validation(parent_index)?;
|
||||
self.propagate_execution_payload_validation_by_index(parent_index)?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Updates the `block_root` and all ancestors to have validated execution payloads.
|
||||
///
|
||||
/// Returns an error if:
|
||||
///
|
||||
/// - The `block-root` is unknown.
|
||||
/// - Any of the to-be-validated payloads are already invalid.
|
||||
pub fn propagate_execution_payload_validation(
|
||||
&mut self,
|
||||
block_root: Hash256,
|
||||
) -> Result<(), Error> {
|
||||
let index = *self
|
||||
.indices
|
||||
.get(&block_root)
|
||||
.ok_or(Error::NodeUnknown(block_root))?;
|
||||
self.propagate_execution_payload_validation_by_index(index)
|
||||
}
|
||||
|
||||
/// Updates the `verified_node_index` and all ancestors to have validated execution payloads.
|
||||
///
|
||||
/// Returns an error if:
|
||||
///
|
||||
/// - The `verified_node_index` is unknown.
|
||||
/// - Any of the to-be-validated payloads are already invalid.
|
||||
pub fn propagate_execution_payload_validation(
|
||||
fn propagate_execution_payload_validation_by_index(
|
||||
&mut self,
|
||||
verified_node_index: usize,
|
||||
) -> Result<(), Error> {
|
||||
@@ -475,7 +492,7 @@ impl ProtoArray {
|
||||
|
||||
// It might be new knowledge that this block is valid, ensure that it and all
|
||||
// ancestors are marked as valid.
|
||||
self.propagate_execution_payload_validation(index)?;
|
||||
self.propagate_execution_payload_validation_by_index(index)?;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user