mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-17 03:42:46 +00:00
* Update to spec v0.9.0 * Update to v0.9.1 * Bump spec tags for v0.9.1 * Formatting, fix CI failures * Resolve accidental KeyPair merge conflict * Document new BeaconState functions * Fix incorrect cache drops in `advance_caches` * Update fork choice for v0.9.1 * Clean up some FIXMEs * Fix a few docs/logs
28 lines
830 B
Rust
28 lines
830 B
Rust
use std::collections::BTreeSet;
|
|
use types::*;
|
|
|
|
/// Returns validator indices which participated in the attestation, sorted by increasing index.
|
|
///
|
|
/// Spec v0.9.1
|
|
pub fn get_attesting_indices<T: EthSpec>(
|
|
state: &BeaconState<T>,
|
|
attestation_data: &AttestationData,
|
|
bitlist: &BitList<T::MaxValidatorsPerCommittee>,
|
|
) -> Result<BTreeSet<usize>, BeaconStateError> {
|
|
let committee = state.get_beacon_committee(attestation_data.slot, attestation_data.index)?;
|
|
|
|
if bitlist.len() != committee.committee.len() {
|
|
return Err(BeaconStateError::InvalidBitfield);
|
|
}
|
|
|
|
Ok(committee
|
|
.committee
|
|
.iter()
|
|
.enumerate()
|
|
.filter_map(|(i, validator_index)| match bitlist.get(i) {
|
|
Ok(true) => Some(*validator_index),
|
|
_ => None,
|
|
})
|
|
.collect())
|
|
}
|