@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
24 lines (22 loc) • 925 B
text/typescript
import {BeaconConfig} from "@lodestar/config";
import {DOMAIN_CONTRIBUTION_AND_PROOF} from "@lodestar/params";
import {IBeaconStateView, ISignatureSet, SignatureSetType, computeSigningRoot} from "@lodestar/state-transition";
import {altair, ssz} from "@lodestar/types";
export function getContributionAndProofSignatureSet(
config: BeaconConfig,
state: IBeaconStateView,
signedContributionAndProof: altair.SignedContributionAndProof
): ISignatureSet {
const domain = config.getDomain(
state.slot,
DOMAIN_CONTRIBUTION_AND_PROOF,
signedContributionAndProof.message.contribution.slot
);
const signingData = signedContributionAndProof.message;
return {
type: SignatureSetType.indexed,
index: signedContributionAndProof.message.aggregatorIndex,
signingRoot: computeSigningRoot(ssz.altair.ContributionAndProof, signingData, domain),
signature: signedContributionAndProof.signature,
};
}