state_processing: delete get_attestation_participants
This commit is contained in:
		
							parent
							
								
									3a0f00215d
								
							
						
					
					
						commit
						e4bbcd333a
					
				| @ -1,38 +0,0 @@ | ||||
| use crate::common::verify_bitfield_length; | ||||
| use types::*; | ||||
| 
 | ||||
| /// Returns validator indices which participated in the attestation.
 | ||||
| ///
 | ||||
| /// Spec v0.5.1
 | ||||
| pub fn get_attestation_participants<T: EthSpec>( | ||||
|     state: &BeaconState<T>, | ||||
|     attestation_data: &AttestationData, | ||||
|     bitfield: &Bitfield, | ||||
|     spec: &ChainSpec, | ||||
| ) -> Result<Vec<usize>, BeaconStateError> { | ||||
|     let epoch = attestation_data.slot.epoch(spec.slots_per_epoch); | ||||
| 
 | ||||
|     let crosslink_committee = | ||||
|         state.get_crosslink_committee_for_shard(epoch, attestation_data.shard, spec)?; | ||||
| 
 | ||||
|     if crosslink_committee.slot != attestation_data.slot { | ||||
|         return Err(BeaconStateError::NoCommitteeForShard); | ||||
|     } | ||||
| 
 | ||||
|     let committee = &crosslink_committee.committee; | ||||
| 
 | ||||
|     if !verify_bitfield_length(&bitfield, committee.len()) { | ||||
|         return Err(BeaconStateError::InvalidBitfield); | ||||
|     } | ||||
| 
 | ||||
|     let mut participants = Vec::with_capacity(committee.len()); | ||||
|     for (i, validator_index) in committee.iter().enumerate() { | ||||
|         match bitfield.get(i) { | ||||
|             Ok(bit) if bit => participants.push(*validator_index), | ||||
|             _ => {} | ||||
|         } | ||||
|     } | ||||
|     participants.shrink_to_fit(); | ||||
| 
 | ||||
|     Ok(participants) | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user