From 17bc3c1c72ff2cad680f96109d0fff966e2d18f9 Mon Sep 17 00:00:00 2001 From: ericsson Date: Tue, 27 Apr 2021 13:44:22 +0300 Subject: [PATCH 1/5] convert `shard` to `CommitteeIndex` when passing to `get_beacon_committee` --- specs/sharding/beacon-chain.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/specs/sharding/beacon-chain.md b/specs/sharding/beacon-chain.md index fb687e1ca..afa04ba41 100644 --- a/specs/sharding/beacon-chain.md +++ b/specs/sharding/beacon-chain.md @@ -671,7 +671,8 @@ def process_pending_headers(state: BeaconState) -> None: previous_epoch = get_previous_epoch(state) previous_epoch_start_slot = compute_start_slot_at_epoch(previous_epoch) for slot in range(previous_epoch_start_slot, previous_epoch_start_slot + SLOTS_PER_EPOCH): - for shard in range(get_active_shard_count(state, previous_epoch)): + for shard_index in range(get_active_shard_count(state, previous_epoch)): + shard = Shard(shard_index) # Pending headers for this (slot, shard) combo candidates = [ c for c in state.previous_epoch_pending_shard_headers @@ -682,7 +683,7 @@ def process_pending_headers(state: BeaconState) -> None: continue # The entire committee (and its balance) - full_committee = get_beacon_committee(state, slot, shard) + full_committee = get_beacon_committee(state, slot, CommitteeIndex(shard)) # The set of voters who voted for each header (and their total balances) voting_sets = [ set(v for i, v in enumerate(full_committee) if c.votes[i]) From 865a077aa3b63ded8dc6ad6c5950b73c3b121203 Mon Sep 17 00:00:00 2001 From: ericsson Date: Tue, 27 Apr 2021 14:14:25 +0300 Subject: [PATCH 2/5] convert `shard` and `index` to `CommitteeIndex` in `reset_pending_headers` --- specs/sharding/beacon-chain.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specs/sharding/beacon-chain.md b/specs/sharding/beacon-chain.md index afa04ba41..75033a508 100644 --- a/specs/sharding/beacon-chain.md +++ b/specs/sharding/beacon-chain.md @@ -754,8 +754,8 @@ def reset_pending_headers(state: BeaconState) -> None: next_epoch_start_slot = compute_start_slot_at_epoch(next_epoch) for slot in range(next_epoch_start_slot, next_epoch_start_slot + SLOTS_PER_EPOCH): for index in range(get_committee_count_per_slot(state, next_epoch)): - shard = compute_shard_from_committee_index(state, slot, index) - committee_length = len(get_beacon_committee(state, slot, shard)) + shard = compute_shard_from_committee_index(state, slot, CommitteeIndex(index)) + committee_length = len(get_beacon_committee(state, slot, CommitteeIndex(shard))) state.current_epoch_pending_shard_headers.append(PendingShardHeader( slot=slot, shard=shard, From 4d684bd8d959414c5fef6f764f7c7a7b34053a67 Mon Sep 17 00:00:00 2001 From: ericsson Date: Tue, 27 Apr 2021 15:44:25 +0300 Subject: [PATCH 3/5] convert `shard` to `CommitteeIndex` in `charge_confirmed_header_fees` --- specs/sharding/beacon-chain.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/specs/sharding/beacon-chain.md b/specs/sharding/beacon-chain.md index 75033a508..eb6959f47 100644 --- a/specs/sharding/beacon-chain.md +++ b/specs/sharding/beacon-chain.md @@ -719,7 +719,8 @@ def charge_confirmed_header_fees(state: BeaconState) -> None: ) previous_epoch_start_slot = compute_start_slot_at_epoch(get_previous_epoch(state)) for slot in range(previous_epoch_start_slot, previous_epoch_start_slot + SLOTS_PER_EPOCH): - for shard in range(SHARD_COUNT): + for shard_index in range(SHARD_COUNT): + shard = Shard(shard_index) confirmed_candidates = [ c for c in state.previous_epoch_pending_shard_headers if (c.slot, c.shard, c.confirmed) == (slot, shard, True) From a0c30313fa5a8b48eb41aba7df10022ccb70b890 Mon Sep 17 00:00:00 2001 From: ericsson Date: Tue, 27 Apr 2021 17:07:56 +0300 Subject: [PATCH 4/5] convert `shard` to `CommitteeIndex` using `compute_committee_index_from_shard`, based on @djrtwo comment --- specs/sharding/beacon-chain.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/specs/sharding/beacon-chain.md b/specs/sharding/beacon-chain.md index eb6959f47..7916c0364 100644 --- a/specs/sharding/beacon-chain.md +++ b/specs/sharding/beacon-chain.md @@ -683,7 +683,8 @@ def process_pending_headers(state: BeaconState) -> None: continue # The entire committee (and its balance) - full_committee = get_beacon_committee(state, slot, CommitteeIndex(shard)) + index = compute_committee_index_from_shard(state, slot, shard) + full_committee = get_beacon_committee(state, slot, index) # The set of voters who voted for each header (and their total balances) voting_sets = [ set(v for i, v in enumerate(full_committee) if c.votes[i]) From e3c95e967cdbe57babcc86c1dcda9f68801c4e46 Mon Sep 17 00:00:00 2001 From: ericsson Date: Tue, 27 Apr 2021 17:09:16 +0300 Subject: [PATCH 5/5] use `committee_index` instead of `shard` --- specs/sharding/beacon-chain.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/specs/sharding/beacon-chain.md b/specs/sharding/beacon-chain.md index 7916c0364..2ddcc6a82 100644 --- a/specs/sharding/beacon-chain.md +++ b/specs/sharding/beacon-chain.md @@ -756,8 +756,9 @@ def reset_pending_headers(state: BeaconState) -> None: next_epoch_start_slot = compute_start_slot_at_epoch(next_epoch) for slot in range(next_epoch_start_slot, next_epoch_start_slot + SLOTS_PER_EPOCH): for index in range(get_committee_count_per_slot(state, next_epoch)): - shard = compute_shard_from_committee_index(state, slot, CommitteeIndex(index)) - committee_length = len(get_beacon_committee(state, slot, CommitteeIndex(shard))) + committee_index = CommitteeIndex(index) + shard = compute_shard_from_committee_index(state, slot, committee_index) + committee_length = len(get_beacon_committee(state, slot, committee_index)) state.current_epoch_pending_shard_headers.append(PendingShardHeader( slot=slot, shard=shard,