mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-07 00:42:42 +00:00
Propagate weight to parent's full/empty variants
This commit is contained in:
@@ -432,14 +432,24 @@ impl ProtoArray {
|
|||||||
// FULL/EMPTY virtual node based on the voter's `payload_present`
|
// FULL/EMPTY virtual node based on the voter's `payload_present`
|
||||||
// flag, NOT based on which child the vote goes through.
|
// flag, NOT based on which child the vote goes through.
|
||||||
// Propagate each child's full/empty deltas independently.
|
// Propagate each child's full/empty deltas independently.
|
||||||
parent_delta.full_delta = parent_delta
|
match node.parent_payload_status() {
|
||||||
.full_delta
|
Ok(PayloadStatus::Full) => {
|
||||||
.checked_add(node_full_delta)
|
parent_delta.full_delta = parent_delta
|
||||||
.ok_or(Error::DeltaOverflow(parent_index))?;
|
.full_delta
|
||||||
parent_delta.empty_delta = parent_delta
|
.checked_add(delta)
|
||||||
.empty_delta
|
.ok_or(Error::DeltaOverflow(parent_index))?;
|
||||||
.checked_add(node_empty_delta)
|
}
|
||||||
.ok_or(Error::DeltaOverflow(parent_index))?;
|
Ok(PayloadStatus::Empty) => {
|
||||||
|
parent_delta.empty_delta = parent_delta
|
||||||
|
.empty_delta
|
||||||
|
.checked_add(delta)
|
||||||
|
.ok_or(Error::DeltaOverflow(parent_index))?;
|
||||||
|
}
|
||||||
|
Ok(PayloadStatus::Pending) | Err(..) => {
|
||||||
|
// Pending is not reachable. Parent payload status must be Full or Empty.
|
||||||
|
// TODO(gloas): add ParentPayloadStatus = Full | Empty.
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user