Implement tree states & hierarchical state DB

This commit is contained in:
Michael Sproul
2023-06-19 10:14:47 +10:00
parent 2bb62b7f7d
commit 23db089a7a
193 changed files with 6093 additions and 5925 deletions

View File

@@ -360,20 +360,20 @@ pub enum ValidatorStatus {
impl ValidatorStatus {
pub fn from_validator(validator: &Validator, epoch: Epoch, far_future_epoch: Epoch) -> Self {
if validator.is_withdrawable_at(epoch) {
if validator.effective_balance == 0 {
if validator.effective_balance() == 0 {
ValidatorStatus::WithdrawalDone
} else {
ValidatorStatus::WithdrawalPossible
}
} else if validator.is_exited_at(epoch) && epoch < validator.withdrawable_epoch {
if validator.slashed {
} else if validator.is_exited_at(epoch) && epoch < validator.withdrawable_epoch() {
if validator.slashed() {
ValidatorStatus::ExitedSlashed
} else {
ValidatorStatus::ExitedUnslashed
}
} else if validator.is_active_at(epoch) {
if validator.exit_epoch < far_future_epoch {
if validator.slashed {
if validator.exit_epoch() < far_future_epoch {
if validator.slashed() {
ValidatorStatus::ActiveSlashed
} else {
ValidatorStatus::ActiveExiting
@@ -384,7 +384,7 @@ impl ValidatorStatus {
// `pending` statuses are specified as validators where `validator.activation_epoch > current_epoch`.
// If this code is reached, this criteria must have been met because `validator.is_active_at(epoch)`,
// `validator.is_exited_at(epoch)`, and `validator.is_withdrawable_at(epoch)` all returned false.
} else if validator.activation_eligibility_epoch == far_future_epoch {
} else if validator.activation_eligibility_epoch() == far_future_epoch {
ValidatorStatus::PendingInitialized
} else {
ValidatorStatus::PendingQueued
@@ -912,6 +912,7 @@ pub struct SseLateHead {
pub proposer_graffiti: String,
pub block_delay: Duration,
pub observed_delay: Option<Duration>,
pub attestable_delay: Option<Duration>,
pub imported_delay: Option<Duration>,
pub set_as_head_delay: Option<Duration>,
pub execution_optimistic: bool,