Remove state.get_crosslink_committee fn
Replaced by state.get_crosslink_committee_for_shard
This commit is contained in:
parent
ea96d24420
commit
9264ec1aa9
@ -163,7 +163,8 @@ pub fn process_crosslinks<T: EthSpec>(
|
|||||||
let epoch = relative_epoch.into_epoch(state.current_epoch());
|
let epoch = relative_epoch.into_epoch(state.current_epoch());
|
||||||
for offset in 0..state.get_epoch_committee_count(relative_epoch)? {
|
for offset in 0..state.get_epoch_committee_count(relative_epoch)? {
|
||||||
let shard = (state.get_epoch_start_shard(relative_epoch)? + offset) % spec.shard_count;
|
let shard = (state.get_epoch_start_shard(relative_epoch)? + offset) % spec.shard_count;
|
||||||
let crosslink_committee = state.get_crosslink_committee(epoch, shard, spec)?;
|
let crosslink_committee =
|
||||||
|
state.get_crosslink_committee_for_shard(shard, relative_epoch)?;
|
||||||
|
|
||||||
let winning_root = winning_root(state, shard, epoch, spec)?;
|
let winning_root = winning_root(state, shard, epoch, spec)?;
|
||||||
|
|
||||||
|
@ -8,13 +8,12 @@ pub fn get_attesting_indices_unsorted<T: EthSpec>(
|
|||||||
state: &BeaconState<T>,
|
state: &BeaconState<T>,
|
||||||
attestation_data: &AttestationData,
|
attestation_data: &AttestationData,
|
||||||
bitfield: &Bitfield,
|
bitfield: &Bitfield,
|
||||||
spec: &ChainSpec,
|
|
||||||
) -> Result<Vec<usize>, BeaconStateError> {
|
) -> Result<Vec<usize>, BeaconStateError> {
|
||||||
let committee = state.get_crosslink_committee(
|
let target_relative_epoch =
|
||||||
attestation_data.target_epoch,
|
RelativeEpoch::from_epoch(state.current_epoch(), attestation_data.target_epoch)?;
|
||||||
attestation_data.shard,
|
|
||||||
spec,
|
let committee =
|
||||||
)?;
|
state.get_crosslink_committee_for_shard(attestation_data.shard, target_relative_epoch)?;
|
||||||
|
|
||||||
if !verify_bitfield_length(&bitfield, committee.committee.len()) {
|
if !verify_bitfield_length(&bitfield, committee.committee.len()) {
|
||||||
return Err(BeaconStateError::InvalidBitfield);
|
return Err(BeaconStateError::InvalidBitfield);
|
||||||
|
@ -214,7 +214,7 @@ impl ValidatorStatuses {
|
|||||||
.chain(state.current_epoch_attestations.iter())
|
.chain(state.current_epoch_attestations.iter())
|
||||||
{
|
{
|
||||||
let attesting_indices =
|
let attesting_indices =
|
||||||
get_attesting_indices_unsorted(state, &a.data, &a.aggregation_bitfield, spec)?;
|
get_attesting_indices_unsorted(state, &a.data, &a.aggregation_bitfield)?;
|
||||||
|
|
||||||
let mut status = ValidatorStatus::default();
|
let mut status = ValidatorStatus::default();
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ pub fn winning_root<T: EthSpec>(
|
|||||||
let mut winning_root = None;
|
let mut winning_root = None;
|
||||||
for (crosslink, attestations) in candidate_crosslink_map {
|
for (crosslink, attestations) in candidate_crosslink_map {
|
||||||
let attesting_validator_indices =
|
let attesting_validator_indices =
|
||||||
get_unslashed_attesting_indices_unsorted(state, &attestations, spec)?;
|
get_unslashed_attesting_indices_unsorted(state, &attestations)?;
|
||||||
let total_attesting_balance =
|
let total_attesting_balance =
|
||||||
state.get_total_balance(&attesting_validator_indices, spec)?;
|
state.get_total_balance(&attesting_validator_indices, spec)?;
|
||||||
|
|
||||||
@ -102,7 +102,6 @@ pub fn winning_root<T: EthSpec>(
|
|||||||
pub fn get_unslashed_attesting_indices_unsorted<T: EthSpec>(
|
pub fn get_unslashed_attesting_indices_unsorted<T: EthSpec>(
|
||||||
state: &BeaconState<T>,
|
state: &BeaconState<T>,
|
||||||
attestations: &[&PendingAttestation],
|
attestations: &[&PendingAttestation],
|
||||||
spec: &ChainSpec,
|
|
||||||
) -> Result<Vec<usize>, BeaconStateError> {
|
) -> Result<Vec<usize>, BeaconStateError> {
|
||||||
let mut output = HashSet::new();
|
let mut output = HashSet::new();
|
||||||
for a in attestations {
|
for a in attestations {
|
||||||
@ -110,7 +109,6 @@ pub fn get_unslashed_attesting_indices_unsorted<T: EthSpec>(
|
|||||||
state,
|
state,
|
||||||
&a.data,
|
&a.data,
|
||||||
&a.aggregation_bitfield,
|
&a.aggregation_bitfield,
|
||||||
spec,
|
|
||||||
)?);
|
)?);
|
||||||
}
|
}
|
||||||
Ok(output
|
Ok(output
|
||||||
|
@ -307,12 +307,12 @@ impl<T: EthSpec> BeaconState<T> {
|
|||||||
///
|
///
|
||||||
/// Spec v0.6.1
|
/// Spec v0.6.1
|
||||||
pub fn get_attestation_slot(&self, attestation_data: &AttestationData) -> Result<Slot, Error> {
|
pub fn get_attestation_slot(&self, attestation_data: &AttestationData) -> Result<Slot, Error> {
|
||||||
let target_epoch =
|
let target_relative_epoch =
|
||||||
RelativeEpoch::from_epoch(self.current_epoch(), attestation_data.target_epoch)?;
|
RelativeEpoch::from_epoch(self.current_epoch(), attestation_data.target_epoch)?;
|
||||||
|
|
||||||
let cc = self
|
let cc =
|
||||||
.get_crosslink_committee_for_shard(attestation_data.shard, target_epoch)?
|
self.get_crosslink_committee_for_shard(attestation_data.shard, target_relative_epoch)?;
|
||||||
.ok_or_else(|| Error::NoCommitteeForShard)?;
|
|
||||||
Ok(cc.slot)
|
Ok(cc.slot)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,25 +361,14 @@ impl<T: EthSpec> BeaconState<T> {
|
|||||||
&self,
|
&self,
|
||||||
shard: u64,
|
shard: u64,
|
||||||
relative_epoch: RelativeEpoch,
|
relative_epoch: RelativeEpoch,
|
||||||
) -> Result<Option<CrosslinkCommittee>, Error> {
|
) -> Result<CrosslinkCommittee, Error> {
|
||||||
let cache = self.cache(relative_epoch)?;
|
let cache = self.cache(relative_epoch)?;
|
||||||
|
|
||||||
Ok(cache.get_crosslink_committee_for_shard(shard))
|
let committee = cache
|
||||||
}
|
.get_crosslink_committee_for_shard(shard)
|
||||||
|
.ok_or_else(|| Error::NoCommitteeForShard)?;
|
||||||
|
|
||||||
/// Return the crosslink committeee for `shard` in `epoch`.
|
Ok(committee)
|
||||||
///
|
|
||||||
/// Note: Utilizes the cache and will fail if the appropriate cache is not initialized.
|
|
||||||
///
|
|
||||||
/// Spec v0.6.1
|
|
||||||
pub fn get_crosslink_committee(
|
|
||||||
&self,
|
|
||||||
epoch: Epoch,
|
|
||||||
shard: u64,
|
|
||||||
spec: &ChainSpec,
|
|
||||||
) -> Result<&CrosslinkCommittee, Error> {
|
|
||||||
drop((epoch, shard, spec));
|
|
||||||
unimplemented!()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the beacon proposer index for the `slot` in the given `relative_epoch`.
|
/// Returns the beacon proposer index for the `slot` in the given `relative_epoch`.
|
||||||
|
Loading…
Reference in New Issue
Block a user