UNPKG

@lodestar/beacon-node

Version:

A Typescript implementation of the beacon chain

24 lines (22 loc) 1.01 kB
import {BeaconConfig} from "@lodestar/config"; import {DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF} from "@lodestar/params"; import {IBeaconStateView, ISignatureSet, SignatureSetType, computeSigningRoot} from "@lodestar/state-transition"; import {altair, ssz} from "@lodestar/types"; export function getSyncCommitteeSelectionProofSignatureSet( config: BeaconConfig, state: IBeaconStateView, contributionAndProof: altair.ContributionAndProof ): ISignatureSet { const slot = contributionAndProof.contribution.slot; const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, slot); const signingData: altair.SyncAggregatorSelectionData = { slot, subcommitteeIndex: contributionAndProof.contribution.subcommitteeIndex, }; return { type: SignatureSetType.indexed, index: contributionAndProof.aggregatorIndex, signingRoot: computeSigningRoot(ssz.altair.SyncAggregatorSelectionData, signingData, domain), signature: contributionAndProof.selectionProof, }; }