@lodestar/beacon-node 1.34.0-dev.745ad69720 → 1.34.0-dev.7b42620eba
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/api/impl/beacon/blocks/index.js +36 -37
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +5 -5
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.js +15 -16
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/debug/index.js +2 -2
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +64 -47
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/impl/validator/utils.d.ts +3 -3
- package/lib/api/impl/validator/utils.js +2 -2
- package/lib/api/impl/validator/utils.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +19 -20
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/utils/zebraBanner.d.ts +2 -0
- package/lib/chain/blocks/utils/zebraBanner.js +45 -0
- package/lib/chain/blocks/utils/zebraBanner.js.map +1 -0
- package/lib/chain/blocks/verifyBlock.js +18 -5
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +7 -34
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +8 -80
- package/lib/chain/chain.js +52 -84
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts +2 -1
- package/lib/chain/forkChoice/index.js +2 -2
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/interface.d.ts +3 -10
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +13 -3
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.d.ts +1 -1
- package/lib/chain/opPools/attestationPool.js +7 -7
- package/lib/chain/prepareNextSlot.js +4 -2
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +30 -18
- package/lib/chain/produceBlock/produceBlockBody.js +27 -32
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +6 -4
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +21 -23
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.d.ts +1 -1
- package/lib/chain/validation/aggregateAndProof.js +8 -8
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.d.ts +3 -3
- package/lib/chain/validation/attestation.js +10 -10
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +2 -1
- package/lib/chain/validation/dataColumnSidecar.js +17 -8
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/db/beacon.d.ts +3 -3
- package/lib/db/beacon.js +3 -3
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/interface.d.ts +3 -3
- package/lib/db/repositories/dataColumnSidecar.d.ts +26 -0
- package/lib/db/repositories/dataColumnSidecar.js +39 -0
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -0
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts +24 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js +39 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -0
- package/lib/db/repositories/index.d.ts +2 -2
- package/lib/db/repositories/index.js +2 -2
- package/lib/db/repositories/index.js.map +1 -1
- package/lib/execution/builder/http.d.ts +20 -4
- package/lib/execution/builder/http.js +30 -11
- package/lib/execution/builder/http.js.map +1 -1
- package/lib/execution/builder/interface.d.ts +5 -4
- package/lib/execution/engine/http.d.ts +2 -2
- package/lib/execution/engine/http.js +10 -5
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +2 -11
- package/lib/execution/engine/mock.d.ts +4 -1
- package/lib/execution/engine/mock.js +54 -16
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +5 -5
- package/lib/execution/engine/types.js +2 -2
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +2 -28
- package/lib/metrics/metrics/beacon.js +9 -75
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +5 -0
- package/lib/metrics/metrics/lodestar.js +14 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/metrics/metrics.d.ts +2 -1
- package/lib/metrics/metrics.js +3 -0
- package/lib/metrics/metrics.js.map +1 -1
- package/lib/network/core/networkCore.js +11 -6
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +620 -92
- package/lib/network/interface.d.ts +3 -3
- package/lib/network/network.d.ts +3 -3
- package/lib/network/network.js +1 -1
- package/lib/network/network.js.map +1 -1
- package/lib/network/options.js +2 -2
- package/lib/network/peers/discover.js +1 -1
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.js +9 -6
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts +2 -1
- package/lib/network/peers/utils/prioritizePeers.js +5 -5
- package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +22 -19
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +6 -3
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +45 -17
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +7 -2
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +7 -7
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -3
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +2 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -3
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +3 -3
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +55 -46
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +2 -2
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +26 -27
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/index.js +4 -3
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +11 -5
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +3 -3
- package/lib/network/reqresp/types.js +3 -3
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/network/reqresp/utils/dataColumnResponseValidaiton.d.ts +14 -0
- package/lib/network/reqresp/utils/dataColumnResponseValidaiton.js +56 -0
- package/lib/network/reqresp/utils/dataColumnResponseValidaiton.js.map +1 -0
- package/lib/sync/range/chain.d.ts +1 -1
- package/lib/sync/range/chain.js +2 -2
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.js +2 -2
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/peerBalancer.d.ts +3 -1
- package/lib/sync/range/utils/peerBalancer.js +20 -1
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +46 -4
- package/lib/sync/unknownBlock.js +305 -201
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/blobs.d.ts +3 -13
- package/lib/util/blobs.js +9 -47
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/dataColumns.d.ts +7 -5
- package/lib/util/dataColumns.js +36 -27
- package/lib/util/dataColumns.js.map +1 -1
- package/lib/util/sszBytes.d.ts +2 -0
- package/lib/util/sszBytes.js +23 -0
- package/lib/util/sszBytes.js.map +1 -1
- package/lib/util/types.d.ts +7 -0
- package/lib/util/types.js +3 -0
- package/lib/util/types.js.map +1 -1
- package/package.json +17 -18
- package/lib/db/repositories/dataColumnSidecars.d.ts +0 -47
- package/lib/db/repositories/dataColumnSidecars.js +0 -40
- package/lib/db/repositories/dataColumnSidecars.js.map +0 -1
- package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +0 -15
- package/lib/db/repositories/dataColumnSidecarsArchive.js +0 -23
- package/lib/db/repositories/dataColumnSidecarsArchive.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
-
import { ForkPostBellatrix } from "@lodestar/params";
|
|
2
|
+
import { ForkName, ForkPostBellatrix, ForkPostDeneb, ForkPostFulu } from "@lodestar/params";
|
|
3
3
|
import { CachedBeaconStateAllForks, CachedBeaconStateExecutions } from "@lodestar/state-transition";
|
|
4
|
-
import { BLSPubkey, BLSSignature, BeaconBlock, BeaconBlockBody, BlindedBeaconBlock, BlindedBeaconBlockBody, Bytes32, Root, RootHex, SSEPayloadAttributes, Slot, ValidatorIndex, Wei,
|
|
4
|
+
import { BLSPubkey, BLSSignature, BeaconBlock, BeaconBlockBody, BlindedBeaconBlock, BlindedBeaconBlockBody, BlobsBundle, Bytes32, ExecutionPayload, Root, RootHex, SSEPayloadAttributes, Slot, ValidatorIndex, Wei, fulu } from "@lodestar/types";
|
|
5
5
|
import { Logger } from "@lodestar/utils";
|
|
6
6
|
import { IEth1ForBlockProduction } from "../../eth1/index.js";
|
|
7
7
|
import { IExecutionEngine, PayloadId } from "../../execution/index.js";
|
|
@@ -40,29 +40,41 @@ export declare enum BlockType {
|
|
|
40
40
|
}
|
|
41
41
|
export type AssembledBodyType<T extends BlockType> = T extends BlockType.Full ? BeaconBlockBody : BlindedBeaconBlockBody;
|
|
42
42
|
export type AssembledBlockType<T extends BlockType> = T extends BlockType.Full ? BeaconBlock : BlindedBeaconBlock;
|
|
43
|
-
export
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
type:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
type:
|
|
43
|
+
export type ProduceFullFulu = {
|
|
44
|
+
type: BlockType.Full;
|
|
45
|
+
fork: ForkPostFulu;
|
|
46
|
+
executionPayload: ExecutionPayload<ForkPostFulu>;
|
|
47
|
+
blobsBundle: BlobsBundle<ForkPostFulu>;
|
|
48
|
+
cells: fulu.Cell[][];
|
|
49
|
+
};
|
|
50
|
+
export type ProduceFullDeneb = {
|
|
51
|
+
type: BlockType.Full;
|
|
52
|
+
fork: ForkName.deneb | ForkName.electra;
|
|
53
|
+
executionPayload: ExecutionPayload<ForkPostDeneb>;
|
|
54
|
+
blobsBundle: BlobsBundle<ForkPostDeneb>;
|
|
55
|
+
};
|
|
56
|
+
export type ProduceFullBellatrix = {
|
|
57
|
+
type: BlockType.Full;
|
|
58
|
+
fork: ForkName.bellatrix | ForkName.capella;
|
|
59
|
+
executionPayload: ExecutionPayload<ForkPostBellatrix>;
|
|
60
|
+
};
|
|
61
|
+
export type ProduceFullPhase0 = {
|
|
62
|
+
type: BlockType.Full;
|
|
63
|
+
fork: ForkName.phase0 | ForkName.altair;
|
|
64
|
+
};
|
|
65
|
+
export type ProduceBlinded = {
|
|
66
|
+
type: BlockType.Blinded;
|
|
67
|
+
fork: ForkName;
|
|
58
68
|
};
|
|
69
|
+
/** The result of local block production, everything that's not the block itself */
|
|
70
|
+
export type ProduceResult = ProduceFullFulu | ProduceFullDeneb | ProduceFullBellatrix | ProduceFullPhase0 | ProduceBlinded;
|
|
59
71
|
export declare function produceBlockBody<T extends BlockType>(this: BeaconChain, blockType: T, currentState: CachedBeaconStateAllForks, blockAttr: BlockAttributes & {
|
|
60
72
|
proposerIndex: ValidatorIndex;
|
|
61
73
|
proposerPubKey: BLSPubkey;
|
|
62
74
|
commonBlockBodyPromise?: Promise<CommonBlockBody>;
|
|
63
75
|
}): Promise<{
|
|
64
76
|
body: AssembledBodyType<T>;
|
|
65
|
-
|
|
77
|
+
produceResult: ProduceResult;
|
|
66
78
|
executionPayloadValue: Wei;
|
|
67
79
|
shouldOverrideBuilder?: boolean;
|
|
68
80
|
}>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ForkSeq, isForkPostAltair, isForkPostBellatrix } from "@lodestar/params";
|
|
1
|
+
import { ForkSeq, isForkPostAltair, isForkPostBellatrix, } from "@lodestar/params";
|
|
2
2
|
import { computeTimeAtSlot, getCurrentEpoch, getExpectedWithdrawals, getRandaoMix, isMergeTransitionComplete, } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz, sszTypesFor, } from "@lodestar/types";
|
|
4
4
|
import { sleep, toHex, toPubkeyHex, toRootHex } from "@lodestar/utils";
|
|
@@ -7,7 +7,7 @@ import { numToQuantity } from "../../eth1/provider/utils.js";
|
|
|
7
7
|
import { getExpectedGasLimit, } from "../../execution/index.js";
|
|
8
8
|
import { fromGraffitiBytes } from "../../util/graffiti.js";
|
|
9
9
|
import { kzg } from "../../util/kzg.js";
|
|
10
|
-
import { validateBlobsAndKzgCommitments } from "./validateBlobsAndKzgCommitments.js";
|
|
10
|
+
import { validateBlobsAndKzgCommitments, validateCellsAndKzgCommitments } from "./validateBlobsAndKzgCommitments.js";
|
|
11
11
|
// Time to provide the EL to generate a payload from new payload id
|
|
12
12
|
const PAYLOAD_GENERATION_TIME_MS = 500;
|
|
13
13
|
export var PayloadPreparationType;
|
|
@@ -36,24 +36,18 @@ export var BlockType;
|
|
|
36
36
|
BlockType["Full"] = "Full";
|
|
37
37
|
BlockType["Blinded"] = "Blinded";
|
|
38
38
|
})(BlockType || (BlockType = {}));
|
|
39
|
-
export var BlobsResultType;
|
|
40
|
-
(function (BlobsResultType) {
|
|
41
|
-
BlobsResultType[BlobsResultType["preDeneb"] = 0] = "preDeneb";
|
|
42
|
-
BlobsResultType[BlobsResultType["produced"] = 1] = "produced";
|
|
43
|
-
BlobsResultType[BlobsResultType["blinded"] = 2] = "blinded";
|
|
44
|
-
})(BlobsResultType || (BlobsResultType = {}));
|
|
45
39
|
export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
46
40
|
const { slot: blockSlot, feeRecipient: requestedFeeRecipient, parentBlockRoot, proposerIndex, proposerPubKey, commonBlockBodyPromise, } = blockAttr;
|
|
47
|
-
// Type-safe for blobs variable. Translate 'null' value into 'preDeneb' enum
|
|
48
|
-
// TODO: Not ideal, but better than just using null.
|
|
49
|
-
// TODO: Does not guarantee that preDeneb enum goes with a preDeneb block
|
|
50
|
-
let blobsResult;
|
|
51
41
|
let executionPayloadValue;
|
|
52
42
|
let blockBody;
|
|
53
43
|
// even though shouldOverrideBuilder is relevant for the engine response, for simplicity of typing
|
|
54
44
|
// we just return it undefined for the builder which anyway doesn't get consumed downstream
|
|
55
45
|
let shouldOverrideBuilder;
|
|
56
46
|
const fork = currentState.config.getForkName(blockSlot);
|
|
47
|
+
const produceResult = {
|
|
48
|
+
type: blockType,
|
|
49
|
+
fork,
|
|
50
|
+
};
|
|
57
51
|
const logMeta = {
|
|
58
52
|
fork,
|
|
59
53
|
blockType,
|
|
@@ -72,7 +66,7 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
72
66
|
Object.assign(logMeta, { feeRecipientType, feeRecipient });
|
|
73
67
|
if (blockType === BlockType.Blinded) {
|
|
74
68
|
if (!this.executionBuilder)
|
|
75
|
-
throw Error("
|
|
69
|
+
throw Error("External builder not configured");
|
|
76
70
|
const executionBuilder = this.executionBuilder;
|
|
77
71
|
const builderPromise = (async () => {
|
|
78
72
|
const endExecutionPayloadHeader = this.metrics?.builderBlockProductionTimeSteps.startTimer();
|
|
@@ -145,12 +139,8 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
145
139
|
throw Error(`Invalid builder getHeader response for fork=${fork}, missing blobKzgCommitments`);
|
|
146
140
|
}
|
|
147
141
|
blockBody.blobKzgCommitments = blobKzgCommitments;
|
|
148
|
-
blobsResult = { type: BlobsResultType.blinded };
|
|
149
142
|
Object.assign(logMeta, { blobs: blobKzgCommitments.length });
|
|
150
143
|
}
|
|
151
|
-
else {
|
|
152
|
-
blobsResult = { type: BlobsResultType.preDeneb };
|
|
153
|
-
}
|
|
154
144
|
if (ForkSeq[fork] >= ForkSeq.electra) {
|
|
155
145
|
const { executionRequests } = builderRes;
|
|
156
146
|
if (executionRequests === undefined) {
|
|
@@ -219,13 +209,13 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
219
209
|
blockBody = Object.assign({}, commonBlockBody);
|
|
220
210
|
if (engineRes.isPremerge) {
|
|
221
211
|
blockBody.executionPayload = engineRes.executionPayload;
|
|
222
|
-
blobsResult = { type: BlobsResultType.preDeneb };
|
|
223
212
|
executionPayloadValue = engineRes.executionPayloadValue;
|
|
224
213
|
}
|
|
225
214
|
else {
|
|
226
215
|
const { prepType, payloadId, executionPayload, blobsBundle, executionRequests } = engineRes;
|
|
227
216
|
shouldOverrideBuilder = engineRes.shouldOverrideBuilder;
|
|
228
217
|
blockBody.executionPayload = executionPayload;
|
|
218
|
+
produceResult.executionPayload = executionPayload;
|
|
229
219
|
executionPayloadValue = engineRes.executionPayloadValue;
|
|
230
220
|
Object.assign(logMeta, { transactions: executionPayload.transactions.length, shouldOverrideBuilder });
|
|
231
221
|
const fetchedTime = Date.now() / 1000 - computeTimeAtSlot(this.config, blockSlot, this.genesisTime);
|
|
@@ -241,25 +231,31 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
241
231
|
if (executionPayload.transactions.length === 0) {
|
|
242
232
|
this.metrics?.blockPayload.emptyPayloads.inc({ prepType });
|
|
243
233
|
}
|
|
244
|
-
if (ForkSeq[fork] >= ForkSeq.
|
|
234
|
+
if (ForkSeq[fork] >= ForkSeq.fulu) {
|
|
245
235
|
if (blobsBundle === undefined) {
|
|
246
236
|
throw Error(`Missing blobsBundle response from getPayload at fork=${fork}`);
|
|
247
237
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
238
|
+
// NOTE: Even though the fulu.BlobsBundle type is superficially the same as deneb.BlobsBundle, it is NOT.
|
|
239
|
+
// In fulu, proofs are _cell_ proofs, vs in deneb they are _blob_ proofs.
|
|
240
|
+
const cells = blobsBundle.blobs.map((blob) => kzg.computeCells(blob));
|
|
252
241
|
if (this.opts.sanityCheckExecutionEngineBlobs) {
|
|
253
|
-
await
|
|
242
|
+
await validateCellsAndKzgCommitments(blobsBundle.commitments, blobsBundle.proofs, cells);
|
|
254
243
|
}
|
|
255
244
|
blockBody.blobKzgCommitments = blobsBundle.commitments;
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
blobsResult = { type: BlobsResultType.produced, contents, blockHash };
|
|
245
|
+
produceResult.blobsBundle = blobsBundle;
|
|
246
|
+
produceResult.cells = cells;
|
|
259
247
|
Object.assign(logMeta, { blobs: blobsBundle.commitments.length });
|
|
260
248
|
}
|
|
261
|
-
else {
|
|
262
|
-
|
|
249
|
+
else if (ForkSeq[fork] >= ForkSeq.deneb) {
|
|
250
|
+
if (blobsBundle === undefined) {
|
|
251
|
+
throw Error(`Missing blobsBundle response from getPayload at fork=${fork}`);
|
|
252
|
+
}
|
|
253
|
+
if (this.opts.sanityCheckExecutionEngineBlobs) {
|
|
254
|
+
await validateBlobsAndKzgCommitments(blobsBundle.commitments, blobsBundle.proofs, blobsBundle.blobs);
|
|
255
|
+
}
|
|
256
|
+
blockBody.blobKzgCommitments = blobsBundle.commitments;
|
|
257
|
+
produceResult.blobsBundle = blobsBundle;
|
|
258
|
+
Object.assign(logMeta, { blobs: blobsBundle.commitments.length });
|
|
263
259
|
}
|
|
264
260
|
if (ForkSeq[fork] >= ForkSeq.electra) {
|
|
265
261
|
if (executionRequests === undefined) {
|
|
@@ -274,7 +270,6 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
274
270
|
const commonBlockBody = await (commonBlockBodyPromise ??
|
|
275
271
|
produceCommonBlockBody.call(this, blockType, currentState, blockAttr));
|
|
276
272
|
blockBody = Object.assign({}, commonBlockBody);
|
|
277
|
-
blobsResult = { type: BlobsResultType.preDeneb };
|
|
278
273
|
executionPayloadValue = BigInt(0);
|
|
279
274
|
}
|
|
280
275
|
const { graffiti, attestations, deposits, voluntaryExits, attesterSlashings, proposerSlashings } = blockBody;
|
|
@@ -306,7 +301,7 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
|
|
|
306
301
|
}
|
|
307
302
|
Object.assign(logMeta, { executionPayloadValue });
|
|
308
303
|
this.logger.verbose("Produced beacon block body", logMeta);
|
|
309
|
-
return { body: blockBody,
|
|
304
|
+
return { body: blockBody, produceResult, executionPayloadValue, shouldOverrideBuilder };
|
|
310
305
|
}
|
|
311
306
|
/**
|
|
312
307
|
* Produce ExecutionPayload for pre-merge, merge, and post-merge.
|
|
@@ -374,7 +369,7 @@ async function prepareExecutionPayloadHeader(chain, fork, state, proposerPubKey)
|
|
|
374
369
|
}
|
|
375
370
|
const parentHashRes = await getExecutionPayloadParentHash(chain, state);
|
|
376
371
|
if (parentHashRes.isPremerge) {
|
|
377
|
-
throw Error("
|
|
372
|
+
throw Error("External builder disabled pre-merge");
|
|
378
373
|
}
|
|
379
374
|
const { parentHash } = parentHashRes;
|
|
380
375
|
return chain.executionBuilder.getHeader(fork, state.slot, parentHash, proposerPubKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"produceBlockBody.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/produceBlockBody.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"produceBlockBody.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/produceBlockBody.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ExecutionPayload, fulu } from "@lodestar/types";
|
|
3
|
-
import { BlobsBundle } from "../../execution/index.js";
|
|
1
|
+
import { deneb, fulu } from "@lodestar/types";
|
|
4
2
|
/**
|
|
5
3
|
* Optionally sanity-check that the KZG commitments match the versioned hashes in the transactions
|
|
6
4
|
* https://github.com/ethereum/consensus-specs/blob/11a037fd9227e29ee809c9397b09f8cc3383a8c0/specs/eip4844/validator.md#blob-kzg-commitments
|
|
7
5
|
*/
|
|
8
|
-
export declare function validateBlobsAndKzgCommitments(
|
|
6
|
+
export declare function validateBlobsAndKzgCommitments(commitments: deneb.KZGCommitment[], proofs: deneb.KZGProof[], blobs: deneb.Blobs): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Optionally sanity-check that the KZG commitments match the versioned hashes in the transactions
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateCellsAndKzgCommitments(commitments: deneb.KZGCommitment[], proofs: fulu.KZGProof[], cells: fulu.Cell[][]): Promise<void>;
|
|
9
11
|
//# sourceMappingURL=validateBlobsAndKzgCommitments.d.ts.map
|
|
@@ -1,36 +1,34 @@
|
|
|
1
|
-
import { CELLS_PER_EXT_BLOB
|
|
1
|
+
import { CELLS_PER_EXT_BLOB } from "@lodestar/params";
|
|
2
2
|
import { kzg } from "../../util/kzg.js";
|
|
3
3
|
/**
|
|
4
4
|
* Optionally sanity-check that the KZG commitments match the versioned hashes in the transactions
|
|
5
5
|
* https://github.com/ethereum/consensus-specs/blob/11a037fd9227e29ee809c9397b09f8cc3383a8c0/specs/eip4844/validator.md#blob-kzg-commitments
|
|
6
6
|
*/
|
|
7
|
-
export async function validateBlobsAndKzgCommitments(
|
|
8
|
-
if (
|
|
9
|
-
throw Error(`
|
|
7
|
+
export async function validateBlobsAndKzgCommitments(commitments, proofs, blobs) {
|
|
8
|
+
if (blobs.length !== commitments.length) {
|
|
9
|
+
throw Error(`Blobs bundle blobs len ${blobs.length} != commitments len ${commitments.length}`);
|
|
10
10
|
}
|
|
11
|
-
if (
|
|
12
|
-
throw Error(`
|
|
11
|
+
if (proofs.length !== blobs.length) {
|
|
12
|
+
throw new Error(`Invalid proofs length for BlobsBundleV1 format: expected ${blobs.length}, got ${proofs.length}`);
|
|
13
13
|
}
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
throw new Error(`Invalid proofs length for BlobsBundleV1 format: expected ${blobsBundle.blobs.length}, got ${blobsBundle.proofs.length}`);
|
|
17
|
-
}
|
|
18
|
-
if (!(await kzg.asyncVerifyBlobKzgProofBatch(blobsBundle.blobs, blobsBundle.commitments, blobsBundle.proofs))) {
|
|
19
|
-
throw new Error("Error in verifyBlobKzgProofBatch");
|
|
20
|
-
}
|
|
21
|
-
return;
|
|
14
|
+
if (!(await kzg.asyncVerifyBlobKzgProofBatch(blobs, commitments, proofs))) {
|
|
15
|
+
throw new Error("Error in verifyBlobKzgProofBatch");
|
|
22
16
|
}
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Optionally sanity-check that the KZG commitments match the versioned hashes in the transactions
|
|
20
|
+
*/
|
|
21
|
+
export async function validateCellsAndKzgCommitments(commitments, proofs, cells) {
|
|
22
|
+
if (cells.length !== commitments.length) {
|
|
23
|
+
throw Error(`Blobs bundle cells len ${cells.length} != commitments len ${commitments.length}`);
|
|
25
24
|
}
|
|
26
|
-
const expectedProofsLength =
|
|
27
|
-
if (
|
|
28
|
-
throw Error(`Invalid proofs length for BlobsBundleV2 format: expected ${expectedProofsLength}, got ${
|
|
25
|
+
const expectedProofsLength = cells.length * CELLS_PER_EXT_BLOB;
|
|
26
|
+
if (proofs.length !== expectedProofsLength) {
|
|
27
|
+
throw Error(`Invalid proofs length for BlobsBundleV2 format: expected ${expectedProofsLength}, got ${proofs.length}`);
|
|
29
28
|
}
|
|
30
|
-
const commitmentBytes =
|
|
31
|
-
const cellIndices = Array.from({ length:
|
|
32
|
-
|
|
33
|
-
if (!(await kzg.asyncVerifyCellKzgProofBatch(commitmentBytes, cellIndices, cells.flat(), proofBytes))) {
|
|
29
|
+
const commitmentBytes = commitments.flatMap((commitment) => Array(CELLS_PER_EXT_BLOB).fill(commitment));
|
|
30
|
+
const cellIndices = Array.from({ length: cells.length }).flatMap(() => Array.from({ length: CELLS_PER_EXT_BLOB }, (_, i) => i));
|
|
31
|
+
if (!(await kzg.asyncVerifyCellKzgProofBatch(commitmentBytes, cellIndices, cells.flat(), proofs.flat()))) {
|
|
34
32
|
throw new Error("Error in verifyCellKzgProofBatch");
|
|
35
33
|
}
|
|
36
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateBlobsAndKzgCommitments.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/validateBlobsAndKzgCommitments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"validateBlobsAndKzgCommitments.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/validateBlobsAndKzgCommitments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAC,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,WAAkC,EAClC,MAAwB,EACxB,KAAkB;IAElB,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,KAAK,CAAC,0BAA0B,KAAK,CAAC,MAAM,uBAAuB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,4DAA4D,KAAK,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpH,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,4BAA4B,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,WAAkC,EAClC,MAAuB,EACvB,KAAoB;IAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,KAAK,CAAC,0BAA0B,KAAK,CAAC,MAAM,uBAAuB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;QAC3C,MAAM,KAAK,CACT,4DAA4D,oBAAoB,SAAS,MAAM,CAAC,MAAM,EAAE,CACzG,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACxG,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAClE,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,kBAAkB,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACtD,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,4BAA4B,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { IndexedAttestation, RootHex, SignedAggregateAndProof } from "@lodestar/
|
|
|
3
3
|
import { IBeaconChain } from "../index.js";
|
|
4
4
|
export type AggregateAndProofValidationResult = {
|
|
5
5
|
indexedAttestation: IndexedAttestation;
|
|
6
|
-
|
|
6
|
+
committeeValidatorIndices: Uint32Array;
|
|
7
7
|
attDataRootHex: RootHex;
|
|
8
8
|
};
|
|
9
9
|
export declare function validateApiAggregateAndProof(fork: ForkName, chain: IBeaconChain, signedAggregateAndProof: SignedAggregateAndProof): Promise<AggregateAndProofValidationResult>;
|
|
@@ -4,7 +4,7 @@ import { ssz } from "@lodestar/types";
|
|
|
4
4
|
import { toRootHex } from "@lodestar/utils";
|
|
5
5
|
import { AttestationError, AttestationErrorCode, GossipAction } from "../errors/index.js";
|
|
6
6
|
import { RegenCaller } from "../regen/index.js";
|
|
7
|
-
import { getAttestationDataSigningRoot,
|
|
7
|
+
import { getAttestationDataSigningRoot, getCommitteeValidatorIndices, getSeenAttDataKeyFromSignedAggregateAndProof, getShufflingForAttestationVerification, verifyHeadBlockAndTargetRoot, verifyPropagationSlotRange, } from "./attestation.js";
|
|
8
8
|
import { getAggregateAndProofSignatureSet, getSelectionProofSignatureSet } from "./signatureSets/index.js";
|
|
9
9
|
export async function validateApiAggregateAndProof(fork, chain, signedAggregateAndProof) {
|
|
10
10
|
const skipValidationKnownAttesters = true;
|
|
@@ -108,15 +108,15 @@ async function validateAggregateAndProof(fork, chain, signedAggregateAndProof, s
|
|
|
108
108
|
const shuffling = await getShufflingForAttestationVerification(chain, attEpoch, attHeadBlock, RegenCaller.validateGossipAttestation);
|
|
109
109
|
// [REJECT] The committee index is within the expected range
|
|
110
110
|
// -- i.e. data.index < get_committee_count_per_slot(state, data.target.epoch)
|
|
111
|
-
const
|
|
111
|
+
const committeeValidatorIndices = cachedAttData
|
|
112
112
|
? cachedAttData.committeeValidatorIndices
|
|
113
|
-
:
|
|
113
|
+
: getCommitteeValidatorIndices(shuffling, attSlot, attIndex);
|
|
114
114
|
// [REJECT] The number of aggregation bits matches the committee size
|
|
115
115
|
// -- i.e. `len(aggregation_bits) == len(get_beacon_committee(state, aggregate.data.slot, index))`.
|
|
116
|
-
if (aggregate.aggregationBits.bitLen !==
|
|
116
|
+
if (aggregate.aggregationBits.bitLen !== committeeValidatorIndices.length) {
|
|
117
117
|
throw new AttestationError(GossipAction.REJECT, { code: AttestationErrorCode.WRONG_NUMBER_OF_AGGREGATION_BITS });
|
|
118
118
|
}
|
|
119
|
-
const attestingIndices = aggregate.aggregationBits.intersectValues(
|
|
119
|
+
const attestingIndices = aggregate.aggregationBits.intersectValues(committeeValidatorIndices);
|
|
120
120
|
const indexedAttestation = {
|
|
121
121
|
attestingIndices,
|
|
122
122
|
data: attData,
|
|
@@ -131,12 +131,12 @@ async function validateAggregateAndProof(fork, chain, signedAggregateAndProof, s
|
|
|
131
131
|
}
|
|
132
132
|
// [REJECT] aggregate_and_proof.selection_proof selects the validator as an aggregator for the slot
|
|
133
133
|
// -- i.e. is_aggregator(state, aggregate.data.slot, aggregate.data.index, aggregate_and_proof.selection_proof) returns True.
|
|
134
|
-
if (!isAggregatorFromCommitteeLength(
|
|
134
|
+
if (!isAggregatorFromCommitteeLength(committeeValidatorIndices.length, aggregateAndProof.selectionProof)) {
|
|
135
135
|
throw new AttestationError(GossipAction.REJECT, { code: AttestationErrorCode.INVALID_AGGREGATOR });
|
|
136
136
|
}
|
|
137
137
|
// [REJECT] The aggregator's validator index is within the committee
|
|
138
138
|
// -- i.e. aggregate_and_proof.aggregator_index in get_beacon_committee(state, aggregate.data.slot, aggregate.data.index).
|
|
139
|
-
if (!
|
|
139
|
+
if (!committeeValidatorIndices.includes(aggregateAndProof.aggregatorIndex)) {
|
|
140
140
|
throw new AttestationError(GossipAction.REJECT, { code: AttestationErrorCode.AGGREGATOR_NOT_IN_COMMITTEE });
|
|
141
141
|
}
|
|
142
142
|
// [REJECT] The aggregate_and_proof.selection_proof is a valid signature of the aggregate.data.slot
|
|
@@ -167,6 +167,6 @@ async function validateAggregateAndProof(fork, chain, signedAggregateAndProof, s
|
|
|
167
167
|
}
|
|
168
168
|
chain.seenAggregators.add(targetEpoch, aggregatorIndex);
|
|
169
169
|
chain.seenAggregatedAttestations.add(targetEpoch, attIndex, attDataRootHex, { aggregationBits, trueBitCount: attestingIndices.length }, false);
|
|
170
|
-
return { indexedAttestation,
|
|
170
|
+
return { indexedAttestation, committeeValidatorIndices, attDataRootHex };
|
|
171
171
|
}
|
|
172
172
|
//# sourceMappingURL=aggregateAndProof.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,yCAAyC,EACzC,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAgE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,6BAA6B,EAC7B,
|
|
1
|
+
{"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/aggregateAndProof.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export type AttestationValidationResult = {
|
|
|
17
17
|
subnet: SubnetID;
|
|
18
18
|
attDataRootHex: RootHex;
|
|
19
19
|
committeeIndex: CommitteeIndex;
|
|
20
|
-
|
|
20
|
+
validatorCommitteeIndex: number;
|
|
21
21
|
committeeSize: number;
|
|
22
22
|
};
|
|
23
23
|
export type AttestationOrBytes = ApiAttestation | GossipAttestation;
|
|
@@ -91,10 +91,10 @@ export declare function getShufflingForAttestationVerification(chain: IBeaconCha
|
|
|
91
91
|
*/
|
|
92
92
|
export declare function getAttestationDataSigningRoot(config: BeaconConfig, data: phase0.AttestationData): Uint8Array;
|
|
93
93
|
/**
|
|
94
|
-
* Get a list of indices
|
|
94
|
+
* Get a list of validator indices in the given committee
|
|
95
95
|
* attestationIndex - Index of the committee in shuffling.committees
|
|
96
96
|
*/
|
|
97
|
-
export declare function
|
|
97
|
+
export declare function getCommitteeValidatorIndices(shuffling: EpochShuffling, attestationSlot: Slot, attestationIndex: number): Uint32Array;
|
|
98
98
|
/**
|
|
99
99
|
* Compute the correct subnet for a slot/committee index
|
|
100
100
|
*/
|
|
@@ -215,7 +215,7 @@ subnet) {
|
|
|
215
215
|
verifyPropagationSlotRange(fork, chain, attestationOrCache.attestation.data.slot);
|
|
216
216
|
}
|
|
217
217
|
let aggregationBits = null;
|
|
218
|
-
let
|
|
218
|
+
let validatorCommitteeIndex = null;
|
|
219
219
|
if (!isForkPostElectra(fork)) {
|
|
220
220
|
// [REJECT] The attestation is unaggregated -- that is, it has exactly one participating validator
|
|
221
221
|
// (len([bit for bit in attestation.aggregation_bits if bit]) == 1, i.e. exactly 1 bit is set).
|
|
@@ -234,7 +234,7 @@ subnet) {
|
|
|
234
234
|
code: AttestationErrorCode.NOT_EXACTLY_ONE_AGGREGATION_BIT_SET,
|
|
235
235
|
});
|
|
236
236
|
}
|
|
237
|
-
|
|
237
|
+
validatorCommitteeIndex = bitIndex;
|
|
238
238
|
}
|
|
239
239
|
let committeeValidatorIndices;
|
|
240
240
|
let getSigningRoot;
|
|
@@ -264,7 +264,7 @@ subnet) {
|
|
|
264
264
|
const shuffling = await getShufflingForAttestationVerification(chain, attEpoch, attHeadBlock, RegenCaller.validateGossipAttestation);
|
|
265
265
|
// [REJECT] The committee index is within the expected range
|
|
266
266
|
// -- i.e. data.index < get_committee_count_per_slot(state, data.target.epoch)
|
|
267
|
-
committeeValidatorIndices =
|
|
267
|
+
committeeValidatorIndices = getCommitteeValidatorIndices(shuffling, attSlot, committeeIndex);
|
|
268
268
|
getSigningRoot = () => getAttestationDataSigningRoot(chain.config, attData);
|
|
269
269
|
expectedSubnet = computeSubnetForSlot(shuffling, attSlot, committeeIndex);
|
|
270
270
|
}
|
|
@@ -272,8 +272,8 @@ subnet) {
|
|
|
272
272
|
if (!isForkPostElectra(fork)) {
|
|
273
273
|
// The validity of aggregation bits are already checked above
|
|
274
274
|
assert.notNull(aggregationBits);
|
|
275
|
-
assert.notNull(
|
|
276
|
-
validatorIndex = committeeValidatorIndices[
|
|
275
|
+
assert.notNull(validatorCommitteeIndex);
|
|
276
|
+
validatorIndex = committeeValidatorIndices[validatorCommitteeIndex];
|
|
277
277
|
// [REJECT] The number of aggregation bits matches the committee size
|
|
278
278
|
// -- i.e. len(attestation.aggregation_bits) == len(get_beacon_committee(state, data.slot, data.index)).
|
|
279
279
|
// > TODO: Is this necessary? Lighthouse does not do this check.
|
|
@@ -299,8 +299,8 @@ subnet) {
|
|
|
299
299
|
// [REJECT] The attester is a member of the committee -- i.e.
|
|
300
300
|
// `attestation.attester_index in get_beacon_committee(state, attestation.data.slot, index)`.
|
|
301
301
|
// Position of the validator in its committee
|
|
302
|
-
|
|
303
|
-
if (
|
|
302
|
+
validatorCommitteeIndex = committeeValidatorIndices.indexOf(validatorIndex);
|
|
303
|
+
if (validatorCommitteeIndex === -1) {
|
|
304
304
|
throw new AttestationError(GossipAction.REJECT, {
|
|
305
305
|
code: AttestationErrorCode.ATTESTER_NOT_IN_COMMITTEE,
|
|
306
306
|
});
|
|
@@ -399,7 +399,7 @@ subnet) {
|
|
|
399
399
|
signatureSet,
|
|
400
400
|
validatorIndex,
|
|
401
401
|
committeeIndex,
|
|
402
|
-
|
|
402
|
+
validatorCommitteeIndex,
|
|
403
403
|
committeeSize: committeeValidatorIndices.length,
|
|
404
404
|
};
|
|
405
405
|
}
|
|
@@ -598,10 +598,10 @@ function verifyAttestationTargetRoot(headBlock, targetRoot, attestationEpoch) {
|
|
|
598
598
|
}
|
|
599
599
|
}
|
|
600
600
|
/**
|
|
601
|
-
* Get a list of indices
|
|
601
|
+
* Get a list of validator indices in the given committee
|
|
602
602
|
* attestationIndex - Index of the committee in shuffling.committees
|
|
603
603
|
*/
|
|
604
|
-
export function
|
|
604
|
+
export function getCommitteeValidatorIndices(shuffling, attestationSlot, attestationIndex) {
|
|
605
605
|
const { committees } = shuffling;
|
|
606
606
|
const slotCommittees = committees[attestationSlot % SLOTS_PER_EPOCH];
|
|
607
607
|
if (attestationIndex >= slotCommittees.length) {
|