1. To make it more compatible, update `is_on_time_attestation` argument: replace `attestation: Attestation` with `attestation_data:
AttestationData`
2. Fix `get_sample_shard_transition`
This commit is contained in:
Hsiao-Wei Wang 2020-06-19 23:46:01 +08:00
parent c28857e4e1
commit 1a5016157a
No known key found for this signature in database
GPG Key ID: 95B070122902DEA4
3 changed files with 10 additions and 10 deletions

View File

@ -652,11 +652,11 @@ def get_offset_slots(state: BeaconState, shard: Shard) -> Sequence[Slot]:
```python
def is_on_time_attestation(state: BeaconState,
attestation: Attestation) -> bool:
attestation_data: AttestationData) -> bool:
"""
Check if the given attestation is on-time.
Check if the given ``attestation_data`` is on-time.
"""
return attestation.data.slot == compute_previous_slot(state.slot)
return attestation_data.slot == compute_previous_slot(state.slot)
```
#### `is_winning_attestation`
@ -667,11 +667,11 @@ def is_winning_attestation(state: BeaconState,
committee_index: CommitteeIndex,
winning_root: Root) -> bool:
"""
Check if ``attestation`` helped contribute to the successful crosslink of
``winning_root`` formed by ``committee_index`` committee at the current slot.
Check if on-time ``attestation`` helped contribute to the successful crosslink of
``winning_root`` formed by ``committee_index`` committee.
"""
return (
is_on_time_attestation(state, attestation)
is_on_time_attestation(state, attestation.data)
and attestation.data.index == committee_index
and attestation.data.shard_transition_root == winning_root
)
@ -766,7 +766,7 @@ def validate_attestation(state: BeaconState, attestation: Attestation) -> None:
assert attestation.data.source == state.previous_justified_checkpoint
# Type 1: on-time attestations
if is_on_time_attestation(state, attestation):
if is_on_time_attestation(state, attestation.data):
# Correct parent block root
assert data.beacon_block_root == get_block_root_at_slot(state, compute_previous_slot(state.slot))
# Correct shard number
@ -941,7 +941,7 @@ def process_crosslinks(state: BeaconState,
# Since the attestations are validated, all `shard_attestations` satisfy `attestation.data.shard == shard`
shard_attestations = [
attestation for attestation in attestations
if is_on_time_attestation(state, attestation) and attestation.data.index == committee_index
if is_on_time_attestation(state, attestation.data) and attestation.data.index == committee_index
]
winning_root = process_crosslink_for_shard(
state, committee_index, shard_transitions[shard], shard_attestations

View File

@ -157,7 +157,7 @@ def get_shard_winning_roots(state: BeaconState,
# All attestations in the block for this committee/shard and are "on time"
shard_attestations = [
attestation for attestation in attestations
if is_on_time_attestation(state, attestation) and attestation.data.index == committee_index
if is_on_time_attestation(state, attestation.data) and attestation.data.index == committee_index
]
committee = get_beacon_committee(state, on_time_attestation_slot, committee_index)

View File

@ -172,7 +172,7 @@ def get_sample_shard_transition(spec, start_slot, block_lengths):
start_slot=start_slot,
shard_block_lengths=block_lengths,
shard_data_roots=b,
shard_states=[spec.Root() for x in block_lengths],
shard_states=[spec.ShardState() for x in block_lengths],
proposer_signature_aggregate=spec.BLSSignature(),
)
return shard_transition