@lodestar/beacon-node 1.32.0-peerDAS.fbabed864b → 1.32.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/impl/beacon/blocks/index.js +33 -42
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.js +13 -1
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +43 -29
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.d.ts +1 -1
- package/lib/chain/archiveStore/archiveStore.js +2 -2
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/metrics.js +13 -0
- package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
- package/lib/chain/archiveStore/interface.d.ts +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +51 -88
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/beaconProposerCache.d.ts +0 -1
- package/lib/chain/beaconProposerCache.js +0 -3
- package/lib/chain/beaconProposerCache.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +4 -60
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +24 -65
- package/lib/chain/blocks/types.js +6 -39
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +10 -21
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +15 -89
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +8 -16
- package/lib/chain/chain.js +14 -23
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +2 -18
- package/lib/chain/emitter.js +0 -13
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/index.d.ts +0 -1
- package/lib/chain/errors/index.js +0 -1
- package/lib/chain/errors/index.js.map +1 -1
- package/lib/chain/interface.d.ts +5 -11
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/options.d.ts +3 -6
- package/lib/chain/options.js +0 -4
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -5
- package/lib/chain/produceBlock/produceBlockBody.js +141 -117
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +2 -3
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +2 -25
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +18 -61
- package/lib/chain/seenCache/seenGossipBlockInput.js +53 -254
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/validation/block.js +1 -1
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/db/beacon.d.ts +1 -3
- package/lib/db/beacon.js +1 -3
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/buckets.d.ts +1 -3
- package/lib/db/buckets.js +0 -2
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/interface.d.ts +1 -3
- package/lib/db/repositories/index.d.ts +0 -2
- package/lib/db/repositories/index.js +0 -2
- package/lib/db/repositories/index.js.map +1 -1
- package/lib/execution/engine/http.d.ts +3 -5
- package/lib/execution/engine/http.js +31 -70
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +2 -4
- package/lib/execution/engine/interface.js +1 -1
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +0 -1
- package/lib/execution/engine/mock.js +0 -5
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +0 -10
- package/lib/execution/engine/types.js +0 -6
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +3 -12
- package/lib/metrics/metrics/beacon.js +13 -44
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/network/core/metrics.d.ts +3 -10
- package/lib/network/core/metrics.js +4 -22
- package/lib/network/core/metrics.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +4 -10
- package/lib/network/core/networkCore.js +55 -67
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +0 -2
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +0 -2
- package/lib/network/core/networkCoreWorkerHandler.js +0 -7
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/core/types.d.ts +0 -4
- package/lib/network/discv5/index.d.ts +1 -0
- package/lib/network/discv5/index.js +1 -0
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/discv5/types.d.ts +1 -0
- package/lib/network/discv5/utils.d.ts +3 -1
- package/lib/network/discv5/utils.js +14 -4
- package/lib/network/discv5/utils.js.map +1 -1
- package/lib/network/discv5/worker.js +5 -1
- package/lib/network/discv5/worker.js.map +1 -1
- package/lib/network/events.d.ts +1 -3
- package/lib/network/events.js.map +1 -1
- package/lib/network/forks.d.ts +8 -9
- package/lib/network/forks.js +35 -33
- package/lib/network/forks.js.map +1 -1
- package/lib/network/gossip/encoding.js +1 -1
- package/lib/network/gossip/encoding.js.map +1 -1
- package/lib/network/gossip/gossipsub.js +15 -6
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +3 -11
- package/lib/network/gossip/interface.js +0 -1
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/scoringParameters.js +10 -10
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +1497 -1513
- package/lib/network/gossip/topic.js +15 -33
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +1 -13
- package/lib/network/metadata.d.ts +6 -10
- package/lib/network/metadata.js +13 -30
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts +1 -12
- package/lib/network/network.js +43 -85
- package/lib/network/network.js.map +1 -1
- package/lib/network/options.js +0 -2
- package/lib/network/options.js.map +1 -1
- package/lib/network/peers/discover.d.ts +3 -14
- package/lib/network/peers/discover.js +14 -139
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.d.ts +2 -10
- package/lib/network/peers/peerManager.js +10 -96
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/peersData.d.ts +2 -8
- package/lib/network/peers/peersData.js.map +1 -1
- package/lib/network/peers/score/interface.d.ts +1 -1
- package/lib/network/peers/score/score.d.ts +2 -2
- package/lib/network/peers/score/score.js +1 -4
- package/lib/network/peers/score/score.js.map +1 -1
- package/lib/network/peers/score/store.d.ts +1 -3
- package/lib/network/peers/score/store.js +2 -6
- package/lib/network/peers/score/store.js.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts +4 -15
- package/lib/network/peers/utils/prioritizePeers.js +5 -30
- package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js +1 -8
- package/lib/network/processor/extractSlotRootFns.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +30 -164
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +1 -6
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/index.js +2 -3
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts +3 -4
- package/lib/network/reqresp/ReqRespBeaconNode.js +14 -30
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +5 -14
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +14 -199
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +6 -31
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +48 -282
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +2 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +2 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/index.js +0 -10
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientBootstrap.js +4 -3
- package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +4 -3
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +4 -3
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +4 -3
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/status.js +2 -2
- package/lib/network/reqresp/handlers/status.js.map +1 -1
- package/lib/network/reqresp/protocols.d.ts +0 -3
- package/lib/network/reqresp/protocols.js +1 -16
- package/lib/network/reqresp/protocols.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +1 -11
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +6 -13
- package/lib/network/reqresp/types.js +2 -9
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/network/subnets/attnetsService.d.ts +3 -4
- package/lib/network/subnets/attnetsService.js +18 -17
- package/lib/network/subnets/attnetsService.js.map +1 -1
- package/lib/network/subnets/interface.d.ts +3 -6
- package/lib/network/subnets/interface.js +1 -14
- package/lib/network/subnets/interface.js.map +1 -1
- package/lib/network/subnets/syncnetsService.d.ts +3 -4
- package/lib/network/subnets/syncnetsService.js +14 -13
- package/lib/network/subnets/syncnetsService.js.map +1 -1
- package/lib/node/nodejs.js +0 -1
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/interface.d.ts +2 -2
- package/lib/sync/interface.js +1 -1
- package/lib/sync/interface.js.map +1 -1
- package/lib/sync/range/batch.d.ts +2 -8
- package/lib/sync/range/batch.js +7 -19
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +2 -7
- package/lib/sync/range/chain.js +21 -45
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.js +3 -3
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/peerBalancer.d.ts +1 -4
- package/lib/sync/range/utils/peerBalancer.js +2 -20
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +1 -8
- package/lib/sync/unknownBlock.js +63 -222
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/blobs.d.ts +1 -13
- package/lib/util/blobs.js +1 -44
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/metadata.d.ts +0 -4
- package/lib/util/metadata.js +0 -7
- package/lib/util/metadata.js.map +1 -1
- package/lib/util/sszBytes.d.ts +0 -1
- package/lib/util/sszBytes.js +0 -17
- package/lib/util/sszBytes.js.map +1 -1
- package/package.json +14 -14
- package/lib/chain/errors/dataColumnSidecarError.d.ts +0 -69
- package/lib/chain/errors/dataColumnSidecarError.js +0 -21
- package/lib/chain/errors/dataColumnSidecarError.js.map +0 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +0 -28
- package/lib/chain/validation/dataColumnSidecar.js +0 -245
- package/lib/chain/validation/dataColumnSidecar.js.map +0 -1
- package/lib/db/repositories/dataColumnSidecars.d.ts +0 -47
- package/lib/db/repositories/dataColumnSidecars.js +0 -40
- package/lib/db/repositories/dataColumnSidecars.js.map +0 -1
- package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +0 -15
- package/lib/db/repositories/dataColumnSidecarsArchive.js +0 -23
- package/lib/db/repositories/dataColumnSidecarsArchive.js.map +0 -1
- package/lib/network/networkConfig.d.ts +0 -23
- package/lib/network/networkConfig.js +0 -32
- package/lib/network/networkConfig.js.map +0 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +0 -8
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +0 -106
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +0 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +0 -6
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +0 -57
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +0 -1
- package/lib/util/dataColumns.d.ts +0 -125
- package/lib/util/dataColumns.js +0 -284
- package/lib/util/dataColumns.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ChainForkConfig } from "@lodestar/config";
|
|
2
2
|
import { MaybeValidExecutionStatus } from "@lodestar/fork-choice";
|
|
3
|
-
import {
|
|
3
|
+
import { ForkPostDeneb } from "@lodestar/params";
|
|
4
4
|
import { CachedBeaconStateAllForks, DataAvailabilityStatus } from "@lodestar/state-transition";
|
|
5
|
-
import
|
|
5
|
+
import { RootHex, SignedBeaconBlock, Slot, deneb } from "@lodestar/types";
|
|
6
6
|
export declare enum BlockInputType {
|
|
7
7
|
preData = "preData",
|
|
8
8
|
outOfRangeData = "outOfRangeData",
|
|
9
9
|
availableData = "availableData",
|
|
10
|
-
dataPromise = "
|
|
10
|
+
dataPromise = "dataPromise"
|
|
11
11
|
}
|
|
12
12
|
/** Enum to represent where blocks come from */
|
|
13
13
|
export declare enum BlockSource {
|
|
@@ -16,23 +16,6 @@ export declare enum BlockSource {
|
|
|
16
16
|
byRange = "req_resp_by_range",
|
|
17
17
|
byRoot = "req_resp_by_root"
|
|
18
18
|
}
|
|
19
|
-
export declare enum GossipedInputType {
|
|
20
|
-
block = "block",
|
|
21
|
-
blob = "blob",
|
|
22
|
-
dataColumn = "data_column"
|
|
23
|
-
}
|
|
24
|
-
interface CachedDataItem {
|
|
25
|
-
cacheId: number;
|
|
26
|
-
}
|
|
27
|
-
type Availability<T> = {
|
|
28
|
-
availabilityPromise: Promise<T>;
|
|
29
|
-
resolveAvailability: (data: T) => void;
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
*
|
|
33
|
-
* Deneb Blob Format Types
|
|
34
|
-
*
|
|
35
|
-
*/
|
|
36
19
|
/** Enum to represent where blobs come from */
|
|
37
20
|
export declare enum BlobsSource {
|
|
38
21
|
gossip = "gossip",
|
|
@@ -40,51 +23,28 @@ export declare enum BlobsSource {
|
|
|
40
23
|
byRange = "req_resp_by_range",
|
|
41
24
|
byRoot = "req_resp_by_root"
|
|
42
25
|
}
|
|
26
|
+
export declare enum GossipedInputType {
|
|
27
|
+
block = "block",
|
|
28
|
+
blob = "blob"
|
|
29
|
+
}
|
|
30
|
+
type BlobsCacheMap = Map<number, deneb.BlobSidecar>;
|
|
43
31
|
type ForkBlobsInfo = {
|
|
44
|
-
fork: ForkPostDeneb
|
|
32
|
+
fork: ForkPostDeneb;
|
|
45
33
|
};
|
|
46
|
-
export type BlockInputBlobs =
|
|
47
|
-
blobs: deneb.
|
|
34
|
+
export type BlockInputBlobs = {
|
|
35
|
+
blobs: deneb.BlobSidecar[];
|
|
48
36
|
blobsSource: BlobsSource;
|
|
49
37
|
};
|
|
50
|
-
export type
|
|
51
|
-
export type
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
*
|
|
56
|
-
* PeerDAS Column Format Types
|
|
57
|
-
*
|
|
58
|
-
*/
|
|
59
|
-
export declare enum DataColumnsSource {
|
|
60
|
-
gossip = "gossip",
|
|
61
|
-
api = "api",
|
|
62
|
-
byRange = "req_resp_by_range",
|
|
63
|
-
byRoot = "req_resp_by_root"
|
|
64
|
-
}
|
|
65
|
-
type ForkDataColumnsInfo = {
|
|
66
|
-
fork: ForkPostFulu;
|
|
67
|
-
};
|
|
68
|
-
type DataColumnData = {
|
|
69
|
-
dataColumn: fulu.DataColumnSidecar;
|
|
70
|
-
dataColumnBytes: Uint8Array | null;
|
|
71
|
-
};
|
|
72
|
-
export type DataColumnsCacheMap = Map<number, DataColumnData>;
|
|
73
|
-
export type BlockInputDataColumns = ForkDataColumnsInfo & {
|
|
74
|
-
dataColumns: fulu.DataColumnSidecars;
|
|
75
|
-
dataColumnsBytes: (Uint8Array | null)[];
|
|
76
|
-
dataColumnsSource: DataColumnsSource;
|
|
77
|
-
};
|
|
78
|
-
export type CachedDataColumns = CachedDataItem & ForkDataColumnsInfo & Availability<BlockInputDataColumns> & {
|
|
79
|
-
dataColumnsCache: DataColumnsCacheMap;
|
|
38
|
+
export type BlockInputDataBlobs = ForkBlobsInfo & BlockInputBlobs;
|
|
39
|
+
export type BlockInputData = BlockInputDataBlobs;
|
|
40
|
+
type Availability<T> = {
|
|
41
|
+
availabilityPromise: Promise<T>;
|
|
42
|
+
resolveAvailability: (data: T) => void;
|
|
80
43
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
*/
|
|
86
|
-
export type BlockInputAvailableData = BlockInputBlobs | BlockInputDataColumns;
|
|
87
|
-
export type CachedData = CachedBlobs | CachedDataColumns;
|
|
44
|
+
type CachedBlobs = {
|
|
45
|
+
blobsCache: BlobsCacheMap;
|
|
46
|
+
} & Availability<BlockInputDataBlobs>;
|
|
47
|
+
export type CachedData = ForkBlobsInfo & CachedBlobs;
|
|
88
48
|
export type BlockInput = {
|
|
89
49
|
block: SignedBeaconBlock;
|
|
90
50
|
source: BlockSource;
|
|
@@ -93,7 +53,7 @@ export type BlockInput = {
|
|
|
93
53
|
} | ({
|
|
94
54
|
type: BlockInputType.availableData;
|
|
95
55
|
} & {
|
|
96
|
-
blockData:
|
|
56
|
+
blockData: BlockInputData;
|
|
97
57
|
}) | ({
|
|
98
58
|
type: BlockInputType.dataPromise;
|
|
99
59
|
} & {
|
|
@@ -110,11 +70,10 @@ export declare function blockRequiresBlobs(config: ChainForkConfig, blockSlot: S
|
|
|
110
70
|
export declare const getBlockInput: {
|
|
111
71
|
preData(config: ChainForkConfig, block: SignedBeaconBlock, source: BlockSource): BlockInput;
|
|
112
72
|
outOfRangeData(config: ChainForkConfig, block: SignedBeaconBlock, source: BlockSource): BlockInput;
|
|
113
|
-
availableData(config: ChainForkConfig, block: SignedBeaconBlock, source: BlockSource, blockData:
|
|
73
|
+
availableData(config: ChainForkConfig, block: SignedBeaconBlock, source: BlockSource, blockData: BlockInputData): BlockInput;
|
|
114
74
|
dataPromise(config: ChainForkConfig, block: SignedBeaconBlock, source: BlockSource, cachedData: CachedData): BlockInput;
|
|
115
75
|
};
|
|
116
|
-
export declare function getBlockInputBlobs(blobsCache: BlobsCacheMap): Omit<BlockInputBlobs, "
|
|
117
|
-
export declare function getBlockInputDataColumns(dataColumnsCache: DataColumnsCacheMap, columnIndexes: ColumnIndex[]): Omit<BlockInputDataColumns, "fork" | "dataColumnsSource">;
|
|
76
|
+
export declare function getBlockInputBlobs(blobsCache: BlobsCacheMap): Omit<BlockInputBlobs, "blobsSource">;
|
|
118
77
|
export declare enum AttestationImportOpt {
|
|
119
78
|
Skip = 0,
|
|
120
79
|
Force = 1
|
|
@@ -7,7 +7,7 @@ export var BlockInputType;
|
|
|
7
7
|
// data is out of available window, can be used to sync forward and keep adding to forkchoice
|
|
8
8
|
BlockInputType["outOfRangeData"] = "outOfRangeData";
|
|
9
9
|
BlockInputType["availableData"] = "availableData";
|
|
10
|
-
BlockInputType["dataPromise"] = "
|
|
10
|
+
BlockInputType["dataPromise"] = "dataPromise";
|
|
11
11
|
})(BlockInputType || (BlockInputType = {}));
|
|
12
12
|
/** Enum to represent where blocks come from */
|
|
13
13
|
export var BlockSource;
|
|
@@ -17,17 +17,6 @@ export var BlockSource;
|
|
|
17
17
|
BlockSource["byRange"] = "req_resp_by_range";
|
|
18
18
|
BlockSource["byRoot"] = "req_resp_by_root";
|
|
19
19
|
})(BlockSource || (BlockSource = {}));
|
|
20
|
-
export var GossipedInputType;
|
|
21
|
-
(function (GossipedInputType) {
|
|
22
|
-
GossipedInputType["block"] = "block";
|
|
23
|
-
GossipedInputType["blob"] = "blob";
|
|
24
|
-
GossipedInputType["dataColumn"] = "data_column";
|
|
25
|
-
})(GossipedInputType || (GossipedInputType = {}));
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* Deneb Blob Format Types
|
|
29
|
-
*
|
|
30
|
-
*/
|
|
31
20
|
/** Enum to represent where blobs come from */
|
|
32
21
|
export var BlobsSource;
|
|
33
22
|
(function (BlobsSource) {
|
|
@@ -36,18 +25,11 @@ export var BlobsSource;
|
|
|
36
25
|
BlobsSource["byRange"] = "req_resp_by_range";
|
|
37
26
|
BlobsSource["byRoot"] = "req_resp_by_root";
|
|
38
27
|
})(BlobsSource || (BlobsSource = {}));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
export var DataColumnsSource;
|
|
45
|
-
(function (DataColumnsSource) {
|
|
46
|
-
DataColumnsSource["gossip"] = "gossip";
|
|
47
|
-
DataColumnsSource["api"] = "api";
|
|
48
|
-
DataColumnsSource["byRange"] = "req_resp_by_range";
|
|
49
|
-
DataColumnsSource["byRoot"] = "req_resp_by_root";
|
|
50
|
-
})(DataColumnsSource || (DataColumnsSource = {}));
|
|
28
|
+
export var GossipedInputType;
|
|
29
|
+
(function (GossipedInputType) {
|
|
30
|
+
GossipedInputType["block"] = "block";
|
|
31
|
+
GossipedInputType["blob"] = "blob";
|
|
32
|
+
})(GossipedInputType || (GossipedInputType = {}));
|
|
51
33
|
export function blockRequiresBlobs(config, blockSlot, clockSlot) {
|
|
52
34
|
return (config.getForkSeq(blockSlot) >= ForkSeq.deneb &&
|
|
53
35
|
// Only request blobs if they are recent enough
|
|
@@ -114,21 +96,6 @@ export function getBlockInputBlobs(blobsCache) {
|
|
|
114
96
|
}
|
|
115
97
|
return { blobs };
|
|
116
98
|
}
|
|
117
|
-
export function getBlockInputDataColumns(dataColumnsCache, columnIndexes) {
|
|
118
|
-
const dataColumns = [];
|
|
119
|
-
const dataColumnsBytes = [];
|
|
120
|
-
for (const index of columnIndexes) {
|
|
121
|
-
const dataColumnCache = dataColumnsCache.get(index);
|
|
122
|
-
if (dataColumnCache === undefined) {
|
|
123
|
-
// check if the index is correct as per the custody columns
|
|
124
|
-
throw Error(`Missing dataColumnCache at index=${index}`);
|
|
125
|
-
}
|
|
126
|
-
const { dataColumn: dataColumnSidecar, dataColumnBytes } = dataColumnCache;
|
|
127
|
-
dataColumns.push(dataColumnSidecar);
|
|
128
|
-
dataColumnsBytes.push(dataColumnBytes);
|
|
129
|
-
}
|
|
130
|
-
return { dataColumns, dataColumnsBytes };
|
|
131
|
-
}
|
|
132
99
|
export var AttestationImportOpt;
|
|
133
100
|
(function (AttestationImportOpt) {
|
|
134
101
|
AttestationImportOpt[AttestationImportOpt["Skip"] = 0] = "Skip";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { ForkName } from "@lodestar/params";
|
|
2
1
|
import { DataAvailabilityStatus, computeTimeAtSlot } from "@lodestar/state-transition";
|
|
3
2
|
import { ErrorAborted } from "@lodestar/utils";
|
|
4
3
|
import { BlockError, BlockErrorCode } from "../errors/index.js";
|
|
5
4
|
import { validateBlobSidecars } from "../validation/blobSidecar.js";
|
|
6
|
-
import {
|
|
7
|
-
import { BlobSidecarValidation, BlockInputType, getBlockInput, } from "./types.js";
|
|
5
|
+
import { BlobSidecarValidation, BlockInputType, getBlockInput } from "./types.js";
|
|
8
6
|
// we can now wait for full 12 seconds because unavailable block sync will try pulling
|
|
9
7
|
// the blobs from the network anyway after 500ms of seeing the block
|
|
10
8
|
const BLOB_AVAILABILITY_TIMEOUT = 12_000;
|
|
@@ -66,26 +64,17 @@ async function maybeValidateBlobs(chain, blockInput, signal, opts) {
|
|
|
66
64
|
// run full validation
|
|
67
65
|
const { block } = blockInput;
|
|
68
66
|
const blockSlot = block.message.slot;
|
|
69
|
-
const
|
|
70
|
-
const beaconBlockRoot = chain.config.getForkTypes(blockSlot).BeaconBlock.hashTreeRoot(block.message);
|
|
71
|
-
const blockData = blockInput.type === BlockInputType.availableData
|
|
67
|
+
const blobsData = blockInput.type === BlockInputType.availableData
|
|
72
68
|
? blockInput.blockData
|
|
73
69
|
: await raceWithCutoff(chain, blockInput, blockInput.cachedData.availabilityPromise, signal);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const { dataColumns } = blockData;
|
|
83
|
-
const skipProofsCheck = opts.validBlobSidecars === BlobSidecarValidation.Individual;
|
|
84
|
-
await validateDataColumnsSidecars(blockSlot, beaconBlockRoot, blobKzgCommitments, dataColumns, chain.metrics, {
|
|
85
|
-
skipProofsCheck,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
const availableBlockInput = getBlockInput.availableData(chain.config, blockInput.block, blockInput.source, blockData);
|
|
70
|
+
const { blobs } = blobsData;
|
|
71
|
+
const { blobKzgCommitments } = block.message.body;
|
|
72
|
+
const beaconBlockRoot = chain.config.getForkTypes(blockSlot).BeaconBlock.hashTreeRoot(block.message);
|
|
73
|
+
// if the blob siddecars have been individually verified then we can skip kzg proof check
|
|
74
|
+
// but other checks to match blobs with block data still need to be performed
|
|
75
|
+
const skipProofsCheck = opts.validBlobSidecars === BlobSidecarValidation.Individual;
|
|
76
|
+
await validateBlobSidecars(blockSlot, beaconBlockRoot, blobKzgCommitments, blobs, { skipProofsCheck });
|
|
77
|
+
const availableBlockInput = getBlockInput.availableData(chain.config, blockInput.block, blockInput.source, blobsData);
|
|
89
78
|
return { dataAvailabilityStatus: DataAvailabilityStatus.Available, availableBlockInput: availableBlockInput };
|
|
90
79
|
}
|
|
91
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBlocksDataAvailability.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksDataAvailability.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"verifyBlocksDataAvailability.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksDataAvailability.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { ForkName, NUMBER_OF_COLUMNS } from "@lodestar/params";
|
|
2
|
-
import { ssz } from "@lodestar/types";
|
|
3
1
|
import { toRootHex } from "@lodestar/utils";
|
|
4
|
-
import { toHex } from "@lodestar/utils";
|
|
5
2
|
import { BlockInputType } from "./types.js";
|
|
6
3
|
/**
|
|
7
4
|
* Persists block input data to DB. This operation must be eventually completed if a block is imported to the fork-choice.
|
|
@@ -29,68 +26,22 @@ export async function writeBlockInputToDb(blocksInput) {
|
|
|
29
26
|
this.logger.debug("Persist block to hot DB", {
|
|
30
27
|
slot: block.message.slot,
|
|
31
28
|
root: blockRootHex,
|
|
32
|
-
inputType: blockInput.type,
|
|
33
29
|
});
|
|
34
30
|
if (blockInput.type === BlockInputType.availableData || blockInput.type === BlockInputType.dataPromise) {
|
|
35
|
-
const
|
|
36
|
-
? blockInput.blockData
|
|
37
|
-
:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
const { custodyConfig } = this;
|
|
50
|
-
const { custodyColumnsIndex, custodyColumns } = custodyConfig;
|
|
51
|
-
const blobsLen = block.message.body.blobKzgCommitments.length;
|
|
52
|
-
let dataColumnsLen;
|
|
53
|
-
let dataColumnsIndex;
|
|
54
|
-
if (blobsLen === 0) {
|
|
55
|
-
dataColumnsLen = 0;
|
|
56
|
-
dataColumnsIndex = new Uint8Array(NUMBER_OF_COLUMNS);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
dataColumnsLen = custodyColumns.length;
|
|
60
|
-
dataColumnsIndex = custodyColumnsIndex;
|
|
61
|
-
}
|
|
62
|
-
const blockDataColumns = blockData.dataColumns;
|
|
63
|
-
const dataColumnSidecars = blockDataColumns.filter((dataColumnSidecar) => custodyColumns.includes(dataColumnSidecar.index));
|
|
64
|
-
if (dataColumnSidecars.length !== dataColumnsLen) {
|
|
65
|
-
throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
|
|
66
|
-
}
|
|
67
|
-
const dataColumnsSize = ssz.fulu.DataColumnSidecar.minSize +
|
|
68
|
-
blobsLen * (ssz.fulu.Cell.fixedSize + ssz.deneb.KZGCommitment.fixedSize + ssz.deneb.KZGProof.fixedSize);
|
|
69
|
-
const slot = block.message.slot;
|
|
70
|
-
const writeData = {
|
|
71
|
-
blockRoot,
|
|
72
|
-
slot,
|
|
73
|
-
dataColumnsLen,
|
|
74
|
-
dataColumnsSize,
|
|
75
|
-
dataColumnsIndex,
|
|
76
|
-
dataColumnSidecars,
|
|
77
|
-
};
|
|
78
|
-
fnPromises.push(this.db.dataColumnSidecars.add(writeData));
|
|
79
|
-
this.logger.debug("Persisted dataColumnSidecars to hot DB", {
|
|
80
|
-
dataColumnsSize,
|
|
81
|
-
dataColumnsLen,
|
|
82
|
-
dataColumnSidecars: dataColumnSidecars.length,
|
|
83
|
-
slot: block.message.slot,
|
|
84
|
-
root: blockRootHex,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
31
|
+
const blobSidecars = blockInput.type === BlockInputType.availableData
|
|
32
|
+
? blockInput.blockData.blobs
|
|
33
|
+
: // At this point of import blobs are available and can be safely awaited
|
|
34
|
+
(await blockInput.cachedData.availabilityPromise).blobs;
|
|
35
|
+
// NOTE: Old blobs are pruned on archive
|
|
36
|
+
fnPromises.push(this.db.blobSidecars.add({ blockRoot, slot: block.message.slot, blobSidecars }));
|
|
37
|
+
this.logger.debug("Persisted blobSidecars to hot DB", {
|
|
38
|
+
blobsLen: blobSidecars.length,
|
|
39
|
+
slot: block.message.slot,
|
|
40
|
+
root: blockRootHex,
|
|
41
|
+
});
|
|
87
42
|
}
|
|
88
43
|
}
|
|
89
44
|
await Promise.all(fnPromises);
|
|
90
|
-
this.logger.debug("Persisted blocksInput to db", {
|
|
91
|
-
blocksInput: blocksInput.length,
|
|
92
|
-
slots: blocksInput.map((blockInput) => blockInput.block.message.slot).join(" "),
|
|
93
|
-
});
|
|
94
45
|
}
|
|
95
46
|
/**
|
|
96
47
|
* Prunes eagerly persisted block inputs only if not known to the fork-choice
|
|
@@ -98,39 +49,15 @@ export async function writeBlockInputToDb(blocksInput) {
|
|
|
98
49
|
export async function removeEagerlyPersistedBlockInputs(blockInputs) {
|
|
99
50
|
const blockToRemove = [];
|
|
100
51
|
const blobsToRemove = [];
|
|
101
|
-
const dataColumnsToRemove = [];
|
|
102
52
|
for (const blockInput of blockInputs) {
|
|
103
53
|
const { block, type } = blockInput;
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const blockRootHex = toHex(blockRoot);
|
|
54
|
+
const blockRoot = this.config.getForkTypes(block.message.slot).BeaconBlock.hashTreeRoot(block.message);
|
|
55
|
+
const blockRootHex = toRootHex(blockRoot);
|
|
107
56
|
if (!this.forkChoice.hasBlockHex(blockRootHex)) {
|
|
108
57
|
blockToRemove.push(block);
|
|
109
58
|
if (type === BlockInputType.availableData) {
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
const blobSidecars = blockData.blobs;
|
|
113
|
-
blobsToRemove.push({ blockRoot, slot, blobSidecars });
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
const { custodyConfig } = this;
|
|
117
|
-
const { custodyColumnsIndex: dataColumnsIndex, custodyColumns } = custodyConfig;
|
|
118
|
-
const dataColumnsLen = custodyColumns.length;
|
|
119
|
-
const dataColumnSidecars = blockData.dataColumns.filter((dataColumnSidecar) => custodyColumns.includes(dataColumnSidecar.index));
|
|
120
|
-
if (dataColumnSidecars.length !== dataColumnsLen) {
|
|
121
|
-
throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
|
|
122
|
-
}
|
|
123
|
-
const blobsLen = block.message.body.blobKzgCommitments.length;
|
|
124
|
-
const dataColumnsSize = ssz.fulu.Cell.fixedSize * blobsLen;
|
|
125
|
-
dataColumnsToRemove.push({
|
|
126
|
-
blockRoot,
|
|
127
|
-
slot,
|
|
128
|
-
dataColumnsLen,
|
|
129
|
-
dataColumnsSize,
|
|
130
|
-
dataColumnsIndex,
|
|
131
|
-
dataColumnSidecars,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
59
|
+
const blobSidecars = blockInput.blockData.blobs;
|
|
60
|
+
blobsToRemove.push({ blockRoot, slot: block.message.slot, blobSidecars });
|
|
134
61
|
}
|
|
135
62
|
}
|
|
136
63
|
}
|
|
@@ -138,7 +65,6 @@ export async function removeEagerlyPersistedBlockInputs(blockInputs) {
|
|
|
138
65
|
// TODO: Batch DB operations not with Promise.all but with level db ops
|
|
139
66
|
this.db.block.batchRemove(blockToRemove),
|
|
140
67
|
this.db.blobSidecars.batchRemove(blobsToRemove),
|
|
141
|
-
this.db.dataColumnSidecars.batchRemove(dataColumnsToRemove),
|
|
142
68
|
]);
|
|
143
69
|
}
|
|
144
70
|
//# sourceMappingURL=writeBlockInputToDb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeBlockInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writeBlockInputToDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"writeBlockInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writeBlockInputToDb.ts"],"names":[],"mappings":"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"}
|
package/lib/chain/chain.d.ts
CHANGED
|
@@ -3,17 +3,15 @@ import { CompositeTypeAny, TreeView, Type } from "@chainsafe/ssz";
|
|
|
3
3
|
import { BeaconConfig } from "@lodestar/config";
|
|
4
4
|
import { CheckpointWithHex, IForkChoice, ProtoBlock } from "@lodestar/fork-choice";
|
|
5
5
|
import { BeaconStateAllForks, CachedBeaconStateAllForks, EpochShuffling, Index2PubkeyCache } from "@lodestar/state-transition";
|
|
6
|
-
import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, UintNum64, ValidatorIndex, Wei, deneb,
|
|
6
|
+
import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, UintNum64, ValidatorIndex, Wei, deneb, phase0 } from "@lodestar/types";
|
|
7
7
|
import { Logger } from "@lodestar/utils";
|
|
8
8
|
import { ProcessShutdownCallback } from "@lodestar/validator";
|
|
9
|
-
import { PrivateKey } from "@libp2p/interface";
|
|
10
9
|
import { IBeaconDb } from "../db/index.js";
|
|
11
10
|
import { IEth1ForBlockProduction } from "../eth1/index.js";
|
|
12
11
|
import { IExecutionBuilder, IExecutionEngine } from "../execution/index.js";
|
|
13
12
|
import { Metrics } from "../metrics/index.js";
|
|
14
13
|
import { BufferPool } from "../util/bufferPool.js";
|
|
15
14
|
import { IClock } from "../util/clock.js";
|
|
16
|
-
import { CustodyConfig } from "../util/dataColumns.js";
|
|
17
15
|
import { SerializedCache } from "../util/serializedCache.js";
|
|
18
16
|
import { ArchiveStore } from "./archiveStore/archiveStore.js";
|
|
19
17
|
import { CheckpointBalancesCache } from "./balancesCache.js";
|
|
@@ -49,7 +47,6 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
49
47
|
readonly executionEngine: IExecutionEngine;
|
|
50
48
|
readonly executionBuilder?: IExecutionBuilder;
|
|
51
49
|
readonly config: BeaconConfig;
|
|
52
|
-
readonly custodyConfig: CustodyConfig;
|
|
53
50
|
readonly logger: Logger;
|
|
54
51
|
readonly metrics: Metrics | null;
|
|
55
52
|
readonly validatorMonitor: ValidatorMonitor | null;
|
|
@@ -84,9 +81,7 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
84
81
|
readonly checkpointBalancesCache: CheckpointBalancesCache;
|
|
85
82
|
readonly shufflingCache: ShufflingCache;
|
|
86
83
|
/** Map keyed by executionPayload.blockHash of the block for those blobs */
|
|
87
|
-
readonly producedContentsCache: Map<string, deneb.Contents
|
|
88
|
-
cells?: fulu.Cell[][];
|
|
89
|
-
}>;
|
|
84
|
+
readonly producedContentsCache: Map<string, deneb.Contents>;
|
|
90
85
|
readonly producedBlockRoot: Map<string, import("@chainsafe/ssz").ValueOfFields<{
|
|
91
86
|
transactions: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteListType>;
|
|
92
87
|
parentHash: import("@chainsafe/ssz").ByteVectorType;
|
|
@@ -178,8 +173,7 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
178
173
|
protected readonly db: IBeaconDb;
|
|
179
174
|
private abortController;
|
|
180
175
|
private processShutdownCallback;
|
|
181
|
-
constructor(opts: IChainOptions, {
|
|
182
|
-
privateKey: PrivateKey;
|
|
176
|
+
constructor(opts: IChainOptions, { config, db, dbName, dataDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, eth1, executionEngine, executionBuilder, }: {
|
|
183
177
|
config: BeaconConfig;
|
|
184
178
|
db: IBeaconDb;
|
|
185
179
|
dbName: string;
|
|
@@ -245,7 +239,7 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
245
239
|
} | null>;
|
|
246
240
|
produceCommonBlockBody(blockAttributes: BlockAttributes): Promise<CommonBlockBody>;
|
|
247
241
|
produceBlock(blockAttributes: BlockAttributes & {
|
|
248
|
-
|
|
242
|
+
commonBlockBodyPromise?: Promise<CommonBlockBody>;
|
|
249
243
|
}): Promise<{
|
|
250
244
|
block: BeaconBlock;
|
|
251
245
|
executionPayloadValue: Wei;
|
|
@@ -253,14 +247,14 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
253
247
|
shouldOverrideBuilder?: boolean;
|
|
254
248
|
}>;
|
|
255
249
|
produceBlindedBlock(blockAttributes: BlockAttributes & {
|
|
256
|
-
|
|
250
|
+
commonBlockBodyPromise?: Promise<CommonBlockBody>;
|
|
257
251
|
}): Promise<{
|
|
258
252
|
block: BlindedBeaconBlock;
|
|
259
253
|
executionPayloadValue: Wei;
|
|
260
254
|
consensusBlockValue: Wei;
|
|
261
255
|
}>;
|
|
262
|
-
produceBlockWrapper<T extends BlockType>(blockType: T, { randaoReveal, graffiti, slot, feeRecipient,
|
|
263
|
-
|
|
256
|
+
produceBlockWrapper<T extends BlockType>(blockType: T, { randaoReveal, graffiti, slot, feeRecipient, commonBlockBodyPromise, parentBlockRoot, parentSlot, }: BlockAttributes & {
|
|
257
|
+
commonBlockBodyPromise?: Promise<CommonBlockBody>;
|
|
264
258
|
}): Promise<{
|
|
265
259
|
block: AssembledBlockType<T>;
|
|
266
260
|
executionPayloadValue: Wei;
|
|
@@ -277,9 +271,7 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
277
271
|
* kzg_aggregated_proof=compute_proof_from_blobs(blobs),
|
|
278
272
|
* )
|
|
279
273
|
*/
|
|
280
|
-
getContents(beaconBlock: deneb.BeaconBlock): deneb.Contents
|
|
281
|
-
cells?: fulu.Cell[][];
|
|
282
|
-
};
|
|
274
|
+
getContents(beaconBlock: deneb.BeaconBlock): deneb.Contents;
|
|
283
275
|
processBlock(block: BlockInput, opts?: ImportBlockOpts): Promise<void>;
|
|
284
276
|
processChainSegment(blocks: BlockInput[], opts?: ImportBlockOpts): Promise<void>;
|
|
285
277
|
getStatus(): phase0.Status;
|