From 3cc1256a723ea719f9a81b4dedacb15c439ae327 Mon Sep 17 00:00:00 2001 From: Anton Nashatyrev Date: Wed, 5 May 2021 13:31:19 +0300 Subject: [PATCH] update_pending_votes: search pending header by header.(root + slot + shard) --- specs/sharding/beacon-chain.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/specs/sharding/beacon-chain.md b/specs/sharding/beacon-chain.md index 6fd83c9cf..b93cd2e2a 100644 --- a/specs/sharding/beacon-chain.md +++ b/specs/sharding/beacon-chain.md @@ -512,17 +512,22 @@ def update_pending_votes(state: BeaconState, attestation: Attestation) -> None: pending_headers = state.current_epoch_pending_shard_headers else: pending_headers = state.previous_epoch_pending_shard_headers - pending_header = None - for header in pending_headers: - if header.root == attestation.data.shard_header_root: - pending_header = header - assert pending_header is not None - assert pending_header.slot == attestation.data.slot - assert pending_header.shard == compute_shard_from_committee_index( + + attestation_shard = compute_shard_from_committee_index( state, attestation.data.slot, attestation.data.index, ) + pending_header = None + for header in pending_headers: + if ( + header.root == attestation.data.shard_header_root + and header.slot == attestation.data.slot + and header.shard == attestation_shard + ): + pending_header = header + assert pending_header is not None + for i in range(len(pending_header.votes)): pending_header.votes[i] = pending_header.votes[i] or attestation.aggregation_bits[i]