@lodestar/beacon-node 1.34.0-dev.74da098ba7 → 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 +1 -3
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +25 -19
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/chain.js +1 -8
- 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/prepareNextSlot.js +2 -1
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +0 -23
- package/lib/metrics/metrics/beacon.js +0 -61
- package/lib/metrics/metrics/beacon.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/gossip/topic.d.ts +79 -79
- package/lib/network/processor/gossipHandlers.js +9 -9
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +45 -17
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +26 -13
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.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/util/sszBytes.d.ts +2 -0
- package/lib/util/sszBytes.js +23 -0
- package/lib/util/sszBytes.js.map +1 -1
- package/package.json +14 -14
|
@@ -2,25 +2,41 @@ import { GENESIS_SLOT } from "@lodestar/params";
|
|
|
2
2
|
import { RespStatus, ResponseError } from "@lodestar/reqresp";
|
|
3
3
|
import { computeEpochAtSlot } from "@lodestar/state-transition";
|
|
4
4
|
import { fromHex } from "@lodestar/utils";
|
|
5
|
+
import { validateRequestedDataColumns } from "../utils/dataColumnResponseValidaiton.js";
|
|
5
6
|
export async function* onDataColumnSidecarsByRange(request, chain, db) {
|
|
6
7
|
// Non-finalized range of columns
|
|
7
|
-
const { startSlot, count, columns } = validateDataColumnSidecarsByRangeRequest(chain.config, request);
|
|
8
|
+
const { startSlot, count, columns: requestedColumns } = validateDataColumnSidecarsByRangeRequest(chain.config, request);
|
|
9
|
+
const availableColumns = validateRequestedDataColumns(chain, requestedColumns);
|
|
8
10
|
const endSlot = startSlot + count;
|
|
11
|
+
if (availableColumns.length === 0) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
9
14
|
const finalized = db.dataColumnSidecarArchive;
|
|
10
15
|
const unfinalized = db.dataColumnSidecar;
|
|
11
16
|
const finalizedSlot = chain.forkChoice.getFinalizedBlock().slot;
|
|
12
17
|
// Finalized range of columns
|
|
13
18
|
if (startSlot <= finalizedSlot) {
|
|
14
19
|
for (let slot = startSlot; slot < endSlot; slot++) {
|
|
15
|
-
const dataColumnSidecars = await finalized.getManyBinary(slot,
|
|
16
|
-
for (const
|
|
17
|
-
if (
|
|
18
|
-
|
|
20
|
+
const dataColumnSidecars = await finalized.getManyBinary(slot, availableColumns);
|
|
21
|
+
for (const dataColumnSidecarBytes of dataColumnSidecars) {
|
|
22
|
+
if (dataColumnSidecarBytes) {
|
|
23
|
+
yield {
|
|
24
|
+
data: dataColumnSidecarBytes,
|
|
25
|
+
boundary: chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(slot)),
|
|
26
|
+
};
|
|
19
27
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
// TODO: Check blobs for that block and respond resource_unavailable
|
|
29
|
+
// After we have consensus from other teams on the specs
|
|
30
|
+
// else {
|
|
31
|
+
// await handleColumnSidecarUnavailability({
|
|
32
|
+
// chain,
|
|
33
|
+
// db,
|
|
34
|
+
// unavailableColumnIndex: availableColumns[index],
|
|
35
|
+
// slot,
|
|
36
|
+
// requestedColumns,
|
|
37
|
+
// availableColumns,
|
|
38
|
+
// });
|
|
39
|
+
// }
|
|
24
40
|
}
|
|
25
41
|
}
|
|
26
42
|
}
|
|
@@ -37,15 +53,27 @@ export async function* onDataColumnSidecarsByRange(request, chain, db) {
|
|
|
37
53
|
// at the time of the start of the request. Spec is clear the chain of columns must be consistent, but on
|
|
38
54
|
// re-org there's no need to abort the request
|
|
39
55
|
// Spec: https://github.com/ethereum/consensus-specs/blob/ad36024441cf910d428d03f87f331fbbd2b3e5f1/specs/fulu/p2p-interface.md#L425-L429
|
|
40
|
-
const dataColumnSidecars = await unfinalized.getManyBinary(fromHex(block.blockRoot),
|
|
41
|
-
for (const
|
|
42
|
-
if (
|
|
43
|
-
|
|
56
|
+
const dataColumnSidecars = await unfinalized.getManyBinary(fromHex(block.blockRoot), availableColumns);
|
|
57
|
+
for (const dataColumnSidecarBytes of dataColumnSidecars) {
|
|
58
|
+
if (dataColumnSidecarBytes) {
|
|
59
|
+
yield {
|
|
60
|
+
data: dataColumnSidecarBytes,
|
|
61
|
+
boundary: chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(block.slot)),
|
|
62
|
+
};
|
|
44
63
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
64
|
+
// TODO: Check blobs for that block and respond resource_unavailable
|
|
65
|
+
// After we have consensus from other teams on the specs
|
|
66
|
+
// else {
|
|
67
|
+
// await handleColumnSidecarUnavailability({
|
|
68
|
+
// chain,
|
|
69
|
+
// db,
|
|
70
|
+
// unavailableColumnIndex: availableColumns[index],
|
|
71
|
+
// blockRoot: fromHex(block.blockRoot),
|
|
72
|
+
// slot: block.slot,
|
|
73
|
+
// requestedColumns,
|
|
74
|
+
// availableColumns,
|
|
75
|
+
// });
|
|
76
|
+
// }
|
|
49
77
|
}
|
|
50
78
|
}
|
|
51
79
|
// If block is after endSlot, stop iterating
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumnSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRange.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"dataColumnSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { RespStatus, ResponseError } from "@lodestar/reqresp";
|
|
2
1
|
import { computeEpochAtSlot } from "@lodestar/state-transition";
|
|
3
2
|
import { fromHex, toHex } from "@lodestar/utils";
|
|
3
|
+
import { validateRequestedDataColumns } from "../utils/dataColumnResponseValidaiton.js";
|
|
4
4
|
export async function* onDataColumnSidecarsByRoot(requestBody, chain, db) {
|
|
5
5
|
// SPEC: minimum_request_epoch = max(finalized_epoch, current_epoch - MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, FULU_FORK_EPOCH)
|
|
6
6
|
const finalizedEpoch = chain.forkChoice.getFinalizedCheckpoint().epoch;
|
|
7
7
|
const currentEpoch = chain.clock.currentEpoch;
|
|
8
8
|
const minimumRequestEpoch = Math.max(finalizedEpoch, currentEpoch - chain.config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, chain.config.FULU_FORK_EPOCH);
|
|
9
9
|
for (const dataColumnsByRootIdentifier of requestBody) {
|
|
10
|
-
const { blockRoot, columns } = dataColumnsByRootIdentifier;
|
|
10
|
+
const { blockRoot, columns: requestedColumns } = dataColumnsByRootIdentifier;
|
|
11
|
+
const availableColumns = validateRequestedDataColumns(chain, requestedColumns);
|
|
12
|
+
if (availableColumns.length === 0) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
11
15
|
const blockRootHex = toHex(blockRoot);
|
|
12
16
|
const block = chain.forkChoice.getBlockHex(blockRootHex);
|
|
13
17
|
// NOTE: Only support non-finalized blocks.
|
|
@@ -18,18 +22,27 @@ export async function* onDataColumnSidecarsByRoot(requestBody, chain, db) {
|
|
|
18
22
|
if (!block || computeEpochAtSlot(block.slot) < minimumRequestEpoch) {
|
|
19
23
|
continue;
|
|
20
24
|
}
|
|
21
|
-
const dataColumns = await db.dataColumnSidecar.getManyBinary(fromHex(block.blockRoot),
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
const dataColumns = await db.dataColumnSidecar.getManyBinary(fromHex(block.blockRoot), availableColumns);
|
|
26
|
+
for (const dataColumnBytes of dataColumns) {
|
|
27
|
+
if (dataColumnBytes) {
|
|
28
|
+
yield {
|
|
29
|
+
data: dataColumnBytes,
|
|
30
|
+
boundary: chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(block.slot)),
|
|
31
|
+
};
|
|
28
32
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
// TODO: Check blobs for that block and respond resource_unavailable
|
|
34
|
+
// After we have consensus from other teams on the specs
|
|
35
|
+
// else {
|
|
36
|
+
// await handleColumnSidecarUnavailability({
|
|
37
|
+
// chain,
|
|
38
|
+
// db,
|
|
39
|
+
// unavailableColumnIndex: availableColumns[index],
|
|
40
|
+
// slot: block.slot,
|
|
41
|
+
// blockRoot: fromHex(block.blockRoot),
|
|
42
|
+
// requestedColumns,
|
|
43
|
+
// availableColumns,
|
|
44
|
+
// });
|
|
45
|
+
// }
|
|
33
46
|
}
|
|
34
47
|
}
|
|
35
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumnSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataColumnSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAAC,4BAA4B,EAAC,MAAM,0CAA0C,CAAC;AAEtF,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,0BAA0B,CAC/C,WAA4C,EAC5C,KAAmB,EACnB,EAAa;IAEb,oIAAoI;IACpI,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC;IACvE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;IAC9C,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAClC,cAAc,EACd,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,4CAA4C,EACxE,KAAK,CAAC,MAAM,CAAC,eAAe,CAC7B,CAAC;IAEF,KAAK,MAAM,2BAA2B,IAAI,WAAW,EAAE,CAAC;QACtD,MAAM,EAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAC,GAAG,2BAA2B,CAAC;QAC3E,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC/E,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAEzD,2CAA2C;QAC3C,8EAA8E;QAC9E,mHAAmH;QACnH,4FAA4F;QAC5F,oJAAoJ;QACpJ,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,EAAE,CAAC;YACnE,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACzG,KAAK,MAAM,eAAe,IAAI,WAAW,EAAE,CAAC;YAC1C,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM;oBACJ,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAC9E,CAAC;YACJ,CAAC;YAED,oEAAoE;YACpE,wDAAwD;YACxD,SAAS;YACT,8CAA8C;YAC9C,aAAa;YACb,UAAU;YACV,uDAAuD;YACvD,wBAAwB;YACxB,2CAA2C;YAC3C,wBAAwB;YACxB,wBAAwB;YACxB,QAAQ;YACR,IAAI;QACN,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ColumnIndex, Slot } from "@lodestar/types";
|
|
2
|
+
import { IBeaconChain } from "../../../chain/interface.js";
|
|
3
|
+
import { IBeaconDb } from "../../../db/interface.js";
|
|
4
|
+
export declare function handleColumnSidecarUnavailability({ chain, db, unavailableColumnIndex, requestedColumns, availableColumns, slot, blockRoot, }: {
|
|
5
|
+
chain: IBeaconChain;
|
|
6
|
+
db: IBeaconDb;
|
|
7
|
+
slot: Slot;
|
|
8
|
+
blockRoot?: Uint8Array;
|
|
9
|
+
unavailableColumnIndex: ColumnIndex;
|
|
10
|
+
requestedColumns: ColumnIndex[];
|
|
11
|
+
availableColumns: ColumnIndex[];
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare function validateRequestedDataColumns(chain: IBeaconChain, requestedColumns: ColumnIndex[]): ColumnIndex[];
|
|
14
|
+
//# sourceMappingURL=dataColumnResponseValidaiton.d.ts.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { RespStatus, ResponseError } from "@lodestar/reqresp";
|
|
2
|
+
import { prettyBytes, prettyPrintIndices } from "@lodestar/utils";
|
|
3
|
+
import { getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized } from "../../../util/sszBytes.js";
|
|
4
|
+
export async function handleColumnSidecarUnavailability({ chain, db, unavailableColumnIndex, requestedColumns, availableColumns, slot, blockRoot, }) {
|
|
5
|
+
const logData = {
|
|
6
|
+
unavailableColumnIndex,
|
|
7
|
+
requestedColumns: prettyPrintIndices(requestedColumns),
|
|
8
|
+
availableColumns: prettyPrintIndices(availableColumns),
|
|
9
|
+
slot,
|
|
10
|
+
};
|
|
11
|
+
if (blockRoot) {
|
|
12
|
+
logData.blockRoot = prettyBytes(blockRoot);
|
|
13
|
+
}
|
|
14
|
+
chain.logger.debug("dataColumnSidecar requested unavailable", logData);
|
|
15
|
+
const blockBytes = blockRoot ? await db.block.getBinary(blockRoot) : await db.blockArchive.getBinary(slot);
|
|
16
|
+
if (!blockBytes) {
|
|
17
|
+
chain.logger.error(`Expected ${blockRoot ? "unfinalized" : "finalized"} block not found while handling unavailable dataColumnSidecar`);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Check for blob count in actual block
|
|
21
|
+
const blobsCount = getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized(chain.config, blockBytes);
|
|
22
|
+
// There are zero blobs for that column index, so we can safely return without any error
|
|
23
|
+
if (blobsCount > 0)
|
|
24
|
+
return;
|
|
25
|
+
// There are blobs for that column index so we should have synced for it
|
|
26
|
+
// We need to inform to peers that we don't have that expected data
|
|
27
|
+
// NOTE: We may look to add some metrics to track such scenario
|
|
28
|
+
throw new ResponseError(RespStatus.RESOURCE_UNAVAILABLE, `dataColumnSidecar requested and within custody not available for columnIndex=${unavailableColumnIndex}`);
|
|
29
|
+
}
|
|
30
|
+
export function validateRequestedDataColumns(chain, requestedColumns) {
|
|
31
|
+
if (requestedColumns.length === 0) {
|
|
32
|
+
throw new ResponseError(RespStatus.INVALID_REQUEST, "dataColumnSidecar requested without column indices");
|
|
33
|
+
}
|
|
34
|
+
const custodyColumns = chain.custodyConfig.custodyColumns;
|
|
35
|
+
const availableColumns = requestedColumns.filter((c) => custodyColumns.includes(c));
|
|
36
|
+
const missingColumns = requestedColumns.filter((c) => !custodyColumns.includes(c));
|
|
37
|
+
if (missingColumns.length > 0) {
|
|
38
|
+
chain.logger.verbose("Requested dataColumnSidecar for non-custody columns", {
|
|
39
|
+
requestedColumns: prettyPrintIndices(requestedColumns),
|
|
40
|
+
custodyColumns: prettyPrintIndices(custodyColumns),
|
|
41
|
+
availableColumns: prettyPrintIndices(availableColumns),
|
|
42
|
+
missingColumns: prettyPrintIndices(missingColumns),
|
|
43
|
+
});
|
|
44
|
+
// TODO: We should throw error and only respond to valid requests
|
|
45
|
+
// A peer must check what we announced in our custody and only ask for those columns
|
|
46
|
+
// throw new ResponseError(RespStatus.INVALID_REQUEST, "dataColumnSidecar requested for non-custody columns");
|
|
47
|
+
}
|
|
48
|
+
if (availableColumns.length === 0) {
|
|
49
|
+
chain.logger.verbose("Requested dataColumnSidecars not available", {
|
|
50
|
+
requestedColumns: prettyPrintIndices(requestedColumns),
|
|
51
|
+
custodyColumns: prettyPrintIndices(custodyColumns),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return availableColumns;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=dataColumnResponseValidaiton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataColumnResponseValidaiton.js","sourceRoot":"","sources":["../../../../src/network/reqresp/utils/dataColumnResponseValidaiton.ts"],"names":[],"mappings":"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"}
|
package/lib/util/sszBytes.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BitArray } from "@chainsafe/ssz";
|
|
2
|
+
import { ChainForkConfig } from "@lodestar/config";
|
|
2
3
|
import { ForkName } from "@lodestar/params";
|
|
3
4
|
import { BLSSignature, CommitteeIndex, RootHex, Slot, ValidatorIndex } from "@lodestar/types";
|
|
4
5
|
export type BlockRootHex = RootHex;
|
|
@@ -103,4 +104,5 @@ export declare function getAttDataFromSignedAggregateAndProofPhase0(data: Uint8A
|
|
|
103
104
|
export declare function getSlotFromSignedBeaconBlockSerialized(data: Uint8Array): Slot | null;
|
|
104
105
|
export declare function getSlotFromBlobSidecarSerialized(data: Uint8Array): Slot | null;
|
|
105
106
|
export declare function getSlotFromDataColumnSidecarSerialized(data: Uint8Array): Slot | null;
|
|
107
|
+
export declare function getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized(config: ChainForkConfig, blockBytes: Uint8Array): number;
|
|
106
108
|
//# sourceMappingURL=sszBytes.d.ts.map
|
package/lib/util/sszBytes.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BitArray, deserializeUint8ArrayBitListFromBytes } from "@chainsafe/ssz";
|
|
2
2
|
import { BYTES_PER_FIELD_ELEMENT, FIELD_ELEMENTS_PER_BLOB, ForkSeq, MAX_COMMITTEES_PER_SLOT, isForkPostElectra, } from "@lodestar/params";
|
|
3
|
+
import { ssz } from "@lodestar/types";
|
|
3
4
|
// pre-electra
|
|
4
5
|
// class Attestation(Container):
|
|
5
6
|
// aggregation_bits: Bitlist[MAX_VALIDATORS_PER_COMMITTEE] - offset 4
|
|
@@ -347,4 +348,26 @@ function getSlotFromOffsetTrusted(data, offset) {
|
|
|
347
348
|
function checkSlotHighBytes(data, offset) {
|
|
348
349
|
return (data[offset + 4] | data[offset + 5] | data[offset + 6] | data[offset + 7]) === 0;
|
|
349
350
|
}
|
|
351
|
+
export function getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized(config, blockBytes) {
|
|
352
|
+
const slot = getSlotFromSignedBeaconBlockSerialized(blockBytes);
|
|
353
|
+
if (!slot)
|
|
354
|
+
throw new Error("Can not parse the slot from block bytes");
|
|
355
|
+
if (config.getForkSeq(slot) < ForkSeq.deneb)
|
|
356
|
+
return 0;
|
|
357
|
+
const { SignedBeaconBlock, BeaconBlock, BeaconBlockBody, KZGCommitment } = ssz[config.getForkName(slot)];
|
|
358
|
+
const view = new DataView(blockBytes.buffer, blockBytes.byteOffset, blockBytes.byteLength);
|
|
359
|
+
const singedBlockFieldRanges = SignedBeaconBlock.getFieldRanges(view, 0, blockBytes.length);
|
|
360
|
+
const messageIndex = Object.keys(SignedBeaconBlock.fields).indexOf("message");
|
|
361
|
+
const messageRange = singedBlockFieldRanges[messageIndex];
|
|
362
|
+
const blockFieldRanges = BeaconBlock.getFieldRanges(view, messageRange.start, messageRange.end);
|
|
363
|
+
const bodyIndex = Object.keys(BeaconBlock.fields).indexOf("body");
|
|
364
|
+
const bodyRange = blockFieldRanges[bodyIndex];
|
|
365
|
+
const bodyFieldRanges = BeaconBlockBody.getFieldRanges(view, messageRange.start + bodyRange.start, messageRange.end + bodyRange.end);
|
|
366
|
+
const kzgCommitmentsIndex = Object.keys(BeaconBlockBody.fields).indexOf("blobKzgCommitments");
|
|
367
|
+
const kzgCommitmentsRange = bodyFieldRanges[kzgCommitmentsIndex];
|
|
368
|
+
const commitmentSize = KZGCommitment.fixedSize;
|
|
369
|
+
const end = messageRange.end + bodyRange.end + kzgCommitmentsRange.end;
|
|
370
|
+
const start = messageRange.start + bodyRange.start + kzgCommitmentsRange.start;
|
|
371
|
+
return Math.round(((end > blockBytes.byteLength ? blockBytes.byteLength : end) - start) / commitmentSize);
|
|
372
|
+
}
|
|
350
373
|
//# sourceMappingURL=sszBytes.js.map
|
package/lib/util/sszBytes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sszBytes.js","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,qCAAqC,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sszBytes.js","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
|
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.34.0-dev.
|
|
14
|
+
"version": "1.34.0-dev.7b42620eba",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -118,18 +118,18 @@
|
|
|
118
118
|
"@libp2p/peer-id": "^5.1.0",
|
|
119
119
|
"@libp2p/prometheus-metrics": "^4.3.15",
|
|
120
120
|
"@libp2p/tcp": "^10.1.8",
|
|
121
|
-
"@lodestar/api": "1.34.0-dev.
|
|
122
|
-
"@lodestar/config": "1.34.0-dev.
|
|
123
|
-
"@lodestar/db": "1.34.0-dev.
|
|
124
|
-
"@lodestar/fork-choice": "1.34.0-dev.
|
|
125
|
-
"@lodestar/light-client": "1.34.0-dev.
|
|
126
|
-
"@lodestar/logger": "1.34.0-dev.
|
|
127
|
-
"@lodestar/params": "1.34.0-dev.
|
|
128
|
-
"@lodestar/reqresp": "1.34.0-dev.
|
|
129
|
-
"@lodestar/state-transition": "1.34.0-dev.
|
|
130
|
-
"@lodestar/types": "1.34.0-dev.
|
|
131
|
-
"@lodestar/utils": "1.34.0-dev.
|
|
132
|
-
"@lodestar/validator": "1.34.0-dev.
|
|
121
|
+
"@lodestar/api": "1.34.0-dev.7b42620eba",
|
|
122
|
+
"@lodestar/config": "1.34.0-dev.7b42620eba",
|
|
123
|
+
"@lodestar/db": "1.34.0-dev.7b42620eba",
|
|
124
|
+
"@lodestar/fork-choice": "1.34.0-dev.7b42620eba",
|
|
125
|
+
"@lodestar/light-client": "1.34.0-dev.7b42620eba",
|
|
126
|
+
"@lodestar/logger": "1.34.0-dev.7b42620eba",
|
|
127
|
+
"@lodestar/params": "1.34.0-dev.7b42620eba",
|
|
128
|
+
"@lodestar/reqresp": "1.34.0-dev.7b42620eba",
|
|
129
|
+
"@lodestar/state-transition": "1.34.0-dev.7b42620eba",
|
|
130
|
+
"@lodestar/types": "1.34.0-dev.7b42620eba",
|
|
131
|
+
"@lodestar/utils": "1.34.0-dev.7b42620eba",
|
|
132
|
+
"@lodestar/validator": "1.34.0-dev.7b42620eba",
|
|
133
133
|
"@multiformats/multiaddr": "^12.1.3",
|
|
134
134
|
"datastore-core": "^10.0.2",
|
|
135
135
|
"datastore-level": "^11.0.3",
|
|
@@ -164,5 +164,5 @@
|
|
|
164
164
|
"beacon",
|
|
165
165
|
"blockchain"
|
|
166
166
|
],
|
|
167
|
-
"gitHead": "
|
|
167
|
+
"gitHead": "3743d56238c3598077a5cbdc32774a14124ce0c0"
|
|
168
168
|
}
|