@lodestar/state-transition 1.38.0-dev.a8c0c7a156 → 1.38.0-dev.f61b8d9dad
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/signatureSets/index.d.ts +2 -2
- package/lib/signatureSets/index.d.ts.map +1 -1
- package/lib/signatureSets/index.js +2 -2
- package/lib/signatureSets/index.js.map +1 -1
- package/lib/signatureSets/indexedAttestation.d.ts +1 -1
- package/lib/signatureSets/indexedAttestation.d.ts.map +1 -1
- package/lib/signatureSets/indexedAttestation.js +5 -3
- package/lib/signatureSets/indexedAttestation.js.map +1 -1
- package/package.json +6 -6
- package/src/signatureSets/index.ts +3 -2
- package/src/signatureSets/indexedAttestation.ts +8 -8
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SignedBeaconBlock } from "@lodestar/types";
|
|
1
|
+
import { IndexedAttestation, SignedBeaconBlock } from "@lodestar/types";
|
|
2
2
|
import { CachedBeaconStateAllForks } from "../types.js";
|
|
3
3
|
import { ISignatureSet } from "../util/index.js";
|
|
4
4
|
export * from "./attesterSlashings.js";
|
|
@@ -12,7 +12,7 @@ export * from "./voluntaryExits.js";
|
|
|
12
12
|
* Includes all signatures on the block (except the deposit signatures) for verification.
|
|
13
13
|
* Deposits are not included because they can legally have invalid signatures.
|
|
14
14
|
*/
|
|
15
|
-
export declare function getBlockSignatureSets(state: CachedBeaconStateAllForks, signedBlock: SignedBeaconBlock, opts?: {
|
|
15
|
+
export declare function getBlockSignatureSets(state: CachedBeaconStateAllForks, signedBlock: SignedBeaconBlock, indexedAttestations: IndexedAttestation[], opts?: {
|
|
16
16
|
/** Useful since block proposer signature is verified beforehand on gossip validation */
|
|
17
17
|
skipProposerSignature?: boolean;
|
|
18
18
|
}): ISignatureSet[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAC;AAEvF,OAAO,EAAC,yBAAyB,EAA0B,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAS/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,iBAAiB,EAC9B,mBAAmB,EAAE,kBAAkB,EAAE,EACzC,IAAI,CAAC,EAAE;IACL,wFAAwF;IACxF,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GACA,aAAa,EAAE,CAwCjB"}
|
|
@@ -18,14 +18,14 @@ export * from "./voluntaryExits.js";
|
|
|
18
18
|
* Includes all signatures on the block (except the deposit signatures) for verification.
|
|
19
19
|
* Deposits are not included because they can legally have invalid signatures.
|
|
20
20
|
*/
|
|
21
|
-
export function getBlockSignatureSets(state, signedBlock, opts) {
|
|
21
|
+
export function getBlockSignatureSets(state, signedBlock, indexedAttestations, opts) {
|
|
22
22
|
// fork based validations
|
|
23
23
|
const fork = state.config.getForkSeq(signedBlock.message.slot);
|
|
24
24
|
const signatureSets = [
|
|
25
25
|
getRandaoRevealSignatureSet(state, signedBlock.message),
|
|
26
26
|
...getProposerSlashingsSignatureSets(state, signedBlock),
|
|
27
27
|
...getAttesterSlashingsSignatureSets(state, signedBlock),
|
|
28
|
-
...getAttestationsSignatureSets(state, signedBlock),
|
|
28
|
+
...getAttestationsSignatureSets(state, signedBlock, indexedAttestations),
|
|
29
29
|
...getVoluntaryExitsSignatureSets(state, signedBlock),
|
|
30
30
|
];
|
|
31
31
|
if (!opts?.skipProposerSignature) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,oCAAoC,EAAC,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAC,4BAA4B,EAAC,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,2BAA2B,EAAC,MAAM,aAAa,CAAC;AACxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,qBAAqB,CAAC;AAEnE,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAgC,EAChC,WAA8B,EAC9B,IAGC;IAED,yBAAyB;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D,MAAM,aAAa,GAAG;QACpB,2BAA2B,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;QACvD,GAAG,iCAAiC,CAAC,KAAK,EAAE,WAAW,CAAC;QACxD,GAAG,iCAAiC,CAAC,KAAK,EAAE,WAAW,CAAC;QACxD,GAAG,4BAA4B,CAAC,KAAK,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signatureSets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAC,4BAA4B,EAAC,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,oCAAoC,EAAC,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAC,4BAA4B,EAAC,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,2BAA2B,EAAC,MAAM,aAAa,CAAC;AACxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,qBAAqB,CAAC;AAEnE,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAgC,EAChC,WAA8B,EAC9B,mBAAyC,EACzC,IAGC;IAED,yBAAyB;IACzB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D,MAAM,aAAa,GAAG;QACpB,2BAA2B,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;QACvD,GAAG,iCAAiC,CAAC,KAAK,EAAE,WAAW,CAAC;QACxD,GAAG,iCAAiC,CAAC,KAAK,EAAE,WAAW,CAAC;QACxD,GAAG,4BAA4B,CAAC,KAAK,EAAE,WAAW,EAAE,mBAAmB,CAAC;QACxE,GAAG,8BAA8B,CAAC,KAAK,EAAE,WAAW,CAAC;KACtD,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,2DAA2D;IAC3D,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,yBAAyB,GAAG,4BAA4B,CAC5D,KAAgC,EAC/B,WAAwC,CAAC,OAAO,CAClD,CAAC;QACF,2FAA2F;QAC3F,IAAI,yBAAyB,EAAE,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,iCAAiC,GAAG,oCAAoC,CAC5E,KAAK,CAAC,MAAM,EACZ,WAAwC,CACzC,CAAC;QACF,IAAI,iCAAiC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,aAAa,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -4,5 +4,5 @@ import { ISignatureSet } from "../util/index.js";
|
|
|
4
4
|
export declare function getAttestationDataSigningRoot(state: CachedBeaconStateAllForks, data: phase0.AttestationData): Uint8Array;
|
|
5
5
|
export declare function getAttestationWithIndicesSignatureSet(state: CachedBeaconStateAllForks, attestation: Pick<phase0.Attestation, "data" | "signature">, attestingIndices: number[]): ISignatureSet;
|
|
6
6
|
export declare function getIndexedAttestationSignatureSet(state: CachedBeaconStateAllForks, indexedAttestation: IndexedAttestation): ISignatureSet;
|
|
7
|
-
export declare function getAttestationsSignatureSets(state: CachedBeaconStateAllForks, signedBlock: SignedBeaconBlock): ISignatureSet[];
|
|
7
|
+
export declare function getAttestationsSignatureSets(state: CachedBeaconStateAllForks, signedBlock: SignedBeaconBlock, indexedAttestations: IndexedAttestation[]): ISignatureSet[];
|
|
8
8
|
//# sourceMappingURL=indexedAttestation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexedAttestation.d.ts","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,aAAa,EAId,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,yBAAyB,EAChC,IAAI,EAAE,MAAM,CAAC,eAAe,GAC3B,UAAU,CAKZ;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,EAC3D,gBAAgB,EAAE,MAAM,EAAE,GACzB,aAAa,CAMf;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,yBAAyB,EAChC,kBAAkB,EAAE,kBAAkB,GACrC,aAAa,CAEf;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"indexedAttestation.d.ts","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,aAAa,EAId,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,yBAAyB,EAChC,IAAI,EAAE,MAAM,CAAC,eAAe,GAC3B,UAAU,CAKZ;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,EAC3D,gBAAgB,EAAE,MAAM,EAAE,GACzB,aAAa,CAMf;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,yBAAyB,EAChC,kBAAkB,EAAE,kBAAkB,GACrC,aAAa,CAEf;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,iBAAiB,EAC9B,mBAAmB,EAAE,kBAAkB,EAAE,GACxC,aAAa,EAAE,CAOjB"}
|
|
@@ -12,8 +12,10 @@ export function getAttestationWithIndicesSignatureSet(state, attestation, attest
|
|
|
12
12
|
export function getIndexedAttestationSignatureSet(state, indexedAttestation) {
|
|
13
13
|
return getAttestationWithIndicesSignatureSet(state, indexedAttestation, indexedAttestation.attestingIndices);
|
|
14
14
|
}
|
|
15
|
-
export function getAttestationsSignatureSets(state, signedBlock) {
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
export function getAttestationsSignatureSets(state, signedBlock, indexedAttestations) {
|
|
16
|
+
if (indexedAttestations.length !== signedBlock.message.body.attestations.length) {
|
|
17
|
+
throw Error(`Indexed attestations length mismatch: got ${indexedAttestations.length}, expected ${signedBlock.message.body.attestations.length}`);
|
|
18
|
+
}
|
|
19
|
+
return indexedAttestations.map((indexedAttestation) => getIndexedAttestationSignatureSet(state, indexedAttestation));
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=indexedAttestation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexedAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAgD,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,yCAAyC,GAC1C,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,6BAA6B,CAC3C,KAAgC,EAChC,IAA4B;IAE5B,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAEhF,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,KAAgC,EAChC,WAA2D,EAC3D,gBAA0B;IAE1B,OAAO,yCAAyC,CAC9C,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC3D,6BAA6B,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EACtD,WAAW,CAAC,SAAS,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,KAAgC,EAChC,kBAAsC;IAEtC,OAAO,qCAAqC,CAAC,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAgC,EAChC,WAA8B
|
|
1
|
+
{"version":3,"file":"indexedAttestation.js","sourceRoot":"","sources":["../../src/signatureSets/indexedAttestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAgD,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,yCAAyC,GAC1C,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,6BAA6B,CAC3C,KAAgC,EAChC,IAA4B;IAE5B,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAEhF,OAAO,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,KAAgC,EAChC,WAA2D,EAC3D,gBAA0B;IAE1B,OAAO,yCAAyC,CAC9C,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC3D,6BAA6B,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EACtD,WAAW,CAAC,SAAS,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,KAAgC,EAChC,kBAAsC;IAEtC,OAAO,qCAAqC,CAAC,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAgC,EAChC,WAA8B,EAC9B,mBAAyC;IAEzC,IAAI,mBAAmB,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAChF,MAAM,KAAK,CACT,6CAA6C,mBAAmB,CAAC,MAAM,cAAc,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CACpI,CAAC;IACJ,CAAC;IACD,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,iCAAiC,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACvH,CAAC"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.38.0-dev.
|
|
14
|
+
"version": "1.38.0-dev.f61b8d9dad",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -62,10 +62,10 @@
|
|
|
62
62
|
"@chainsafe/pubkey-index-map": "^3.0.0",
|
|
63
63
|
"@chainsafe/ssz": "^1.2.2",
|
|
64
64
|
"@chainsafe/swap-or-not-shuffle": "^1.2.1",
|
|
65
|
-
"@lodestar/config": "1.38.0-dev.
|
|
66
|
-
"@lodestar/params": "1.38.0-dev.
|
|
67
|
-
"@lodestar/types": "1.38.0-dev.
|
|
68
|
-
"@lodestar/utils": "1.38.0-dev.
|
|
65
|
+
"@lodestar/config": "1.38.0-dev.f61b8d9dad",
|
|
66
|
+
"@lodestar/params": "1.38.0-dev.f61b8d9dad",
|
|
67
|
+
"@lodestar/types": "1.38.0-dev.f61b8d9dad",
|
|
68
|
+
"@lodestar/utils": "1.38.0-dev.f61b8d9dad",
|
|
69
69
|
"bigint-buffer": "^1.1.5"
|
|
70
70
|
},
|
|
71
71
|
"keywords": [
|
|
@@ -74,5 +74,5 @@
|
|
|
74
74
|
"beacon",
|
|
75
75
|
"blockchain"
|
|
76
76
|
],
|
|
77
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "4e6155b04b7d97c12483b85aea3b181364881f9d"
|
|
78
78
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {ForkSeq} from "@lodestar/params";
|
|
2
|
-
import {SignedBeaconBlock, altair, capella} from "@lodestar/types";
|
|
2
|
+
import {IndexedAttestation, SignedBeaconBlock, altair, capella} from "@lodestar/types";
|
|
3
3
|
import {getSyncCommitteeSignatureSet} from "../block/processSyncCommittee.js";
|
|
4
4
|
import {CachedBeaconStateAllForks, CachedBeaconStateAltair} from "../types.js";
|
|
5
5
|
import {ISignatureSet} from "../util/index.js";
|
|
@@ -26,6 +26,7 @@ export * from "./voluntaryExits.js";
|
|
|
26
26
|
export function getBlockSignatureSets(
|
|
27
27
|
state: CachedBeaconStateAllForks,
|
|
28
28
|
signedBlock: SignedBeaconBlock,
|
|
29
|
+
indexedAttestations: IndexedAttestation[],
|
|
29
30
|
opts?: {
|
|
30
31
|
/** Useful since block proposer signature is verified beforehand on gossip validation */
|
|
31
32
|
skipProposerSignature?: boolean;
|
|
@@ -38,7 +39,7 @@ export function getBlockSignatureSets(
|
|
|
38
39
|
getRandaoRevealSignatureSet(state, signedBlock.message),
|
|
39
40
|
...getProposerSlashingsSignatureSets(state, signedBlock),
|
|
40
41
|
...getAttesterSlashingsSignatureSets(state, signedBlock),
|
|
41
|
-
...getAttestationsSignatureSets(state, signedBlock),
|
|
42
|
+
...getAttestationsSignatureSets(state, signedBlock, indexedAttestations),
|
|
42
43
|
...getVoluntaryExitsSignatureSets(state, signedBlock),
|
|
43
44
|
];
|
|
44
45
|
|
|
@@ -39,13 +39,13 @@ export function getIndexedAttestationSignatureSet(
|
|
|
39
39
|
|
|
40
40
|
export function getAttestationsSignatureSets(
|
|
41
41
|
state: CachedBeaconStateAllForks,
|
|
42
|
-
signedBlock: SignedBeaconBlock
|
|
42
|
+
signedBlock: SignedBeaconBlock,
|
|
43
|
+
indexedAttestations: IndexedAttestation[]
|
|
43
44
|
): ISignatureSet[] {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
);
|
|
45
|
+
if (indexedAttestations.length !== signedBlock.message.body.attestations.length) {
|
|
46
|
+
throw Error(
|
|
47
|
+
`Indexed attestations length mismatch: got ${indexedAttestations.length}, expected ${signedBlock.message.body.attestations.length}`
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
return indexedAttestations.map((indexedAttestation) => getIndexedAttestationSignatureSet(state, indexedAttestation));
|
|
51
51
|
}
|