make get_beacon_proposer_index safe for next epoch

This commit is contained in:
Danny Ryan 2019-02-26 15:55:27 -07:00
parent daa8275318
commit b2c53045fc
No known key found for this signature in database
GPG Key ID: 2765A792E42CE07A
2 changed files with 11 additions and 4 deletions

View File

@ -967,11 +967,19 @@ def generate_seed(state: BeaconState,
```python ```python
def get_beacon_proposer_index(state: BeaconState, def get_beacon_proposer_index(state: BeaconState,
slot: Slot) -> ValidatorIndex: slot: Slot,
registry_change: bool=False)) -> ValidatorIndex:
""" """
Return the beacon proposer index for the ``slot``. Return the beacon proposer index for the ``slot``.
""" """
first_committee, _ = get_crosslink_committees_at_slot(state, slot)[0] epoch = slot_to_epoch(slot)
current_epoch = get_current_epoch(state)
previous_epoch = get_previous_epoch(state)
next_epoch = current_epoch + 1
assert previous_epoch <= epoch <= next_epoch
first_committee, _ = get_crosslink_committees_at_slot(state, slot, registry_change)[0]
return first_committee[slot % len(first_committee)] return first_committee[slot % len(first_committee)]
``` ```

View File

@ -371,8 +371,7 @@ def get_committee_assignment(
if len(selected_committees) > 0: if len(selected_committees) > 0:
validators = selected_committees[0][0] validators = selected_committees[0][0]
shard = selected_committees[0][1] shard = selected_committees[0][1]
first_committee_at_slot = crosslink_committees[0][0] # List[ValidatorIndex] is_proposer = validator_index == get_beacon_proposer_index(state, slot, registry_change)
is_proposer = first_committee_at_slot[slot % len(first_committee_at_slot)] == validator_index
assignment = (validators, shard, slot, is_proposer) assignment = (validators, shard, slot, is_proposer)
return assignment return assignment