diff --git a/Cargo.toml b/Cargo.toml index 57f0feb472..24a379b3cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,6 +34,7 @@ name = "lighthouse" members = [ "beacon_chain/chain", "beacon_chain/types", + "beacon_chain/utils/active-validators", "beacon_chain/utils/bls", "beacon_chain/utils/boolean-bitfield", "beacon_chain/utils/hashing", diff --git a/beacon_chain/utils/active-validators/Cargo.toml b/beacon_chain/utils/active-validators/Cargo.toml new file mode 100644 index 0000000000..4729747d98 --- /dev/null +++ b/beacon_chain/utils/active-validators/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "active-validators" +version = "0.1.0" +authors = ["Paul Hauner "] + +[dependencies] +types = { path = "../../types" } diff --git a/beacon_chain/validator_shuffling/src/active_validator_indices.rs b/beacon_chain/utils/active-validators/src/lib.rs similarity index 59% rename from beacon_chain/validator_shuffling/src/active_validator_indices.rs rename to beacon_chain/utils/active-validators/src/lib.rs index 1a6b7b99a1..ea78121930 100644 --- a/beacon_chain/validator_shuffling/src/active_validator_indices.rs +++ b/beacon_chain/utils/active-validators/src/lib.rs @@ -1,8 +1,14 @@ +extern crate types; + use types::{ ValidatorRecord, ValidatorStatus, }; +pub fn validator_is_active(v: &ValidatorRecord) -> bool { + v.status == ValidatorStatus::Active as u8 +} + /// Returns the indicies of each active validator in a given vec of validators. pub fn active_validator_indices(validators: &[ValidatorRecord]) -> Vec @@ -10,9 +16,10 @@ pub fn active_validator_indices(validators: &[ValidatorRecord]) validators.iter() .enumerate() .filter_map(|(i, validator)| { - match validator.status { - x if x == ValidatorStatus::Active as u8 => Some(i), - _ => None + if validator_is_active(&validator) { + Some(i) + } else { + None } }) .collect() diff --git a/beacon_chain/validator_shuffling/Cargo.toml b/beacon_chain/validator_shuffling/Cargo.toml index ba99841b80..269b5c5576 100644 --- a/beacon_chain/validator_shuffling/Cargo.toml +++ b/beacon_chain/validator_shuffling/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" authors = ["Paul Hauner "] [dependencies] +active-validators = { path = "../utils/active-validators" } honey-badger-split = { path = "../utils/honey-badger-split" } types = { path = "../types" } vec_shuffle = { path = "../utils/vec_shuffle" } diff --git a/beacon_chain/validator_shuffling/src/lib.rs b/beacon_chain/validator_shuffling/src/lib.rs index ee6f5e8fb2..a36cf0edd2 100644 --- a/beacon_chain/validator_shuffling/src/lib.rs +++ b/beacon_chain/validator_shuffling/src/lib.rs @@ -1,8 +1,8 @@ +extern crate active_validators; extern crate honey_badger_split; extern crate vec_shuffle; extern crate types; -mod active_validator_indices; mod shuffle; pub use shuffle::{ diff --git a/beacon_chain/validator_shuffling/src/shuffle.rs b/beacon_chain/validator_shuffling/src/shuffle.rs index 6e0e89c333..7db13a4df8 100644 --- a/beacon_chain/validator_shuffling/src/shuffle.rs +++ b/beacon_chain/validator_shuffling/src/shuffle.rs @@ -1,5 +1,6 @@ use std::cmp::min; +use active_validators::active_validator_indices; use honey_badger_split::SplitExt; use vec_shuffle::{ shuffle, @@ -11,7 +12,6 @@ use types::{ ChainConfig, }; -use super::active_validator_indices::active_validator_indices; type DelegatedCycle = Vec>;