update attestation aggregation validation to spec refs of v0.12.2 (#1481)

This commit is contained in:
tersec 2020-08-10 14:49:18 +00:00 committed by GitHub
parent 10da7fe9da
commit fe1a7922c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 2 deletions

View File

@ -225,7 +225,7 @@ proc isValidAttestation*(
true true
# https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/p2p-interface.md#global-topics # https://github.com/ethereum/eth2.0-specs/blob/v0.12.2/specs/phase0/p2p-interface.md#beacon_aggregate_and_proof
proc isValidAggregatedAttestation*( proc isValidAggregatedAttestation*(
pool: var AttestationPool, pool: var AttestationPool,
signedAggregateAndProof: SignedAggregateAndProof, signedAggregateAndProof: SignedAggregateAndProof,
@ -301,7 +301,6 @@ proc isValidAggregatedAttestation*(
# [REJECT] aggregate_and_proof.selection_proof selects the validator as an # [REJECT] aggregate_and_proof.selection_proof selects the validator as an
# aggregator for the slot -- i.e. is_aggregator(state, aggregate.data.slot, # aggregator for the slot -- i.e. is_aggregator(state, aggregate.data.slot,
# aggregate.data.index, aggregate_and_proof.selection_proof) returns True. # aggregate.data.index, aggregate_and_proof.selection_proof) returns True.
let tgtBlck = pool.chainDag.getRef(aggregate.data.target.root) let tgtBlck = pool.chainDag.getRef(aggregate.data.target.root)
if tgtBlck.isNil: if tgtBlck.isNil:
debug "Target block not found" debug "Target block not found"
@ -359,4 +358,13 @@ proc isValidAggregatedAttestation*(
debug "Aggregate signature verification failed" debug "Aggregate signature verification failed"
return false return false
# The following rule follows implicitly from that we clear out any
# unviable blocks from the chain dag:
#
# The current finalized_checkpoint is an ancestor of the block defined by
# aggregate.data.beacon_block_root -- i.e. get_ancestor(store,
# aggregate.data.beacon_block_root,
# compute_start_slot_at_epoch(store.finalized_checkpoint.epoch)) ==
# store.finalized_checkpoint.root
true true