@lodestar/beacon-node 1.43.0-dev.ca1fc40294 → 1.43.0-dev.dfb984e779
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.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +3 -2
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/lodestar/index.js +1 -1
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +6 -3
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +26 -14
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +73 -77
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
- package/lib/chain/blocks/index.d.ts +5 -3
- package/lib/chain/blocks/index.d.ts.map +1 -1
- package/lib/chain/blocks/index.js +28 -10
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.js +2 -2
- package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +14 -20
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/utils/chainSegment.d.ts +23 -2
- package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
- package/lib/chain/blocks/utils/chainSegment.js +81 -12
- package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts +3 -2
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +30 -5
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.js +15 -4
- package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +24 -0
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -0
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +76 -0
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -0
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +1 -1
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -1
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +2 -11
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +3 -2
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +14 -3
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/errors/blockError.d.ts +8 -1
- package/lib/chain/errors/blockError.d.ts.map +1 -1
- package/lib/chain/errors/blockError.js +2 -0
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/errors/executionPayloadBid.d.ts +5 -0
- package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadBid.js +1 -0
- package/lib/chain/errors/executionPayloadBid.js.map +1 -1
- package/lib/chain/errors/executionPayloadEnvelope.d.ts +5 -0
- package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
- package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/forkChoice/index.js +2 -2
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/interface.d.ts +3 -2
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +30 -10
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +34 -13
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +11 -4
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +20 -18
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
- package/lib/chain/validation/block.d.ts.map +1 -1
- package/lib/chain/validation/block.js +1 -0
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +13 -1
- package/lib/chain/validation/executionPayloadBid.js.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.js +11 -1
- package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +1 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +4 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +4 -6
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +14 -6
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +11 -5
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +17 -5
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +7 -4
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
- package/lib/node/notifier.js +7 -1
- package/lib/node/notifier.js.map +1 -1
- package/lib/sync/range/batch.d.ts +12 -2
- package/lib/sync/range/batch.d.ts.map +1 -1
- package/lib/sync/range/batch.js +56 -30
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +6 -2
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +4 -3
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.d.ts.map +1 -1
- package/lib/sync/range/range.js +17 -6
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/types.d.ts +34 -0
- package/lib/sync/types.d.ts.map +1 -1
- package/lib/sync/types.js +34 -0
- package/lib/sync/types.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +24 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +649 -53
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +46 -10
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +147 -24
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRoot.js +6 -2
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts +0 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -1
- package/lib/sync/utils/pendingBlocksTree.js +0 -9
- package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
- package/package.json +16 -15
- package/src/api/impl/beacon/blocks/index.ts +5 -2
- package/src/api/impl/lodestar/index.ts +1 -1
- package/src/chain/blocks/importBlock.ts +4 -2
- package/src/chain/blocks/importExecutionPayload.ts +92 -97
- package/src/chain/blocks/index.ts +44 -13
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +2 -2
- package/src/chain/blocks/types.ts +14 -25
- package/src/chain/blocks/utils/chainSegment.ts +106 -17
- package/src/chain/blocks/verifyBlock.ts +35 -6
- package/src/chain/blocks/verifyBlocksSanityChecks.ts +16 -7
- package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +129 -0
- package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +9 -18
- package/src/chain/chain.ts +23 -3
- package/src/chain/errors/blockError.ts +4 -1
- package/src/chain/errors/executionPayloadBid.ts +6 -0
- package/src/chain/errors/executionPayloadEnvelope.ts +6 -0
- package/src/chain/forkChoice/index.ts +2 -2
- package/src/chain/interface.ts +7 -1
- package/src/chain/prepareNextSlot.ts +42 -12
- package/src/chain/produceBlock/produceBlockBody.ts +37 -11
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +22 -20
- package/src/chain/validation/block.ts +1 -0
- package/src/chain/validation/executionPayloadBid.ts +14 -0
- package/src/chain/validation/executionPayloadEnvelope.ts +12 -2
- package/src/metrics/metrics/lodestar.ts +4 -0
- package/src/network/processor/gossipHandlers.ts +6 -6
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +14 -6
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +11 -5
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +17 -5
- package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +7 -4
- package/src/node/notifier.ts +8 -1
- package/src/sync/range/batch.ts +90 -35
- package/src/sync/range/chain.ts +13 -5
- package/src/sync/range/range.ts +18 -6
- package/src/sync/types.ts +72 -0
- package/src/sync/unknownBlock.ts +810 -57
- package/src/sync/utils/downloadByRange.ts +256 -39
- package/src/sync/utils/downloadByRoot.ts +12 -2
- package/src/sync/utils/pendingBlocksTree.ts +0 -15
|
@@ -10,6 +10,10 @@ export async function* onBeaconBlocksByRange(request, chain, db, peerId, peerCli
|
|
|
10
10
|
// in the case of initializing from a non-finalized state, we don't have the finalized block so this api does not work
|
|
11
11
|
// chain.forkChoice.getFinalizeBlock().slot
|
|
12
12
|
const finalizedSlot = chain.forkChoice.getFinalizedCheckpointSlot();
|
|
13
|
+
// Blocks are migrated to blockArchive at finalization (including the finalized block itself),
|
|
14
|
+
// so the archive loop serves up to AND INCLUDING finalizedSlot and the headChain loop
|
|
15
|
+
// starts above it to avoid duplicate yields. See archiveBlocks.ts for the migration logic.
|
|
16
|
+
const archiveMaxSlot = finalizedSlot;
|
|
13
17
|
const forkName = chain.config.getForkName(startSlot);
|
|
14
18
|
if (isForkPostFulu(forkName) && startSlot < chain.earliestAvailableSlot) {
|
|
15
19
|
chain.logger.verbose("Peer did not respect earliestAvailableSlot for BeaconBlocksByRange", {
|
|
@@ -19,9 +23,12 @@ export async function* onBeaconBlocksByRange(request, chain, db, peerId, peerCli
|
|
|
19
23
|
return;
|
|
20
24
|
}
|
|
21
25
|
// Finalized range of blocks
|
|
22
|
-
if (startSlot <=
|
|
26
|
+
if (startSlot <= archiveMaxSlot) {
|
|
23
27
|
// Chain of blobs won't change
|
|
24
|
-
for await (const { key, value } of finalized.binaryEntriesStream({
|
|
28
|
+
for await (const { key, value } of finalized.binaryEntriesStream({
|
|
29
|
+
gte: startSlot,
|
|
30
|
+
lt: Math.min(endSlot, archiveMaxSlot + 1),
|
|
31
|
+
})) {
|
|
25
32
|
yield {
|
|
26
33
|
data: value,
|
|
27
34
|
boundary: chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(finalized.decodeKey(key))),
|
|
@@ -29,17 +36,18 @@ export async function* onBeaconBlocksByRange(request, chain, db, peerId, peerCli
|
|
|
29
36
|
}
|
|
30
37
|
}
|
|
31
38
|
// Non-finalized range of blocks
|
|
32
|
-
if (endSlot >
|
|
39
|
+
if (endSlot > archiveMaxSlot) {
|
|
33
40
|
const headBlock = chain.forkChoice.getHead();
|
|
34
41
|
const headRoot = headBlock.blockRoot;
|
|
35
42
|
// TODO DENEB: forkChoice should mantain an array of canonical blocks, and change only on reorg
|
|
36
43
|
const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot, headBlock.payloadStatus);
|
|
37
|
-
// getAllAncestorBlocks
|
|
44
|
+
// `getAllAncestorBlocks` includes both the head and the previous-finalized boundary.
|
|
38
45
|
// Iterate head chain with ascending block numbers
|
|
39
46
|
for (let i = headChain.length - 1; i >= 0; i--) {
|
|
40
47
|
const block = headChain[i];
|
|
41
|
-
// Must include only blocks in the range requested
|
|
42
|
-
|
|
48
|
+
// Must include only blocks in the range requested, and skip anything the archive loop
|
|
49
|
+
// above already served via the block.slot > archiveMaxSlot filter.
|
|
50
|
+
if (block.slot > archiveMaxSlot && block.slot >= startSlot && block.slot < endSlot) {
|
|
43
51
|
// Note: Here the forkChoice head may change due to a re-org, so the headChain reflects the canonical chain
|
|
44
52
|
// at the time of the start of the request. Spec is clear the chain of blobs must be consistent, but on
|
|
45
53
|
// re-org there's no need to abort the request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beaconBlocksByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRange.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAI9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAEhD,kBAAkB;AAElB,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC1C,OAA0C,EAC1C,KAAmB,EACnB,EAAa,EACb,MAAc,EACd,UAAkB,EACe;IACjC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAC,GAAG,kCAAkC,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;IAElC,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC;IAClC,sHAAsH;IACtH,2CAA2C;IAC3C,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"beaconBlocksByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/beaconBlocksByRange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobSidecarsByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAG/C,wBAAuB,qBAAqB,CAC1C,OAAO,EAAE,KAAK,CAAC,0BAA0B,EACzC,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,GACZ,aAAa,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"blobSidecarsByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAG/C,wBAAuB,qBAAqB,CAC1C,OAAO,EAAE,KAAK,CAAC,0BAA0B,EACzC,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,GACZ,aAAa,CAAC,gBAAgB,CAAC,CA0DjC;AAED,wBAAiB,2BAA2B,CAC1C,KAAK,EAAE,YAAY,EACnB,wBAAwB,EAAE,UAAU,EACpC,SAAS,EAAE,IAAI,GACd,QAAQ,CAAC,gBAAgB,CAAC,CAoB5B;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,KAAK,EACnB,OAAO,EAAE,KAAK,CAAC,0BAA0B,GACxC,KAAK,CAAC,0BAA0B,CA4BlC"}
|
|
@@ -10,27 +10,33 @@ export async function* onBlobSidecarsByRange(request, chain, db) {
|
|
|
10
10
|
const finalized = db.blobSidecarsArchive;
|
|
11
11
|
const unfinalized = db.blobSidecars;
|
|
12
12
|
const finalizedSlot = chain.forkChoice.getFinalizedBlock().slot;
|
|
13
|
+
// Blobs are migrated to blobSidecarsArchive at finalization (including the finalized block
|
|
14
|
+
// itself), so the archive loop serves up to AND INCLUDING finalizedSlot and the headChain
|
|
15
|
+
// loop starts above it to avoid duplicate yields. See archiveBlocks.ts for the migration logic.
|
|
16
|
+
const archiveMaxSlot = finalizedSlot;
|
|
13
17
|
// Finalized range of blobs
|
|
14
|
-
if (startSlot <=
|
|
18
|
+
if (startSlot <= archiveMaxSlot) {
|
|
15
19
|
// Chain of blobs won't change
|
|
16
20
|
for await (const { key, value: blobSideCarsBytesWrapped } of finalized.binaryEntriesStream({
|
|
17
21
|
gte: startSlot,
|
|
18
|
-
lt: endSlot,
|
|
22
|
+
lt: Math.min(endSlot, archiveMaxSlot + 1),
|
|
19
23
|
})) {
|
|
20
24
|
yield* iterateBlobBytesFromWrapper(chain, blobSideCarsBytesWrapped, finalized.decodeKey(key));
|
|
21
25
|
}
|
|
22
26
|
}
|
|
23
27
|
// Non-finalized range of blobs
|
|
24
|
-
if (endSlot >
|
|
28
|
+
if (endSlot > archiveMaxSlot) {
|
|
25
29
|
const headBlock = chain.forkChoice.getHead();
|
|
26
30
|
const headRoot = headBlock.blockRoot;
|
|
27
31
|
// TODO DENEB: forkChoice should mantain an array of canonical blocks, and change only on reorg
|
|
28
32
|
const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot, headBlock.payloadStatus);
|
|
33
|
+
// `getAllAncestorBlocks` includes both the head and the previous-finalized boundary.
|
|
29
34
|
// Iterate head chain with ascending block numbers
|
|
30
35
|
for (let i = headChain.length - 1; i >= 0; i--) {
|
|
31
36
|
const block = headChain[i];
|
|
32
|
-
// Must include only blobs in the range requested
|
|
33
|
-
|
|
37
|
+
// Must include only blobs in the range requested, and skip anything the archive loop
|
|
38
|
+
// above already served via the block.slot > archiveMaxSlot filter.
|
|
39
|
+
if (block.slot > archiveMaxSlot && block.slot >= startSlot && block.slot < endSlot) {
|
|
34
40
|
// Note: Here the forkChoice head may change due to a re-org, so the headChain reflects the canonical chain
|
|
35
41
|
// at the time of the start of the request. Spec is clear the chain of blobs must be consistent, but on
|
|
36
42
|
// re-org there's no need to abort the request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRange.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACvE,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;AAGxC,OAAO,EAAC,8BAA8B,EAAC,MAAM,0CAA0C,CAAC;AAExF,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC1C,OAAyC,EACzC,KAAmB,EACnB,EAAa,EACoB;IACjC,+BAA+B;IAC/B,MAAM,EAAC,SAAS,EAAE,KAAK,EAAC,GAAG,kCAAkC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC/G,MAAM,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;IAElC,MAAM,SAAS,GAAG,EAAE,CAAC,mBAAmB,CAAC;IACzC,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC;IACpC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"blobSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/blobSidecarsByRange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumnSidecarsByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAc,KAAK,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAO/C,wBAAuB,2BAA2B,CAChD,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAC9C,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,aAAa,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"dataColumnSidecarsByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAc,KAAK,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAO/C,wBAAuB,2BAA2B,CAChD,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAC9C,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,aAAa,CAAC,gBAAgB,CAAC,CAoIjC;AAED,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,KAAK,EACnB,OAAO,EAAE,IAAI,CAAC,gCAAgC,GAC7C,IAAI,CAAC,gCAAgC,CA4BvC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GENESIS_SLOT } from "@lodestar/params";
|
|
1
|
+
import { ForkSeq, 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";
|
|
@@ -21,9 +21,18 @@ export async function* onDataColumnSidecarsByRange(request, chain, db, peerId, p
|
|
|
21
21
|
}
|
|
22
22
|
const finalized = db.dataColumnSidecarArchive;
|
|
23
23
|
const finalizedSlot = chain.forkChoice.getFinalizedBlock().slot;
|
|
24
|
+
// Columns of the last finalized block live in different DBs depending on fork:
|
|
25
|
+
// - Pre-gloas (fulu): migrated to dataColumnSidecarArchive in the same finalization run.
|
|
26
|
+
// - Post-gloas: stay in the hot db (db.dataColumnSidecar) until the next finalization run,
|
|
27
|
+
// because the migration filter requires payloadStatus === FULL for gloas blocks.
|
|
28
|
+
// archiveMaxSlot is the last slot whose columns are served by the archive loop below;
|
|
29
|
+
// anything above it is served by the headChain loop.
|
|
30
|
+
const isPostGloasFinalized = chain.config.getForkSeq(finalizedSlot) >= ForkSeq.gloas;
|
|
31
|
+
const archiveMaxSlot = isPostGloasFinalized ? finalizedSlot - 1 : finalizedSlot;
|
|
24
32
|
// Finalized range of columns
|
|
25
|
-
if (startSlot <=
|
|
26
|
-
|
|
33
|
+
if (startSlot <= archiveMaxSlot) {
|
|
34
|
+
const archiveEnd = Math.min(endSlot, archiveMaxSlot + 1);
|
|
35
|
+
for (let slot = startSlot; slot < archiveEnd; slot++) {
|
|
27
36
|
const dataColumnSidecars = await finalized.getManyBinary(slot, availableColumns);
|
|
28
37
|
const unavailableColumnIndices = [];
|
|
29
38
|
for (let i = 0; i < dataColumnSidecars.length; i++) {
|
|
@@ -54,15 +63,18 @@ export async function* onDataColumnSidecarsByRange(request, chain, db, peerId, p
|
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
65
|
// Non-finalized range of columns
|
|
57
|
-
if (endSlot >
|
|
66
|
+
if (endSlot > archiveMaxSlot) {
|
|
58
67
|
const headBlock = chain.forkChoice.getHead();
|
|
59
68
|
const headRoot = headBlock.blockRoot;
|
|
69
|
+
// getAllAncestorBlocks includes the last finalized block as its final element.
|
|
70
|
+
// Skip anything the archive loop above already served via the block.slot > archiveMaxSlot
|
|
71
|
+
// filter below (pre-gloas this skips finalizedSlot, post-gloas it keeps it).
|
|
60
72
|
const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot, headBlock.payloadStatus);
|
|
61
73
|
// Iterate head chain with ascending block numbers
|
|
62
74
|
for (let i = headChain.length - 1; i >= 0; i--) {
|
|
63
75
|
const block = headChain[i];
|
|
64
76
|
// Must include only columns in the range requested
|
|
65
|
-
if (block.slot >= startSlot && block.slot < endSlot) {
|
|
77
|
+
if (block.slot > archiveMaxSlot && block.slot >= startSlot && block.slot < endSlot) {
|
|
66
78
|
// Note: Here the forkChoice head may change due to a re-org, so the headChain reflects the canonical chain
|
|
67
79
|
// at the time of the start of the request. Spec is clear the chain of columns must be consistent, but on
|
|
68
80
|
// re-org there's no need to abort the request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumnSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRange.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"dataColumnSidecarsByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionPayloadEnvelopesByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,wBAAuB,kCAAkC,CACvD,OAAO,EAAE,KAAK,CAAC,uCAAuC,EACtD,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,GACZ,aAAa,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"executionPayloadEnvelopesByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,wBAAuB,kCAAkC,CACvD,OAAO,EAAE,KAAK,CAAC,uCAAuC,EACtD,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,GACZ,aAAa,CAAC,gBAAgB,CAAC,CA6DjC;AAED,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,KAAK,CAAC,uCAAuC,GACrD,KAAK,CAAC,uCAAuC,CAmB/C"}
|
|
@@ -10,11 +10,14 @@ export async function* onExecutionPayloadEnvelopesByRange(request, chain, db) {
|
|
|
10
10
|
}
|
|
11
11
|
const finalized = db.executionPayloadEnvelopeArchive;
|
|
12
12
|
const finalizedSlot = chain.forkChoice.getFinalizedCheckpointSlot();
|
|
13
|
+
// The current finalized block's envelope is still in the hot db; archive migration happens
|
|
14
|
+
// in the next finalization run (see migrateExecutionPayloadEnvelopesFromHotToColdDb).
|
|
15
|
+
const archiveMaxSlot = finalizedSlot - 1;
|
|
13
16
|
// Finalized range of envelopes
|
|
14
|
-
if (startSlot <=
|
|
17
|
+
if (startSlot <= archiveMaxSlot) {
|
|
15
18
|
for await (const { key, value: envelopeBytes } of finalized.binaryEntriesStream({
|
|
16
19
|
gte: startSlot,
|
|
17
|
-
lt: endSlot,
|
|
20
|
+
lt: Math.min(endSlot, archiveMaxSlot + 1),
|
|
18
21
|
})) {
|
|
19
22
|
const slot = finalized.decodeKey(key);
|
|
20
23
|
yield {
|
|
@@ -24,14 +27,14 @@ export async function* onExecutionPayloadEnvelopesByRange(request, chain, db) {
|
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
29
|
// Non-finalized range of envelopes
|
|
27
|
-
if (endSlot >
|
|
30
|
+
if (endSlot > archiveMaxSlot) {
|
|
28
31
|
const headBlock = chain.forkChoice.getHead();
|
|
29
32
|
const headRoot = headBlock.blockRoot;
|
|
30
33
|
const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot, headBlock.payloadStatus);
|
|
31
34
|
// Iterate head chain with ascending block numbers
|
|
32
35
|
for (let i = headChain.length - 1; i >= 0; i--) {
|
|
33
36
|
const block = headChain[i];
|
|
34
|
-
if (block.slot >= startSlot && block.slot < endSlot) {
|
|
37
|
+
if (block.slot > archiveMaxSlot && block.slot >= startSlot && block.slot < endSlot) {
|
|
35
38
|
// Skip EMPTY blocks
|
|
36
39
|
if (block.payloadStatus !== PayloadStatus.FULL) {
|
|
37
40
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionPayloadEnvelopesByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,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;AAK9D,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,kCAAkC,CACvD,OAAsD,EACtD,KAAmB,EACnB,EAAa,EACoB;IACjC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAC,GAAG,+CAA+C,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClG,MAAM,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;IAElC,IAAI,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,+BAA+B,CAAC;IACrD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"executionPayloadEnvelopesByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts"],"names":[],"mappings":"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"}
|
package/lib/node/notifier.js
CHANGED
|
@@ -125,7 +125,13 @@ function getHeadExecutionInfo(config, clockEpoch, headState, headInfo) {
|
|
|
125
125
|
if (clockEpoch < config.BELLATRIX_FORK_EPOCH) {
|
|
126
126
|
return [];
|
|
127
127
|
}
|
|
128
|
-
|
|
128
|
+
// A PayloadSeparated head is a gloas beacon block imported before its payload envelope
|
|
129
|
+
// arrives, in that case the exec-block row surfaces the inherited parent anchor (from the
|
|
130
|
+
// bid), which is already validated. Normalize to "valid" to avoid leaking internal
|
|
131
|
+
// fork-choice bookkeeping into the log. Once the payload envelope arrives and the FULL
|
|
132
|
+
// variant becomes head, executionStatus is Valid/Syncing naturally.
|
|
133
|
+
// TODO GLOAS: revisit once optimistic sync is implemented
|
|
134
|
+
const executionStatusStr = headInfo.executionStatus === ExecutionStatus.PayloadSeparated ? "valid" : headInfo.executionStatus.toLowerCase();
|
|
129
135
|
// Add execution status to notifier only if head is on/post bellatrix
|
|
130
136
|
if (isStatePostBellatrix(headState) && headState.isExecutionStateType) {
|
|
131
137
|
if (headState.isMergeTransitionComplete) {
|
package/lib/node/notifier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifier.js","sourceRoot":"","sources":["../../src/node/notifier.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"notifier.js","sourceRoot":"","sources":["../../src/node/notifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { ForkName } from "@lodestar/params";
|
|
|
3
3
|
import { Epoch, RootHex, Slot } from "@lodestar/types";
|
|
4
4
|
import { LodestarError } from "@lodestar/utils";
|
|
5
5
|
import { IBlockInput } from "../../chain/blocks/blockInput/types.js";
|
|
6
|
+
import { PayloadEnvelopeInput } from "../../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
|
|
6
7
|
import { PeerSyncMeta } from "../../network/peers/peersData.js";
|
|
7
8
|
import { IClock } from "../../util/clock.js";
|
|
8
9
|
import { CustodyConfig } from "../../util/dataColumns.js";
|
|
@@ -38,22 +39,27 @@ export type Attempt = {
|
|
|
38
39
|
export type AwaitingDownloadState = {
|
|
39
40
|
status: BatchStatus.AwaitingDownload;
|
|
40
41
|
blocks: IBlockInput[];
|
|
42
|
+
payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
|
|
41
43
|
};
|
|
42
44
|
export type DownloadSuccessState = {
|
|
43
45
|
status: BatchStatus.AwaitingProcessing;
|
|
44
46
|
blocks: IBlockInput[];
|
|
47
|
+
payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
|
|
45
48
|
};
|
|
46
49
|
export type BatchState = AwaitingDownloadState | {
|
|
47
50
|
status: BatchStatus.Downloading;
|
|
48
51
|
peer: PeerIdStr;
|
|
49
52
|
blocks: IBlockInput[];
|
|
53
|
+
payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
|
|
50
54
|
} | DownloadSuccessState | {
|
|
51
55
|
status: BatchStatus.Processing;
|
|
52
56
|
blocks: IBlockInput[];
|
|
57
|
+
payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
|
|
53
58
|
attempt: Attempt;
|
|
54
59
|
} | {
|
|
55
60
|
status: BatchStatus.AwaitingValidation;
|
|
56
61
|
blocks: IBlockInput[];
|
|
62
|
+
payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
|
|
57
63
|
attempt: Attempt;
|
|
58
64
|
};
|
|
59
65
|
export type BatchMetadata = {
|
|
@@ -106,6 +112,7 @@ export declare class Batch {
|
|
|
106
112
|
getFailedPeers(): PeerIdStr[];
|
|
107
113
|
getMetadata(): BatchMetadata;
|
|
108
114
|
getBlocks(): IBlockInput[];
|
|
115
|
+
getPayloadEnvelopes(): Map<Slot, PayloadEnvelopeInput> | null;
|
|
109
116
|
/**
|
|
110
117
|
* AwaitingDownload -> Downloading
|
|
111
118
|
*/
|
|
@@ -113,7 +120,7 @@ export declare class Batch {
|
|
|
113
120
|
/**
|
|
114
121
|
* Downloading -> AwaitingProcessing
|
|
115
122
|
*/
|
|
116
|
-
downloadingSuccess(peer: PeerIdStr, blocks: IBlockInput[]): DownloadSuccessState;
|
|
123
|
+
downloadingSuccess(peer: PeerIdStr, blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null): DownloadSuccessState;
|
|
117
124
|
/**
|
|
118
125
|
* Downloading -> AwaitingDownload
|
|
119
126
|
*/
|
|
@@ -121,7 +128,10 @@ export declare class Batch {
|
|
|
121
128
|
/**
|
|
122
129
|
* AwaitingProcessing -> Processing
|
|
123
130
|
*/
|
|
124
|
-
startProcessing():
|
|
131
|
+
startProcessing(): {
|
|
132
|
+
blocks: IBlockInput[];
|
|
133
|
+
payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
|
|
134
|
+
};
|
|
125
135
|
/**
|
|
126
136
|
* Processing -> AwaitingValidation
|
|
127
137
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"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"}
|
package/lib/sync/range/batch.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isForkPostDeneb, isForkPostFulu } from "@lodestar/params";
|
|
1
|
+
import { isForkPostDeneb, isForkPostFulu, isForkPostGloas } from "@lodestar/params";
|
|
2
2
|
import { LodestarError } from "@lodestar/utils";
|
|
3
3
|
import { isBlockInputColumns } from "../../chain/blocks/blockInput/blockInput.js";
|
|
4
4
|
import { isDaOutOfRange } from "../../chain/blocks/blockInput/utils.js";
|
|
@@ -47,7 +47,7 @@ export class Batch {
|
|
|
47
47
|
/** Block, blob and column requests that are used to determine the best peer and are used in downloadByRange */
|
|
48
48
|
requests;
|
|
49
49
|
/** State of the batch. */
|
|
50
|
-
state = { status: BatchStatus.AwaitingDownload, blocks: [] };
|
|
50
|
+
state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
|
|
51
51
|
/** Peers that provided good data */
|
|
52
52
|
goodPeers = [];
|
|
53
53
|
/** The `Attempts` that have been made and failed to send us this batch. */
|
|
@@ -82,34 +82,30 @@ export class Batch {
|
|
|
82
82
|
count: this.count,
|
|
83
83
|
step: 1,
|
|
84
84
|
};
|
|
85
|
+
const requests = { blocksRequest };
|
|
86
|
+
// Post-Gloas envelopes are required for block processing, independent of DA retention window.
|
|
87
|
+
if (isForkPostGloas(this.forkName)) {
|
|
88
|
+
requests.envelopesRequest = { startSlot: this.startSlot, count: this.count };
|
|
89
|
+
}
|
|
85
90
|
if (isForkPostFulu(this.forkName) && withinValidRequestWindow) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
count: this.count,
|
|
91
|
-
columns: this.custodyConfig.sampledColumns,
|
|
92
|
-
},
|
|
91
|
+
requests.columnsRequest = {
|
|
92
|
+
startSlot: this.startSlot,
|
|
93
|
+
count: this.count,
|
|
94
|
+
columns: this.custodyConfig.sampledColumns,
|
|
93
95
|
};
|
|
94
96
|
}
|
|
95
|
-
if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
|
|
96
|
-
|
|
97
|
-
blocksRequest,
|
|
98
|
-
blobsRequest: {
|
|
99
|
-
startSlot: this.startSlot,
|
|
100
|
-
count: this.count,
|
|
101
|
-
},
|
|
102
|
-
};
|
|
97
|
+
else if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
|
|
98
|
+
requests.blobsRequest = { startSlot: this.startSlot, count: this.count };
|
|
103
99
|
}
|
|
104
|
-
return
|
|
105
|
-
blocksRequest,
|
|
106
|
-
};
|
|
100
|
+
return requests;
|
|
107
101
|
}
|
|
108
102
|
// subsequent request where part of the epoch has already been downloaded. Need to figure out what is the beginning
|
|
109
103
|
// of the range where download needs to resume
|
|
110
104
|
let blockStartSlot = this.startSlot;
|
|
111
105
|
let dataStartSlot = this.startSlot;
|
|
106
|
+
let envelopeStartSlot = this.startSlot;
|
|
112
107
|
const neededColumns = new Set();
|
|
108
|
+
const envelopesBySlot = this.state.payloadEnvelopes ?? new Map();
|
|
113
109
|
// ensure blocks are in slot-wise order
|
|
114
110
|
for (const blockInput of blocks) {
|
|
115
111
|
const blockSlot = blockInput.slot;
|
|
@@ -126,6 +122,11 @@ export class Batch {
|
|
|
126
122
|
if (blockInput.hasBlock() && blockStartSlot === blockSlot) {
|
|
127
123
|
blockStartSlot = blockSlot + 1;
|
|
128
124
|
}
|
|
125
|
+
if (blockInput.hasBlock() &&
|
|
126
|
+
envelopeStartSlot === blockSlot &&
|
|
127
|
+
envelopesBySlot.get(blockSlot)?.hasPayloadEnvelope()) {
|
|
128
|
+
envelopeStartSlot = blockSlot + 1;
|
|
129
|
+
}
|
|
129
130
|
if (!blockInput.hasAllData()) {
|
|
130
131
|
if (isBlockInputColumns(blockInput)) {
|
|
131
132
|
for (const index of blockInput.getMissingSampledColumnMeta().missing) {
|
|
@@ -167,6 +168,12 @@ export class Batch {
|
|
|
167
168
|
}
|
|
168
169
|
// dataSlot will still have a value but do not create a request for preDeneb forks
|
|
169
170
|
}
|
|
171
|
+
if (isForkPostGloas(this.forkName) && envelopeStartSlot <= endSlot) {
|
|
172
|
+
requests.envelopesRequest = {
|
|
173
|
+
startSlot: envelopeStartSlot,
|
|
174
|
+
count: endSlot - envelopeStartSlot + 1,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
170
177
|
return requests;
|
|
171
178
|
}
|
|
172
179
|
/**
|
|
@@ -206,6 +213,9 @@ export class Batch {
|
|
|
206
213
|
getBlocks() {
|
|
207
214
|
return this.state.blocks;
|
|
208
215
|
}
|
|
216
|
+
getPayloadEnvelopes() {
|
|
217
|
+
return this.state.payloadEnvelopes;
|
|
218
|
+
}
|
|
209
219
|
/**
|
|
210
220
|
* AwaitingDownload -> Downloading
|
|
211
221
|
*/
|
|
@@ -213,12 +223,17 @@ export class Batch {
|
|
|
213
223
|
if (this.state.status !== BatchStatus.AwaitingDownload) {
|
|
214
224
|
throw new BatchError(this.wrongStatusErrorType(BatchStatus.AwaitingDownload));
|
|
215
225
|
}
|
|
216
|
-
this.state = {
|
|
226
|
+
this.state = {
|
|
227
|
+
status: BatchStatus.Downloading,
|
|
228
|
+
peer,
|
|
229
|
+
blocks: this.state.blocks,
|
|
230
|
+
payloadEnvelopes: this.state.payloadEnvelopes,
|
|
231
|
+
};
|
|
217
232
|
}
|
|
218
233
|
/**
|
|
219
234
|
* Downloading -> AwaitingProcessing
|
|
220
235
|
*/
|
|
221
|
-
downloadingSuccess(peer, blocks) {
|
|
236
|
+
downloadingSuccess(peer, blocks, payloadEnvelopes) {
|
|
222
237
|
if (this.state.status !== BatchStatus.Downloading) {
|
|
223
238
|
throw new BatchError(this.wrongStatusErrorType(BatchStatus.Downloading));
|
|
224
239
|
}
|
|
@@ -242,12 +257,13 @@ export class Batch {
|
|
|
242
257
|
status: this.state.status,
|
|
243
258
|
});
|
|
244
259
|
}
|
|
260
|
+
const newPayloadEnvelopes = payloadEnvelopes ?? this.state.payloadEnvelopes;
|
|
245
261
|
if (allComplete) {
|
|
246
|
-
this.state = { status: BatchStatus.AwaitingProcessing, blocks };
|
|
262
|
+
this.state = { status: BatchStatus.AwaitingProcessing, blocks, payloadEnvelopes: newPayloadEnvelopes };
|
|
247
263
|
}
|
|
248
264
|
else {
|
|
249
265
|
this.requests = this.getRequests(blocks);
|
|
250
|
-
this.state = { status: BatchStatus.AwaitingDownload, blocks };
|
|
266
|
+
this.state = { status: BatchStatus.AwaitingDownload, blocks, payloadEnvelopes: newPayloadEnvelopes };
|
|
251
267
|
}
|
|
252
268
|
return this.state;
|
|
253
269
|
}
|
|
@@ -262,7 +278,11 @@ export class Batch {
|
|
|
262
278
|
if (this.failedDownloadAttempts.length > MAX_BATCH_DOWNLOAD_ATTEMPTS) {
|
|
263
279
|
throw new BatchError(this.errorType({ code: BatchErrorCode.MAX_DOWNLOAD_ATTEMPTS }));
|
|
264
280
|
}
|
|
265
|
-
this.state = {
|
|
281
|
+
this.state = {
|
|
282
|
+
status: BatchStatus.AwaitingDownload,
|
|
283
|
+
blocks: this.state.blocks,
|
|
284
|
+
payloadEnvelopes: this.state.payloadEnvelopes,
|
|
285
|
+
};
|
|
266
286
|
}
|
|
267
287
|
/**
|
|
268
288
|
* AwaitingProcessing -> Processing
|
|
@@ -272,13 +292,14 @@ export class Batch {
|
|
|
272
292
|
throw new BatchError(this.wrongStatusErrorType(BatchStatus.AwaitingProcessing));
|
|
273
293
|
}
|
|
274
294
|
const blocks = this.state.blocks;
|
|
295
|
+
const payloadEnvelopes = this.state.payloadEnvelopes;
|
|
275
296
|
const hash = hashBlocks(blocks, this.config); // tracks blocks to report peer on processing error
|
|
276
297
|
// Reset goodPeers in case another download attempt needs to be made. When Attempt is successful or not the peers
|
|
277
298
|
// that the data came from will be handled by the Attempt that goes for processing
|
|
278
299
|
const peers = this.goodPeers;
|
|
279
300
|
this.goodPeers = [];
|
|
280
|
-
this.state = { status: BatchStatus.Processing, blocks, attempt: { peers, hash } };
|
|
281
|
-
return blocks;
|
|
301
|
+
this.state = { status: BatchStatus.Processing, blocks, payloadEnvelopes, attempt: { peers, hash } };
|
|
302
|
+
return { blocks, payloadEnvelopes };
|
|
282
303
|
}
|
|
283
304
|
/**
|
|
284
305
|
* Processing -> AwaitingValidation
|
|
@@ -287,7 +308,12 @@ export class Batch {
|
|
|
287
308
|
if (this.state.status !== BatchStatus.Processing) {
|
|
288
309
|
throw new BatchError(this.wrongStatusErrorType(BatchStatus.Processing));
|
|
289
310
|
}
|
|
290
|
-
this.state = {
|
|
311
|
+
this.state = {
|
|
312
|
+
status: BatchStatus.AwaitingValidation,
|
|
313
|
+
blocks: this.state.blocks,
|
|
314
|
+
payloadEnvelopes: this.state.payloadEnvelopes,
|
|
315
|
+
attempt: this.state.attempt,
|
|
316
|
+
};
|
|
291
317
|
}
|
|
292
318
|
/**
|
|
293
319
|
* Processing -> AwaitingDownload
|
|
@@ -333,7 +359,7 @@ export class Batch {
|
|
|
333
359
|
}
|
|
334
360
|
// remove any downloaded blocks and re-attempt
|
|
335
361
|
// TODO(fulu): need to remove the bad blocks from the SeenBlockInputCache
|
|
336
|
-
this.state = { status: BatchStatus.AwaitingDownload, blocks: [] };
|
|
362
|
+
this.state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
|
|
337
363
|
}
|
|
338
364
|
onProcessingError(attempt) {
|
|
339
365
|
this.failedProcessingAttempts.push(attempt);
|
|
@@ -342,7 +368,7 @@ export class Batch {
|
|
|
342
368
|
}
|
|
343
369
|
// remove any downloaded blocks and re-attempt
|
|
344
370
|
// TODO(fulu): need to remove the bad blocks from the SeenBlockInputCache
|
|
345
|
-
this.state = { status: BatchStatus.AwaitingDownload, blocks: [] };
|
|
371
|
+
this.state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
|
|
346
372
|
}
|
|
347
373
|
/** Helper to construct typed BatchError. Stack traces are correct as the error is thrown above */
|
|
348
374
|
errorType(type) {
|