@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,4 +1,4 @@
|
|
|
1
|
-
import { ATTESTATION_SUBNET_COUNT,
|
|
1
|
+
import { ATTESTATION_SUBNET_COUNT, ForkSeq, SYNC_COMMITTEE_SUBNET_COUNT, isForkPostAltair, isForkPostElectra, } from "@lodestar/params";
|
|
2
2
|
import { ssz, sszTypesFor } from "@lodestar/types";
|
|
3
3
|
import { GossipAction, GossipActionError, GossipErrorCode } from "../../chain/errors/gossipValidation.js";
|
|
4
4
|
import { DEFAULT_ENCODING } from "./constants.js";
|
|
@@ -32,7 +32,7 @@ export class GossipTopicCache {
|
|
|
32
32
|
* Stringify a GossipTopic into a spec-ed formated topic string
|
|
33
33
|
*/
|
|
34
34
|
export function stringifyGossipTopic(forkDigestContext, topic) {
|
|
35
|
-
const forkDigestHexNoPrefix = forkDigestContext.
|
|
35
|
+
const forkDigestHexNoPrefix = forkDigestContext.forkBoundary2ForkDigestHex(topic.boundary);
|
|
36
36
|
const topicType = stringifyGossipTopicType(topic);
|
|
37
37
|
const encoding = topic.encoding ?? DEFAULT_ENCODING;
|
|
38
38
|
return `/eth2/${forkDigestHexNoPrefix}/${topicType}/${encoding}`;
|
|
@@ -57,27 +57,24 @@ function stringifyGossipTopicType(topic) {
|
|
|
57
57
|
return `${topic.type}_${topic.subnet}`;
|
|
58
58
|
case GossipType.blob_sidecar:
|
|
59
59
|
return `${topic.type}_${topic.subnet}`;
|
|
60
|
-
case GossipType.data_column_sidecar:
|
|
61
|
-
return `${topic.type}_${topic.subnet}`;
|
|
62
60
|
}
|
|
63
61
|
}
|
|
64
62
|
export function getGossipSSZType(topic) {
|
|
63
|
+
const { fork } = topic.boundary;
|
|
65
64
|
switch (topic.type) {
|
|
66
65
|
case GossipType.beacon_block:
|
|
67
66
|
// beacon_block is updated in altair to support the updated SignedBeaconBlock type
|
|
68
|
-
return ssz[
|
|
67
|
+
return ssz[fork].SignedBeaconBlock;
|
|
69
68
|
case GossipType.blob_sidecar:
|
|
70
69
|
return ssz.deneb.BlobSidecar;
|
|
71
|
-
case GossipType.data_column_sidecar:
|
|
72
|
-
return ssz.fulu.DataColumnSidecar;
|
|
73
70
|
case GossipType.beacon_aggregate_and_proof:
|
|
74
|
-
return sszTypesFor(
|
|
71
|
+
return sszTypesFor(fork).SignedAggregateAndProof;
|
|
75
72
|
case GossipType.beacon_attestation:
|
|
76
|
-
return sszTypesFor(
|
|
73
|
+
return sszTypesFor(fork).SingleAttestation;
|
|
77
74
|
case GossipType.proposer_slashing:
|
|
78
75
|
return ssz.phase0.ProposerSlashing;
|
|
79
76
|
case GossipType.attester_slashing:
|
|
80
|
-
return sszTypesFor(
|
|
77
|
+
return sszTypesFor(fork).AttesterSlashing;
|
|
81
78
|
case GossipType.voluntary_exit:
|
|
82
79
|
return ssz.phase0.SignedVoluntaryExit;
|
|
83
80
|
case GossipType.sync_committee_contribution_and_proof:
|
|
@@ -85,12 +82,12 @@ export function getGossipSSZType(topic) {
|
|
|
85
82
|
case GossipType.sync_committee:
|
|
86
83
|
return ssz.altair.SyncCommitteeMessage;
|
|
87
84
|
case GossipType.light_client_optimistic_update:
|
|
88
|
-
return isForkPostAltair(
|
|
89
|
-
? sszTypesFor(
|
|
85
|
+
return isForkPostAltair(fork)
|
|
86
|
+
? sszTypesFor(fork).LightClientOptimisticUpdate
|
|
90
87
|
: ssz.altair.LightClientOptimisticUpdate;
|
|
91
88
|
case GossipType.light_client_finality_update:
|
|
92
|
-
return isForkPostAltair(
|
|
93
|
-
? sszTypesFor(
|
|
89
|
+
return isForkPostAltair(fork)
|
|
90
|
+
? sszTypesFor(fork).LightClientFinalityUpdate
|
|
94
91
|
: ssz.altair.LightClientFinalityUpdate;
|
|
95
92
|
case GossipType.bls_to_execution_change:
|
|
96
93
|
return ssz.capella.SignedBLSToExecutionChange;
|
|
@@ -151,7 +148,7 @@ export function parseGossipTopic(forkDigestContext, topicStr) {
|
|
|
151
148
|
throw Error(`Must match regex ${gossipTopicRegex}`);
|
|
152
149
|
}
|
|
153
150
|
const [, forkDigestHexNoPrefix, gossipTypeStr, encodingStr] = matches;
|
|
154
|
-
const
|
|
151
|
+
const boundary = forkDigestContext.forkDigest2ForkBoundary(forkDigestHexNoPrefix);
|
|
155
152
|
const encoding = parseEncodingStr(encodingStr);
|
|
156
153
|
// Inline-d the parseGossipTopicType() function since spreading the resulting object x4 the time to parse a topicStr
|
|
157
154
|
switch (gossipTypeStr) {
|
|
@@ -164,7 +161,7 @@ export function parseGossipTopic(forkDigestContext, topicStr) {
|
|
|
164
161
|
case GossipType.light_client_finality_update:
|
|
165
162
|
case GossipType.light_client_optimistic_update:
|
|
166
163
|
case GossipType.bls_to_execution_change:
|
|
167
|
-
return { type: gossipTypeStr,
|
|
164
|
+
return { type: gossipTypeStr, boundary, encoding };
|
|
168
165
|
}
|
|
169
166
|
for (const gossipType of [GossipType.beacon_attestation, GossipType.sync_committee]) {
|
|
170
167
|
if (gossipTypeStr.startsWith(gossipType)) {
|
|
@@ -172,7 +169,7 @@ export function parseGossipTopic(forkDigestContext, topicStr) {
|
|
|
172
169
|
const subnet = parseInt(subnetStr, 10);
|
|
173
170
|
if (Number.isNaN(subnet))
|
|
174
171
|
throw Error(`Subnet ${subnetStr} is not a number`);
|
|
175
|
-
return { type: gossipType, subnet,
|
|
172
|
+
return { type: gossipType, subnet, boundary, encoding };
|
|
176
173
|
}
|
|
177
174
|
}
|
|
178
175
|
if (gossipTypeStr.startsWith(GossipType.blob_sidecar)) {
|
|
@@ -180,14 +177,7 @@ export function parseGossipTopic(forkDigestContext, topicStr) {
|
|
|
180
177
|
const subnet = parseInt(subnetStr, 10);
|
|
181
178
|
if (Number.isNaN(subnet))
|
|
182
179
|
throw Error(`subnet ${subnetStr} is not a number`);
|
|
183
|
-
return { type: GossipType.blob_sidecar, subnet,
|
|
184
|
-
}
|
|
185
|
-
if (gossipTypeStr.startsWith(GossipType.data_column_sidecar)) {
|
|
186
|
-
const subnetStr = gossipTypeStr.slice(GossipType.data_column_sidecar.length + 1); // +1 for '_' concatenating the topic name and the subnet
|
|
187
|
-
const subnet = parseInt(subnetStr, 10);
|
|
188
|
-
if (Number.isNaN(subnet))
|
|
189
|
-
throw Error(`subnet ${subnetStr} is not a number`);
|
|
190
|
-
return { type: GossipType.data_column_sidecar, subnet, fork, encoding };
|
|
180
|
+
return { type: GossipType.blob_sidecar, subnet, boundary, encoding };
|
|
191
181
|
}
|
|
192
182
|
throw Error(`Unknown gossip type ${gossipTypeStr}`);
|
|
193
183
|
}
|
|
@@ -208,13 +198,6 @@ export function getCoreTopicsAtFork(config, fork, opts) {
|
|
|
208
198
|
{ type: GossipType.proposer_slashing },
|
|
209
199
|
{ type: GossipType.attester_slashing },
|
|
210
200
|
];
|
|
211
|
-
// After fulu also track data_column_sidecar_{index}
|
|
212
|
-
if (ForkSeq[fork] >= ForkSeq.fulu) {
|
|
213
|
-
// TODO: @matthewkeil check if this needs to be updated for custody groups
|
|
214
|
-
for (let subnet = 0; subnet < DATA_COLUMN_SIDECAR_SUBNET_COUNT; subnet++) {
|
|
215
|
-
topics.push({ type: GossipType.data_column_sidecar, subnet });
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
201
|
// After Deneb also track blob_sidecar_{subnet_id}
|
|
219
202
|
if (ForkSeq[fork] >= ForkSeq.deneb) {
|
|
220
203
|
const subnetCount = isForkPostElectra(fork)
|
|
@@ -263,7 +246,6 @@ function parseEncodingStr(encodingStr) {
|
|
|
263
246
|
export const gossipTopicIgnoreDuplicatePublishError = {
|
|
264
247
|
[GossipType.beacon_block]: true,
|
|
265
248
|
[GossipType.blob_sidecar]: true,
|
|
266
|
-
[GossipType.data_column_sidecar]: true,
|
|
267
249
|
[GossipType.beacon_aggregate_and_proof]: true,
|
|
268
250
|
[GossipType.beacon_attestation]: true,
|
|
269
251
|
[GossipType.voluntary_exit]: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topic.js","sourceRoot":"","sources":["../../../src/network/gossip/topic.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,
|
|
1
|
+
{"version":3,"file":"topic.js","sourceRoot":"","sources":["../../../src/network/gossip/topic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Identify } from "@libp2p/identify";
|
|
2
2
|
import { ComponentLogger, ConnectionGater, ConnectionProtector, ContentRouting, Libp2pEvents, Metrics, NodeInfo, PeerId, PeerRouting, PeerStore, PrivateKey, TypedEventTarget, Upgrader } from "@libp2p/interface";
|
|
3
3
|
import type { AddressManager, ConnectionManager, Registrar, TransportManager } from "@libp2p/interface-internal";
|
|
4
|
-
import { AttesterSlashing, LightClientFinalityUpdate, LightClientOptimisticUpdate, SignedAggregateAndProof, SignedBeaconBlock, SingleAttestation, Slot, SlotRootHex, SubnetID, WithBytes, altair, capella, deneb,
|
|
4
|
+
import { AttesterSlashing, LightClientFinalityUpdate, LightClientOptimisticUpdate, SignedAggregateAndProof, SignedBeaconBlock, SingleAttestation, Slot, SlotRootHex, SubnetID, WithBytes, altair, capella, deneb, phase0 } from "@lodestar/types";
|
|
5
5
|
import type { Datastore } from "interface-datastore";
|
|
6
6
|
import { Libp2p as ILibp2p } from "libp2p";
|
|
7
|
-
import { CustodyConfig } from "../util/dataColumns.js";
|
|
8
7
|
import { PeerIdStr } from "../util/peerId.js";
|
|
9
8
|
import { BlobSidecarsByRootRequest } from "../util/types.js";
|
|
10
9
|
import { INetworkCorePublic } from "./core/types.js";
|
|
@@ -12,10 +11,6 @@ import { INetworkEventBus } from "./events.js";
|
|
|
12
11
|
import { GossipType } from "./gossip/interface.js";
|
|
13
12
|
import { PeerAction } from "./peers/index.js";
|
|
14
13
|
import { PendingGossipsubMessage } from "./processor/types.js";
|
|
15
|
-
export type WithOptionalBytes<T> = {
|
|
16
|
-
data: T;
|
|
17
|
-
bytes?: Uint8Array | null;
|
|
18
|
-
};
|
|
19
14
|
/**
|
|
20
15
|
* The architecture of the network looks like so:
|
|
21
16
|
* - core:
|
|
@@ -25,13 +20,9 @@ export type WithOptionalBytes<T> = {
|
|
|
25
20
|
* - INetwork - This interface extends INetworkCore and crucially allows for a connection to the BeaconChain module.
|
|
26
21
|
*/
|
|
27
22
|
export interface INetwork extends INetworkCorePublic {
|
|
28
|
-
readonly peerId: PeerId;
|
|
29
|
-
readonly custodyConfig: CustodyConfig;
|
|
30
23
|
readonly closed: boolean;
|
|
31
24
|
events: INetworkEventBus;
|
|
32
25
|
getConnectedPeers(): PeerIdStr[];
|
|
33
|
-
getConnectedPeerCustody(peerId: PeerIdStr): number[];
|
|
34
|
-
getConnectedPeerClientAgent(peerId: PeerIdStr): string;
|
|
35
26
|
getConnectedPeerCount(): number;
|
|
36
27
|
isSubscribedToGossipCoreTopics(): boolean;
|
|
37
28
|
reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): void;
|
|
@@ -42,13 +33,10 @@ export interface INetwork extends INetworkCorePublic {
|
|
|
42
33
|
sendBeaconBlocksByRoot(peerId: PeerIdStr, request: phase0.BeaconBlocksByRootRequest): Promise<WithBytes<SignedBeaconBlock>[]>;
|
|
43
34
|
sendBlobSidecarsByRange(peerId: PeerIdStr, request: deneb.BlobSidecarsByRangeRequest): Promise<deneb.BlobSidecar[]>;
|
|
44
35
|
sendBlobSidecarsByRoot(peerId: PeerIdStr, request: BlobSidecarsByRootRequest): Promise<deneb.BlobSidecar[]>;
|
|
45
|
-
sendDataColumnSidecarsByRange(peerId: PeerIdStr, request: fulu.DataColumnSidecarsByRangeRequest): Promise<fulu.DataColumnSidecar[]>;
|
|
46
|
-
sendDataColumnSidecarsByRoot(peerId: PeerIdStr, request: fulu.DataColumnSidecarsByRootRequest): Promise<fulu.DataColumnSidecar[]>;
|
|
47
36
|
publishBeaconBlock(signedBlock: SignedBeaconBlock): Promise<number>;
|
|
48
37
|
publishBlobSidecar(blobSidecar: deneb.BlobSidecar): Promise<number>;
|
|
49
38
|
publishBeaconAggregateAndProof(aggregateAndProof: SignedAggregateAndProof): Promise<number>;
|
|
50
39
|
publishBeaconAttestation(attestation: SingleAttestation, subnet: SubnetID): Promise<number>;
|
|
51
|
-
publishDataColumnSidecar(dataColumnSideCar: fulu.DataColumnSidecar): Promise<number>;
|
|
52
40
|
publishVoluntaryExit(voluntaryExit: phase0.SignedVoluntaryExit): Promise<number>;
|
|
53
41
|
publishBlsToExecutionChange(blsToExecutionChange: capella.SignedBLSToExecutionChange): Promise<number>;
|
|
54
42
|
publishProposerSlashing(proposerSlashing: phase0.ProposerSlashing): Promise<number>;
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
import { BitArray } from "@chainsafe/ssz";
|
|
2
2
|
import { BeaconConfig } from "@lodestar/config";
|
|
3
|
-
import { Epoch,
|
|
4
|
-
import { NetworkConfig } from "./networkConfig.js";
|
|
3
|
+
import { Epoch, altair, phase0 } from "@lodestar/types";
|
|
5
4
|
export declare enum ENRKey {
|
|
6
5
|
tcp = "tcp",
|
|
7
6
|
eth2 = "eth2",
|
|
8
7
|
attnets = "attnets",
|
|
9
|
-
syncnets = "syncnets"
|
|
10
|
-
cgc = "cgc"
|
|
8
|
+
syncnets = "syncnets"
|
|
11
9
|
}
|
|
12
10
|
export declare enum SubnetType {
|
|
13
11
|
attnets = "attnets",
|
|
14
12
|
syncnets = "syncnets"
|
|
15
13
|
}
|
|
16
14
|
export type MetadataOpts = {
|
|
17
|
-
metadata?:
|
|
15
|
+
metadata?: altair.Metadata;
|
|
18
16
|
};
|
|
19
17
|
export type MetadataModules = {
|
|
20
|
-
|
|
18
|
+
config: BeaconConfig;
|
|
21
19
|
onSetValue: (key: string, value: Uint8Array) => void;
|
|
22
20
|
};
|
|
23
21
|
/**
|
|
@@ -27,7 +25,7 @@ export type MetadataModules = {
|
|
|
27
25
|
*/
|
|
28
26
|
export declare class MetadataController {
|
|
29
27
|
private onSetValue;
|
|
30
|
-
private
|
|
28
|
+
private config;
|
|
31
29
|
private _metadata;
|
|
32
30
|
constructor(opts: MetadataOpts, modules: MetadataModules);
|
|
33
31
|
upstreamValues(currentEpoch: Epoch): void;
|
|
@@ -36,10 +34,8 @@ export declare class MetadataController {
|
|
|
36
34
|
set syncnets(syncnets: BitArray);
|
|
37
35
|
get attnets(): BitArray;
|
|
38
36
|
set attnets(attnets: BitArray);
|
|
39
|
-
get custodyGroupCount(): number;
|
|
40
|
-
set custodyGroupCount(custodyGroupCount: number);
|
|
41
37
|
/** Consumers that need the phase0.Metadata type can just ignore the .syncnets property */
|
|
42
|
-
get json():
|
|
38
|
+
get json(): altair.Metadata;
|
|
43
39
|
/**
|
|
44
40
|
* From spec:
|
|
45
41
|
* fork_digest is compute_fork_digest(current_fork_version, genesis_validators_root) where
|
package/lib/network/metadata.js
CHANGED
|
@@ -2,15 +2,13 @@ import { ForkSeq } from "@lodestar/params";
|
|
|
2
2
|
import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
4
|
import { FAR_FUTURE_EPOCH } from "../constants/index.js";
|
|
5
|
-
import {
|
|
6
|
-
import { getCurrentAndNextFork } from "./forks.js";
|
|
5
|
+
import { getCurrentAndNextForkBoundary } from "./forks.js";
|
|
7
6
|
export var ENRKey;
|
|
8
7
|
(function (ENRKey) {
|
|
9
8
|
ENRKey["tcp"] = "tcp";
|
|
10
9
|
ENRKey["eth2"] = "eth2";
|
|
11
10
|
ENRKey["attnets"] = "attnets";
|
|
12
11
|
ENRKey["syncnets"] = "syncnets";
|
|
13
|
-
ENRKey["cgc"] = "cgc";
|
|
14
12
|
})(ENRKey || (ENRKey = {}));
|
|
15
13
|
export var SubnetType;
|
|
16
14
|
(function (SubnetType) {
|
|
@@ -24,25 +22,19 @@ export var SubnetType;
|
|
|
24
22
|
*/
|
|
25
23
|
export class MetadataController {
|
|
26
24
|
constructor(opts, modules) {
|
|
27
|
-
this.
|
|
25
|
+
this.config = modules.config;
|
|
28
26
|
this.onSetValue = modules.onSetValue;
|
|
29
|
-
this._metadata = opts.metadata
|
|
30
|
-
...ssz.fulu.Metadata.defaultValue(),
|
|
31
|
-
custodyGroupCount: modules.networkConfig.getCustodyConfig().advertisedCustodyGroupCount,
|
|
32
|
-
};
|
|
27
|
+
this._metadata = opts.metadata || ssz.altair.Metadata.defaultValue();
|
|
33
28
|
}
|
|
34
29
|
upstreamValues(currentEpoch) {
|
|
35
30
|
// updateEth2Field() MUST be called with clock epoch
|
|
36
31
|
this.updateEth2Field(currentEpoch);
|
|
37
32
|
this.onSetValue(ENRKey.attnets, ssz.phase0.AttestationSubnets.serialize(this._metadata.attnets));
|
|
38
|
-
|
|
39
|
-
if (config.getForkSeq(computeStartSlotAtEpoch(currentEpoch)) >= ForkSeq.altair) {
|
|
33
|
+
if (this.config.getForkSeq(computeStartSlotAtEpoch(currentEpoch)) >= ForkSeq.altair) {
|
|
40
34
|
// Only persist syncnets if altair fork is already activated. If currentFork is altair but head is phase0
|
|
41
35
|
// adding syncnets to the ENR is not a problem, we will just have a useless field for a few hours.
|
|
42
36
|
this.onSetValue(ENRKey.syncnets, ssz.phase0.AttestationSubnets.serialize(this._metadata.syncnets));
|
|
43
37
|
}
|
|
44
|
-
// Set CGC regardless of fork. It may be useful to clients before Fulu, and will be ignored otherwise.
|
|
45
|
-
this.onSetValue(ENRKey.cgc, serializeCgc(this._metadata.custodyGroupCount));
|
|
46
38
|
}
|
|
47
39
|
get seqNumber() {
|
|
48
40
|
return this._metadata.seqNumber;
|
|
@@ -62,17 +54,6 @@ export class MetadataController {
|
|
|
62
54
|
this._metadata.seqNumber++;
|
|
63
55
|
this._metadata.attnets = attnets;
|
|
64
56
|
}
|
|
65
|
-
get custodyGroupCount() {
|
|
66
|
-
return this._metadata.custodyGroupCount;
|
|
67
|
-
}
|
|
68
|
-
set custodyGroupCount(custodyGroupCount) {
|
|
69
|
-
if (custodyGroupCount === this._metadata.custodyGroupCount) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
this.onSetValue(ENRKey.cgc, serializeCgc(custodyGroupCount));
|
|
73
|
-
this._metadata.seqNumber++;
|
|
74
|
-
this._metadata.custodyGroupCount = custodyGroupCount;
|
|
75
|
-
}
|
|
76
57
|
/** Consumers that need the phase0.Metadata type can just ignore the .syncnets property */
|
|
77
58
|
get json() {
|
|
78
59
|
return this._metadata;
|
|
@@ -89,20 +70,22 @@ export class MetadataController {
|
|
|
89
70
|
* Current Clock implementation ensures no race conditions, epoch is correct if re-fetched
|
|
90
71
|
*/
|
|
91
72
|
updateEth2Field(epoch) {
|
|
92
|
-
const enrForkId = ssz.phase0.ENRForkID.serialize(getENRForkID(this.
|
|
73
|
+
const enrForkId = ssz.phase0.ENRForkID.serialize(getENRForkID(this.config, epoch));
|
|
93
74
|
this.onSetValue(ENRKey.eth2, enrForkId);
|
|
94
75
|
return enrForkId;
|
|
95
76
|
}
|
|
96
77
|
}
|
|
97
78
|
export function getENRForkID(config, clockEpoch) {
|
|
98
|
-
const {
|
|
79
|
+
const { currentBoundary, nextBoundary } = getCurrentAndNextForkBoundary(config, clockEpoch);
|
|
99
80
|
return {
|
|
100
81
|
// Current fork digest
|
|
101
|
-
forkDigest: config.
|
|
102
|
-
//
|
|
103
|
-
nextForkVersion:
|
|
104
|
-
|
|
105
|
-
|
|
82
|
+
forkDigest: config.forkBoundary2ForkDigest(currentBoundary),
|
|
83
|
+
// Next planned fork version
|
|
84
|
+
nextForkVersion: nextBoundary
|
|
85
|
+
? config.forks[nextBoundary.fork].version
|
|
86
|
+
: config.forks[currentBoundary.fork].version,
|
|
87
|
+
// Next fork epoch
|
|
88
|
+
nextForkEpoch: nextBoundary ? nextBoundary.epoch : FAR_FUTURE_EPOCH,
|
|
106
89
|
};
|
|
107
90
|
}
|
|
108
91
|
//# sourceMappingURL=metadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/network/metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/network/metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAwB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,6BAA6B,EAAC,MAAM,YAAY,CAAC;AAEzD,MAAM,CAAN,IAAY,MAKX;AALD,WAAY,MAAM;IAChB,qBAAW,CAAA;IACX,uBAAa,CAAA;IACb,6BAAmB,CAAA;IACnB,+BAAqB,CAAA;AACvB,CAAC,EALW,MAAM,KAAN,MAAM,QAKjB;AACD,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,mCAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAWD;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAK7B,YAAY,IAAkB,EAAE,OAAwB;QACtD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,YAAmB;QAChC,oDAAoD;QACpD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAEjG,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACpF,yGAAyG;YACzG,kGAAkG;YAClG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,CAAC,QAAkB;QAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACrC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,CAAC,OAAiB;QAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,CAAC;IAED,0FAA0F;IAC1F,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;;;;;OAUG;IACH,eAAe,CAAC,KAAY;QAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,MAAoB,EAAE,UAAiB;IAClE,MAAM,EAAC,eAAe,EAAE,YAAY,EAAC,GAAG,6BAA6B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAE1F,OAAO;QACL,sBAAsB;QACtB,UAAU,EAAE,MAAM,CAAC,uBAAuB,CAAC,eAAe,CAAC;QAC3D,4BAA4B;QAC5B,eAAe,EAAE,YAAY;YAC3B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO;YACzC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO;QAC9C,kBAAkB;QAClB,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB;KACpE,CAAC;AACJ,CAAC"}
|
package/lib/network/network.d.ts
CHANGED
|
@@ -3,11 +3,10 @@ import { PeerId, PrivateKey } from "@libp2p/interface";
|
|
|
3
3
|
import { routes } from "@lodestar/api";
|
|
4
4
|
import { BeaconConfig } from "@lodestar/config";
|
|
5
5
|
import { LoggerNode } from "@lodestar/logger/node";
|
|
6
|
-
import { AttesterSlashing, LightClientBootstrap, LightClientFinalityUpdate, LightClientOptimisticUpdate, LightClientUpdate, Root, SignedAggregateAndProof, SignedBeaconBlock, SingleAttestation, SlotRootHex, SubnetID, WithBytes, altair, capella, deneb,
|
|
6
|
+
import { AttesterSlashing, LightClientBootstrap, LightClientFinalityUpdate, LightClientOptimisticUpdate, LightClientUpdate, Root, SignedAggregateAndProof, SignedBeaconBlock, SingleAttestation, SlotRootHex, SubnetID, WithBytes, altair, capella, deneb, phase0 } from "@lodestar/types";
|
|
7
7
|
import { IBeaconChain } from "../chain/index.js";
|
|
8
8
|
import { IBeaconDb } from "../db/interface.js";
|
|
9
9
|
import { Metrics } from "../metrics/index.js";
|
|
10
|
-
import { CustodyConfig } from "../util/dataColumns.js";
|
|
11
10
|
import { PeerIdStr } from "../util/peerId.js";
|
|
12
11
|
import { BlobSidecarsByRootRequest } from "../util/types.js";
|
|
13
12
|
import { INetworkCore } from "./core/index.js";
|
|
@@ -53,7 +52,6 @@ export type NetworkInitModules = {
|
|
|
53
52
|
*/
|
|
54
53
|
export declare class Network implements INetwork {
|
|
55
54
|
readonly peerId: PeerId;
|
|
56
|
-
readonly custodyConfig: CustodyConfig;
|
|
57
55
|
readonly events: INetworkEventBus;
|
|
58
56
|
private readonly logger;
|
|
59
57
|
private readonly config;
|
|
@@ -65,7 +63,6 @@ export declare class Network implements INetwork {
|
|
|
65
63
|
private readonly aggregatorTracker;
|
|
66
64
|
private subscribedToCoreTopics;
|
|
67
65
|
private connectedPeers;
|
|
68
|
-
private connectedPeerClients;
|
|
69
66
|
constructor(modules: NetworkModules);
|
|
70
67
|
static init({ opts, config, logger, metrics, chain, db, gossipHandlers, privateKey, peerStoreDir, getReqRespHandler, }: NetworkInitModules): Promise<Network>;
|
|
71
68
|
get closed(): boolean;
|
|
@@ -84,8 +81,6 @@ export declare class Network implements INetwork {
|
|
|
84
81
|
searchUnknownSlotRoot(slotRoot: SlotRootHex, peer?: PeerIdStr): void;
|
|
85
82
|
reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): Promise<void>;
|
|
86
83
|
getConnectedPeers(): PeerIdStr[];
|
|
87
|
-
getConnectedPeerCustody(peerId: PeerIdStr): number[];
|
|
88
|
-
getConnectedPeerClientAgent(peerId: PeerIdStr): string;
|
|
89
84
|
getConnectedPeerCount(): number;
|
|
90
85
|
getNetworkIdentity(): Promise<routes.node.NetworkIdentity>;
|
|
91
86
|
/**
|
|
@@ -100,7 +95,6 @@ export declare class Network implements INetwork {
|
|
|
100
95
|
shouldAggregate(subnet: SubnetID, slot: number): boolean;
|
|
101
96
|
publishBeaconBlock(signedBlock: SignedBeaconBlock): Promise<number>;
|
|
102
97
|
publishBlobSidecar(blobSidecar: deneb.BlobSidecar): Promise<number>;
|
|
103
|
-
publishDataColumnSidecar(dataColumnSidecar: fulu.DataColumnSidecar): Promise<number>;
|
|
104
98
|
publishBeaconAggregateAndProof(aggregateAndProof: SignedAggregateAndProof): Promise<number>;
|
|
105
99
|
publishBeaconAttestation(attestation: SingleAttestation, subnet: SubnetID): Promise<number>;
|
|
106
100
|
publishVoluntaryExit(voluntaryExit: phase0.SignedVoluntaryExit): Promise<number>;
|
|
@@ -120,8 +114,6 @@ export declare class Network implements INetwork {
|
|
|
120
114
|
sendLightClientUpdatesByRange(peerId: PeerIdStr, request: altair.LightClientUpdatesByRange): Promise<LightClientUpdate[]>;
|
|
121
115
|
sendBlobSidecarsByRange(peerId: PeerIdStr, request: deneb.BlobSidecarsByRangeRequest): Promise<deneb.BlobSidecar[]>;
|
|
122
116
|
sendBlobSidecarsByRoot(peerId: PeerIdStr, request: BlobSidecarsByRootRequest): Promise<deneb.BlobSidecar[]>;
|
|
123
|
-
sendDataColumnSidecarsByRange(peerId: PeerIdStr, request: fulu.DataColumnSidecarsByRangeRequest): Promise<fulu.DataColumnSidecar[]>;
|
|
124
|
-
sendDataColumnSidecarsByRoot(peerId: PeerIdStr, request: fulu.DataColumnSidecarsByRootRequest): Promise<fulu.DataColumnSidecar[]>;
|
|
125
117
|
private sendReqRespRequest;
|
|
126
118
|
connectToPeer(peer: string, multiaddr: string[]): Promise<void>;
|
|
127
119
|
disconnectPeer(peer: string): Promise<void>;
|
|
@@ -142,9 +134,6 @@ export declare class Network implements INetwork {
|
|
|
142
134
|
private onHead;
|
|
143
135
|
private onPeerConnected;
|
|
144
136
|
private onPeerDisconnected;
|
|
145
|
-
private onTargetGroupCountUpdated;
|
|
146
|
-
private onAdvertisedGroupCountUpdated;
|
|
147
|
-
private onPublishDataColumns;
|
|
148
137
|
}
|
|
149
138
|
export {};
|
|
150
139
|
//# sourceMappingURL=network.d.ts.map
|