@lodestar/beacon-node 1.34.0-dev.1244f930ff → 1.34.0-dev.14a6f737fd
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 +58 -35
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +3 -3
- 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 +37 -26
- 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 +51 -76
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/interface.d.ts +3 -10
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/prepareNextSlot.js +2 -1
- 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/dataColumnSidecar.d.ts +2 -1
- package/lib/chain/validation/dataColumnSidecar.js +13 -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.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 -5
- package/lib/metrics/metrics/beacon.js +9 -14
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +6 -0
- package/lib/metrics/metrics/lodestar.js +20 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +5 -0
- package/lib/network/core/networkCore.js +42 -12
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts +2 -2
- package/lib/network/gossip/gossipsub.js +8 -6
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/scoringParameters.d.ts +6 -2
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +586 -53
- package/lib/network/gossip/topic.js +15 -6
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +3 -3
- package/lib/network/network.d.ts +3 -3
- package/lib/network/network.js +6 -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 +20 -11
- 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 +9 -6
- 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 +27 -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 +7 -21
- 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/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 +32 -27
- package/lib/util/dataColumns.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 +18 -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,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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ChainConfig } from "@lodestar/config";
|
|
1
2
|
import { Root, Slot, SubnetID, deneb, fulu } from "@lodestar/types";
|
|
2
3
|
import { Metrics } from "../../metrics/metrics.js";
|
|
3
4
|
import { IBeaconChain } from "../interface.js";
|
|
@@ -24,5 +25,5 @@ export declare function verifyDataColumnSidecarInclusionProof(dataColumnSidecar:
|
|
|
24
25
|
* SPEC FUNCTION
|
|
25
26
|
* https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#compute_subnet_for_data_column_sidecar
|
|
26
27
|
*/
|
|
27
|
-
export declare function computeSubnetForDataColumnSidecar(columnSidecar: fulu.DataColumnSidecar): SubnetID;
|
|
28
|
+
export declare function computeSubnetForDataColumnSidecar(config: ChainConfig, columnSidecar: fulu.DataColumnSidecar): SubnetID;
|
|
28
29
|
//# sourceMappingURL=dataColumnSidecar.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH, KZG_COMMITMENTS_SUBTREE_INDEX, NUMBER_OF_COLUMNS, } from "@lodestar/params";
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
3
|
import { toRootHex, verifyMerkleBranch } from "@lodestar/utils";
|
|
4
4
|
import { computeStartSlotAtEpoch, getBlockHeaderProposerSignatureSet } from "@lodestar/state-transition";
|
|
@@ -14,7 +14,7 @@ export async function validateGossipDataColumnSidecar(chain, dataColumnSidecar,
|
|
|
14
14
|
// 1) [REJECT] The sidecar is valid as verified by verify_data_column_sidecar
|
|
15
15
|
verifyDataColumnSidecar(dataColumnSidecar);
|
|
16
16
|
// 2) [REJECT] The sidecar is for the correct subnet -- i.e. compute_subnet_for_data_column_sidecar(sidecar.index) == subnet_id
|
|
17
|
-
if (computeSubnetForDataColumnSidecar(dataColumnSidecar) !== gossipSubnet) {
|
|
17
|
+
if (computeSubnetForDataColumnSidecar(chain.config, dataColumnSidecar) !== gossipSubnet) {
|
|
18
18
|
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
19
19
|
code: DataColumnSidecarErrorCode.INVALID_SUBNET,
|
|
20
20
|
columnIdx: dataColumnSidecar.index,
|
|
@@ -124,6 +124,7 @@ export async function validateGossipDataColumnSidecar(chain, dataColumnSidecar,
|
|
|
124
124
|
columnIdx: dataColumnSidecar.index,
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
|
+
const kzgProofTimer = metrics?.peerDas.dataColumnSidecarKzgProofsVerificationTime.startTimer();
|
|
127
128
|
// 11) [REJECT] The sidecar's column data is valid as verified by verify_data_column_sidecar_kzg_proofs
|
|
128
129
|
try {
|
|
129
130
|
await verifyDataColumnSidecarKzgProofs(dataColumnSidecar.kzgCommitments, Array.from({ length: dataColumnSidecar.column.length }, () => dataColumnSidecar.index), dataColumnSidecar.column, dataColumnSidecar.kzgProofs);
|
|
@@ -135,6 +136,9 @@ export async function validateGossipDataColumnSidecar(chain, dataColumnSidecar,
|
|
|
135
136
|
columnIdx: dataColumnSidecar.index,
|
|
136
137
|
});
|
|
137
138
|
}
|
|
139
|
+
finally {
|
|
140
|
+
kzgProofTimer?.();
|
|
141
|
+
}
|
|
138
142
|
// 12) [IGNORE] The sidecar is the first sidecar for the tuple (block_header.slot, block_header.proposer_index,
|
|
139
143
|
// sidecar.index) with valid header signature, sidecar inclusion proof, and kzg proof
|
|
140
144
|
// -- Handled in seenGossipBlockInput
|
|
@@ -157,7 +161,7 @@ export async function validateDataColumnsSidecars(blockSlot, blockRoot, blockKzg
|
|
|
157
161
|
blockKzgCommitments
|
|
158
162
|
.map((commitment, i) => byteArrayEquals(commitment, kzgCommitments[i]))
|
|
159
163
|
.filter((result) => result === false).length) {
|
|
160
|
-
throw new Error(`Invalid data column sidecar slot=${columnBlockHeader.slot} columnBlockRoot=${toRootHex(columnBlockRoot)} columnIndex=${columnIndex} for the block blockRoot=${toRootHex(blockRoot)} slot=${blockSlot} sidecarsIndex=${sidecarsIndex}`);
|
|
164
|
+
throw new Error(`Invalid data column sidecar slot=${columnBlockHeader.slot} columnBlockRoot=${toRootHex(columnBlockRoot)} columnIndex=${columnIndex} for the block blockRoot=${toRootHex(blockRoot)} slot=${blockSlot} sidecarsIndex=${sidecarsIndex} kzgCommitments=${kzgCommitments.length} blockKzgCommitments=${blockKzgCommitments.length}`);
|
|
161
165
|
}
|
|
162
166
|
if (columnIndex >= NUMBER_OF_COLUMNS) {
|
|
163
167
|
throw new Error(`Invalid data sidecar columnIndex=${columnIndex} in slot=${blockSlot} blockRoot=${toRootHex(blockRoot)} sidecarsIndex=${sidecarsIndex}`);
|
|
@@ -180,7 +184,8 @@ export async function validateDataColumnsSidecars(blockSlot, blockRoot, blockKzg
|
|
|
180
184
|
timer?.();
|
|
181
185
|
}
|
|
182
186
|
catch (err) {
|
|
183
|
-
err.message =
|
|
187
|
+
err.message =
|
|
188
|
+
`Error in verifyCellKzgProofBatch for slot=${blockSlot} blockRoot=${toRootHex(blockRoot)} commitmentBytes=${commitmentBytes.length} cellIndices=${cellIndices.length} cells=${cells.length} proofBytes=${proofBytes.length}`;
|
|
184
189
|
throw err;
|
|
185
190
|
}
|
|
186
191
|
if (!valid) {
|
|
@@ -221,10 +226,10 @@ export function verifyDataColumnSidecar(dataColumnSidecar) {
|
|
|
221
226
|
export async function verifyDataColumnSidecarKzgProofs(commitments, cellIndices, cells, proofs) {
|
|
222
227
|
let valid;
|
|
223
228
|
try {
|
|
224
|
-
valid = await kzg.
|
|
229
|
+
valid = await kzg.asyncVerifyCellKzgProofBatch(commitments, cellIndices, cells, proofs);
|
|
225
230
|
}
|
|
226
231
|
catch (e) {
|
|
227
|
-
e.message = `Error on
|
|
232
|
+
e.message = `Error on asyncVerifyCellKzgProofBatch: ${e.message}`;
|
|
228
233
|
throw e;
|
|
229
234
|
}
|
|
230
235
|
if (!valid) {
|
|
@@ -242,7 +247,7 @@ export function verifyDataColumnSidecarInclusionProof(dataColumnSidecar) {
|
|
|
242
247
|
* SPEC FUNCTION
|
|
243
248
|
* https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#compute_subnet_for_data_column_sidecar
|
|
244
249
|
*/
|
|
245
|
-
export function computeSubnetForDataColumnSidecar(columnSidecar) {
|
|
246
|
-
return columnSidecar.index % DATA_COLUMN_SIDECAR_SUBNET_COUNT;
|
|
250
|
+
export function computeSubnetForDataColumnSidecar(config, columnSidecar) {
|
|
251
|
+
return columnSidecar.index % config.DATA_COLUMN_SIDECAR_SUBNET_COUNT;
|
|
247
252
|
}
|
|
248
253
|
//# sourceMappingURL=dataColumnSidecar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumnSidecar.js","sourceRoot":"","sources":["../../../src/chain/validation/dataColumnSidecar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataColumnSidecar.js","sourceRoot":"","sources":["../../../src/chain/validation/dataColumnSidecar.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qCAAqC,EACrC,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAoC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,SAAS,EAAE,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAC,uBAAuB,EAAE,kCAAkC,EAAC,MAAM,4BAA4B,CAAC;AAEvG,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,GAAG,EAAC,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAC,0BAA0B,EAAE,4BAA4B,EAAC,MAAM,qCAAqC,CAAC;AAC7G,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAElD,gBAAgB;AAChB,4HAA4H;AAC5H,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,KAAmB,EACnB,iBAAyC,EACzC,YAAsB,EACtB,OAAuB;IAEvB,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC;IAEhE,6EAA6E;IAC7E,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAE3C,+HAA+H;IAC/H,IAAI,iCAAiC,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,YAAY,EAAE,CAAC;QACxF,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,cAAc;YAC/C,SAAS,EAAE,iBAAiB,CAAC,KAAK;YAClC,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,sGAAsG;IACtG,mGAAmG;IACnG,uDAAuD;IACvD,MAAM,8BAA8B,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC;IAClF,IAAI,8BAA8B,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACtD,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,WAAW;YAC5C,WAAW,EAAE,8BAA8B;YAC3C,SAAS,EAAE,WAAW,CAAC,IAAI;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,sGAAsG;IACtG,2FAA2F;IAC3F,MAAM,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;IACtE,MAAM,aAAa,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzE,IAAI,WAAW,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,2BAA2B;YAC5D,SAAS,EAAE,WAAW,CAAC,IAAI;YAC3B,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IAED,2GAA2G;IAC3G,qCAAqC;IACrC,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,2FAA2F;QAC3F,iCAAiC;QACjC,EAAE;QACF,sFAAsF;QACtF,mFAAmF;QACnF,wDAAwD;QACxD,0FAA0F;QAC1F,sCAAsC;QACtC,sIAAsI;QACtI,kFAAkF;QAClF,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,cAAc;YAC/C,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,kFAAkF;IAClF,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,qBAAqB;YACtD,UAAU,EAAE,WAAW,CAAC,IAAI;YAC5B,IAAI,EAAE,WAAW,CAAC,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;IAED,0GAA0G;IAC1G,8FAA8F;IAC9F,+FAA+F;IAC/F,8DAA8D;IAC9D,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,KAAK;SACjC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC;SAC3G,KAAK,CAAC,GAAG,EAAE;QACV,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,cAAc;YAC/C,UAAU;SACX,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,yHAAyH;IACzH,+GAA+G;IAC/G,sHAAsH;IACtH,qHAAqH;IACrH,6BAA6B;IAC7B,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;IAChD,MAAM,qBAAqB,GAAG,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEtF,IAAI,aAAa,KAAK,qBAAqB,EAAE,CAAC;QAC5C,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,kBAAkB;YACnD,mBAAmB,EAAE,aAAa;YAClC,qBAAqB;SACtB,CAAC,CAAC;IACL,CAAC;IAED,sIAAsI;IACtI,MAAM,YAAY,GAAG,kCAAkC,CAAC,UAAU,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACzG,6CAA6C;IAC7C,IACE,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE;QACpD,kBAAkB,EAAE,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI;KACvE,CAAC,CAAC,EACH,CAAC;QACD,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,0BAA0B;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,qFAAqF;IACrF,8GAA8G;IAC9G,yDAAyD;IACzD,gBAAgB;IAEhB,2FAA2F;IAC3F,0DAA0D;IAC1D,oFAAoF;IACpF,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,+CAA+C,CAAC,UAAU,EAAE,CAAC;IAC5F,MAAM,KAAK,GAAG,qCAAqC,CAAC,iBAAiB,CAAC,CAAC;IACvE,KAAK,EAAE,EAAE,CAAC;IAEV,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,uBAAuB;YACxD,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI;YACtD,SAAS,EAAE,iBAAiB,CAAC,KAAK;SACnC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,EAAE,OAAO,CAAC,0CAA0C,CAAC,UAAU,EAAE,CAAC;IAC/F,uGAAuG;IACvG,IAAI,CAAC;QACH,MAAM,gCAAgC,CACpC,iBAAiB,CAAC,cAAc,EAChC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAC,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACpF,iBAAiB,CAAC,MAAM,EACxB,iBAAiB,CAAC,SAAS,CAC5B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,iBAAiB;YAClD,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,SAAS,EAAE,iBAAiB,CAAC,KAAK;SACnC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,aAAa,EAAE,EAAE,CAAC;IACpB,CAAC;IAED,+GAA+G;IAC/G,kGAAkG;IAClG,kDAAkD;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,SAAe,EACf,SAAe,EACf,mBAA6C,EAC7C,kBAA2C,EAC3C,OAAuB,EACvB,OAAmC,EAAC,eAAe,EAAE,KAAK,EAAC;IAE3D,MAAM,eAAe,GAAiB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAiB,EAAE,CAAC;IAEpC,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC;QACvF,MAAM,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,EAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAC,GAAG,aAAa,CAAC;QAC9E,MAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC;QAClE,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACrF,IACE,iBAAiB,CAAC,IAAI,KAAK,SAAS;YACpC,CAAC,eAAe,CAAC,eAAe,EAAE,SAAS,CAAC;YAC5C,cAAc,CAAC,MAAM,KAAK,CAAC;YAC3B,mBAAmB,CAAC,MAAM,KAAK,CAAC;YAChC,mBAAmB,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;YACpD,mBAAmB;iBAChB,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,MAAM,EAC9C,CAAC;YACD,MAAM,IAAI,KAAK,CACb,oCAAoC,iBAAiB,CAAC,IAAI,oBAAoB,SAAS,CAAC,eAAe,CAAC,gBAAgB,WAAW,4BAA4B,SAAS,CAAC,SAAS,CAAC,SAAS,SAAS,kBAAkB,aAAa,mBAAmB,cAAc,CAAC,MAAM,wBAAwB,mBAAmB,CAAC,MAAM,EAAE,CACjU,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,IAAI,iBAAiB,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,oCAAoC,WAAW,YAAY,SAAS,cAAc,SAAS,CAAC,SAAS,CAAC,kBAAkB,aAAa,EAAE,CACxI,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CACb,sDAAsD,WAAW,YAAY,SAAS,cAAc,SAAS,CAAC,SAAS,CAAC,EAAE,CAC3H,CAAC;QACJ,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,kCAAkC,CAAC,UAAU,EAAE,CAAC;QAC/E,KAAK,GAAG,MAAM,GAAG,CAAC,4BAA4B,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAChG,KAAK,EAAE,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,GAAa,CAAC,OAAO;YACpB,6CAA6C,SAAS,cAAc,SAAS,CAAC,SAAS,CAAC,oBAAoB,eAAe,CAAC,MAAM,gBAAgB,WAAW,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,eAAe,UAAU,CAAC,MAAM,EAAE,CAAC;QAC/N,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,cAAc,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzG,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,iBAAyC;IAC/E,IAAI,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACjD,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,aAAa;YAC9C,SAAS,EAAE,iBAAiB,CAAC,KAAK;SACnC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,iBAAiB,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,cAAc;YAC/C,SAAS,EAAE,iBAAiB,CAAC,KAAK;SACnC,CAAC,CAAC;IACL,CAAC;IAED,IACE,iBAAiB,CAAC,MAAM,CAAC,MAAM,KAAK,iBAAiB,CAAC,cAAc,CAAC,MAAM;QAC3E,iBAAiB,CAAC,MAAM,CAAC,MAAM,KAAK,iBAAiB,CAAC,SAAS,CAAC,MAAM,EACtE,CAAC;QACD,MAAM,IAAI,4BAA4B,CAAC,YAAY,CAAC,MAAM,EAAE;YAC1D,IAAI,EAAE,0BAA0B,CAAC,kBAAkB;YACnD,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM;YAC7C,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,CAAC,MAAM;YAC1D,YAAY,EAAE,iBAAiB,CAAC,SAAS,CAAC,MAAM;SACjD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,WAAyB,EACzB,WAAqB,EACrB,KAAmB,EACnB,MAAoB;IAEpB,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,GAAG,CAAC,4BAA4B,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACV,CAAW,CAAC,OAAO,GAAG,0CAA2C,CAAW,CAAC,OAAO,EAAE,CAAC;QACxF,MAAM,CAAC,CAAC;IACV,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qCAAqC,CAAC,iBAAyC;IAC7F,OAAO,kBAAkB,CACvB,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAC3E,iBAAiB,CAAC,4BAA4B,EAC9C,qCAAqC,EACrC,6BAA6B,EAC7B,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CACrD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAC/C,MAAmB,EACnB,aAAqC;IAErC,OAAO,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACvE,CAAC"}
|
package/lib/db/beacon.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { ChainForkConfig } from "@lodestar/config";
|
|
|
2
2
|
import { Db, LevelDbControllerMetrics } from "@lodestar/db";
|
|
3
3
|
import { IBeaconDb } from "./interface.js";
|
|
4
4
|
import { CheckpointStateRepository } from "./repositories/checkpointState.js";
|
|
5
|
-
import { AttesterSlashingRepository, BLSToExecutionChangeRepository, BackfilledRanges, BestLightClientUpdateRepository, BlobSidecarsArchiveRepository, BlobSidecarsRepository, BlockArchiveRepository, BlockRepository, CheckpointHeaderRepository,
|
|
5
|
+
import { AttesterSlashingRepository, BLSToExecutionChangeRepository, BackfilledRanges, BestLightClientUpdateRepository, BlobSidecarsArchiveRepository, BlobSidecarsRepository, BlockArchiveRepository, BlockRepository, CheckpointHeaderRepository, DataColumnSidecarArchiveRepository, DataColumnSidecarRepository, DepositDataRootRepository, DepositEventRepository, Eth1DataRepository, ProposerSlashingRepository, StateArchiveRepository, SyncCommitteeRepository, SyncCommitteeWitnessRepository, VoluntaryExitRepository } from "./repositories/index.js";
|
|
6
6
|
import { PreGenesisState, PreGenesisStateLastProcessedBlock } from "./single/index.js";
|
|
7
7
|
export type BeaconDbModules = {
|
|
8
8
|
config: ChainForkConfig;
|
|
@@ -14,8 +14,8 @@ export declare class BeaconDb implements IBeaconDb {
|
|
|
14
14
|
blockArchive: BlockArchiveRepository;
|
|
15
15
|
blobSidecars: BlobSidecarsRepository;
|
|
16
16
|
blobSidecarsArchive: BlobSidecarsArchiveRepository;
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
dataColumnSidecar: DataColumnSidecarRepository;
|
|
18
|
+
dataColumnSidecarArchive: DataColumnSidecarArchiveRepository;
|
|
19
19
|
stateArchive: StateArchiveRepository;
|
|
20
20
|
checkpointState: CheckpointStateRepository;
|
|
21
21
|
voluntaryExit: VoluntaryExitRepository;
|
package/lib/db/beacon.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CheckpointStateRepository } from "./repositories/checkpointState.js";
|
|
2
|
-
import { AttesterSlashingRepository, BLSToExecutionChangeRepository, BackfilledRanges, BestLightClientUpdateRepository, BlobSidecarsArchiveRepository, BlobSidecarsRepository, BlockArchiveRepository, BlockRepository, CheckpointHeaderRepository,
|
|
2
|
+
import { AttesterSlashingRepository, BLSToExecutionChangeRepository, BackfilledRanges, BestLightClientUpdateRepository, BlobSidecarsArchiveRepository, BlobSidecarsRepository, BlockArchiveRepository, BlockRepository, CheckpointHeaderRepository, DataColumnSidecarArchiveRepository, DataColumnSidecarRepository, DepositDataRootRepository, DepositEventRepository, Eth1DataRepository, ProposerSlashingRepository, StateArchiveRepository, SyncCommitteeRepository, SyncCommitteeWitnessRepository, VoluntaryExitRepository, } from "./repositories/index.js";
|
|
3
3
|
import { PreGenesisState, PreGenesisStateLastProcessedBlock } from "./single/index.js";
|
|
4
4
|
export class BeaconDb {
|
|
5
5
|
constructor(config, db) {
|
|
@@ -9,8 +9,8 @@ export class BeaconDb {
|
|
|
9
9
|
this.blockArchive = new BlockArchiveRepository(config, db);
|
|
10
10
|
this.blobSidecars = new BlobSidecarsRepository(config, db);
|
|
11
11
|
this.blobSidecarsArchive = new BlobSidecarsArchiveRepository(config, db);
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
12
|
+
this.dataColumnSidecar = new DataColumnSidecarRepository(config, db);
|
|
13
|
+
this.dataColumnSidecarArchive = new DataColumnSidecarArchiveRepository(config, db);
|
|
14
14
|
this.stateArchive = new StateArchiveRepository(config, db);
|
|
15
15
|
this.checkpointState = new CheckpointStateRepository(config, db);
|
|
16
16
|
this.voluntaryExit = new VoluntaryExitRepository(config, db);
|
package/lib/db/beacon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../src/db/beacon.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,yBAAyB,EAAC,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,gBAAgB,EAChB,+BAA+B,EAC/B,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,0BAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../src/db/beacon.ts"],"names":[],"mappings":"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"}
|
package/lib/db/interface.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LevelDbControllerMetrics } from "@lodestar/db";
|
|
2
2
|
import { CheckpointStateRepository } from "./repositories/checkpointState.js";
|
|
3
|
-
import { AttesterSlashingRepository, BLSToExecutionChangeRepository, BackfilledRanges, BestLightClientUpdateRepository, BlobSidecarsArchiveRepository, BlobSidecarsRepository, BlockArchiveRepository, BlockRepository, CheckpointHeaderRepository,
|
|
3
|
+
import { AttesterSlashingRepository, BLSToExecutionChangeRepository, BackfilledRanges, BestLightClientUpdateRepository, BlobSidecarsArchiveRepository, BlobSidecarsRepository, BlockArchiveRepository, BlockRepository, CheckpointHeaderRepository, DataColumnSidecarArchiveRepository, DataColumnSidecarRepository, DepositDataRootRepository, DepositEventRepository, Eth1DataRepository, ProposerSlashingRepository, StateArchiveRepository, SyncCommitteeRepository, SyncCommitteeWitnessRepository, VoluntaryExitRepository } from "./repositories/index.js";
|
|
4
4
|
import { PreGenesisState, PreGenesisStateLastProcessedBlock } from "./single/index.js";
|
|
5
5
|
/**
|
|
6
6
|
* The DB service manages the data layer of the beacon chain
|
|
@@ -12,8 +12,8 @@ export interface IBeaconDb {
|
|
|
12
12
|
blockArchive: BlockArchiveRepository;
|
|
13
13
|
blobSidecars: BlobSidecarsRepository;
|
|
14
14
|
blobSidecarsArchive: BlobSidecarsArchiveRepository;
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
dataColumnSidecar: DataColumnSidecarRepository;
|
|
16
|
+
dataColumnSidecarArchive: DataColumnSidecarArchiveRepository;
|
|
17
17
|
stateArchive: StateArchiveRepository;
|
|
18
18
|
checkpointState: CheckpointStateRepository;
|
|
19
19
|
voluntaryExit: VoluntaryExitRepository;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
+
import { Db, PrefixedRepository } from "@lodestar/db";
|
|
3
|
+
import { ColumnIndex, Root, fulu } from "@lodestar/types";
|
|
4
|
+
type BlockRoot = Root;
|
|
5
|
+
/**
|
|
6
|
+
* DataColumnSidecarsRepository
|
|
7
|
+
* Used to store `unfinalized` DataColumnSidecars
|
|
8
|
+
*
|
|
9
|
+
* Indexed data by `blockRoot` + `columnIndex`
|
|
10
|
+
*/
|
|
11
|
+
export declare class DataColumnSidecarRepository extends PrefixedRepository<BlockRoot, ColumnIndex, fulu.DataColumnSidecar> {
|
|
12
|
+
constructor(config: ChainForkConfig, db: Db);
|
|
13
|
+
/**
|
|
14
|
+
* Id is hashTreeRoot of unsigned BeaconBlock
|
|
15
|
+
*/
|
|
16
|
+
getId(value: fulu.DataColumnSidecar): ColumnIndex;
|
|
17
|
+
encodeKeyRaw(prefix: BlockRoot, id: ColumnIndex): Uint8Array;
|
|
18
|
+
decodeKeyRaw(raw: Uint8Array): {
|
|
19
|
+
prefix: BlockRoot;
|
|
20
|
+
id: ColumnIndex;
|
|
21
|
+
};
|
|
22
|
+
getMaxKeyRaw(prefix: BlockRoot): Uint8Array;
|
|
23
|
+
getMinKeyRaw(prefix: BlockRoot): Uint8Array;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=dataColumnSidecar.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { PrefixedRepository } from "@lodestar/db";
|
|
2
|
+
import { NUMBER_OF_COLUMNS } from "@lodestar/params";
|
|
3
|
+
import { ssz } from "@lodestar/types";
|
|
4
|
+
import { bytesToInt, intToBytes } from "@lodestar/utils";
|
|
5
|
+
import { Bucket, getBucketNameByValue } from "../buckets.js";
|
|
6
|
+
/**
|
|
7
|
+
* DataColumnSidecarsRepository
|
|
8
|
+
* Used to store `unfinalized` DataColumnSidecars
|
|
9
|
+
*
|
|
10
|
+
* Indexed data by `blockRoot` + `columnIndex`
|
|
11
|
+
*/
|
|
12
|
+
export class DataColumnSidecarRepository extends PrefixedRepository {
|
|
13
|
+
constructor(config, db) {
|
|
14
|
+
const bucket = Bucket.allForks_dataColumnSidecars;
|
|
15
|
+
super(config, db, bucket, ssz.fulu.DataColumnSidecar, getBucketNameByValue(bucket));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Id is hashTreeRoot of unsigned BeaconBlock
|
|
19
|
+
*/
|
|
20
|
+
getId(value) {
|
|
21
|
+
return value.index;
|
|
22
|
+
}
|
|
23
|
+
encodeKeyRaw(prefix, id) {
|
|
24
|
+
return Buffer.concat([prefix, intToBytes(id, 4)]);
|
|
25
|
+
}
|
|
26
|
+
decodeKeyRaw(raw) {
|
|
27
|
+
return {
|
|
28
|
+
prefix: raw.slice(0, 32),
|
|
29
|
+
id: bytesToInt(raw.slice(32, 36)),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
getMaxKeyRaw(prefix) {
|
|
33
|
+
return Buffer.concat([prefix, intToBytes(NUMBER_OF_COLUMNS, 4)]);
|
|
34
|
+
}
|
|
35
|
+
getMinKeyRaw(prefix) {
|
|
36
|
+
return Buffer.concat([prefix, intToBytes(0, 4)]);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=dataColumnSidecar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataColumnSidecar.js","sourceRoot":"","sources":["../../../src/db/repositories/dataColumnSidecar.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAA0B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,MAAM,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAI3D;;;;;GAKG;AACH,MAAM,OAAO,2BAA4B,SAAQ,kBAAkE;IACjH,YAAY,MAAuB,EAAE,EAAM;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAClD,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAA6B;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,YAAY,CAAC,MAAiB,EAAE,EAAe;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,YAAY,CAAC,GAAe;QAC1B,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAc;YACrC,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAgB;SACjD,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAiB;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,YAAY,CAAC,MAAiB;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
+
import { Db, PrefixedRepository } from "@lodestar/db";
|
|
3
|
+
import { ColumnIndex, Slot, fulu } from "@lodestar/types";
|
|
4
|
+
/**
|
|
5
|
+
* DataColumnSidecarsRepository
|
|
6
|
+
* Used to store `finalized` DataColumnSidecars
|
|
7
|
+
*
|
|
8
|
+
* Indexed data by `slot` + `columnIndex`
|
|
9
|
+
*/
|
|
10
|
+
export declare class DataColumnSidecarArchiveRepository extends PrefixedRepository<Slot, ColumnIndex, fulu.DataColumnSidecar> {
|
|
11
|
+
constructor(config: ChainForkConfig, db: Db);
|
|
12
|
+
/**
|
|
13
|
+
* Id is hashTreeRoot of unsigned BeaconBlock
|
|
14
|
+
*/
|
|
15
|
+
getId(value: fulu.DataColumnSidecar): ColumnIndex;
|
|
16
|
+
encodeKeyRaw(prefix: Slot, id: ColumnIndex): Uint8Array;
|
|
17
|
+
decodeKeyRaw(raw: Uint8Array): {
|
|
18
|
+
prefix: Slot;
|
|
19
|
+
id: ColumnIndex;
|
|
20
|
+
};
|
|
21
|
+
getMaxKeyRaw(prefix: Slot): Uint8Array;
|
|
22
|
+
getMinKeyRaw(prefix: Slot): Uint8Array;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=dataColumnSidecarArchive.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { PrefixedRepository } from "@lodestar/db";
|
|
2
|
+
import { NUMBER_OF_COLUMNS } from "@lodestar/params";
|
|
3
|
+
import { ssz } from "@lodestar/types";
|
|
4
|
+
import { bytesToInt, intToBytes } from "@lodestar/utils";
|
|
5
|
+
import { Bucket, getBucketNameByValue } from "../buckets.js";
|
|
6
|
+
/**
|
|
7
|
+
* DataColumnSidecarsRepository
|
|
8
|
+
* Used to store `finalized` DataColumnSidecars
|
|
9
|
+
*
|
|
10
|
+
* Indexed data by `slot` + `columnIndex`
|
|
11
|
+
*/
|
|
12
|
+
export class DataColumnSidecarArchiveRepository extends PrefixedRepository {
|
|
13
|
+
constructor(config, db) {
|
|
14
|
+
const bucket = Bucket.allForks_dataColumnSidecars;
|
|
15
|
+
super(config, db, bucket, ssz.fulu.DataColumnSidecar, getBucketNameByValue(bucket));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Id is hashTreeRoot of unsigned BeaconBlock
|
|
19
|
+
*/
|
|
20
|
+
getId(value) {
|
|
21
|
+
return value.index;
|
|
22
|
+
}
|
|
23
|
+
encodeKeyRaw(prefix, id) {
|
|
24
|
+
return Buffer.concat([intToBytes(prefix, 4), intToBytes(id, 4)]);
|
|
25
|
+
}
|
|
26
|
+
decodeKeyRaw(raw) {
|
|
27
|
+
return {
|
|
28
|
+
prefix: bytesToInt(raw.slice(0, 4)),
|
|
29
|
+
id: bytesToInt(raw.slice(4, 8)),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
getMaxKeyRaw(prefix) {
|
|
33
|
+
return Buffer.concat([intToBytes(prefix, 4), intToBytes(NUMBER_OF_COLUMNS, 4)]);
|
|
34
|
+
}
|
|
35
|
+
getMinKeyRaw(prefix) {
|
|
36
|
+
return Buffer.concat([intToBytes(prefix, 4), intToBytes(0, 4)]);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=dataColumnSidecarArchive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataColumnSidecarArchive.js","sourceRoot":"","sources":["../../../src/db/repositories/dataColumnSidecarArchive.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAA0B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,MAAM,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,kCAAmC,SAAQ,kBAA6D;IACnH,YAAY,MAAuB,EAAE,EAAM;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAClD,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAA6B;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,YAAY,CAAC,MAAY,EAAE,EAAe;QACxC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,YAAY,CAAC,GAAe;QAC1B,OAAO;YACL,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAS;YAC3C,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAgB;SAC/C,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAY;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,YAAY,CAAC,MAAY;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { BlobSidecarsRepository } from "./blobSidecars.js";
|
|
2
2
|
export { BlobSidecarsArchiveRepository } from "./blobSidecarsArchive.js";
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
3
|
+
export { DataColumnSidecarRepository } from "./dataColumnSidecar.js";
|
|
4
|
+
export { DataColumnSidecarArchiveRepository } from "./dataColumnSidecarArchive.js";
|
|
5
5
|
export { BlockRepository } from "./block.js";
|
|
6
6
|
export { BlockArchiveRepository } from "./blockArchive.js";
|
|
7
7
|
export type { BlockArchiveBatchPutBinaryItem, BlockFilterOptions } from "./blockArchive.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { BlobSidecarsRepository } from "./blobSidecars.js";
|
|
2
2
|
export { BlobSidecarsArchiveRepository } from "./blobSidecarsArchive.js";
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
3
|
+
export { DataColumnSidecarRepository } from "./dataColumnSidecar.js";
|
|
4
|
+
export { DataColumnSidecarArchiveRepository } from "./dataColumnSidecarArchive.js";
|
|
5
5
|
export { BlockRepository } from "./block.js";
|
|
6
6
|
export { BlockArchiveRepository } from "./blockArchive.js";
|
|
7
7
|
export { StateArchiveRepository } from "./stateArchive.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,6BAA6B,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,6BAA6B,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAC,2BAA2B,EAAC,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAC,kCAAkC,EAAC,MAAM,+BAA+B,CAAC;AAEjF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,0BAA0B,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,0BAA0B,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,yBAAyB,EAAC,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAC,+BAA+B,EAAC,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAC,uBAAuB,EAAC,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAC,8BAA8B,EAAC,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,8BAA8B,EAAC,MAAM,2BAA2B,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { ApiClient as BuilderApi } from "@lodestar/api/builder";
|
|
|
2
2
|
import { ChainForkConfig } from "@lodestar/config";
|
|
3
3
|
import { Logger } from "@lodestar/logger";
|
|
4
4
|
import { ForkPostBellatrix } from "@lodestar/params";
|
|
5
|
-
import { BLSPubkey, Epoch, ExecutionPayloadHeader, Root,
|
|
5
|
+
import { BLSPubkey, Epoch, ExecutionPayloadHeader, Root, SignedBlindedBeaconBlock, SignedBlockContents, Slot, Wei, WithOptionalBytes, bellatrix, deneb, electra } from "@lodestar/types";
|
|
6
6
|
import { Metrics } from "../../metrics/metrics.js";
|
|
7
7
|
import { ValidatorRegistration, ValidatorRegistrationCache } from "./cache.js";
|
|
8
8
|
import { IExecutionBuilder } from "./interface.js";
|
|
@@ -16,6 +16,22 @@ export type ExecutionBuilderHttpOpts = {
|
|
|
16
16
|
userAgent?: string;
|
|
17
17
|
};
|
|
18
18
|
export declare const defaultExecutionBuilderHttpOpts: ExecutionBuilderHttpOpts;
|
|
19
|
+
export declare enum BuilderStatus {
|
|
20
|
+
/**
|
|
21
|
+
* Builder is enabled and operational
|
|
22
|
+
*/
|
|
23
|
+
enabled = "enabled",
|
|
24
|
+
/**
|
|
25
|
+
* Builder is disabled due to failed status check
|
|
26
|
+
*/
|
|
27
|
+
disabled = "disabled",
|
|
28
|
+
/**
|
|
29
|
+
* Circuit breaker condition that is triggered when the node determines the chain is unhealthy.
|
|
30
|
+
* When the circuit breaker is fired, proposers **MUST** not utilize the external builder
|
|
31
|
+
* network and exclusively build locally.
|
|
32
|
+
*/
|
|
33
|
+
circuitBreaker = "circuit_breaker"
|
|
34
|
+
}
|
|
19
35
|
/**
|
|
20
36
|
* Expected error if builder does not provide a bid. Most of the time, this
|
|
21
37
|
* is due to `min-bid` setting on the mev-boost side but in rare cases could
|
|
@@ -29,7 +45,7 @@ export declare class ExecutionBuilderHttp implements IExecutionBuilder {
|
|
|
29
45
|
readonly config: ChainForkConfig;
|
|
30
46
|
readonly registrations: ValidatorRegistrationCache;
|
|
31
47
|
readonly issueLocalFcUWithFeeRecipient?: string;
|
|
32
|
-
status:
|
|
48
|
+
status: BuilderStatus;
|
|
33
49
|
faultInspectionWindow: number;
|
|
34
50
|
allowedFaults: number;
|
|
35
51
|
/**
|
|
@@ -39,7 +55,7 @@ export declare class ExecutionBuilderHttp implements IExecutionBuilder {
|
|
|
39
55
|
*/
|
|
40
56
|
private sszSupported;
|
|
41
57
|
constructor(opts: ExecutionBuilderHttpOpts, config: ChainForkConfig, metrics?: Metrics | null, logger?: Logger);
|
|
42
|
-
updateStatus(
|
|
58
|
+
updateStatus(status: BuilderStatus): void;
|
|
43
59
|
checkStatus(): Promise<void>;
|
|
44
60
|
registerValidator(epoch: Epoch, registrations: bellatrix.SignedValidatorRegistrationV1[]): Promise<void>;
|
|
45
61
|
getValidatorRegistration(pubkey: BLSPubkey): ValidatorRegistration | undefined;
|
|
@@ -49,7 +65,7 @@ export declare class ExecutionBuilderHttp implements IExecutionBuilder {
|
|
|
49
65
|
blobKzgCommitments?: deneb.BlobKzgCommitments;
|
|
50
66
|
executionRequests?: electra.ExecutionRequests;
|
|
51
67
|
}>;
|
|
52
|
-
submitBlindedBlock(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<
|
|
68
|
+
submitBlindedBlock(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<SignedBlockContents>;
|
|
53
69
|
submitBlindedBlockNoResponse(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<void>;
|
|
54
70
|
}
|
|
55
71
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WireFormat } from "@lodestar/api";
|
|
2
2
|
import { getClient } from "@lodestar/api/builder";
|
|
3
3
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
4
|
-
import { parseExecutionPayloadAndBlobsBundle,
|
|
4
|
+
import { parseExecutionPayloadAndBlobsBundle, reconstructSignedBlockContents } from "@lodestar/state-transition";
|
|
5
5
|
import { toPrintableUrl } from "@lodestar/utils";
|
|
6
6
|
import { ValidatorRegistrationCache } from "./cache.js";
|
|
7
7
|
export const defaultExecutionBuilderHttpOpts = {
|
|
@@ -9,6 +9,23 @@ export const defaultExecutionBuilderHttpOpts = {
|
|
|
9
9
|
url: "http://localhost:8661",
|
|
10
10
|
timeout: 12000,
|
|
11
11
|
};
|
|
12
|
+
export var BuilderStatus;
|
|
13
|
+
(function (BuilderStatus) {
|
|
14
|
+
/**
|
|
15
|
+
* Builder is enabled and operational
|
|
16
|
+
*/
|
|
17
|
+
BuilderStatus["enabled"] = "enabled";
|
|
18
|
+
/**
|
|
19
|
+
* Builder is disabled due to failed status check
|
|
20
|
+
*/
|
|
21
|
+
BuilderStatus["disabled"] = "disabled";
|
|
22
|
+
/**
|
|
23
|
+
* Circuit breaker condition that is triggered when the node determines the chain is unhealthy.
|
|
24
|
+
* When the circuit breaker is fired, proposers **MUST** not utilize the external builder
|
|
25
|
+
* network and exclusively build locally.
|
|
26
|
+
*/
|
|
27
|
+
BuilderStatus["circuitBreaker"] = "circuit_breaker";
|
|
28
|
+
})(BuilderStatus || (BuilderStatus = {}));
|
|
12
29
|
/**
|
|
13
30
|
* Expected error if builder does not provide a bid. Most of the time, this
|
|
14
31
|
* is due to `min-bid` setting on the mev-boost side but in rare cases could
|
|
@@ -32,7 +49,7 @@ const BUILDER_PROPOSAL_DELAY_TOLERANCE = 1000 + EVENT_LOOP_LAG_BUFFER;
|
|
|
32
49
|
export class ExecutionBuilderHttp {
|
|
33
50
|
constructor(opts, config, metrics = null, logger) {
|
|
34
51
|
// Builder needs to be explicity enabled using updateStatus
|
|
35
|
-
this.status =
|
|
52
|
+
this.status = BuilderStatus.disabled;
|
|
36
53
|
/**
|
|
37
54
|
* Determine if SSZ is supported by requesting an SSZ encoded response in the `getHeader` request.
|
|
38
55
|
* The builder responding with a SSZ serialized `SignedBuilderBid` indicates support to handle the
|
|
@@ -57,24 +74,26 @@ export class ExecutionBuilderHttp {
|
|
|
57
74
|
* Beacon clients select randomized values from the following ranges when initializing
|
|
58
75
|
* the circuit breaker (so at boot time and once for each unique boot).
|
|
59
76
|
*
|
|
60
|
-
* ALLOWED_FAULTS: between 1 and SLOTS_PER_EPOCH //
|
|
77
|
+
* ALLOWED_FAULTS: between 1 and SLOTS_PER_EPOCH // 4
|
|
61
78
|
* FAULT_INSPECTION_WINDOW: between SLOTS_PER_EPOCH and 2 * SLOTS_PER_EPOCH
|
|
62
79
|
*
|
|
63
80
|
*/
|
|
64
81
|
this.faultInspectionWindow = Math.max(opts.faultInspectionWindow ?? SLOTS_PER_EPOCH + Math.floor(Math.random() * SLOTS_PER_EPOCH), SLOTS_PER_EPOCH);
|
|
65
|
-
// allowedFaults should be < faultInspectionWindow, limiting them to faultInspectionWindow/
|
|
66
|
-
this.allowedFaults = Math.min(opts.allowedFaults ?? Math.floor(this.faultInspectionWindow /
|
|
82
|
+
// allowedFaults should be < faultInspectionWindow, limiting them to faultInspectionWindow/4
|
|
83
|
+
this.allowedFaults = Math.min(opts.allowedFaults ?? Math.floor(this.faultInspectionWindow / 4), Math.floor(this.faultInspectionWindow / 4));
|
|
67
84
|
}
|
|
68
|
-
updateStatus(
|
|
69
|
-
this.status =
|
|
85
|
+
updateStatus(status) {
|
|
86
|
+
this.status = status;
|
|
70
87
|
}
|
|
71
88
|
async checkStatus() {
|
|
72
89
|
try {
|
|
73
90
|
(await this.api.status()).assertOk();
|
|
74
91
|
}
|
|
75
92
|
catch (e) {
|
|
76
|
-
|
|
77
|
-
|
|
93
|
+
if (this.status === BuilderStatus.enabled) {
|
|
94
|
+
// Disable if the status was enabled
|
|
95
|
+
this.status = BuilderStatus.disabled;
|
|
96
|
+
}
|
|
78
97
|
throw e;
|
|
79
98
|
}
|
|
80
99
|
}
|
|
@@ -108,8 +127,8 @@ export class ExecutionBuilderHttp {
|
|
|
108
127
|
// invalid signature, but there is no recourse to this anyway so lets just proceed and will
|
|
109
128
|
// probably need diagonis if this block turns out to be invalid because of some bug
|
|
110
129
|
//
|
|
111
|
-
const
|
|
112
|
-
return
|
|
130
|
+
const fork = this.config.getForkName(signedBlindedBlock.data.message.slot);
|
|
131
|
+
return reconstructSignedBlockContents(fork, signedBlindedBlock.data, executionPayload, blobsBundle);
|
|
113
132
|
}
|
|
114
133
|
async submitBlindedBlockNoResponse(signedBlindedBlock) {
|
|
115
134
|
(await this.api.submitBlindedBlockV2({ signedBlindedBlock }, { retries: 2, requestWireFormat: this.sszSupported ? WireFormat.ssz : WireFormat.json })).assertOk();
|