@lodestar/beacon-node 1.32.0-dev.ea8c82564a → 1.32.0-peerDAS.23530b6726

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 (250) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +40 -14
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/state/index.js +1 -13
  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 +29 -43
  9. package/lib/api/impl/validator/index.js.map +1 -1
  10. package/lib/chain/archiveStore/archiveStore.d.ts +1 -1
  11. package/lib/chain/archiveStore/archiveStore.js +2 -2
  12. package/lib/chain/archiveStore/interface.d.ts +1 -1
  13. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
  14. package/lib/chain/archiveStore/utils/archiveBlocks.js +88 -23
  15. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  16. package/lib/chain/beaconProposerCache.d.ts +1 -0
  17. package/lib/chain/beaconProposerCache.js +3 -0
  18. package/lib/chain/beaconProposerCache.js.map +1 -1
  19. package/lib/chain/blocks/importBlock.js +25 -15
  20. package/lib/chain/blocks/importBlock.js.map +1 -1
  21. package/lib/chain/blocks/types.d.ts +65 -24
  22. package/lib/chain/blocks/types.js +39 -6
  23. package/lib/chain/blocks/types.js.map +1 -1
  24. package/lib/chain/blocks/verifyBlocksDataAvailability.js +21 -10
  25. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  26. package/lib/chain/blocks/writeBlockInputToDb.js +89 -15
  27. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  28. package/lib/chain/chain.d.ts +16 -8
  29. package/lib/chain/chain.js +27 -4
  30. package/lib/chain/chain.js.map +1 -1
  31. package/lib/chain/emitter.d.ts +18 -2
  32. package/lib/chain/emitter.js +13 -0
  33. package/lib/chain/emitter.js.map +1 -1
  34. package/lib/chain/errors/dataColumnSidecarError.d.ts +69 -0
  35. package/lib/chain/errors/dataColumnSidecarError.js +21 -0
  36. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -0
  37. package/lib/chain/errors/index.d.ts +1 -0
  38. package/lib/chain/errors/index.js +1 -0
  39. package/lib/chain/errors/index.js.map +1 -1
  40. package/lib/chain/interface.d.ts +11 -5
  41. package/lib/chain/interface.js.map +1 -1
  42. package/lib/chain/options.d.ts +4 -1
  43. package/lib/chain/options.js +4 -0
  44. package/lib/chain/options.js.map +1 -1
  45. package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -3
  46. package/lib/chain/produceBlock/produceBlockBody.js +117 -141
  47. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  48. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +3 -2
  49. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +25 -2
  50. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  51. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +61 -18
  52. package/lib/chain/seenCache/seenGossipBlockInput.js +254 -53
  53. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  54. package/lib/chain/validation/blobSidecar.d.ts +1 -1
  55. package/lib/chain/validation/blobSidecar.js +6 -6
  56. package/lib/chain/validation/blobSidecar.js.map +1 -1
  57. package/lib/chain/validation/dataColumnSidecar.d.ts +28 -0
  58. package/lib/chain/validation/dataColumnSidecar.js +245 -0
  59. package/lib/chain/validation/dataColumnSidecar.js.map +1 -0
  60. package/lib/db/beacon.d.ts +3 -1
  61. package/lib/db/beacon.js +3 -1
  62. package/lib/db/beacon.js.map +1 -1
  63. package/lib/db/buckets.d.ts +3 -1
  64. package/lib/db/buckets.js +2 -0
  65. package/lib/db/buckets.js.map +1 -1
  66. package/lib/db/interface.d.ts +3 -1
  67. package/lib/db/repositories/dataColumnSidecars.d.ts +47 -0
  68. package/lib/db/repositories/dataColumnSidecars.js +40 -0
  69. package/lib/db/repositories/dataColumnSidecars.js.map +1 -0
  70. package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +15 -0
  71. package/lib/db/repositories/dataColumnSidecarsArchive.js +23 -0
  72. package/lib/db/repositories/dataColumnSidecarsArchive.js.map +1 -0
  73. package/lib/db/repositories/index.d.ts +2 -0
  74. package/lib/db/repositories/index.js +2 -0
  75. package/lib/db/repositories/index.js.map +1 -1
  76. package/lib/execution/engine/http.d.ts +5 -3
  77. package/lib/execution/engine/http.js +70 -31
  78. package/lib/execution/engine/http.js.map +1 -1
  79. package/lib/execution/engine/interface.d.ts +4 -2
  80. package/lib/execution/engine/interface.js +1 -1
  81. package/lib/execution/engine/interface.js.map +1 -1
  82. package/lib/execution/engine/mock.d.ts +1 -0
  83. package/lib/execution/engine/mock.js +8 -3
  84. package/lib/execution/engine/mock.js.map +1 -1
  85. package/lib/execution/engine/types.d.ts +10 -0
  86. package/lib/execution/engine/types.js +6 -0
  87. package/lib/execution/engine/types.js.map +1 -1
  88. package/lib/metrics/metrics/beacon.d.ts +12 -0
  89. package/lib/metrics/metrics/beacon.js +44 -1
  90. package/lib/metrics/metrics/beacon.js.map +1 -1
  91. package/lib/network/core/metrics.d.ts +10 -3
  92. package/lib/network/core/metrics.js +22 -4
  93. package/lib/network/core/metrics.js.map +1 -1
  94. package/lib/network/core/networkCore.d.ts +10 -4
  95. package/lib/network/core/networkCore.js +63 -53
  96. package/lib/network/core/networkCore.js.map +1 -1
  97. package/lib/network/core/networkCoreWorker.js +2 -0
  98. package/lib/network/core/networkCoreWorker.js.map +1 -1
  99. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -0
  100. package/lib/network/core/networkCoreWorkerHandler.js +7 -0
  101. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  102. package/lib/network/core/types.d.ts +4 -4
  103. package/lib/network/discv5/index.d.ts +0 -1
  104. package/lib/network/discv5/index.js +0 -1
  105. package/lib/network/discv5/index.js.map +1 -1
  106. package/lib/network/discv5/types.d.ts +0 -1
  107. package/lib/network/discv5/utils.d.ts +1 -3
  108. package/lib/network/discv5/utils.js +2 -12
  109. package/lib/network/discv5/utils.js.map +1 -1
  110. package/lib/network/discv5/worker.js +1 -5
  111. package/lib/network/discv5/worker.js.map +1 -1
  112. package/lib/network/events.d.ts +3 -1
  113. package/lib/network/events.js.map +1 -1
  114. package/lib/network/forks.d.ts +0 -2
  115. package/lib/network/forks.js +0 -4
  116. package/lib/network/forks.js.map +1 -1
  117. package/lib/network/gossip/interface.d.ts +8 -1
  118. package/lib/network/gossip/interface.js +1 -0
  119. package/lib/network/gossip/interface.js.map +1 -1
  120. package/lib/network/gossip/scoringParameters.js +3 -4
  121. package/lib/network/gossip/scoringParameters.js.map +1 -1
  122. package/lib/network/gossip/topic.d.ts +1047 -1031
  123. package/lib/network/gossip/topic.js +20 -1
  124. package/lib/network/gossip/topic.js.map +1 -1
  125. package/lib/network/interface.d.ts +13 -1
  126. package/lib/network/metadata.d.ts +10 -6
  127. package/lib/network/metadata.js +23 -4
  128. package/lib/network/metadata.js.map +1 -1
  129. package/lib/network/network.d.ts +12 -1
  130. package/lib/network/network.js +61 -9
  131. package/lib/network/network.js.map +1 -1
  132. package/lib/network/networkConfig.d.ts +23 -0
  133. package/lib/network/networkConfig.js +32 -0
  134. package/lib/network/networkConfig.js.map +1 -0
  135. package/lib/network/options.js +2 -0
  136. package/lib/network/options.js.map +1 -1
  137. package/lib/network/peers/discover.d.ts +14 -3
  138. package/lib/network/peers/discover.js +139 -14
  139. package/lib/network/peers/discover.js.map +1 -1
  140. package/lib/network/peers/peerManager.d.ts +10 -2
  141. package/lib/network/peers/peerManager.js +96 -10
  142. package/lib/network/peers/peerManager.js.map +1 -1
  143. package/lib/network/peers/peersData.d.ts +8 -2
  144. package/lib/network/peers/peersData.js.map +1 -1
  145. package/lib/network/peers/score/interface.d.ts +1 -1
  146. package/lib/network/peers/score/score.d.ts +2 -2
  147. package/lib/network/peers/score/score.js +4 -1
  148. package/lib/network/peers/score/score.js.map +1 -1
  149. package/lib/network/peers/score/store.d.ts +3 -1
  150. package/lib/network/peers/score/store.js +6 -2
  151. package/lib/network/peers/score/store.js.map +1 -1
  152. package/lib/network/peers/utils/prioritizePeers.d.ts +15 -4
  153. package/lib/network/peers/utils/prioritizePeers.js +30 -5
  154. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  155. package/lib/network/processor/extractSlotRootFns.js +8 -1
  156. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  157. package/lib/network/processor/gossipHandlers.js +154 -8
  158. package/lib/network/processor/gossipHandlers.js.map +1 -1
  159. package/lib/network/processor/gossipQueues/index.js +5 -0
  160. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  161. package/lib/network/processor/index.js +1 -0
  162. package/lib/network/processor/index.js.map +1 -1
  163. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +3 -3
  164. package/lib/network/reqresp/ReqRespBeaconNode.js +29 -12
  165. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  166. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +14 -5
  167. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +199 -14
  168. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  169. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +32 -5
  170. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +280 -26
  171. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  172. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +1 -1
  173. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -2
  174. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  175. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +1 -1
  176. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  177. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +1 -1
  178. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  179. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  180. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  181. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +8 -0
  182. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +106 -0
  183. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -0
  184. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +6 -0
  185. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +57 -0
  186. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -0
  187. package/lib/network/reqresp/handlers/index.js +10 -0
  188. package/lib/network/reqresp/handlers/index.js.map +1 -1
  189. package/lib/network/reqresp/handlers/lightClientBootstrap.js +1 -1
  190. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  191. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +1 -1
  192. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  193. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +1 -1
  194. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  195. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +1 -1
  196. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  197. package/lib/network/reqresp/handlers/status.js +1 -1
  198. package/lib/network/reqresp/handlers/status.js.map +1 -1
  199. package/lib/network/reqresp/protocols.d.ts +3 -0
  200. package/lib/network/reqresp/protocols.js +15 -0
  201. package/lib/network/reqresp/protocols.js.map +1 -1
  202. package/lib/network/reqresp/rateLimit.js +11 -1
  203. package/lib/network/reqresp/rateLimit.js.map +1 -1
  204. package/lib/network/reqresp/types.d.ts +13 -6
  205. package/lib/network/reqresp/types.js +9 -2
  206. package/lib/network/reqresp/types.js.map +1 -1
  207. package/lib/network/subnets/attnetsService.d.ts +3 -3
  208. package/lib/network/subnets/attnetsService.js +15 -15
  209. package/lib/network/subnets/attnetsService.js.map +1 -1
  210. package/lib/network/subnets/interface.d.ts +6 -3
  211. package/lib/network/subnets/interface.js +14 -1
  212. package/lib/network/subnets/interface.js.map +1 -1
  213. package/lib/network/subnets/syncnetsService.d.ts +3 -3
  214. package/lib/network/subnets/syncnetsService.js +13 -14
  215. package/lib/network/subnets/syncnetsService.js.map +1 -1
  216. package/lib/node/nodejs.js +1 -6
  217. package/lib/node/nodejs.js.map +1 -1
  218. package/lib/sync/interface.d.ts +2 -2
  219. package/lib/sync/interface.js +1 -1
  220. package/lib/sync/interface.js.map +1 -1
  221. package/lib/sync/range/batch.d.ts +8 -2
  222. package/lib/sync/range/batch.js +19 -7
  223. package/lib/sync/range/batch.js.map +1 -1
  224. package/lib/sync/range/chain.d.ts +7 -2
  225. package/lib/sync/range/chain.js +45 -21
  226. package/lib/sync/range/chain.js.map +1 -1
  227. package/lib/sync/range/range.js +3 -3
  228. package/lib/sync/range/range.js.map +1 -1
  229. package/lib/sync/range/utils/peerBalancer.d.ts +4 -1
  230. package/lib/sync/range/utils/peerBalancer.js +20 -2
  231. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  232. package/lib/sync/unknownBlock.d.ts +8 -1
  233. package/lib/sync/unknownBlock.js +222 -62
  234. package/lib/sync/unknownBlock.js.map +1 -1
  235. package/lib/util/blobs.d.ts +13 -1
  236. package/lib/util/blobs.js +44 -1
  237. package/lib/util/blobs.js.map +1 -1
  238. package/lib/util/dataColumns.d.ts +125 -0
  239. package/lib/util/dataColumns.js +284 -0
  240. package/lib/util/dataColumns.js.map +1 -0
  241. package/lib/util/kzg.d.ts +2 -34
  242. package/lib/util/kzg.js +2 -123
  243. package/lib/util/kzg.js.map +1 -1
  244. package/lib/util/metadata.d.ts +4 -0
  245. package/lib/util/metadata.js +7 -0
  246. package/lib/util/metadata.js.map +1 -1
  247. package/lib/util/sszBytes.d.ts +1 -0
  248. package/lib/util/sszBytes.js +17 -0
  249. package/lib/util/sszBytes.js.map +1 -1
  250. package/package.json +15 -15
@@ -0,0 +1,106 @@
1
+ import { GENESIS_SLOT, MAX_REQUEST_BLOCKS_DENEB, NUMBER_OF_COLUMNS } from "@lodestar/params";
2
+ import { RespStatus, ResponseError } from "@lodestar/reqresp";
3
+ import { ssz } from "@lodestar/types";
4
+ import { fromHex } from "@lodestar/utils";
5
+ import { COLUMN_SIZE_IN_WRAPPER_INDEX, CUSTODY_COLUMNS_IN_IN_WRAPPER_INDEX, DATA_COLUMN_SIDECARS_IN_WRAPPER_INDEX, NUM_COLUMNS_IN_WRAPPER_INDEX, } from "../../../db/repositories/dataColumnSidecars.js";
6
+ export async function* onDataColumnSidecarsByRange(request, chain, db) {
7
+ // Non-finalized range of blobs
8
+ const { startSlot, count, columns } = validateDataColumnSidecarsByRangeRequest(request);
9
+ const endSlot = startSlot + count;
10
+ const finalized = db.dataColumnSidecarsArchive;
11
+ const unfinalized = db.dataColumnSidecars;
12
+ const finalizedSlot = chain.forkChoice.getFinalizedBlock().slot;
13
+ // console.log(
14
+ // `incoming onDataColumnSidecarsByRange startSlot=${startSlot}, count=${count}, columns=${columns.join(" ")} finalizedSlot=${finalizedSlot} endSlot=${endSlot}`
15
+ // );
16
+ // Finalized range of blobs
17
+ if (startSlot <= finalizedSlot) {
18
+ // console.log(`serving onDataColumnSidecarsByRange finalized startSlot=${startSlot} finalizedSlot=${finalizedSlot}`);
19
+ // Chain of blobs won't change
20
+ for await (const { key, value: dataColumnSideCarsBytesWrapped } of finalized.binaryEntriesStream({
21
+ gte: startSlot,
22
+ lt: endSlot,
23
+ })) {
24
+ yield* iterateDataColumnBytesFromWrapper(chain, dataColumnSideCarsBytesWrapped, finalized.decodeKey(key), columns);
25
+ }
26
+ }
27
+ // Non-finalized range of blobs
28
+ if (endSlot > finalizedSlot) {
29
+ // console.log(`serving onDataColumnSidecarsByRange unfinalized endSlot=${endSlot} finalizedSlot=${finalizedSlot}`);
30
+ const headRoot = chain.forkChoice.getHeadRoot();
31
+ // TODO DENEB: forkChoice should mantain an array of canonical blocks, and change only on reorg
32
+ const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot);
33
+ // Iterate head chain with ascending block numbers
34
+ for (let i = headChain.length - 1; i >= 0; i--) {
35
+ const block = headChain[i];
36
+ // Must include only blobs in the range requested
37
+ if (block.slot >= startSlot && block.slot < endSlot) {
38
+ // Note: Here the forkChoice head may change due to a re-org, so the headChain reflects the canonical chain
39
+ // at the time of the start of the request. Spec is clear the chain of blobs must be consistent, but on
40
+ // re-org there's no need to abort the request
41
+ // Spec: https://github.com/ethereum/consensus-specs/blob/a1e46d1ae47dd9d097725801575b46907c12a1f8/specs/eip4844/p2p-interface.md#blobssidecarsbyrange-v1
42
+ const blobSideCarsBytesWrapped = await unfinalized.getBinary(fromHex(block.blockRoot));
43
+ if (!blobSideCarsBytesWrapped) {
44
+ // console.log(`error onDataColumnSidecarsByRange No item for root ${block.blockRoot} slot ${block.slot}`);
45
+ // Handle the same to onBeaconBlocksByRange
46
+ throw new ResponseError(RespStatus.SERVER_ERROR, `No item for root ${block.blockRoot} slot ${block.slot}`);
47
+ }
48
+ yield* iterateDataColumnBytesFromWrapper(chain, blobSideCarsBytesWrapped, block.slot, columns);
49
+ }
50
+ // If block is after endSlot, stop iterating
51
+ else if (block.slot >= endSlot) {
52
+ // console.log(`breaking away onDataColumnSidecarsByRange block.slot=${block.slot} endSlot=${endSlot}`);
53
+ break;
54
+ }
55
+ }
56
+ }
57
+ }
58
+ export function* iterateDataColumnBytesFromWrapper(chain, dataColumnSidecarsBytesWrapped, blockSlot, columns) {
59
+ const retrivedColumnsLen = ssz.Uint8.deserialize(dataColumnSidecarsBytesWrapped.slice(NUM_COLUMNS_IN_WRAPPER_INDEX, COLUMN_SIZE_IN_WRAPPER_INDEX));
60
+ const retrievedColumnsSizeBytes = dataColumnSidecarsBytesWrapped.slice(COLUMN_SIZE_IN_WRAPPER_INDEX, CUSTODY_COLUMNS_IN_IN_WRAPPER_INDEX);
61
+ const columnsSize = ssz.UintNum64.deserialize(retrievedColumnsSizeBytes);
62
+ const dataColumnsIndex = dataColumnSidecarsBytesWrapped.slice(CUSTODY_COLUMNS_IN_IN_WRAPPER_INDEX, CUSTODY_COLUMNS_IN_IN_WRAPPER_INDEX + NUMBER_OF_COLUMNS);
63
+ const allDataColumnSidecarsBytes = dataColumnSidecarsBytesWrapped.slice(DATA_COLUMN_SIDECARS_IN_WRAPPER_INDEX + 4 * retrivedColumnsLen);
64
+ const columnsLen = allDataColumnSidecarsBytes.length / columnsSize;
65
+ // const storedColumns = Array.from({length: NUMBER_OF_COLUMNS}, (_v, i) => i).filter((i) => dataColumnsIndex[i] > 0);
66
+ // console.log(
67
+ // `onDataColumnSidecarsByRange: slot=${blockSlot} columnsSize=${columnsSize} columnsLen=${columnsLen} retrivedColumnsLen=${retrivedColumnsLen} toredColumnsNum=${allDataColumnSidecarsBytes.length / columnsSize}, storedColumns=${storedColumns.join(" ")}`
68
+ // );
69
+ // no columns possibly no blob
70
+ if (columnsLen === 0) {
71
+ return;
72
+ }
73
+ const fork = chain.config.getForkName(blockSlot);
74
+ for (const index of columns) {
75
+ // get the index at which the column is
76
+ const dataIndex = (dataColumnsIndex[index] ?? 0) - 1;
77
+ if (dataIndex < 0) {
78
+ throw new ResponseError(RespStatus.SERVER_ERROR, `dataColumnSidecar index=${index} dataIndex=${dataIndex} not custodied`);
79
+ }
80
+ const dataColumnSidecarBytes = allDataColumnSidecarsBytes.slice(dataIndex * columnsSize, (dataIndex + 1) * columnsSize);
81
+ if (dataColumnSidecarBytes.length !== columnsSize) {
82
+ throw new ResponseError(RespStatus.SERVER_ERROR, `Invalid dataColumnSidecar index=${index} dataIndex=${dataIndex} bytes length=${dataColumnSidecarBytes.length} expected=${columnsSize} for slot ${blockSlot} blobsLen=${columnsLen}`);
83
+ }
84
+ // console.log(`iterate onDataColumnSidecarsByRange blockSlot=${blockSlot} index=${index} dataIndex=${dataIndex}`);
85
+ yield {
86
+ data: dataColumnSidecarBytes,
87
+ fork,
88
+ };
89
+ }
90
+ }
91
+ export function validateDataColumnSidecarsByRangeRequest(request) {
92
+ const { startSlot, columns } = request;
93
+ let { count } = request;
94
+ if (count < 1) {
95
+ throw new ResponseError(RespStatus.INVALID_REQUEST, "count < 1");
96
+ }
97
+ // TODO: validate against MIN_EPOCHS_FOR_BLOCK_REQUESTS
98
+ if (startSlot < GENESIS_SLOT) {
99
+ throw new ResponseError(RespStatus.INVALID_REQUEST, "startSlot < genesis");
100
+ }
101
+ if (count > MAX_REQUEST_BLOCKS_DENEB) {
102
+ count = MAX_REQUEST_BLOCKS_DENEB;
103
+ }
104
+ return { startSlot, count, columns };
105
+ }
106
+ //# sourceMappingURL=dataColumnSidecarsByRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataColumnSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRange.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ResponseOutgoing } from "@lodestar/reqresp";
2
+ import { fulu } from "@lodestar/types";
3
+ import { IBeaconChain } from "../../../chain/index.js";
4
+ import { IBeaconDb } from "../../../db/index.js";
5
+ export declare function onDataColumnSidecarsByRoot(requestBody: fulu.DataColumnSidecarsByRootRequest, chain: IBeaconChain, db: IBeaconDb): AsyncIterable<ResponseOutgoing>;
6
+ //# sourceMappingURL=dataColumnSidecarsByRoot.d.ts.map
@@ -0,0 +1,57 @@
1
+ import { NUMBER_OF_COLUMNS } from "@lodestar/params";
2
+ import { RespStatus, ResponseError } from "@lodestar/reqresp";
3
+ import { computeEpochAtSlot } from "@lodestar/state-transition";
4
+ import { ssz } from "@lodestar/types";
5
+ import { fromHex, toHex } from "@lodestar/utils";
6
+ import { COLUMN_SIZE_IN_WRAPPER_INDEX, CUSTODY_COLUMNS_IN_IN_WRAPPER_INDEX, DATA_COLUMN_SIDECARS_IN_WRAPPER_INDEX, NUM_COLUMNS_IN_WRAPPER_INDEX, } from "../../../db/repositories/dataColumnSidecars.js";
7
+ export async function* onDataColumnSidecarsByRoot(requestBody, chain, db) {
8
+ // SPEC: minimum_request_epoch = max(finalized_epoch, current_epoch - MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, FULU_FORK_EPOCH)
9
+ const finalizedEpoch = chain.forkChoice.getFinalizedCheckpoint().epoch;
10
+ const currentEpoch = chain.clock.currentEpoch;
11
+ const minimumRequestEpoch = Math.max(finalizedEpoch, currentEpoch - chain.config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, chain.config.FULU_FORK_EPOCH);
12
+ for (const dataColumnsByRootIdentifier of requestBody) {
13
+ const { blockRoot, columns } = dataColumnsByRootIdentifier;
14
+ const blockRootHex = toHex(blockRoot);
15
+ const block = chain.forkChoice.getBlockHex(blockRootHex);
16
+ // NOTE: Only support non-finalized blocks.
17
+ // SPEC: Clients MUST support requesting sidecars since minimum_request_epoch.
18
+ // If any root in the request content references a block earlier than minimum_request_epoch, peers MAY respond with
19
+ // error code 3: ResourceUnavailable or not include the data column sidecar in the response.
20
+ // https://github.com/ethereum/consensus-specs/blob/1937aff86b41b5171a9bc3972515986f1bbbf303/specs/fulu/p2p-interface.md#datacolumnsidecarsbyroot-v1
21
+ if (!block || computeEpochAtSlot(block.slot) < minimumRequestEpoch) {
22
+ continue;
23
+ }
24
+ const dataColumnSidecarsBytesWrapped = await db.dataColumnSidecars.getBinary(fromHex(block.blockRoot));
25
+ if (!dataColumnSidecarsBytesWrapped) {
26
+ // Handle the same to onBeaconBlocksByRange
27
+ throw new ResponseError(RespStatus.SERVER_ERROR, `No item for root ${block.blockRoot} slot ${block.slot}`);
28
+ }
29
+ const retrivedColumnsLen = ssz.Uint8.deserialize(dataColumnSidecarsBytesWrapped.slice(NUM_COLUMNS_IN_WRAPPER_INDEX, COLUMN_SIZE_IN_WRAPPER_INDEX));
30
+ const retrievedColumnsSizeBytes = dataColumnSidecarsBytesWrapped.slice(COLUMN_SIZE_IN_WRAPPER_INDEX, CUSTODY_COLUMNS_IN_IN_WRAPPER_INDEX);
31
+ const columnsSize = ssz.UintNum64.deserialize(retrievedColumnsSizeBytes);
32
+ const dataColumnSidecarsBytes = dataColumnSidecarsBytesWrapped.slice(DATA_COLUMN_SIDECARS_IN_WRAPPER_INDEX + 4 * retrivedColumnsLen);
33
+ const dataColumnsIndex = dataColumnSidecarsBytesWrapped.slice(CUSTODY_COLUMNS_IN_IN_WRAPPER_INDEX, CUSTODY_COLUMNS_IN_IN_WRAPPER_INDEX + NUMBER_OF_COLUMNS);
34
+ // const storedColumns = Array.from({length: NUMBER_OF_COLUMNS}, (_v, i) => i).filter(
35
+ // (i) => dataColumnsIndex[i] > 0
36
+ // );
37
+ // const columnsLen = dataColumnSidecarsBytes.length / columnsSize;
38
+ // console.log(
39
+ // `onDataColumnSidecarsByRoot: slot=${block.slot} columnsSize=${columnsSize} storedColumnsLen=${columnsLen} retrivedColumnsLen=${retrivedColumnsLen} dataColumnSidecarsBytesWrapped=${dataColumnSidecarsBytesWrapped.length} storedColumns=${storedColumns.join(" ")}`
40
+ // );
41
+ for (const index of columns) {
42
+ const dataIndex = (dataColumnsIndex[index] ?? 0) - 1;
43
+ if (dataIndex < 0) {
44
+ throw new ResponseError(RespStatus.SERVER_ERROR, `dataColumnSidecar index=${index} not custodied`);
45
+ }
46
+ const dataColumnSidecarBytes = dataColumnSidecarsBytes.slice(dataIndex * columnsSize, (dataIndex + 1) * columnsSize);
47
+ if (dataColumnSidecarBytes.length !== columnsSize) {
48
+ throw Error(`Inconsistent state, dataColumnSidecar blockRoot=${blockRootHex} index=${index} dataColumnSidecarBytes=${dataColumnSidecarBytes.length} expected=${columnsSize}`);
49
+ }
50
+ yield {
51
+ data: dataColumnSidecarBytes,
52
+ fork: chain.config.getForkName(block.slot),
53
+ };
54
+ }
55
+ }
56
+ }
57
+ //# sourceMappingURL=dataColumnSidecarsByRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataColumnSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ import { onBeaconBlocksByRange } from "./beaconBlocksByRange.js";
5
5
  import { onBeaconBlocksByRoot } from "./beaconBlocksByRoot.js";
6
6
  import { onBlobSidecarsByRange } from "./blobSidecarsByRange.js";
7
7
  import { onBlobSidecarsByRoot } from "./blobSidecarsByRoot.js";
8
+ import { onDataColumnSidecarsByRange } from "./dataColumnSidecarsByRange.js";
9
+ import { onDataColumnSidecarsByRoot } from "./dataColumnSidecarsByRoot.js";
8
10
  import { onLightClientBootstrap } from "./lightClientBootstrap.js";
9
11
  import { onLightClientFinalityUpdate } from "./lightClientFinalityUpdate.js";
10
12
  import { onLightClientOptimisticUpdate } from "./lightClientOptimisticUpdate.js";
@@ -41,6 +43,14 @@ export function getReqRespHandlers({ db, chain }) {
41
43
  const body = ssz.deneb.BlobSidecarsByRangeRequest.deserialize(req.data);
42
44
  return onBlobSidecarsByRange(body, chain, db);
43
45
  },
46
+ [ReqRespMethod.DataColumnSidecarsByRange]: (req) => {
47
+ const body = ssz.fulu.DataColumnSidecarsByRangeRequest.deserialize(req.data);
48
+ return onDataColumnSidecarsByRange(body, chain, db);
49
+ },
50
+ [ReqRespMethod.DataColumnSidecarsByRoot]: (req) => {
51
+ const body = ssz.fulu.DataColumnSidecarsByRootRequest.deserialize(req.data);
52
+ return onDataColumnSidecarsByRoot(body, chain, db);
53
+ },
44
54
  [ReqRespMethod.LightClientBootstrap]: (req) => {
45
55
  const body = ssz.Root.deserialize(req.data);
46
56
  return onLightClientBootstrap(body, chain);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/index.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export async function* onLightClientBootstrap(requestBody, chain) {
9
9
  const type = responseSszTypeByMethod[ReqRespMethod.LightClientBootstrap](fork, 0);
10
10
  yield {
11
11
  data: type.serialize(bootstrap),
12
- boundary: { fork },
12
+ fork,
13
13
  };
14
14
  }
15
15
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"lightClientBootstrap.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/lightClientBootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,0BAA0B,EAC1B,UAAU,EACV,aAAa,GAEd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAC,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,sBAAsB,CAAC,WAAiB,EAAE,KAAmB;IAClF,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM;YACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC/B,QAAQ,EAAE,EAAC,IAAI,EAAC;SACjB,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAA4B,CAAC,IAAI,EAAE,IAAI,KAAK,0BAA0B,CAAC,oBAAoB,EAAE,CAAC;YACjG,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,YAAY,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lightClientBootstrap.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/lightClientBootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,0BAA0B,EAC1B,UAAU,EACV,aAAa,GAEd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAC,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,sBAAsB,CAAC,WAAiB,EAAE,KAAmB;IAClF,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM;YACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC/B,IAAI;SACL,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAA4B,CAAC,IAAI,EAAE,IAAI,KAAK,0BAA0B,CAAC,oBAAoB,EAAE,CAAC;YACjG,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,YAAY,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
@@ -11,7 +11,7 @@ export async function* onLightClientFinalityUpdate(chain) {
11
11
  const type = responseSszTypeByMethod[ReqRespMethod.LightClientFinalityUpdate](fork, 0);
12
12
  yield {
13
13
  data: type.serialize(update),
14
- boundary: { fork },
14
+ fork,
15
15
  };
16
16
  }
17
17
  //# sourceMappingURL=lightClientFinalityUpdate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lightClientFinalityUpdate.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/lightClientFinalityUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,2BAA2B,CAAC,KAAmB;IACpE,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;IAC3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,MAAM;QACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,EAAC,IAAI,EAAC;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lightClientFinalityUpdate.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/lightClientFinalityUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,2BAA2B,CAAC,KAAmB;IACpE,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;IAC3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,MAAM;QACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5B,IAAI;KACL,CAAC;AACJ,CAAC"}
@@ -11,7 +11,7 @@ export async function* onLightClientOptimisticUpdate(chain) {
11
11
  const type = responseSszTypeByMethod[ReqRespMethod.LightClientOptimisticUpdate](fork, 0);
12
12
  yield {
13
13
  data: type.serialize(update),
14
- boundary: { fork },
14
+ fork,
15
15
  };
16
16
  }
17
17
  //# sourceMappingURL=lightClientOptimisticUpdate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lightClientOptimisticUpdate.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/lightClientOptimisticUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,6BAA6B,CAAC,KAAmB;IACtE,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;IAC7D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAE,uCAAuC,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,MAAM;QACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,EAAC,IAAI,EAAC;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"lightClientOptimisticUpdate.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/lightClientOptimisticUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,6BAA6B,CAAC,KAAmB;IACtE,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;IAC7D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAE,uCAAuC,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,MAAM;QACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC5B,IAAI;KACL,CAAC;AACJ,CAAC"}
@@ -12,7 +12,7 @@ export async function* onLightClientUpdatesByRange(requestBody, chain) {
12
12
  const type = responseSszTypeByMethod[ReqRespMethod.LightClientUpdatesByRange](fork, 0);
13
13
  yield {
14
14
  data: type.serialize(update),
15
- boundary: { fork },
15
+ fork,
16
16
  };
17
17
  }
18
18
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"lightClientUpdatesByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/lightClientUpdatesByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gCAAgC,EAAC,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAEL,0BAA0B,EAC1B,UAAU,EACV,aAAa,GAEd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAC,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,2BAA2B,CAChD,WAA6C,EAC7C,KAAmB;IAEnB,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gCAAgC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5E,KAAK,IAAI,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,WAAW,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;QAC9F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEvF,MAAM;gBACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC5B,QAAQ,EAAE,EAAC,IAAI,EAAC;aACjB,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAA4B,CAAC,IAAI,EAAE,IAAI,KAAK,0BAA0B,CAAC,oBAAoB,EAAE,CAAC;gBACjG,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,YAAY,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lightClientUpdatesByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/lightClientUpdatesByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gCAAgC,EAAC,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAEL,0BAA0B,EAC1B,UAAU,EACV,aAAa,GAEd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAC,uBAAuB,EAAC,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAC,aAAa,EAAE,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAEnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,2BAA2B,CAChD,WAA6C,EAC7C,KAAmB;IAEnB,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gCAAgC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5E,KAAK,IAAI,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,WAAW,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;QAC9F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEvF,MAAM;gBACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC5B,IAAI;aACL,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAA4B,CAAC,IAAI,EAAE,IAAI,KAAK,0BAA0B,CAAC,oBAAoB,EAAE,CAAC;gBACjG,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,IAAI,aAAa,CAAC,UAAU,CAAC,YAAY,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -5,7 +5,7 @@ export async function* onStatus(chain) {
5
5
  yield {
6
6
  data: ssz.phase0.Status.serialize(status),
7
7
  // Status topic is fork-agnostic
8
- boundary: { fork: ForkName.phase0 },
8
+ fork: ForkName.phase0,
9
9
  };
10
10
  }
11
11
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAGpC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAmB;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACjC,MAAM;QACJ,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACzC,gCAAgC;QAChC,QAAQ,EAAE,EAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAC;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAGpC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAmB;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACjC,MAAM;QACJ,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACzC,gCAAgC;QAChC,IAAI,EAAE,QAAQ,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
@@ -4,6 +4,7 @@ import { ProtocolNoHandler } from "./types.js";
4
4
  export declare const Goodbye: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
5
5
  export declare const Metadata: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
6
6
  export declare const MetadataV2: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
7
+ export declare const MetadataV3: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
7
8
  export declare const Ping: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
8
9
  export declare const Status: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
9
10
  export declare const BeaconBlocksByRange: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
@@ -12,6 +13,8 @@ export declare const BeaconBlocksByRoot: (fork: ForkName, config: BeaconConfig)
12
13
  export declare const BeaconBlocksByRootV2: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
13
14
  export declare const BlobSidecarsByRange: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
14
15
  export declare const BlobSidecarsByRoot: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
16
+ export declare const DataColumnSidecarsByRange: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
17
+ export declare const DataColumnSidecarsByRoot: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
15
18
  export declare const LightClientBootstrap: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
16
19
  export declare const LightClientFinalityUpdate: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
17
20
  export declare const LightClientOptimisticUpdate: (fork: ForkName, config: BeaconConfig) => ProtocolNoHandler;
@@ -16,6 +16,11 @@ export const MetadataV2 = toProtocol({
16
16
  version: Version.V2,
17
17
  contextBytesType: ContextBytesType.Empty,
18
18
  });
19
+ export const MetadataV3 = toProtocol({
20
+ method: ReqRespMethod.Metadata,
21
+ version: Version.V3,
22
+ contextBytesType: ContextBytesType.Empty,
23
+ });
19
24
  export const Ping = toProtocol({
20
25
  method: ReqRespMethod.Ping,
21
26
  version: Version.V1,
@@ -56,6 +61,16 @@ export const BlobSidecarsByRoot = toProtocol({
56
61
  version: Version.V1,
57
62
  contextBytesType: ContextBytesType.ForkDigest,
58
63
  });
64
+ export const DataColumnSidecarsByRange = toProtocol({
65
+ method: ReqRespMethod.DataColumnSidecarsByRange,
66
+ version: Version.V1,
67
+ contextBytesType: ContextBytesType.ForkDigest,
68
+ });
69
+ export const DataColumnSidecarsByRoot = toProtocol({
70
+ method: ReqRespMethod.DataColumnSidecarsByRoot,
71
+ version: Version.V1,
72
+ contextBytesType: ContextBytesType.ForkDigest,
73
+ });
59
74
  export const LightClientBootstrap = toProtocol({
60
75
  method: ReqRespMethod.LightClientBootstrap,
61
76
  version: Version.V1,
@@ -1 +1 @@
1
- {"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../src/network/reqresp/protocols.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../src/network/reqresp/protocols.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { MAX_REQUEST_BLOCKS, MAX_REQUEST_BLOCKS_DENEB, MAX_REQUEST_LIGHT_CLIENT_UPDATES, isForkPostDeneb, } from "@lodestar/params";
1
+ import { MAX_REQUEST_BLOCKS, MAX_REQUEST_BLOCKS_DENEB, MAX_REQUEST_LIGHT_CLIENT_UPDATES, NUMBER_OF_COLUMNS, isForkPostDeneb, } from "@lodestar/params";
2
2
  import { ReqRespMethod, requestSszTypeByMethod } from "./types.js";
3
3
  export const rateLimitQuotas = (fork, config) => ({
4
4
  [ReqRespMethod.Status]: {
@@ -38,6 +38,16 @@ export const rateLimitQuotas = (fork, config) => ({
38
38
  byPeer: { quota: config.getMaxRequestBlobSidecars(fork), quotaTimeMs: 10_000 },
39
39
  getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.BlobSidecarsByRoot, (req) => req.length),
40
40
  },
41
+ [ReqRespMethod.DataColumnSidecarsByRange]: {
42
+ // Rationale: MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS
43
+ byPeer: { quota: MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS, quotaTimeMs: 10_000 },
44
+ getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.DataColumnSidecarsByRange, (req) => req.count),
45
+ },
46
+ [ReqRespMethod.DataColumnSidecarsByRoot]: {
47
+ // Rationale: quota of BeaconBlocksByRoot * NUMBER_OF_COLUMNS
48
+ byPeer: { quota: 128 * NUMBER_OF_COLUMNS, quotaTimeMs: 10_000 },
49
+ getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.DataColumnSidecarsByRoot, (req) => req.length),
50
+ },
41
51
  [ReqRespMethod.LightClientBootstrap]: {
42
52
  // As similar in the nature of `Status` protocol so we use the same rate limits.
43
53
  byPeer: { quota: 5, quotaTimeMs: 15_000 },
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../src/network/reqresp/rateLimit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../src/network/reqresp/rateLimit.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Type } from "@chainsafe/ssz";
2
2
  import { BeaconConfig } from "@lodestar/config";
3
3
  import { ForkName } from "@lodestar/params";
4
4
  import { Protocol, ProtocolHandler, ReqRespRequest } from "@lodestar/reqresp";
5
- import { LightClientBootstrap, LightClientFinalityUpdate, LightClientOptimisticUpdate, LightClientUpdate, Metadata, Root, SignedBeaconBlock, altair, deneb, phase0 } from "@lodestar/types";
5
+ import { Metadata, Root, SignedBeaconBlock, altair, deneb, fulu, phase0 } from "@lodestar/types";
6
6
  import { BlobSidecarsByRootRequest } from "../../util/types.js";
7
7
  export type ProtocolNoHandler = Omit<Protocol, "handler">;
8
8
  /** ReqResp protocol names or methods. Each ReqRespMethod can have multiple versions and encodings */
@@ -15,6 +15,8 @@ export declare enum ReqRespMethod {
15
15
  BeaconBlocksByRoot = "beacon_blocks_by_root",
16
16
  BlobSidecarsByRange = "blob_sidecars_by_range",
17
17
  BlobSidecarsByRoot = "blob_sidecars_by_root",
18
+ DataColumnSidecarsByRange = "data_column_sidecars_by_range",
19
+ DataColumnSidecarsByRoot = "data_column_sidecars_by_root",
18
20
  LightClientBootstrap = "light_client_bootstrap",
19
21
  LightClientUpdatesByRange = "light_client_updates_by_range",
20
22
  LightClientFinalityUpdate = "light_client_finality_update",
@@ -29,6 +31,8 @@ export type RequestBodyByMethod = {
29
31
  [ReqRespMethod.BeaconBlocksByRoot]: phase0.BeaconBlocksByRootRequest;
30
32
  [ReqRespMethod.BlobSidecarsByRange]: deneb.BlobSidecarsByRangeRequest;
31
33
  [ReqRespMethod.BlobSidecarsByRoot]: BlobSidecarsByRootRequest;
34
+ [ReqRespMethod.DataColumnSidecarsByRange]: fulu.DataColumnSidecarsByRangeRequest;
35
+ [ReqRespMethod.DataColumnSidecarsByRoot]: fulu.DataColumnSidecarsByRootRequest;
32
36
  [ReqRespMethod.LightClientBootstrap]: Root;
33
37
  [ReqRespMethod.LightClientUpdatesByRange]: altair.LightClientUpdatesByRange;
34
38
  [ReqRespMethod.LightClientFinalityUpdate]: null;
@@ -43,10 +47,12 @@ type ResponseBodyByMethod = {
43
47
  [ReqRespMethod.BeaconBlocksByRoot]: SignedBeaconBlock;
44
48
  [ReqRespMethod.BlobSidecarsByRange]: deneb.BlobSidecar;
45
49
  [ReqRespMethod.BlobSidecarsByRoot]: deneb.BlobSidecar;
46
- [ReqRespMethod.LightClientBootstrap]: LightClientBootstrap;
47
- [ReqRespMethod.LightClientUpdatesByRange]: LightClientUpdate;
48
- [ReqRespMethod.LightClientFinalityUpdate]: LightClientFinalityUpdate;
49
- [ReqRespMethod.LightClientOptimisticUpdate]: LightClientOptimisticUpdate;
50
+ [ReqRespMethod.DataColumnSidecarsByRange]: fulu.DataColumnSidecar;
51
+ [ReqRespMethod.DataColumnSidecarsByRoot]: fulu.DataColumnSidecar;
52
+ [ReqRespMethod.LightClientBootstrap]: altair.LightClientBootstrap;
53
+ [ReqRespMethod.LightClientUpdatesByRange]: altair.LightClientUpdate;
54
+ [ReqRespMethod.LightClientFinalityUpdate]: altair.LightClientFinalityUpdate;
55
+ [ReqRespMethod.LightClientOptimisticUpdate]: altair.LightClientOptimisticUpdate;
50
56
  };
51
57
  /** Request SSZ type for each method and ForkName */
52
58
  export declare const requestSszTypeByMethod: (fork: ForkName, config: BeaconConfig) => {
@@ -64,7 +70,8 @@ export type RequestTypedContainer = {
64
70
  }[ReqRespMethod];
65
71
  export declare enum Version {
66
72
  V1 = 1,
67
- V2 = 2
73
+ V2 = 2,
74
+ V3 = 3
68
75
  }
69
76
  export type OutgoingRequestArgs = {
70
77
  peerId: string;
@@ -1,5 +1,5 @@
1
1
  import { isForkPostAltair } from "@lodestar/params";
2
- import { ssz, sszTypesFor, } from "@lodestar/types";
2
+ import { ssz, sszTypesFor } from "@lodestar/types";
3
3
  import { BlobSidecarsByRootRequestType } from "../../util/types.js";
4
4
  /** ReqResp protocol names or methods. Each ReqRespMethod can have multiple versions and encodings */
5
5
  export var ReqRespMethod;
@@ -13,6 +13,8 @@ export var ReqRespMethod;
13
13
  ReqRespMethod["BeaconBlocksByRoot"] = "beacon_blocks_by_root";
14
14
  ReqRespMethod["BlobSidecarsByRange"] = "blob_sidecars_by_range";
15
15
  ReqRespMethod["BlobSidecarsByRoot"] = "blob_sidecars_by_root";
16
+ ReqRespMethod["DataColumnSidecarsByRange"] = "data_column_sidecars_by_range";
17
+ ReqRespMethod["DataColumnSidecarsByRoot"] = "data_column_sidecars_by_root";
16
18
  ReqRespMethod["LightClientBootstrap"] = "light_client_bootstrap";
17
19
  ReqRespMethod["LightClientUpdatesByRange"] = "light_client_updates_by_range";
18
20
  ReqRespMethod["LightClientFinalityUpdate"] = "light_client_finality_update";
@@ -28,6 +30,8 @@ export const requestSszTypeByMethod = (fork, config) => ({
28
30
  [ReqRespMethod.BeaconBlocksByRoot]: ssz.phase0.BeaconBlocksByRootRequest,
29
31
  [ReqRespMethod.BlobSidecarsByRange]: ssz.deneb.BlobSidecarsByRangeRequest,
30
32
  [ReqRespMethod.BlobSidecarsByRoot]: BlobSidecarsByRootRequestType(fork, config),
33
+ [ReqRespMethod.DataColumnSidecarsByRange]: ssz.fulu.DataColumnSidecarsByRangeRequest,
34
+ [ReqRespMethod.DataColumnSidecarsByRoot]: ssz.fulu.DataColumnSidecarsByRootRequest,
31
35
  [ReqRespMethod.LightClientBootstrap]: ssz.Root,
32
36
  [ReqRespMethod.LightClientUpdatesByRange]: ssz.altair.LightClientUpdatesByRange,
33
37
  [ReqRespMethod.LightClientFinalityUpdate]: null,
@@ -43,7 +47,7 @@ export const responseSszTypeByMethod = {
43
47
  [ReqRespMethod.Status]: () => ssz.phase0.Status,
44
48
  [ReqRespMethod.Goodbye]: () => ssz.phase0.Goodbye,
45
49
  [ReqRespMethod.Ping]: () => ssz.phase0.Ping,
46
- [ReqRespMethod.Metadata]: (_, version) => (version === Version.V1 ? ssz.phase0.Metadata : ssz.altair.Metadata),
50
+ [ReqRespMethod.Metadata]: (_, version) => version === Version.V1 ? ssz.phase0.Metadata : version === Version.V2 ? ssz.altair.Metadata : ssz.fulu.Metadata,
47
51
  [ReqRespMethod.BeaconBlocksByRange]: blocksResponseType,
48
52
  [ReqRespMethod.BeaconBlocksByRoot]: blocksResponseType,
49
53
  [ReqRespMethod.BlobSidecarsByRange]: () => ssz.deneb.BlobSidecar,
@@ -51,6 +55,8 @@ export const responseSszTypeByMethod = {
51
55
  [ReqRespMethod.LightClientBootstrap]: (fork) => sszTypesFor(onlyPostAltairFork(fork)).LightClientBootstrap,
52
56
  [ReqRespMethod.LightClientUpdatesByRange]: (fork) => sszTypesFor(onlyPostAltairFork(fork)).LightClientUpdate,
53
57
  [ReqRespMethod.LightClientFinalityUpdate]: (fork) => sszTypesFor(onlyPostAltairFork(fork)).LightClientFinalityUpdate,
58
+ [ReqRespMethod.DataColumnSidecarsByRange]: () => ssz.fulu.DataColumnSidecar,
59
+ [ReqRespMethod.DataColumnSidecarsByRoot]: () => ssz.fulu.DataColumnSidecar,
54
60
  [ReqRespMethod.LightClientOptimisticUpdate]: (fork) => sszTypesFor(onlyPostAltairFork(fork)).LightClientOptimisticUpdate,
55
61
  };
56
62
  function onlyPostAltairFork(fork) {
@@ -63,5 +69,6 @@ export var Version;
63
69
  (function (Version) {
64
70
  Version[Version["V1"] = 1] = "V1";
65
71
  Version[Version["V2"] = 2] = "V2";
72
+ Version[Version["V3"] = 3] = "V3";
66
73
  })(Version || (Version = {}));
67
74
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/network/reqresp/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/network/reqresp/types.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { BeaconConfig } from "@lodestar/config";
2
+ import { ForkName } from "@lodestar/params";
2
3
  import { Slot, SubnetID } from "@lodestar/types";
3
4
  import { Logger } from "@lodestar/utils";
4
5
  import { IClock } from "../../util/clock.js";
5
6
  import { NetworkCoreMetrics } from "../core/metrics.js";
6
- import { SubscribeBoundary } from "../core/types.js";
7
7
  import { MetadataController } from "../metadata.js";
8
8
  import { RequestedSubnet } from "../peers/utils/index.js";
9
9
  import { CommitteeSubscription, GossipSubscriber, IAttnetsService, NodeId, SubnetsServiceOpts } from "./interface.js";
@@ -61,12 +61,12 @@ export declare class AttnetsService implements IAttnetsService {
61
61
  * TODO-dll: clarify how many epochs before the fork we should subscribe to the new fork
62
62
  * Call ONLY ONCE: Two epoch before the fork, re-subscribe all existing random subscriptions to the new fork
63
63
  **/
64
- subscribeSubnetsAfterBoundary(boundary: SubscribeBoundary): void;
64
+ subscribeSubnetsToNextFork(nextFork: ForkName): void;
65
65
  /**
66
66
  * TODO-dll: clarify how many epochs after the fork we should unsubscribe to the new fork
67
67
  * Call ONLY ONCE: Two epochs after the fork, un-subscribe all subnets from the old fork
68
68
  **/
69
- unsubscribeSubnetsBeforeBoundary(boundary: SubscribeBoundary): void;
69
+ unsubscribeSubnetsFromPrevFork(prevFork: ForkName): void;
70
70
  /**
71
71
  * Run per slot.
72
72
  * - Subscribe to gossip subnets 2 slots in advance