@lodestar/beacon-node 1.36.0-dev.9dbc67b579 → 1.36.0-dev.9f2bb12ea7
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 +41 -22
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +5 -4
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts +17 -14
- package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.js +4 -0
- package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
- package/lib/chain/options.d.ts +0 -2
- package/lib/chain/options.d.ts.map +1 -1
- package/lib/chain/options.js +2 -2
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +16 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +31 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.js +32 -15
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/network/core/networkCore.d.ts.map +1 -1
- package/lib/network/core/networkCore.js +5 -1
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +6 -1
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/events.d.ts +1 -0
- package/lib/network/events.d.ts.map +1 -1
- package/lib/network/gossip/encoding.js +1 -1
- package/lib/network/gossip/encoding.js.map +1 -1
- package/lib/network/gossip/snappy_bun.d.ts +3 -0
- package/lib/network/gossip/snappy_bun.d.ts.map +1 -0
- package/lib/network/gossip/snappy_bun.js +3 -0
- package/lib/network/gossip/snappy_bun.js.map +1 -0
- package/lib/network/metadata.d.ts +1 -1
- package/lib/network/metadata.d.ts.map +1 -1
- package/lib/network/metadata.js +1 -0
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/options.d.ts +0 -1
- package/lib/network/options.d.ts.map +1 -1
- package/lib/network/options.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +1 -1
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +3 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +11 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +2 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +9 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +2 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +9 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/index.js +6 -6
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +1 -0
- package/lib/network/reqresp/types.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +58 -13
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +201 -82
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/util/blobs.d.ts +1 -1
- package/lib/util/blobs.d.ts.map +1 -1
- package/lib/util/blobs.js +53 -20
- package/lib/util/blobs.js.map +1 -1
- package/package.json +19 -14
- package/src/api/impl/beacon/blocks/index.ts +47 -25
- package/src/chain/chain.ts +5 -5
- package/src/chain/errors/dataColumnSidecarError.ts +20 -14
- package/src/chain/options.ts +2 -3
- package/src/chain/stateCache/persistentCheckpointsCache.ts +45 -2
- package/src/chain/validation/dataColumnSidecar.ts +34 -16
- package/src/network/core/networkCore.ts +5 -1
- package/src/network/core/networkCoreWorker.ts +7 -2
- package/src/network/core/networkCoreWorkerHandler.ts +1 -1
- package/src/network/events.ts +1 -1
- package/src/network/gossip/encoding.ts +1 -1
- package/src/network/gossip/snappy_bun.ts +2 -0
- package/src/network/metadata.ts +3 -1
- package/src/network/options.ts +0 -1
- package/src/network/processor/gossipHandlers.ts +1 -1
- package/src/network/reqresp/ReqRespBeaconNode.ts +3 -1
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +15 -2
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +13 -1
- package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +13 -1
- package/src/network/reqresp/handlers/index.ts +6 -6
- package/src/network/reqresp/types.ts +1 -0
- package/src/sync/utils/downloadByRange.ts +259 -103
- package/src/util/blobs.ts +64 -20
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { computeEpochAtSlot } from "@lodestar/state-transition";
|
|
2
2
|
import { toRootHex } from "@lodestar/utils";
|
|
3
|
+
import { prettyPrintPeerId } from "../../util.js";
|
|
3
4
|
import { handleColumnSidecarUnavailability, validateRequestedDataColumns, } from "../utils/dataColumnResponseValidation.js";
|
|
4
|
-
export async function* onDataColumnSidecarsByRoot(requestBody, chain, db) {
|
|
5
|
+
export async function* onDataColumnSidecarsByRoot(requestBody, chain, db, peerId, peerClient) {
|
|
5
6
|
// SPEC: minimum_request_epoch = max(current_epoch - MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, FULU_FORK_EPOCH)
|
|
6
7
|
const currentEpoch = chain.clock.currentEpoch;
|
|
7
8
|
const minimumRequestEpoch = Math.max(currentEpoch - chain.config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, chain.config.FULU_FORK_EPOCH);
|
|
@@ -19,6 +20,13 @@ export async function* onDataColumnSidecarsByRoot(requestBody, chain, db) {
|
|
|
19
20
|
// We haven't seen the block
|
|
20
21
|
continue;
|
|
21
22
|
}
|
|
23
|
+
if (slot < chain.earliestAvailableSlot) {
|
|
24
|
+
chain.logger.verbose("Peer did not respect earliestAvailableSlot for DataColumnSidecarsByRoot", {
|
|
25
|
+
peer: prettyPrintPeerId(peerId),
|
|
26
|
+
client: peerClient,
|
|
27
|
+
});
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
22
30
|
const requestedEpoch = computeEpochAtSlot(slot);
|
|
23
31
|
// SPEC: Clients MUST support requesting sidecars since minimum_request_epoch.
|
|
24
32
|
// If any root in the request content references a block earlier than minimum_request_epoch, peers MAY respond with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumnSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataColumnSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,9 @@ export function getReqRespHandlers({ db, chain }) {
|
|
|
26
26
|
[ReqRespMethod.Goodbye]: notImplemented(ReqRespMethod.Goodbye),
|
|
27
27
|
[ReqRespMethod.Ping]: notImplemented(ReqRespMethod.Ping),
|
|
28
28
|
[ReqRespMethod.Metadata]: notImplemented(ReqRespMethod.Metadata),
|
|
29
|
-
[ReqRespMethod.BeaconBlocksByRange]: (req) => {
|
|
29
|
+
[ReqRespMethod.BeaconBlocksByRange]: (req, peerId, peerClient) => {
|
|
30
30
|
const body = ssz.phase0.BeaconBlocksByRangeRequest.deserialize(req.data);
|
|
31
|
-
return onBeaconBlocksByRange(body, chain, db);
|
|
31
|
+
return onBeaconBlocksByRange(body, chain, db, peerId, peerClient);
|
|
32
32
|
},
|
|
33
33
|
[ReqRespMethod.BeaconBlocksByRoot]: (req) => {
|
|
34
34
|
const fork = chain.config.getForkName(chain.clock.currentSlot);
|
|
@@ -44,13 +44,13 @@ export function getReqRespHandlers({ db, chain }) {
|
|
|
44
44
|
const body = ssz.deneb.BlobSidecarsByRangeRequest.deserialize(req.data);
|
|
45
45
|
return onBlobSidecarsByRange(body, chain, db);
|
|
46
46
|
},
|
|
47
|
-
[ReqRespMethod.DataColumnSidecarsByRange]: (req) => {
|
|
47
|
+
[ReqRespMethod.DataColumnSidecarsByRange]: (req, peerId, peerClient) => {
|
|
48
48
|
const body = ssz.fulu.DataColumnSidecarsByRangeRequest.deserialize(req.data);
|
|
49
|
-
return onDataColumnSidecarsByRange(body, chain, db);
|
|
49
|
+
return onDataColumnSidecarsByRange(body, chain, db, peerId, peerClient);
|
|
50
50
|
},
|
|
51
|
-
[ReqRespMethod.DataColumnSidecarsByRoot]: (req) => {
|
|
51
|
+
[ReqRespMethod.DataColumnSidecarsByRoot]: (req, peerId, peerClient) => {
|
|
52
52
|
const body = DataColumnSidecarsByRootRequestType(chain.config).deserialize(req.data);
|
|
53
|
-
return onDataColumnSidecarsByRoot(body, chain, db);
|
|
53
|
+
return onDataColumnSidecarsByRoot(body, chain, db, peerId, peerClient);
|
|
54
54
|
},
|
|
55
55
|
[ReqRespMethod.LightClientBootstrap]: (req) => {
|
|
56
56
|
const body = ssz.Root.deserialize(req.data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAGpC,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,mCAAmC,GACpC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAsB,aAAa,EAAC,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAC,2BAA2B,EAAC,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAC,sBAAsB,EAAC,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAC,2BAA2B,EAAC,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAC,6BAA6B,EAAC,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAC,2BAA2B,EAAC,MAAM,gCAAgC,CAAC;AAE3E,SAAS,cAAc,CAAC,MAAqB;IAC3C,OAAO,GAAG,EAAE;QACV,MAAM,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAC,EAAE,EAAE,KAAK,EAAuC;IAClF,MAAM,QAAQ,GAA2C;QACvD,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC;QAC5D,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC;QAC9D,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC;QACxD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC;QAChE,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/network/reqresp/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/network/reqresp/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@ import { SeenBlockInput } from "../../chain/seenCache/seenGossipBlockInput.js";
|
|
|
6
6
|
import { INetwork } from "../../network/index.js";
|
|
7
7
|
import { PeerIdStr } from "../../util/peerId.js";
|
|
8
8
|
import { WarnResult } from "../../util/wrapError.js";
|
|
9
|
-
import { DownloadByRootErrorCode } from "./downloadByRoot.js";
|
|
10
9
|
export type DownloadByRangeRequests = {
|
|
11
10
|
blocksRequest?: phase0.BeaconBlocksByRangeRequest;
|
|
12
11
|
blobsRequest?: deneb.BlobSidecarsByRangeRequest;
|
|
@@ -76,7 +75,7 @@ export declare function validateResponses({ config, batchBlocks, blocksRequest,
|
|
|
76
75
|
* - must allow for skip slots
|
|
77
76
|
* - check is a chain of blocks where via parentRoot matches hashTreeRoot of block before
|
|
78
77
|
*/
|
|
79
|
-
export declare function validateBlockByRangeResponse(config: ChainForkConfig, blocksRequest: phase0.BeaconBlocksByRangeRequest, blocks: SignedBeaconBlock[]): ValidatedBlock[]
|
|
78
|
+
export declare function validateBlockByRangeResponse(config: ChainForkConfig, blocksRequest: phase0.BeaconBlocksByRangeRequest, blocks: SignedBeaconBlock[]): WarnResult<ValidatedBlock[], DownloadByRangeError>;
|
|
80
79
|
/**
|
|
81
80
|
* Should not be called directly. Only exported for unit testing purposes.
|
|
82
81
|
* This is used only in Deneb and Electra
|
|
@@ -84,8 +83,47 @@ export declare function validateBlockByRangeResponse(config: ChainForkConfig, bl
|
|
|
84
83
|
export declare function validateBlobsByRangeResponse(dataRequestBlocks: ValidatedBlock[], blobSidecars: deneb.BlobSidecars): Promise<ValidatedBlobSidecars[]>;
|
|
85
84
|
/**
|
|
86
85
|
* Should not be called directly. Only exported for unit testing purposes
|
|
86
|
+
*
|
|
87
|
+
* Spec states:
|
|
88
|
+
* 1) must be within range [start_slot, start_slot + count]
|
|
89
|
+
* 2) should respond with all columns in the range or and 3:ResourceUnavailable (and potentially get down-scored)
|
|
90
|
+
* 3) must response with at least the sidecars of the first blob-carrying block that exists in the range
|
|
91
|
+
* 4) must include all sidecars from each block from which there are blobs
|
|
92
|
+
* 5) where they exists, sidecars must be sent in (slot, index) order
|
|
93
|
+
* 6) clients may limit the number of sidecars in a response
|
|
94
|
+
* 7) clients may stop responding mid-response if their view of fork-choice changes
|
|
95
|
+
*
|
|
96
|
+
* We will interpret the spec as follows
|
|
97
|
+
* - Errors when validating: 1, 3, 5
|
|
98
|
+
* - Warnings when validating: 2, 4, 6, 7
|
|
99
|
+
*
|
|
100
|
+
* For "warning" cases, where we get a partial response but sidecars are validated and correct with respect to the
|
|
101
|
+
* blocks, then they will be kept. This loosening of the spec is to help ensure sync goes smoothly and we can find
|
|
102
|
+
* the data needed in difficult network situations.
|
|
103
|
+
*
|
|
104
|
+
* Assume for the following two examples we request indices 5, 10, 15 for a range of slots 32-63
|
|
105
|
+
*
|
|
106
|
+
* For slots where we receive no sidecars, example slot 45, but blobs exist we will stop validating subsequent
|
|
107
|
+
* slots, 45-63. The next round of requests will get structured to pull the from the slot that had columns
|
|
108
|
+
* missing to the end of the range for all columns indices that were requested for the current partially failed
|
|
109
|
+
* request (slots 45-63 and indices 5, 10, 15).
|
|
110
|
+
*
|
|
111
|
+
* For slots where only some of the requested sidecars are received we will proceed with validation. For simplicity sake
|
|
112
|
+
* we will assume that if we only get some indices back for a (or several) slot(s) that the indices we get will be
|
|
113
|
+
* consistent. IE if a peer returns only index 5, they will most likely return that same index for subsequent slot
|
|
114
|
+
* (index 5 for slots 34, 35, 36, etc). They will not likely return 5 on slot 34, 10 on slot 35, 15 on slot 36, etc.
|
|
115
|
+
* This assumption makes the code simpler. For both cases the request for the next round will be structured correctly
|
|
116
|
+
* to pull any missing column indices for whatever range remains. The simplification just leads to re-verification
|
|
117
|
+
* of the columns but the number of columns downloaded will be the same regardless of if they are validated twice.
|
|
118
|
+
*
|
|
119
|
+
* validateColumnsByRangeResponse makes some assumptions about the data being passed in
|
|
120
|
+
* blocks are:
|
|
121
|
+
* - slotwise in order
|
|
122
|
+
* - form a chain
|
|
123
|
+
* - non-sparse response (any missing block is a skipped slot not a bad response)
|
|
124
|
+
* - last block is last slot received
|
|
87
125
|
*/
|
|
88
|
-
export declare function validateColumnsByRangeResponse(request: fulu.DataColumnSidecarsByRangeRequest,
|
|
126
|
+
export declare function validateColumnsByRangeResponse(config: ChainForkConfig, request: fulu.DataColumnSidecarsByRangeRequest, blocks: ValidatedBlock[], columnSidecars: fulu.DataColumnSidecars): Promise<WarnResult<ValidatedColumnSidecars[], DownloadByRangeError>>;
|
|
89
127
|
/**
|
|
90
128
|
* Given a data request, return only the blocks and roots that correspond to the data request (sorted). Assumes that
|
|
91
129
|
* cached have slots that are all before the current batch of downloaded blocks
|
|
@@ -95,7 +133,7 @@ export declare function getBlocksForDataValidation(dataRequest: {
|
|
|
95
133
|
count: number;
|
|
96
134
|
}, cached: IBlockInput[] | undefined, current: ValidatedBlock[] | undefined): ValidatedBlock[];
|
|
97
135
|
export declare enum DownloadByRangeErrorCode {
|
|
98
|
-
|
|
136
|
+
MISSING_BLOCKS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_BLOCK_RESPONSE",
|
|
99
137
|
MISSING_BLOBS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_BLOBS_RESPONSE",
|
|
100
138
|
MISSING_COLUMNS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_COLUMNS_RESPONSE",
|
|
101
139
|
/** Error at the reqresp layer */
|
|
@@ -110,26 +148,29 @@ export declare enum DownloadByRangeErrorCode {
|
|
|
110
148
|
MISSING_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_MISSING_COLUMNS",
|
|
111
149
|
OVER_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_OVER_COLUMNS",
|
|
112
150
|
EXTRA_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_EXTRA_COLUMNS",
|
|
151
|
+
NO_COLUMNS_FOR_BLOCK = "DOWNLOAD_BY_RANGE_ERROR_NO_COLUMNS_FOR_BLOCK",
|
|
152
|
+
DUPLICATE_COLUMN = "DOWNLOAD_BY_RANGE_ERROR_DUPLICATE_COLUMN",
|
|
153
|
+
OUT_OF_ORDER_COLUMNS = "DOWNLOAD_BY_RANGE_OUT_OF_ORDER_COLUMNS",
|
|
113
154
|
/** Cached block input type mismatches new data */
|
|
155
|
+
MISMATCH_BLOCK_FORK = "DOWNLOAD_BY_RANGE_ERROR_MISMATCH_BLOCK_FORK",
|
|
114
156
|
MISMATCH_BLOCK_INPUT_TYPE = "DOWNLOAD_BY_RANGE_ERROR_MISMATCH_BLOCK_INPUT_TYPE"
|
|
115
157
|
}
|
|
116
158
|
export type DownloadByRangeErrorType = {
|
|
117
|
-
code:
|
|
118
|
-
expectedCount: number;
|
|
119
|
-
} | {
|
|
120
|
-
code: DownloadByRangeErrorCode.MISSING_BLOCKS | DownloadByRangeErrorCode.MISSING_BLOBS_RESPONSE | DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE;
|
|
159
|
+
code: DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE | DownloadByRangeErrorCode.MISSING_BLOBS_RESPONSE | DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE;
|
|
121
160
|
blockStartSlot?: number;
|
|
122
161
|
blockCount?: number;
|
|
123
162
|
blobStartSlot?: number;
|
|
124
163
|
blobCount?: number;
|
|
125
164
|
columnStartSlot?: number;
|
|
126
165
|
columnCount?: number;
|
|
127
|
-
} | {
|
|
128
|
-
code: DownloadByRootErrorCode.MISSING_BLOCK_RESPONSE;
|
|
129
|
-
expectedCount: number;
|
|
130
166
|
} | {
|
|
131
167
|
code: DownloadByRangeErrorCode.OUT_OF_RANGE_BLOCKS;
|
|
132
168
|
slot: number;
|
|
169
|
+
} | {
|
|
170
|
+
code: DownloadByRangeErrorCode.MISMATCH_BLOCK_FORK;
|
|
171
|
+
slot: number;
|
|
172
|
+
dataFork: string;
|
|
173
|
+
blockFork: string;
|
|
133
174
|
} | {
|
|
134
175
|
code: DownloadByRangeErrorCode.OUT_OF_ORDER_BLOCKS;
|
|
135
176
|
} | {
|
|
@@ -155,7 +196,7 @@ export type DownloadByRangeErrorType = {
|
|
|
155
196
|
expected: number;
|
|
156
197
|
actual: number;
|
|
157
198
|
} | {
|
|
158
|
-
code: DownloadByRangeErrorCode.OUT_OF_ORDER_BLOBS;
|
|
199
|
+
code: DownloadByRangeErrorCode.OUT_OF_ORDER_BLOBS | DownloadByRangeErrorCode.OUT_OF_ORDER_COLUMNS;
|
|
159
200
|
slot: number;
|
|
160
201
|
} | {
|
|
161
202
|
code: DownloadByRangeErrorCode.EXTRA_BLOBS;
|
|
@@ -171,7 +212,11 @@ export type DownloadByRangeErrorType = {
|
|
|
171
212
|
blockRoot: string;
|
|
172
213
|
missingIndices: string;
|
|
173
214
|
} | {
|
|
174
|
-
code: DownloadByRangeErrorCode.
|
|
215
|
+
code: DownloadByRangeErrorCode.DUPLICATE_COLUMN;
|
|
216
|
+
slot: Slot;
|
|
217
|
+
index: number;
|
|
218
|
+
} | {
|
|
219
|
+
code: DownloadByRangeErrorCode.EXTRA_COLUMNS | DownloadByRangeErrorCode.NO_COLUMNS_FOR_BLOCK;
|
|
175
220
|
slot: Slot;
|
|
176
221
|
blockRoot: string;
|
|
177
222
|
invalidIndices: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadByRange.d.ts","sourceRoot":"","sources":["../../../src/sync/utils/downloadByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"downloadByRange.d.ts","sourceRoot":"","sources":["../../../src/sync/utils/downloadByRange.ts"],"names":[],"mappings":"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"}
|