@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
24 lines (22 loc) • 1.01 kB
text/typescript
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,
};
}