diff --git a/eth2/state_processing/src/per_block_processing/verify_deposit.rs b/eth2/state_processing/src/per_block_processing/verify_deposit.rs index 2aeab6c5a..80d8bc24f 100644 --- a/eth2/state_processing/src/per_block_processing/verify_deposit.rs +++ b/eth2/state_processing/src/per_block_processing/verify_deposit.rs @@ -3,11 +3,8 @@ use hashing::hash; use merkle_proof::verify_merkle_proof; use ssz::ssz_encode; use ssz_derive::Encode; -use std::collections::HashMap; use types::*; -pub type PublicKeyValidatorIndexHashmap = HashMap; - /// Indicates if a `Deposit` is valid to be included in a block in the current epoch of the given /// state. /// diff --git a/eth2/state_processing/src/per_epoch_processing/process_validator_registry.rs b/eth2/state_processing/src/per_epoch_processing/process_validator_registry.rs index c830bfc24..26ebd60b3 100644 --- a/eth2/state_processing/src/per_epoch_processing/process_validator_registry.rs +++ b/eth2/state_processing/src/per_epoch_processing/process_validator_registry.rs @@ -14,7 +14,7 @@ pub fn process_validator_registry(state: &mut BeaconState, spec: &ChainSpec) -> state.previous_shuffling_seed = state.current_shuffling_seed; if should_update_validator_registry(state, spec)? { - state.update_validator_registry(spec); + state.update_validator_registry(spec)?; state.current_shuffling_epoch = next_epoch; state.current_shuffling_start_shard = (state.current_shuffling_start_shard @@ -37,7 +37,7 @@ pub fn process_validator_registry(state: &mut BeaconState, spec: &ChainSpec) -> } } - state.process_slashings(spec); + state.process_slashings(spec)?; state.process_exit_queue(spec); Ok(()) diff --git a/eth2/types/src/beacon_state/epoch_cache.rs b/eth2/types/src/beacon_state/epoch_cache.rs index 75d791e8f..ca8bcc70e 100644 --- a/eth2/types/src/beacon_state/epoch_cache.rs +++ b/eth2/types/src/beacon_state/epoch_cache.rs @@ -7,7 +7,6 @@ use swap_or_not_shuffle::shuffle_list; #[derive(Debug, PartialEq)] pub enum Error { UnableToShuffle, - NoValidators { epoch: Epoch }, UnableToGenerateSeed, } @@ -259,17 +258,19 @@ impl EpochCrosslinkCommitteesBuilder { } pub fn build(self, spec: &ChainSpec) -> Result { - if self.active_validator_indices.is_empty() { - return Err(Error::NoValidators { epoch: self.epoch }); - } - - let shuffled_active_validator_indices = shuffle_list( - self.active_validator_indices, - spec.shuffle_round_count, - &self.shuffling_seed[..], - true, - ) - .ok_or_else(|| Error::UnableToShuffle)?; + // The shuffler fails on a empty list, so if there are no active validator indices, simply + // return an empty list. + let shuffled_active_validator_indices = if self.active_validator_indices.is_empty() { + vec![] + } else { + shuffle_list( + self.active_validator_indices, + spec.shuffle_round_count, + &self.shuffling_seed[..], + true, + ) + .ok_or_else(|| Error::UnableToShuffle)? + }; let mut committees: Vec> = shuffled_active_validator_indices .honey_badger_split(self.committees_per_epoch as usize) diff --git a/eth2/types/src/test_utils/testing_beacon_state_builder.rs b/eth2/types/src/test_utils/testing_beacon_state_builder.rs index 8180673d1..e76a01e49 100644 --- a/eth2/types/src/test_utils/testing_beacon_state_builder.rs +++ b/eth2/types/src/test_utils/testing_beacon_state_builder.rs @@ -134,7 +134,7 @@ impl TestingBeaconStateBuilder { state.validator_registry = validators; state.validator_balances = balances; - debug!("BeaconState built."); + debug!("BeaconState initialized."); Self { state, keypairs } }