## Issue Addressed #4233 ## Proposed Changes Remove the `best_justified_checkpoint` from the `PersistedForkChoiceStore` type as it is now unused. Additionally, remove the `Option`'s wrapping the `justified_checkpoint` and `finalized_checkpoint` fields on `ProtoNode` which were only present to facilitate a previous migration. Include the necessary code to facilitate the migration to a new DB schema.
75 lines
2.1 KiB
Rust
75 lines
2.1 KiB
Rust
use safe_arith::ArithError;
|
|
use types::{Checkpoint, Epoch, ExecutionBlockHash, Hash256, Slot};
|
|
|
|
#[derive(Clone, PartialEq, Debug)]
|
|
pub enum Error {
|
|
FinalizedNodeUnknown(Hash256),
|
|
JustifiedNodeUnknown(Hash256),
|
|
NodeUnknown(Hash256),
|
|
InvalidFinalizedRootChange,
|
|
InvalidNodeIndex(usize),
|
|
InvalidParentIndex(usize),
|
|
InvalidBestChildIndex(usize),
|
|
InvalidJustifiedIndex(usize),
|
|
InvalidBestDescendant(usize),
|
|
InvalidParentDelta(usize),
|
|
InvalidNodeDelta(usize),
|
|
MissingJustifiedCheckpoint,
|
|
MissingFinalizedCheckpoint,
|
|
DeltaOverflow(usize),
|
|
ProposerBoostOverflow(usize),
|
|
ReOrgThresholdOverflow,
|
|
IndexOverflow(&'static str),
|
|
InvalidExecutionDeltaOverflow(usize),
|
|
InvalidDeltaLen {
|
|
deltas: usize,
|
|
indices: usize,
|
|
},
|
|
RevertedFinalizedEpoch {
|
|
current_finalized_epoch: Epoch,
|
|
new_finalized_epoch: Epoch,
|
|
},
|
|
InvalidBestNode(Box<InvalidBestNodeInfo>),
|
|
InvalidAncestorOfValidPayload {
|
|
ancestor_block_root: Hash256,
|
|
ancestor_payload_block_hash: ExecutionBlockHash,
|
|
},
|
|
ValidExecutionStatusBecameInvalid {
|
|
block_root: Hash256,
|
|
payload_block_hash: ExecutionBlockHash,
|
|
},
|
|
InvalidJustifiedCheckpointExecutionStatus {
|
|
justified_root: Hash256,
|
|
},
|
|
UnknownLatestValidAncestorHash {
|
|
block_root: Hash256,
|
|
latest_valid_ancestor_hash: Option<ExecutionBlockHash>,
|
|
},
|
|
IrrelevantDescendant {
|
|
block_root: Hash256,
|
|
},
|
|
ParentExecutionStatusIsInvalid {
|
|
block_root: Hash256,
|
|
parent_root: Hash256,
|
|
},
|
|
InvalidEpochOffset(u64),
|
|
Arith(ArithError),
|
|
}
|
|
|
|
impl From<ArithError> for Error {
|
|
fn from(e: ArithError) -> Self {
|
|
Error::Arith(e)
|
|
}
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, Debug)]
|
|
pub struct InvalidBestNodeInfo {
|
|
pub current_slot: Slot,
|
|
pub start_root: Hash256,
|
|
pub justified_checkpoint: Checkpoint,
|
|
pub finalized_checkpoint: Checkpoint,
|
|
pub head_root: Hash256,
|
|
pub head_justified_checkpoint: Checkpoint,
|
|
pub head_finalized_checkpoint: Checkpoint,
|
|
}
|