remove active_validators crate

This commit is contained in:
Alex Stokes 2018-12-12 19:22:44 -08:00
parent 1ff47720f1
commit 5eabdad0dc
No known key found for this signature in database
GPG Key ID: 51CE1721B245C086
6 changed files with 13 additions and 79 deletions

View File

@ -1,7 +0,0 @@
[package]
name = "active-validators"
version = "0.1.0"
authors = ["Paul Hauner <paul@paulhauner.com>"]
[dependencies]
types = { path = "../../types" }

View File

@ -1,64 +0,0 @@
extern crate types;
use types::{ValidatorRecord, ValidatorStatus};
/// Returns the indicies of each active validator in a given vec of validators.
pub fn active_validator_indices(validators: &[ValidatorRecord]) -> Vec<usize> {
validators
.iter()
.enumerate()
.filter_map(|(i, validator)| {
if validator.status_is(ValidatorStatus::Active) {
Some(i)
} else {
None
}
})
.collect()
}
#[cfg(test)]
mod tests {
use super::*;
pub fn validator_is_active(v: &ValidatorRecord) -> bool {
v.status_is(ValidatorStatus::Active)
}
#[test]
fn test_active_validator() {
let mut validators = vec![];
let (mut v, _) = ValidatorRecord::zero_with_thread_rand_keypair();
v.status = ValidatorStatus::Active;
assert!(validator_is_active(&v));
validators.push(v);
let (mut v, _) = ValidatorRecord::zero_with_thread_rand_keypair();
v.status = ValidatorStatus::PendingActivation;
assert!(!validator_is_active(&v));
validators.push(v);
let (mut v, _) = ValidatorRecord::zero_with_thread_rand_keypair();
v.status = ValidatorStatus::PendingExit;
assert!(!validator_is_active(&v));
validators.push(v);
let (mut v, _) = ValidatorRecord::zero_with_thread_rand_keypair();
v.status = ValidatorStatus::PendingWithdraw;
assert!(!validator_is_active(&v));
validators.push(v);
let (mut v, _) = ValidatorRecord::zero_with_thread_rand_keypair();
v.status = ValidatorStatus::Withdrawn;
assert!(!validator_is_active(&v));
validators.push(v);
let (mut v, _) = ValidatorRecord::zero_with_thread_rand_keypair();
v.status = ValidatorStatus::Penalized;
assert!(!validator_is_active(&v));
validators.push(v);
assert_eq!(active_validator_indices(&validators), vec![0]);
}
}

View File

@ -4,7 +4,6 @@ version = "0.1.0"
authors = ["Paul Hauner <paul@paulhauner.com>"]
[dependencies]
active-validators = { path = "../utils/active-validators" }
bytes = "0.4.10"
hashing = { path = "../utils/hashing" }
types = { path = "../types" }

View File

@ -1,9 +1,7 @@
extern crate active_validators;
extern crate bytes;
extern crate hashing;
extern crate types;
use active_validators::validator_is_active;
use bytes::{BufMut, BytesMut};
use hashing::canonical_hash;
use std::cmp::max;
@ -31,7 +29,7 @@ pub fn update_validator_set(
let total_balance = {
let mut bal: u64 = 0;
for v in validators.iter() {
if validator_is_active(&v) {
if v.status_is(ValidatorStatus::Active) {
bal = bal
.checked_add(v.balance)
.ok_or(UpdateValidatorSetError::ArithmeticOverflow)?;

View File

@ -1,4 +1,3 @@
extern crate active_validators;
extern crate honey_badger_split;
extern crate types;
extern crate vec_shuffle;

View File

@ -1,8 +1,7 @@
use std::cmp::min;
use active_validators::active_validator_indices;
use honey_badger_split::SplitExt;
use types::{ChainConfig, ShardAndCommittee, ValidatorRecord};
use types::{ChainConfig, ShardAndCommittee, ValidatorRecord, ValidatorStatus};
use vec_shuffle::{shuffle, ShuffleErr};
type DelegatedCycle = Vec<Vec<ShardAndCommittee>>;
@ -24,7 +23,17 @@ pub fn shard_and_committees_for_cycle(
config: &ChainConfig,
) -> Result<DelegatedCycle, ValidatorAssignmentError> {
let shuffled_validator_indices = {
let mut validator_indices = active_validator_indices(validators);
let mut validator_indices = validators
.iter()
.enumerate()
.filter_map(|(i, validator)| {
if validator.status_is(ValidatorStatus::Active) {
Some(i)
} else {
None
}
})
.collect();
shuffle(seed, validator_indices)?
};
let shard_indices: Vec<usize> = (0_usize..config.shard_count as usize).into_iter().collect();