@lodestar/beacon-node 1.32.0-peerDAS.c530895658 → 1.32.0-peerDAS.d30e8dea19

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.
Files changed (180) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +34 -4
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/state/index.js +13 -1
  4. package/lib/api/impl/beacon/state/index.js.map +1 -1
  5. package/lib/api/impl/debug/index.d.ts +1 -1
  6. package/lib/api/impl/debug/index.js +24 -1
  7. package/lib/api/impl/debug/index.js.map +1 -1
  8. package/lib/api/impl/validator/index.js +43 -29
  9. package/lib/api/impl/validator/index.js.map +1 -1
  10. package/lib/chain/archiveStore/archiveStore.js +1 -1
  11. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  12. package/lib/chain/archiveStore/historicalState/metrics.js +8 -0
  13. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  14. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
  15. package/lib/chain/archiveStore/utils/archiveBlocks.js +29 -1
  16. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  17. package/lib/chain/blocks/importBlock.js +1 -52
  18. package/lib/chain/blocks/importBlock.js.map +1 -1
  19. package/lib/chain/blocks/types.d.ts +1 -0
  20. package/lib/chain/blocks/types.js.map +1 -1
  21. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -3
  22. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  23. package/lib/chain/chain.d.ts +9 -6
  24. package/lib/chain/chain.js +37 -10
  25. package/lib/chain/chain.js.map +1 -1
  26. package/lib/chain/emitter.d.ts +6 -1
  27. package/lib/chain/emitter.js +4 -0
  28. package/lib/chain/emitter.js.map +1 -1
  29. package/lib/chain/interface.d.ts +4 -4
  30. package/lib/chain/interface.js.map +1 -1
  31. package/lib/chain/options.d.ts +2 -2
  32. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  33. package/lib/chain/produceBlock/produceBlockBody.js +146 -117
  34. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  35. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +1 -1
  36. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +6 -12
  37. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  38. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +4 -1
  39. package/lib/chain/seenCache/seenGossipBlockInput.js +76 -10
  40. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  41. package/lib/chain/validation/blobSidecar.d.ts +1 -1
  42. package/lib/chain/validation/blobSidecar.js +6 -6
  43. package/lib/chain/validation/blobSidecar.js.map +1 -1
  44. package/lib/chain/validation/dataColumnSidecar.d.ts +3 -3
  45. package/lib/chain/validation/dataColumnSidecar.js +12 -9
  46. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  47. package/lib/execution/engine/mock.js +3 -3
  48. package/lib/execution/engine/mock.js.map +1 -1
  49. package/lib/metrics/metrics/beacon.d.ts +7 -0
  50. package/lib/metrics/metrics/beacon.js +34 -1
  51. package/lib/metrics/metrics/beacon.js.map +1 -1
  52. package/lib/metrics/metrics/lodestar.d.ts +9 -0
  53. package/lib/metrics/metrics/lodestar.js +22 -0
  54. package/lib/metrics/metrics/lodestar.js.map +1 -1
  55. package/lib/network/core/networkCore.d.ts +7 -7
  56. package/lib/network/core/networkCore.js +47 -45
  57. package/lib/network/core/networkCore.js.map +1 -1
  58. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  59. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  60. package/lib/network/core/types.d.ts +8 -4
  61. package/lib/network/discv5/index.d.ts +1 -0
  62. package/lib/network/discv5/index.js +1 -0
  63. package/lib/network/discv5/index.js.map +1 -1
  64. package/lib/network/discv5/types.d.ts +1 -0
  65. package/lib/network/discv5/utils.d.ts +3 -1
  66. package/lib/network/discv5/utils.js +12 -2
  67. package/lib/network/discv5/utils.js.map +1 -1
  68. package/lib/network/discv5/worker.js +5 -1
  69. package/lib/network/discv5/worker.js.map +1 -1
  70. package/lib/network/events.d.ts +2 -2
  71. package/lib/network/forks.d.ts +2 -0
  72. package/lib/network/forks.js +4 -0
  73. package/lib/network/forks.js.map +1 -1
  74. package/lib/network/gossip/encoding.js +1 -1
  75. package/lib/network/gossip/encoding.js.map +1 -1
  76. package/lib/network/gossip/gossipsub.js +6 -4
  77. package/lib/network/gossip/gossipsub.js.map +1 -1
  78. package/lib/network/gossip/interface.d.ts +3 -3
  79. package/lib/network/gossip/scoringParameters.js +10 -10
  80. package/lib/network/gossip/scoringParameters.js.map +1 -1
  81. package/lib/network/gossip/topic.js +14 -13
  82. package/lib/network/gossip/topic.js.map +1 -1
  83. package/lib/network/interface.d.ts +2 -2
  84. package/lib/network/network.d.ts +4 -4
  85. package/lib/network/network.js +69 -54
  86. package/lib/network/network.js.map +1 -1
  87. package/lib/network/networkConfig.js +1 -1
  88. package/lib/network/networkConfig.js.map +1 -1
  89. package/lib/network/peers/discover.js +1 -0
  90. package/lib/network/peers/discover.js.map +1 -1
  91. package/lib/network/peers/peerManager.d.ts +2 -2
  92. package/lib/network/peers/peerManager.js +4 -1
  93. package/lib/network/peers/peerManager.js.map +1 -1
  94. package/lib/network/peers/peersData.d.ts +9 -2
  95. package/lib/network/peers/peersData.js.map +1 -1
  96. package/lib/network/peers/utils/assertPeerRelevance.d.ts +7 -3
  97. package/lib/network/peers/utils/assertPeerRelevance.js +10 -1
  98. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  99. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  100. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  101. package/lib/network/processor/gossipHandlers.js +41 -30
  102. package/lib/network/processor/gossipHandlers.js.map +1 -1
  103. package/lib/network/processor/gossipQueues/index.js +1 -1
  104. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  105. package/lib/network/processor/index.js +2 -2
  106. package/lib/network/processor/index.js.map +1 -1
  107. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +5 -5
  108. package/lib/network/reqresp/ReqRespBeaconNode.js +20 -15
  109. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  110. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +2 -1
  111. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +6 -2
  112. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  113. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +1 -0
  114. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +26 -6
  115. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  116. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -2
  117. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  118. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +1 -1
  119. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  120. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +1 -1
  121. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  122. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  123. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  124. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +1 -1
  125. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  126. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  127. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  128. package/lib/network/reqresp/handlers/lightClientBootstrap.js +1 -1
  129. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  130. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +1 -1
  131. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  132. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +1 -1
  133. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  134. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +1 -1
  135. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  136. package/lib/network/reqresp/handlers/status.js +4 -3
  137. package/lib/network/reqresp/handlers/status.js.map +1 -1
  138. package/lib/network/reqresp/protocols.d.ts +1 -0
  139. package/lib/network/reqresp/protocols.js +5 -0
  140. package/lib/network/reqresp/protocols.js.map +1 -1
  141. package/lib/network/reqresp/types.d.ts +3 -3
  142. package/lib/network/reqresp/types.js +3 -3
  143. package/lib/network/reqresp/types.js.map +1 -1
  144. package/lib/network/statusCache.d.ts +5 -5
  145. package/lib/network/statusCache.js.map +1 -1
  146. package/lib/network/subnets/attnetsService.d.ts +3 -3
  147. package/lib/network/subnets/attnetsService.js +17 -17
  148. package/lib/network/subnets/attnetsService.js.map +1 -1
  149. package/lib/network/subnets/interface.d.ts +3 -3
  150. package/lib/network/subnets/syncnetsService.d.ts +3 -3
  151. package/lib/network/subnets/syncnetsService.js +13 -13
  152. package/lib/network/subnets/syncnetsService.js.map +1 -1
  153. package/lib/network/subscribeBoundary.d.ts +5 -0
  154. package/lib/network/subscribeBoundary.js +4 -0
  155. package/lib/network/subscribeBoundary.js.map +1 -0
  156. package/lib/node/nodejs.js +0 -6
  157. package/lib/node/nodejs.js.map +1 -1
  158. package/lib/sync/range/chain.d.ts +6 -3
  159. package/lib/sync/range/chain.js +14 -14
  160. package/lib/sync/range/chain.js.map +1 -1
  161. package/lib/sync/range/range.d.ts +3 -2
  162. package/lib/sync/range/range.js +8 -3
  163. package/lib/sync/range/range.js.map +1 -1
  164. package/lib/sync/range/utils/peerBalancer.d.ts +4 -7
  165. package/lib/sync/range/utils/peerBalancer.js +13 -8
  166. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  167. package/lib/sync/unknownBlock.js +12 -14
  168. package/lib/sync/unknownBlock.js.map +1 -1
  169. package/lib/sync/utils/remoteSyncType.d.ts +4 -4
  170. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  171. package/lib/util/blobs.d.ts +5 -0
  172. package/lib/util/blobs.js +62 -2
  173. package/lib/util/blobs.js.map +1 -1
  174. package/lib/util/dataColumns.d.ts +32 -6
  175. package/lib/util/dataColumns.js +84 -8
  176. package/lib/util/dataColumns.js.map +1 -1
  177. package/lib/util/kzg.d.ts +2 -22
  178. package/lib/util/kzg.js +2 -47
  179. package/lib/util/kzg.js.map +1 -1
  180. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"blobs.js","sourceRoot":"","sources":["../../src/util/blobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blobs.js","sourceRoot":"","sources":["../../src/util/blobs.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,16 @@ import { DataColumnsCacheMap } from "../chain/blocks/types.js";
5
5
  import { ChainEventEmitter } from "../chain/emitter.js";
6
6
  import { BlockInputCacheType } from "../chain/seenCache/seenGossipBlockInput.js";
7
7
  import { IExecutionEngine } from "../execution/engine/interface.js";
8
+ import { Metrics } from "../metrics/metrics.js";
8
9
  import { NodeId } from "../network/subnets/index.js";
10
+ import { IClock } from "./clock.js";
11
+ export declare enum RecoverResult {
12
+ NotAttemptedLessThanHalf = "not_attempted_less_than_half",
13
+ NotAttemptedFull = "not_attempted_full",
14
+ SuccessResolved = "success_resolved",
15
+ SuccessLate = "success_late",
16
+ Failed = "failed"
17
+ }
9
18
  export declare class CustodyConfig {
10
19
  /**
11
20
  * The number of custody groups the node should subscribe to
@@ -45,7 +54,8 @@ export declare class CustodyConfig {
45
54
  sampledSubnets: number[];
46
55
  private config;
47
56
  private nodeId;
48
- constructor(nodeId: NodeId, config: ChainForkConfig);
57
+ private readonly metrics;
58
+ constructor(nodeId: NodeId, config: ChainForkConfig, metrics: Metrics | null);
49
59
  updateTargetCustodyGroupCount(targetCustodyGroupCount: number): void;
50
60
  updateAdvertisedCustodyGroupCount(advertisedCustodyGroupCount: number): void;
51
61
  private getCustodyColumnsIndex;
@@ -81,7 +91,10 @@ export declare function getDataColumns(nodeId: NodeId, custodyGroupCount: number
81
91
  * SPEC FUNCTION (note: spec currently computes proofs, but we already have them)
82
92
  * https://github.com/ethereum/consensus-specs/blob/dev/specs/fulu/das-core.md#compute_matrix
83
93
  */
84
- export declare function getCellsAndProofs(blobBundles: fulu.BlobAndProofV2[]): [Uint8Array[], Uint8Array[]][];
94
+ export declare function getCellsAndProofs(blobBundles: fulu.BlobAndProofV2[]): {
95
+ cells: Uint8Array[];
96
+ proofs: Uint8Array[];
97
+ }[];
85
98
  /**
86
99
  * Given a signed block header and the commitments, inclusion proof, cells/proofs associated with
87
100
  * each blob in the block, assemble the sidecars which can be distributed to peers.
@@ -89,7 +102,10 @@ export declare function getCellsAndProofs(blobBundles: fulu.BlobAndProofV2[]): [
89
102
  * SPEC FUNCTION
90
103
  * https://github.com/ethereum/consensus-specs/blob/dev/specs/fulu/validator.md#get_data_column_sidecars
91
104
  */
92
- export declare function getDataColumnSidecars(signedBlockHeader: SignedBeaconBlockHeader, kzgCommitments: deneb.KZGCommitment[], kzgCommitmentsInclusionProof: fulu.KzgCommitmentsInclusionProof, cellsAndKzgProofs: [Uint8Array[], Uint8Array[]][]): fulu.DataColumnSidecars;
105
+ export declare function getDataColumnSidecars(signedBlockHeader: SignedBeaconBlockHeader, kzgCommitments: deneb.KZGCommitment[], kzgCommitmentsInclusionProof: fulu.KzgCommitmentsInclusionProof, cellsAndKzgProofs: {
106
+ cells: Uint8Array[];
107
+ proofs: Uint8Array[];
108
+ }[]): fulu.DataColumnSidecars;
93
109
  /**
94
110
  * Given a signed block and the cells/proofs associated with each blob in the
95
111
  * block, assemble the sidecars which can be distributed to peers.
@@ -97,7 +113,10 @@ export declare function getDataColumnSidecars(signedBlockHeader: SignedBeaconBlo
97
113
  * SPEC FUNCTION
98
114
  * https://github.com/ethereum/consensus-specs/blob/dev/specs/fulu/validator.md#get_data_column_sidecars_from_block
99
115
  */
100
- export declare function getDataColumnSidecarsFromBlock(config: ChainForkConfig, signedBlock: fulu.SignedBeaconBlock, cellsAndKzgProofs: [Uint8Array[], Uint8Array[]][]): fulu.DataColumnSidecars;
116
+ export declare function getDataColumnSidecarsFromBlock(config: ChainForkConfig, signedBlock: fulu.SignedBeaconBlock, cellsAndKzgProofs: {
117
+ cells: Uint8Array[];
118
+ proofs: Uint8Array[];
119
+ }[]): fulu.DataColumnSidecars;
101
120
  /**
102
121
  * Given a DataColumnSidecar and the cells/proofs associated with each blob corresponding
103
122
  * to the commitments it contains, assemble all sidecars for distribution to peers.
@@ -105,7 +124,14 @@ export declare function getDataColumnSidecarsFromBlock(config: ChainForkConfig,
105
124
  * SPEC FUNCTION
106
125
  * https://github.com/ethereum/consensus-specs/blob/dev/specs/fulu/validator.md#get_data_column_sidecars_from_column_sidecar
107
126
  */
108
- export declare function getDataColumnSidecarsFromColumnSidecar(sidecar: fulu.DataColumnSidecar, cellsAndKzgProofs: [Uint8Array[], Uint8Array[]][]): fulu.DataColumnSidecars;
127
+ export declare function getDataColumnSidecarsFromColumnSidecar(sidecar: fulu.DataColumnSidecar, cellsAndKzgProofs: {
128
+ cells: Uint8Array[];
129
+ proofs: Uint8Array[];
130
+ }[]): fulu.DataColumnSidecars;
131
+ /**
132
+ * If we receive more than half of NUMBER_OF_COLUMNS (64) we should recover all remaining columns
133
+ */
134
+ export declare function recoverDataColumnSidecars(dataColumnCache: DataColumnsCacheMap, clock: IClock, metrics: Metrics | null): Promise<RecoverResult>;
109
135
  export declare function hasSampledDataColumns(custodyConfig: CustodyConfig, dataColumnCache: DataColumnsCacheMap): boolean;
110
- export declare function getDataColumnsFromExecution(config: ChainForkConfig, custodyConfig: CustodyConfig, executionEngine: IExecutionEngine, emitter: ChainEventEmitter, blockCache: BlockInputCacheType): Promise<boolean>;
136
+ export declare function getDataColumnsFromExecution(config: ChainForkConfig, custodyConfig: CustodyConfig, executionEngine: IExecutionEngine, emitter: ChainEventEmitter, blockCache: BlockInputCacheType, metrics: Metrics | null): Promise<boolean>;
111
137
  //# sourceMappingURL=dataColumns.d.ts.map
@@ -5,16 +5,31 @@ import { ssz } from "@lodestar/types";
5
5
  import { bytesToBigInt } from "@lodestar/utils";
6
6
  import { BlockSource, DataColumnsSource, getBlockInput, getBlockInputDataColumns, } from "../chain/blocks/types.js";
7
7
  import { ChainEvent } from "../chain/emitter.js";
8
- import { computeKzgCommitmentsInclusionProof, kzgCommitmentToVersionedHash } from "./blobs.js";
9
- import { ckzg } from "./kzg.js";
8
+ import { computeKzgCommitmentsInclusionProof, kzgCommitmentToVersionedHash, recoverDataColumnSidecars as recover, } from "./blobs.js";
9
+ import { kzg } from "./kzg.js";
10
+ export var RecoverResult;
11
+ (function (RecoverResult) {
12
+ // the recover is not attempted because we have less than `NUMBER_OF_COLUMNS / 2` columns
13
+ RecoverResult["NotAttemptedLessThanHalf"] = "not_attempted_less_than_half";
14
+ // the recover is not attempted because it has full data columns
15
+ RecoverResult["NotAttemptedFull"] = "not_attempted_full";
16
+ // the recover is a success and it helps resolve availability
17
+ RecoverResult["SuccessResolved"] = "success_resolved";
18
+ // the redover is a success but it's late, availability is already resolved by either gossip or getBlobsV2
19
+ RecoverResult["SuccessLate"] = "success_late";
20
+ // the recover failed
21
+ RecoverResult["Failed"] = "failed";
22
+ })(RecoverResult || (RecoverResult = {}));
10
23
  export class CustodyConfig {
11
- constructor(nodeId, config) {
24
+ constructor(nodeId, config, metrics) {
12
25
  this.config = config;
13
26
  this.nodeId = nodeId;
27
+ this.metrics = metrics;
14
28
  this.targetCustodyGroupCount = Math.max(config.CUSTODY_REQUIREMENT, config.NODE_CUSTODY_REQUIREMENT);
15
29
  this.custodyColumns = getDataColumns(this.nodeId, this.targetCustodyGroupCount);
16
30
  this.custodyColumnsIndex = this.getCustodyColumnsIndex(this.custodyColumns);
17
31
  this.advertisedCustodyGroupCount = this.targetCustodyGroupCount;
32
+ this.metrics?.peerDas.custodyGroupCount.set(this.advertisedCustodyGroupCount);
18
33
  this.sampledGroupCount = Math.max(this.targetCustodyGroupCount, this.config.SAMPLES_PER_SLOT);
19
34
  this.sampleGroups = getCustodyGroups(this.nodeId, this.sampledGroupCount);
20
35
  this.sampledColumns = getDataColumns(this.nodeId, this.sampledGroupCount);
@@ -33,6 +48,7 @@ export class CustodyConfig {
33
48
  }
34
49
  updateAdvertisedCustodyGroupCount(advertisedCustodyGroupCount) {
35
50
  this.advertisedCustodyGroupCount = advertisedCustodyGroupCount;
51
+ this.metrics?.peerDas.custodyGroupCount.set(this.advertisedCustodyGroupCount);
36
52
  }
37
53
  getCustodyColumnsIndex(custodyColumns) {
38
54
  // custody columns map which column maps to which index in the array of columns custodied
@@ -135,9 +151,9 @@ export function getDataColumns(nodeId, custodyGroupCount) {
135
151
  * https://github.com/ethereum/consensus-specs/blob/dev/specs/fulu/das-core.md#compute_matrix
136
152
  */
137
153
  export function getCellsAndProofs(blobBundles) {
138
- return blobBundles.map(({ blob, proofs: cellProofs }) => {
139
- const cells = ckzg.computeCells(blob);
140
- return [cells, cellProofs];
154
+ return blobBundles.map(({ blob, proofs }) => {
155
+ const cells = kzg.computeCells(blob);
156
+ return { cells, proofs };
141
157
  });
142
158
  }
143
159
  /**
@@ -155,7 +171,7 @@ export function getDataColumnSidecars(signedBlockHeader, kzgCommitments, kzgComm
155
171
  for (let columnIndex = 0; columnIndex < NUMBER_OF_COLUMNS; columnIndex++) {
156
172
  const columnCells = [];
157
173
  const columnProofs = [];
158
- for (const [cells, proofs] of cellsAndKzgProofs) {
174
+ for (const { cells, proofs } of cellsAndKzgProofs) {
159
175
  columnCells.push(cells[columnIndex]);
160
176
  columnProofs.push(proofs[columnIndex]);
161
177
  }
@@ -194,11 +210,66 @@ export function getDataColumnSidecarsFromBlock(config, signedBlock, cellsAndKzgP
194
210
  export function getDataColumnSidecarsFromColumnSidecar(sidecar, cellsAndKzgProofs) {
195
211
  return getDataColumnSidecars(sidecar.signedBlockHeader, sidecar.kzgCommitments, sidecar.kzgCommitmentsInclusionProof, cellsAndKzgProofs);
196
212
  }
213
+ /**
214
+ * If we receive more than half of NUMBER_OF_COLUMNS (64) we should recover all remaining columns
215
+ */
216
+ export async function recoverDataColumnSidecars(dataColumnCache, clock, metrics) {
217
+ const columnCount = dataColumnCache.size;
218
+ if (columnCount >= NUMBER_OF_COLUMNS) {
219
+ // We have all columns
220
+ return RecoverResult.NotAttemptedFull;
221
+ }
222
+ if (columnCount < NUMBER_OF_COLUMNS / 2) {
223
+ // We don't have enough columns to recover
224
+ return RecoverResult.NotAttemptedLessThanHalf;
225
+ }
226
+ metrics?.recoverDataColumnSidecars.partialColumns.set(dataColumnCache.size);
227
+ const partialSidecars = new Map();
228
+ for (const [columnIndex, { dataColumn }] of dataColumnCache.entries()) {
229
+ // the more columns we put, the slower the recover
230
+ if (partialSidecars.size >= NUMBER_OF_COLUMNS / 2) {
231
+ break;
232
+ }
233
+ partialSidecars.set(columnIndex, dataColumn);
234
+ }
235
+ const timer = metrics?.recoverDataColumnSidecars.recoverTime.startTimer();
236
+ // if this function throws, we catch at the consumer side
237
+ const fullSidecars = await recover(partialSidecars);
238
+ timer?.();
239
+ if (fullSidecars == null) {
240
+ return RecoverResult.Failed;
241
+ }
242
+ const firstDataColumn = dataColumnCache.values().next().value?.dataColumn;
243
+ if (firstDataColumn == null) {
244
+ // should not happen because we checked the size of the cache before this
245
+ throw new Error("No data column found in cache to recover from");
246
+ }
247
+ const slot = firstDataColumn.signedBlockHeader.message.slot;
248
+ const secFromSlot = clock.secFromSlot(slot);
249
+ metrics?.recoverDataColumnSidecars.secFromSlot.observe(secFromSlot);
250
+ if (dataColumnCache.size === NUMBER_OF_COLUMNS) {
251
+ // either gossip or getBlobsV2 resolved availability while we were recovering
252
+ return RecoverResult.SuccessLate;
253
+ }
254
+ // We successfully recovered the data columns, update the cache
255
+ for (let columnIndex = 0; columnIndex < NUMBER_OF_COLUMNS; columnIndex++) {
256
+ if (dataColumnCache.has(columnIndex)) {
257
+ // We already have this column
258
+ continue;
259
+ }
260
+ const sidecar = fullSidecars[columnIndex];
261
+ if (sidecar === undefined) {
262
+ throw new Error(`full sidecars is undefined at index ${columnIndex}`);
263
+ }
264
+ dataColumnCache.set(columnIndex, { dataColumn: sidecar, dataColumnBytes: null });
265
+ }
266
+ return RecoverResult.SuccessResolved;
267
+ }
197
268
  export function hasSampledDataColumns(custodyConfig, dataColumnCache) {
198
269
  return (dataColumnCache.size >= custodyConfig.sampledColumns.length &&
199
270
  custodyConfig.sampledColumns.reduce((acc, columnIndex) => acc && dataColumnCache.has(columnIndex), true));
200
271
  }
201
- export async function getDataColumnsFromExecution(config, custodyConfig, executionEngine, emitter, blockCache) {
272
+ export async function getDataColumnsFromExecution(config, custodyConfig, executionEngine, emitter, blockCache, metrics) {
202
273
  if (blockCache.fork !== ForkName.fulu) {
203
274
  return false;
204
275
  }
@@ -232,11 +303,15 @@ export async function getDataColumnsFromExecution(config, custodyConfig, executi
232
303
  // Process KZG commitments into versioned hashes
233
304
  const versionedHashes = commitments.map(kzgCommitmentToVersionedHash);
234
305
  // Get blobs from execution engine
306
+ metrics?.peerDas.getBlobsV2Requests.inc();
307
+ const timer = metrics?.peerDas.getBlobsV2RequestDuration.startTimer();
235
308
  const blobs = await executionEngine.getBlobs(blockCache.fork, versionedHashes);
309
+ timer?.();
236
310
  // Execution engine was unable to find one or more blobs
237
311
  if (blobs === null) {
238
312
  return false;
239
313
  }
314
+ metrics?.peerDas.getBlobsV2Responses.inc();
240
315
  // Return if we received all data columns while waiting for getBlobs
241
316
  if (hasSampledDataColumns(custodyConfig, blockCache.cachedData.dataColumnsCache)) {
242
317
  return true;
@@ -255,6 +330,7 @@ export async function getDataColumnsFromExecution(config, custodyConfig, executi
255
330
  }
256
331
  // Publish columns if and only if subscribed to them
257
332
  const sampledColumns = custodyConfig.sampledColumns.map((columnIndex) => dataColumnSidecars[columnIndex]);
333
+ // for columns that we already seen, it will be ignored through `ignoreDuplicatePublishError` gossip option
258
334
  emitter.emit(ChainEvent.publishDataColumns, sampledColumns);
259
335
  for (const column of sampledColumns) {
260
336
  blockCache.cachedData.dataColumnsCache.set(column.index, { dataColumn: column, dataColumnBytes: null });
@@ -1 +1 @@
1
- {"version":3,"file":"dataColumns.js","sourceRoot":"","sources":["../../src/util/dataColumns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataColumns.js","sourceRoot":"","sources":["../../src/util/dataColumns.ts"],"names":[],"mappings":"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"}
package/lib/util/kzg.d.ts CHANGED
@@ -1,23 +1,3 @@
1
- export declare const FIELD_ELEMENTS_PER_BLOB_MAINNET = 4096;
2
- export declare let ckzg: {
3
- loadTrustedSetup(precompute: number, filePath?: string): void;
4
- blobToKzgCommitment(blob: Uint8Array): Uint8Array;
5
- computeKzgProof(blob: Uint8Array, zBytes: Uint8Array): [Uint8Array, Uint8Array];
6
- computeBlobKzgProof(blob: Uint8Array, commitment: Uint8Array): Uint8Array;
7
- verifyKzgProof(commitmentBytes: Uint8Array, zBytes: Uint8Array, yBytes: Uint8Array, proofBytes: Uint8Array): boolean;
8
- verifyBlobKzgProof(blob: Uint8Array, commitment: Uint8Array, proof: Uint8Array): boolean;
9
- verifyBlobKzgProofBatch(blobs: Uint8Array[], expectedKzgCommitments: Uint8Array[], kzgProofs: Uint8Array[]): boolean;
10
- computeCells(blob: Uint8Array): Uint8Array[];
11
- computeCellsAndKzgProofs(blob: Uint8Array): [Uint8Array[], Uint8Array[]];
12
- recoverCellsAndKzgProofs(cellIndices: number[], cells: Uint8Array[]): [Uint8Array[], Uint8Array[]];
13
- verifyCellKzgProofBatch(commitmentsBytes: Uint8Array[], cellIndices: number[], cells: Uint8Array[], proofsBytes: Uint8Array[]): boolean;
14
- };
15
- export declare function initCKZG(): Promise<void>;
16
- /**
17
- * Load our KZG trusted setup into C-KZG for later use.
18
- * We persist the trusted setup as serialized bytes to save space over TXT or JSON formats.
19
- * However the current c-kzg API **requires** to read from a file with a specific .txt format
20
- */
21
- export declare function loadEthereumTrustedSetup(precompute?: number, // default to 0 for testing
22
- filePath?: string): void;
1
+ import { DasContextJs } from "@crate-crypto/node-eth-kzg";
2
+ export declare const kzg: DasContextJs;
23
3
  //# sourceMappingURL=kzg.d.ts.map
package/lib/util/kzg.js CHANGED
@@ -1,48 +1,3 @@
1
- // "c-kzg" has hardcoded the mainnet value, do not use params
2
- export const FIELD_ELEMENTS_PER_BLOB_MAINNET = 4096;
3
- function ckzgNotLoaded() {
4
- throw Error("c-kzg library not loaded");
5
- }
6
- export let ckzg = {
7
- loadTrustedSetup: ckzgNotLoaded,
8
- blobToKzgCommitment: ckzgNotLoaded,
9
- computeKzgProof: ckzgNotLoaded,
10
- computeBlobKzgProof: ckzgNotLoaded,
11
- verifyKzgProof: ckzgNotLoaded,
12
- verifyBlobKzgProof: ckzgNotLoaded,
13
- verifyBlobKzgProofBatch: ckzgNotLoaded,
14
- computeCells: ckzgNotLoaded,
15
- computeCellsAndKzgProofs: ckzgNotLoaded,
16
- recoverCellsAndKzgProofs: ckzgNotLoaded,
17
- verifyCellKzgProofBatch: ckzgNotLoaded,
18
- };
19
- export async function initCKZG() {
20
- // @ts-ignore
21
- ckzg = (await import("c-kzg")).default;
22
- }
23
- /**
24
- * Load our KZG trusted setup into C-KZG for later use.
25
- * We persist the trusted setup as serialized bytes to save space over TXT or JSON formats.
26
- * However the current c-kzg API **requires** to read from a file with a specific .txt format
27
- */
28
- export function loadEthereumTrustedSetup(precompute = 0, // default to 0 for testing
29
- filePath) {
30
- try {
31
- try {
32
- // in unit tests, calling loadTrustedSetup() twice has error so we have to free and retry
33
- ckzg.loadTrustedSetup(precompute, filePath);
34
- }
35
- catch (e) {
36
- if (e.message !== "Error trusted setup is already loaded") {
37
- throw e;
38
- }
39
- }
40
- }
41
- catch (e) {
42
- e.message = filePath
43
- ? `Error loading trusted setup ${filePath}: ${e.message}`
44
- : `Error loading default trusted setup: ${e.message}`;
45
- throw e;
46
- }
47
- }
1
+ import { DasContextJs } from "@crate-crypto/node-eth-kzg";
2
+ export const kzg = DasContextJs.create({ usePrecomp: true });
48
3
  //# sourceMappingURL=kzg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kzg.js","sourceRoot":"","sources":["../../src/util/kzg.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,SAAS,aAAa;IACpB,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,IAAI,IAAI,GAiBX;IACF,gBAAgB,EAAE,aAAa;IAC/B,mBAAmB,EAAE,aAAa;IAClC,eAAe,EAAE,aAAa;IAC9B,mBAAmB,EAAE,aAAa;IAClC,cAAc,EAAE,aAAa;IAC7B,kBAAkB,EAAE,aAAa;IACjC,uBAAuB,EAAE,aAAa;IACtC,YAAY,EAAE,aAAa;IAC3B,wBAAwB,EAAE,aAAa;IACvC,wBAAwB,EAAE,aAAa;IACvC,uBAAuB,EAAE,aAAa;CACvC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,aAAa;IACb,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAsB,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAU,GAAG,CAAC,EAAE,2BAA2B;AAC3C,QAAiB;IAEjB,IAAI,CAAC;QACH,IAAI,CAAC;YACH,yFAAyF;YACzF,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAAW,CAAC,OAAO,KAAK,uCAAuC,EAAE,CAAC;gBACrE,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACV,CAAW,CAAC,OAAO,GAAG,QAAQ;YAC7B,CAAC,CAAC,+BAA+B,QAAQ,KAAM,CAAW,CAAC,OAAO,EAAE;YACpE,CAAC,CAAC,wCAAyC,CAAW,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"kzg.js","sourceRoot":"","sources":["../../src/util/kzg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.32.0-peerDAS.c530895658",
14
+ "version": "1.32.0-peerDAS.d30e8dea19",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -103,6 +103,7 @@
103
103
  "@chainsafe/pubkey-index-map": "^3.0.0",
104
104
  "@chainsafe/ssz": "^1.2.1",
105
105
  "@chainsafe/threads": "^1.11.2",
106
+ "@crate-crypto/node-eth-kzg": "^0.7.1",
106
107
  "@ethersproject/abi": "^5.7.0",
107
108
  "@fastify/bearer-auth": "^10.0.1",
108
109
  "@fastify/cors": "^10.0.1",
@@ -117,20 +118,19 @@
117
118
  "@libp2p/peer-id": "^5.1.0",
118
119
  "@libp2p/prometheus-metrics": "^4.3.15",
119
120
  "@libp2p/tcp": "^10.1.8",
120
- "@lodestar/api": "1.32.0-peerDAS.c530895658",
121
- "@lodestar/config": "1.32.0-peerDAS.c530895658",
122
- "@lodestar/db": "1.32.0-peerDAS.c530895658",
123
- "@lodestar/fork-choice": "1.32.0-peerDAS.c530895658",
124
- "@lodestar/light-client": "1.32.0-peerDAS.c530895658",
125
- "@lodestar/logger": "1.32.0-peerDAS.c530895658",
126
- "@lodestar/params": "1.32.0-peerDAS.c530895658",
127
- "@lodestar/reqresp": "1.32.0-peerDAS.c530895658",
128
- "@lodestar/state-transition": "1.32.0-peerDAS.c530895658",
129
- "@lodestar/types": "1.32.0-peerDAS.c530895658",
130
- "@lodestar/utils": "1.32.0-peerDAS.c530895658",
131
- "@lodestar/validator": "1.32.0-peerDAS.c530895658",
121
+ "@lodestar/api": "1.32.0-peerDAS.d30e8dea19",
122
+ "@lodestar/config": "1.32.0-peerDAS.d30e8dea19",
123
+ "@lodestar/db": "1.32.0-peerDAS.d30e8dea19",
124
+ "@lodestar/fork-choice": "1.32.0-peerDAS.d30e8dea19",
125
+ "@lodestar/light-client": "1.32.0-peerDAS.d30e8dea19",
126
+ "@lodestar/logger": "1.32.0-peerDAS.d30e8dea19",
127
+ "@lodestar/params": "1.32.0-peerDAS.d30e8dea19",
128
+ "@lodestar/reqresp": "1.32.0-peerDAS.d30e8dea19",
129
+ "@lodestar/state-transition": "1.32.0-peerDAS.d30e8dea19",
130
+ "@lodestar/types": "1.32.0-peerDAS.d30e8dea19",
131
+ "@lodestar/utils": "1.32.0-peerDAS.d30e8dea19",
132
+ "@lodestar/validator": "1.32.0-peerDAS.d30e8dea19",
132
133
  "@multiformats/multiaddr": "^12.1.3",
133
- "c-kzg": "^4.1.0",
134
134
  "datastore-core": "^10.0.2",
135
135
  "datastore-level": "^11.0.1",
136
136
  "deepmerge": "^4.3.1",
@@ -165,5 +165,5 @@
165
165
  "beacon",
166
166
  "blockchain"
167
167
  ],
168
- "gitHead": "90dd4638d5eaa2885652e62b41d3caf8cb0aac80"
168
+ "gitHead": "46f8dd22dfb3856bf9bbb1e947db597d6077975c"
169
169
  }