diff --git a/src/state/state_transition.rs b/src/state/state_transition.rs index 21cb54bfd6..8b287e4451 100644 --- a/src/state/state_transition.rs +++ b/src/state/state_transition.rs @@ -12,14 +12,14 @@ fn get_shift_from_source(source: &[u8], offset: usize) -> u32 { // Given entropy in the form of `seed`, return a shuffled list of validators // of size `validator_count` or `sample`. pub fn get_shuffling( - seed: Sha256Digest, - validator_count: u32, - sample: Option, - config: Config) + seed: &Sha256Digest, + validator_count: &u32, + sample: &Option, + config: &Config) -> Vec { let max_validators = config.max_validators; - assert!(validator_count <= max_validators); + assert!(*validator_count <= max_validators); // TODO: figure out why the Python implementation uses // this `rand_max` var. @@ -28,12 +28,12 @@ pub fn get_shuffling( Some(x) => x, None => validator_count }; - let mut output: Vec = (0..validator_range).collect(); + let mut output: Vec = (0..*validator_range).collect(); let mut source = Blake2s::new(); source.input(&seed); let mut v = 0; - while v < validator_range { + while v < *validator_range { let current_source = source.result(); let mut source_offset = 0; while source_offset < 30 { @@ -41,7 +41,7 @@ pub fn get_shuffling( let shuffled_position = (m % (validator_count - v)) + v; output.swap(v as usize, shuffled_position as usize); v += 1; - if v >= validator_count { break; } + if v >= *validator_count { break; } source_offset += 3; } // Re-hash the source @@ -83,10 +83,10 @@ mod tests { #[test] fn test_shuffling() { let s = get_shuffling( - Sha256Digest::zero(), - 10, - None, - Config::standard()); + &Sha256Digest::zero(), + &10, + &None, + &Config::standard()); assert_eq!(s, vec!(0, 9, 7, 6, 4, 1, 8, 5, 2, 3), "10 validator shuffle was not as expected");