state_processing: get_attesting_indices in common

This commit is contained in:
Michael Sproul 2019-05-21 11:45:21 +10:00
parent 048f342e1d
commit d3d2900a6a
No known key found for this signature in database
GPG Key ID: 77B1309D2E54E914
5 changed files with 20 additions and 4 deletions

View File

@ -1,7 +1,22 @@
use crate::common::verify_bitfield_length;
use types::*;
/// Returns validator indices which participated in the attestation.
/// Returns validator indices which participated in the attestation, sorted by increasing index.
///
/// Spec v0.6.1
pub fn get_attesting_indices<T: EthSpec>(
state: &BeaconState<T>,
attestation_data: &AttestationData,
bitfield: &Bitfield,
) -> Result<Vec<usize>, BeaconStateError> {
get_attesting_indices_unsorted(state, attestation_data, bitfield).map(|mut indices| {
// Fast unstable sort is safe because validator indices are unique
indices.sort_unstable();
indices
})
}
/// Returns validator indices which participated in the attestation, unsorted.
///
/// Spec v0.6.1
pub fn get_attesting_indices_unsorted<T: EthSpec>(

View File

@ -1,7 +1,9 @@
mod exit;
mod get_attesting_indices;
mod slash_validator;
mod verify_bitfield;
pub use exit::initiate_validator_exit;
pub use get_attesting_indices::{get_attesting_indices, get_attesting_indices_unsorted};
pub use slash_validator::slash_validator;
pub use verify_bitfield::verify_bitfield_length;

View File

@ -10,7 +10,6 @@ use winning_root::{winning_root, WinningRoot};
pub mod apply_rewards;
pub mod errors;
pub mod get_attesting_indices;
pub mod inclusion_distance;
pub mod process_slashings;
pub mod registry_updates;

View File

@ -1,5 +1,5 @@
use super::get_attesting_indices::get_attesting_indices_unsorted;
use super::WinningRootHashSet;
use crate::common::get_attesting_indices_unsorted;
use types::*;
/// Sets the boolean `var` on `self` to be true if it is true on `other`. Otherwise leaves `self`

View File

@ -1,4 +1,4 @@
use super::get_attesting_indices::get_attesting_indices_unsorted;
use crate::common::get_attesting_indices_unsorted;
use std::collections::{HashMap, HashSet};
use tree_hash::TreeHash;
use types::*;