@lodestar/beacon-node 1.29.0-dev.f87bd54721 → 1.29.0-peerDAS.97104b75a4
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 +37 -14
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +1 -1
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.js +0 -12
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +4 -14
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js +0 -12
- package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +56 -21
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/beaconProposerCache.d.ts +1 -0
- package/lib/chain/beaconProposerCache.js +3 -0
- package/lib/chain/beaconProposerCache.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +56 -14
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +67 -26
- package/lib/chain/blocks/types.js +39 -6
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +21 -10
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +88 -15
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +28 -1
- package/lib/chain/chain.js +22 -7
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +18 -2
- package/lib/chain/emitter.js +13 -0
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts +27 -0
- package/lib/chain/errors/dataColumnSidecarError.js +12 -0
- package/lib/chain/errors/dataColumnSidecarError.js.map +1 -0
- package/lib/chain/errors/index.d.ts +1 -0
- package/lib/chain/errors/index.js +1 -0
- package/lib/chain/errors/index.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -0
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +6 -4
- package/lib/chain/opPools/aggregatedAttestationPool.js +48 -76
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.d.ts +2 -4
- package/lib/chain/opPools/attestationPool.js +3 -4
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/options.d.ts +3 -0
- package/lib/chain/options.js +4 -0
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +55 -18
- package/lib/chain/seenCache/seenGossipBlockInput.js +293 -51
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +8 -0
- package/lib/chain/validation/dataColumnSidecar.js +91 -0
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -0
- package/lib/db/beacon.d.ts +3 -1
- package/lib/db/beacon.js +3 -1
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/buckets.d.ts +3 -1
- package/lib/db/buckets.js +2 -0
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/interface.d.ts +3 -1
- package/lib/db/repositories/dataColumnSidecars.d.ts +47 -0
- package/lib/db/repositories/dataColumnSidecars.js +40 -0
- package/lib/db/repositories/dataColumnSidecars.js.map +1 -0
- package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +15 -0
- package/lib/db/repositories/dataColumnSidecarsArchive.js +23 -0
- package/lib/db/repositories/dataColumnSidecarsArchive.js.map +1 -0
- package/lib/db/repositories/index.d.ts +2 -0
- package/lib/db/repositories/index.js +2 -0
- package/lib/db/repositories/index.js.map +1 -1
- package/lib/execution/engine/http.d.ts +5 -3
- package/lib/execution/engine/http.js +48 -24
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +4 -2
- package/lib/execution/engine/interface.js +1 -1
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +1 -0
- package/lib/execution/engine/mock.js +4 -0
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +8 -0
- package/lib/execution/engine/types.js +6 -0
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +7 -0
- package/lib/metrics/metrics/beacon.js +23 -0
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +10 -21
- package/lib/metrics/metrics/lodestar.js +28 -64
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/metrics/validatorMonitor.js +1 -1
- package/lib/metrics/validatorMonitor.js.map +1 -1
- package/lib/network/core/metrics.d.ts +14 -4
- package/lib/network/core/metrics.js +23 -0
- package/lib/network/core/metrics.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +9 -3
- package/lib/network/core/networkCore.js +23 -17
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +5 -5
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -2
- package/lib/network/core/networkCoreWorkerHandler.js +10 -3
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/core/types.d.ts +5 -1
- package/lib/network/discv5/index.d.ts +3 -2
- package/lib/network/discv5/index.js +5 -4
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/discv5/types.d.ts +1 -1
- package/lib/network/discv5/worker.js +6 -7
- package/lib/network/discv5/worker.js.map +1 -1
- package/lib/network/events.d.ts +3 -1
- package/lib/network/events.js.map +1 -1
- package/lib/network/gossip/gossipsub.js +0 -4
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +8 -1
- package/lib/network/gossip/interface.js +1 -0
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +1189 -1289
- package/lib/network/gossip/topic.js +20 -1
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +17 -4
- package/lib/network/libp2p/index.d.ts +2 -2
- package/lib/network/libp2p/index.js +9 -9
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/metadata.d.ts +10 -6
- package/lib/network/metadata.js +20 -4
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts +20 -6
- package/lib/network/network.js +63 -11
- package/lib/network/network.js.map +1 -1
- package/lib/network/networkConfig.d.ts +23 -0
- package/lib/network/networkConfig.js +32 -0
- package/lib/network/networkConfig.js.map +1 -0
- package/lib/network/options.js +2 -0
- package/lib/network/options.js.map +1 -1
- package/lib/network/peers/datastore.d.ts +1 -2
- package/lib/network/peers/datastore.js +1 -1
- package/lib/network/peers/datastore.js.map +1 -1
- package/lib/network/peers/discover.d.ts +19 -7
- package/lib/network/peers/discover.js +148 -18
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.d.ts +11 -9
- package/lib/network/peers/peerManager.js +96 -10
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/peersData.d.ts +8 -2
- 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 +4 -1
- package/lib/network/peers/score/score.js.map +1 -1
- package/lib/network/peers/score/store.d.ts +3 -1
- package/lib/network/peers/score/store.js +6 -2
- package/lib/network/peers/score/store.js.map +1 -1
- package/lib/network/peers/utils/getConnectedPeerIds.js +2 -2
- package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts +15 -4
- package/lib/network/peers/utils/prioritizePeers.js +28 -5
- package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js +8 -1
- package/lib/network/processor/extractSlotRootFns.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +154 -16
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +5 -0
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/index.js +5 -1
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +21 -3
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +14 -5
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +194 -14
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +28 -5
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +254 -26
- 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.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +8 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +106 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +6 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +58 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -0
- package/lib/network/reqresp/handlers/index.js +10 -0
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/protocols.d.ts +3 -0
- package/lib/network/reqresp/protocols.js +15 -0
- package/lib/network/reqresp/protocols.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +11 -1
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +13 -6
- package/lib/network/reqresp/types.js +8 -1
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/network/subnets/interface.d.ts +2 -0
- package/lib/network/subnets/interface.js +16 -1
- package/lib/network/subnets/interface.js.map +1 -1
- package/lib/network/subnets/syncnetsService.js +4 -5
- package/lib/network/subnets/syncnetsService.js.map +1 -1
- package/lib/network/util.d.ts +1 -4
- package/lib/network/util.js +2 -2
- package/lib/network/util.js.map +1 -1
- package/lib/node/nodejs.d.ts +5 -3
- package/lib/node/nodejs.js +6 -4
- 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 +8 -2
- package/lib/sync/range/batch.js +16 -7
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +7 -2
- package/lib/sync/range/chain.js +45 -21
- 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 +4 -1
- package/lib/sync/range/utils/peerBalancer.js +20 -2
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +8 -1
- package/lib/sync/unknownBlock.js +223 -63
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/blobs.d.ts +12 -1
- package/lib/util/blobs.js +40 -1
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/dataColumns.d.ts +105 -0
- package/lib/util/dataColumns.js +189 -0
- package/lib/util/dataColumns.js.map +1 -0
- package/lib/util/kzg.d.ts +9 -21
- package/lib/util/kzg.js +12 -88
- package/lib/util/kzg.js.map +1 -1
- package/lib/util/peerId.js +1 -1
- package/lib/util/peerId.js.map +1 -1
- package/lib/util/sszBytes.d.ts +1 -0
- package/lib/util/sszBytes.js +17 -0
- package/lib/util/sszBytes.js.map +1 -1
- package/package.json +33 -32
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ATTESTATION_SUBNET_COUNT, ForkSeq, SYNC_COMMITTEE_SUBNET_COUNT, isForkPostAltair, isForkPostElectra, } from "@lodestar/params";
|
|
1
|
+
import { ATTESTATION_SUBNET_COUNT, DATA_COLUMN_SIDECAR_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";
|
|
@@ -57,6 +57,8 @@ 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.index}`;
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
64
|
export function getGossipSSZType(topic) {
|
|
@@ -66,6 +68,8 @@ export function getGossipSSZType(topic) {
|
|
|
66
68
|
return ssz[topic.fork].SignedBeaconBlock;
|
|
67
69
|
case GossipType.blob_sidecar:
|
|
68
70
|
return ssz.deneb.BlobSidecar;
|
|
71
|
+
case GossipType.data_column_sidecar:
|
|
72
|
+
return ssz.fulu.DataColumnSidecar;
|
|
69
73
|
case GossipType.beacon_aggregate_and_proof:
|
|
70
74
|
return sszTypesFor(topic.fork).SignedAggregateAndProof;
|
|
71
75
|
case GossipType.beacon_attestation:
|
|
@@ -178,6 +182,13 @@ export function parseGossipTopic(forkDigestContext, topicStr) {
|
|
|
178
182
|
throw Error(`subnet ${subnetStr} is not a number`);
|
|
179
183
|
return { type: GossipType.blob_sidecar, subnet, fork, encoding };
|
|
180
184
|
}
|
|
185
|
+
if (gossipTypeStr.startsWith(GossipType.data_column_sidecar)) {
|
|
186
|
+
const indexStr = gossipTypeStr.slice(GossipType.data_column_sidecar.length + 1); // +1 for '_' concatenating the topic name and the index
|
|
187
|
+
const index = parseInt(indexStr, 10);
|
|
188
|
+
if (Number.isNaN(index))
|
|
189
|
+
throw Error(`index ${indexStr} is not a number`);
|
|
190
|
+
return { type: GossipType.data_column_sidecar, index, fork, encoding };
|
|
191
|
+
}
|
|
181
192
|
throw Error(`Unknown gossip type ${gossipTypeStr}`);
|
|
182
193
|
}
|
|
183
194
|
catch (e) {
|
|
@@ -197,6 +208,13 @@ export function getCoreTopicsAtFork(config, fork, opts) {
|
|
|
197
208
|
{ type: GossipType.proposer_slashing },
|
|
198
209
|
{ type: GossipType.attester_slashing },
|
|
199
210
|
];
|
|
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 index = 0; index < DATA_COLUMN_SIDECAR_SUBNET_COUNT; index++) {
|
|
215
|
+
topics.push({ type: GossipType.data_column_sidecar, index });
|
|
216
|
+
}
|
|
217
|
+
}
|
|
200
218
|
// After Deneb also track blob_sidecar_{subnet_id}
|
|
201
219
|
if (ForkSeq[fork] >= ForkSeq.deneb) {
|
|
202
220
|
const subnetCount = isForkPostElectra(fork)
|
|
@@ -245,6 +263,7 @@ function parseEncodingStr(encodingStr) {
|
|
|
245
263
|
export const gossipTopicIgnoreDuplicatePublishError = {
|
|
246
264
|
[GossipType.beacon_block]: true,
|
|
247
265
|
[GossipType.blob_sidecar]: true,
|
|
266
|
+
[GossipType.data_column_sidecar]: true,
|
|
248
267
|
[GossipType.beacon_aggregate_and_proof]: true,
|
|
249
268
|
[GossipType.beacon_attestation]: true,
|
|
250
269
|
[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,9 +1,10 @@
|
|
|
1
|
-
import { Identify } from "@libp2p
|
|
2
|
-
import { ComponentLogger, ConnectionGater, ConnectionProtector, ContentRouting, Libp2pEvents, Metrics, NodeInfo, PeerId, PeerRouting, PeerStore,
|
|
1
|
+
import { Identify } from "@chainsafe/libp2p-identify";
|
|
2
|
+
import { ComponentLogger, ConnectionGater, ConnectionProtector, ContentRouting, Libp2pEvents, Metrics, NodeInfo, PeerId, PeerRouting, PeerStore, 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, phase0 } from "@lodestar/types";
|
|
4
|
+
import { AttesterSlashing, LightClientFinalityUpdate, LightClientOptimisticUpdate, SignedAggregateAndProof, SignedBeaconBlock, SingleAttestation, Slot, SlotRootHex, SubnetID, WithBytes, altair, capella, deneb, fulu, 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";
|
|
7
8
|
import { PeerIdStr } from "../util/peerId.js";
|
|
8
9
|
import { BlobSidecarsByRootRequest } from "../util/types.js";
|
|
9
10
|
import { INetworkCorePublic } from "./core/types.js";
|
|
@@ -11,6 +12,11 @@ import { INetworkEventBus } from "./events.js";
|
|
|
11
12
|
import { GossipType } from "./gossip/interface.js";
|
|
12
13
|
import { PeerAction } from "./peers/index.js";
|
|
13
14
|
import { PendingGossipsubMessage } from "./processor/types.js";
|
|
15
|
+
import { NodeId } from "./subnets/interface.js";
|
|
16
|
+
export type WithOptionalBytes<T> = {
|
|
17
|
+
data: T;
|
|
18
|
+
bytes?: Uint8Array | null;
|
|
19
|
+
};
|
|
14
20
|
/**
|
|
15
21
|
* The architecture of the network looks like so:
|
|
16
22
|
* - core:
|
|
@@ -20,9 +26,14 @@ import { PendingGossipsubMessage } from "./processor/types.js";
|
|
|
20
26
|
* - INetwork - This interface extends INetworkCore and crucially allows for a connection to the BeaconChain module.
|
|
21
27
|
*/
|
|
22
28
|
export interface INetwork extends INetworkCorePublic {
|
|
29
|
+
readonly nodeId: NodeId;
|
|
30
|
+
readonly peerId: PeerId;
|
|
31
|
+
readonly custodyConfig: CustodyConfig;
|
|
23
32
|
readonly closed: boolean;
|
|
24
33
|
events: INetworkEventBus;
|
|
25
34
|
getConnectedPeers(): PeerIdStr[];
|
|
35
|
+
getConnectedPeerCustody(peerId: PeerIdStr): number[];
|
|
36
|
+
getConnectedPeerClientAgent(peerId: PeerIdStr): string;
|
|
26
37
|
getConnectedPeerCount(): number;
|
|
27
38
|
isSubscribedToGossipCoreTopics(): boolean;
|
|
28
39
|
reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): void;
|
|
@@ -33,10 +44,13 @@ export interface INetwork extends INetworkCorePublic {
|
|
|
33
44
|
sendBeaconBlocksByRoot(peerId: PeerIdStr, request: phase0.BeaconBlocksByRootRequest): Promise<WithBytes<SignedBeaconBlock>[]>;
|
|
34
45
|
sendBlobSidecarsByRange(peerId: PeerIdStr, request: deneb.BlobSidecarsByRangeRequest): Promise<deneb.BlobSidecar[]>;
|
|
35
46
|
sendBlobSidecarsByRoot(peerId: PeerIdStr, request: BlobSidecarsByRootRequest): Promise<deneb.BlobSidecar[]>;
|
|
47
|
+
sendDataColumnSidecarsByRange(peerId: PeerIdStr, request: fulu.DataColumnSidecarsByRangeRequest): Promise<fulu.DataColumnSidecar[]>;
|
|
48
|
+
sendDataColumnSidecarsByRoot(peerId: PeerIdStr, request: fulu.DataColumnSidecarsByRootRequest): Promise<fulu.DataColumnSidecar[]>;
|
|
36
49
|
publishBeaconBlock(signedBlock: SignedBeaconBlock): Promise<number>;
|
|
37
50
|
publishBlobSidecar(blobSidecar: deneb.BlobSidecar): Promise<number>;
|
|
38
51
|
publishBeaconAggregateAndProof(aggregateAndProof: SignedAggregateAndProof): Promise<number>;
|
|
39
52
|
publishBeaconAttestation(attestation: SingleAttestation, subnet: SubnetID): Promise<number>;
|
|
53
|
+
publishDataColumnSidecar(dataColumnSideCar: fulu.DataColumnSidecar): Promise<number>;
|
|
40
54
|
publishVoluntaryExit(voluntaryExit: phase0.SignedVoluntaryExit): Promise<number>;
|
|
41
55
|
publishBlsToExecutionChange(blsToExecutionChange: capella.SignedBLSToExecutionChange): Promise<number>;
|
|
42
56
|
publishProposerSlashing(proposerSlashing: phase0.ProposerSlashing): Promise<number>;
|
|
@@ -53,7 +67,6 @@ export interface INetwork extends INetworkCorePublic {
|
|
|
53
67
|
}
|
|
54
68
|
export type LodestarComponents = {
|
|
55
69
|
peerId: PeerId;
|
|
56
|
-
privateKey: PrivateKey;
|
|
57
70
|
nodeInfo: NodeInfo;
|
|
58
71
|
logger: ComponentLogger;
|
|
59
72
|
events: TypedEventTarget<Libp2pEvents>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PeerId } from "@libp2p/interface";
|
|
2
2
|
import { Registry } from "prom-client";
|
|
3
3
|
import { Libp2p } from "../interface.js";
|
|
4
4
|
import { NetworkOptions } from "../options.js";
|
|
@@ -9,5 +9,5 @@ export type NodeJsLibp2pOpts = {
|
|
|
9
9
|
metricsRegistry?: Registry;
|
|
10
10
|
};
|
|
11
11
|
export declare function getDiscv5Multiaddrs(bootEnrs: string[]): Promise<string[]>;
|
|
12
|
-
export declare function createNodeJsLibp2p(
|
|
12
|
+
export declare function createNodeJsLibp2p(peerId: PeerId, networkOpts?: Partial<NetworkOptions>, nodeJsLibp2pOpts?: NodeJsLibp2pOpts): Promise<Libp2p>;
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ENR } from "@chainsafe/enr";
|
|
2
|
+
// TODO: We should use this fork until https://github.com/libp2p/js-libp2p/pull/2387
|
|
3
|
+
import { identify } from "@chainsafe/libp2p-identify";
|
|
2
4
|
import { noise } from "@chainsafe/libp2p-noise";
|
|
3
5
|
import { bootstrap } from "@libp2p/bootstrap";
|
|
4
|
-
import { identify } from "@libp2p/identify";
|
|
5
6
|
import { mdns } from "@libp2p/mdns";
|
|
6
7
|
import { mplex } from "@libp2p/mplex";
|
|
7
8
|
import { prometheusMetrics } from "@libp2p/prometheus-metrics";
|
|
@@ -20,7 +21,7 @@ export async function getDiscv5Multiaddrs(bootEnrs) {
|
|
|
20
21
|
}
|
|
21
22
|
return bootMultiaddrs;
|
|
22
23
|
}
|
|
23
|
-
export async function createNodeJsLibp2p(
|
|
24
|
+
export async function createNodeJsLibp2p(peerId, networkOpts = {}, nodeJsLibp2pOpts = {}) {
|
|
24
25
|
const localMultiaddrs = networkOpts.localMultiaddrs || defaultNetworkOptions.localMultiaddrs;
|
|
25
26
|
const { peerStoreDir, disablePeerDiscovery } = nodeJsLibp2pOpts;
|
|
26
27
|
let datastore = undefined;
|
|
@@ -43,12 +44,12 @@ export async function createNodeJsLibp2p(privateKey, networkOpts = {}, nodeJsLib
|
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
return createLibp2p({
|
|
46
|
-
|
|
47
|
+
peerId,
|
|
47
48
|
addresses: {
|
|
48
49
|
listen: localMultiaddrs,
|
|
49
50
|
announce: [],
|
|
50
51
|
},
|
|
51
|
-
|
|
52
|
+
connectionEncryption: [noise()],
|
|
52
53
|
// Reject connections when the server's connection count gets high
|
|
53
54
|
transports: [
|
|
54
55
|
tcp({
|
|
@@ -77,14 +78,14 @@ export async function createNodeJsLibp2p(privateKey, networkOpts = {}, nodeJsLib
|
|
|
77
78
|
maxParallelDials: 100,
|
|
78
79
|
maxPeerAddrsToDial: 4,
|
|
79
80
|
dialTimeout: 30_000,
|
|
81
|
+
// Rely entirely on lodestar's peer manager to prune connections
|
|
82
|
+
//maxConnections: options.maxConnections,
|
|
83
|
+
// DOCS: There is no way to turn off autodial other than setting minConnections to 0
|
|
84
|
+
minConnections: 0,
|
|
80
85
|
// the maximum number of pending connections libp2p will accept before it starts rejecting incoming connections.
|
|
81
86
|
// make it the same to backlog option above
|
|
82
87
|
maxIncomingPendingConnections: 5,
|
|
83
88
|
},
|
|
84
|
-
// rely on lodestar's peer manager to ping peers
|
|
85
|
-
connectionMonitor: {
|
|
86
|
-
enabled: false,
|
|
87
|
-
},
|
|
88
89
|
datastore,
|
|
89
90
|
services: {
|
|
90
91
|
identify: identify({
|
|
@@ -95,7 +96,6 @@ export async function createNodeJsLibp2p(privateKey, networkOpts = {}, nodeJsLib
|
|
|
95
96
|
// and passing it here directly causes problems downstream, not to mention is slowwww
|
|
96
97
|
components: (components) => ({
|
|
97
98
|
peerId: components.peerId,
|
|
98
|
-
privateKey: components.privateKey,
|
|
99
99
|
nodeInfo: components.nodeInfo,
|
|
100
100
|
logger: components.logger,
|
|
101
101
|
events: components.events,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/libp2p/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/libp2p/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { BitArray } from "@chainsafe/ssz";
|
|
2
2
|
import { BeaconConfig } from "@lodestar/config";
|
|
3
|
-
import { Epoch,
|
|
3
|
+
import { Epoch, fulu, phase0 } from "@lodestar/types";
|
|
4
|
+
import { NetworkConfig } from "./networkConfig.js";
|
|
4
5
|
export declare enum ENRKey {
|
|
5
6
|
tcp = "tcp",
|
|
6
7
|
eth2 = "eth2",
|
|
7
8
|
attnets = "attnets",
|
|
8
|
-
syncnets = "syncnets"
|
|
9
|
+
syncnets = "syncnets",
|
|
10
|
+
cgc = "cgc"
|
|
9
11
|
}
|
|
10
12
|
export declare enum SubnetType {
|
|
11
13
|
attnets = "attnets",
|
|
12
14
|
syncnets = "syncnets"
|
|
13
15
|
}
|
|
14
16
|
export type MetadataOpts = {
|
|
15
|
-
metadata?:
|
|
17
|
+
metadata?: fulu.Metadata;
|
|
16
18
|
};
|
|
17
19
|
export type MetadataModules = {
|
|
18
|
-
|
|
20
|
+
networkConfig: NetworkConfig;
|
|
19
21
|
onSetValue: (key: string, value: Uint8Array) => void;
|
|
20
22
|
};
|
|
21
23
|
/**
|
|
@@ -25,7 +27,7 @@ export type MetadataModules = {
|
|
|
25
27
|
*/
|
|
26
28
|
export declare class MetadataController {
|
|
27
29
|
private onSetValue;
|
|
28
|
-
private
|
|
30
|
+
private networkConfig;
|
|
29
31
|
private _metadata;
|
|
30
32
|
constructor(opts: MetadataOpts, modules: MetadataModules);
|
|
31
33
|
upstreamValues(currentEpoch: Epoch): void;
|
|
@@ -34,8 +36,10 @@ export declare class MetadataController {
|
|
|
34
36
|
set syncnets(syncnets: BitArray);
|
|
35
37
|
get attnets(): BitArray;
|
|
36
38
|
set attnets(attnets: BitArray);
|
|
39
|
+
get cgc(): number;
|
|
40
|
+
set cgc(cgc: number);
|
|
37
41
|
/** Consumers that need the phase0.Metadata type can just ignore the .syncnets property */
|
|
38
|
-
get json():
|
|
42
|
+
get json(): fulu.Metadata;
|
|
39
43
|
/**
|
|
40
44
|
* From spec:
|
|
41
45
|
* fork_digest is compute_fork_digest(current_fork_version, genesis_validators_root) where
|
package/lib/network/metadata.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ForkSeq } from "@lodestar/params";
|
|
2
2
|
import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
|
+
import { intToBytes } from "@lodestar/utils";
|
|
4
5
|
import { FAR_FUTURE_EPOCH } from "../constants/index.js";
|
|
5
6
|
import { getCurrentAndNextFork } from "./forks.js";
|
|
6
7
|
export var ENRKey;
|
|
@@ -9,6 +10,7 @@ export var ENRKey;
|
|
|
9
10
|
ENRKey["eth2"] = "eth2";
|
|
10
11
|
ENRKey["attnets"] = "attnets";
|
|
11
12
|
ENRKey["syncnets"] = "syncnets";
|
|
13
|
+
ENRKey["cgc"] = "cgc";
|
|
12
14
|
})(ENRKey || (ENRKey = {}));
|
|
13
15
|
export var SubnetType;
|
|
14
16
|
(function (SubnetType) {
|
|
@@ -22,19 +24,26 @@ export var SubnetType;
|
|
|
22
24
|
*/
|
|
23
25
|
export class MetadataController {
|
|
24
26
|
constructor(opts, modules) {
|
|
25
|
-
this.
|
|
27
|
+
this.networkConfig = modules.networkConfig;
|
|
26
28
|
this.onSetValue = modules.onSetValue;
|
|
27
|
-
this._metadata = opts.metadata
|
|
29
|
+
this._metadata = opts.metadata ?? {
|
|
30
|
+
...ssz.fulu.Metadata.defaultValue(),
|
|
31
|
+
cgc: modules.networkConfig.getCustodyConfig().advertisedCustodyGroupCount,
|
|
32
|
+
};
|
|
28
33
|
}
|
|
29
34
|
upstreamValues(currentEpoch) {
|
|
30
35
|
// updateEth2Field() MUST be called with clock epoch
|
|
31
36
|
this.updateEth2Field(currentEpoch);
|
|
32
37
|
this.onSetValue(ENRKey.attnets, ssz.phase0.AttestationSubnets.serialize(this._metadata.attnets));
|
|
33
|
-
|
|
38
|
+
const config = this.networkConfig.getConfig();
|
|
39
|
+
if (config.getForkSeq(computeStartSlotAtEpoch(currentEpoch)) >= ForkSeq.altair) {
|
|
34
40
|
// Only persist syncnets if altair fork is already activated. If currentFork is altair but head is phase0
|
|
35
41
|
// adding syncnets to the ENR is not a problem, we will just have a useless field for a few hours.
|
|
36
42
|
this.onSetValue(ENRKey.syncnets, ssz.phase0.AttestationSubnets.serialize(this._metadata.syncnets));
|
|
37
43
|
}
|
|
44
|
+
if (config.getForkSeq(computeStartSlotAtEpoch(currentEpoch)) >= ForkSeq.fulu) {
|
|
45
|
+
this.onSetValue(ENRKey.cgc, intToBytes(this._metadata.cgc, Math.ceil(Math.log2(this._metadata.cgc + 1) / 8), "be"));
|
|
46
|
+
}
|
|
38
47
|
}
|
|
39
48
|
get seqNumber() {
|
|
40
49
|
return this._metadata.seqNumber;
|
|
@@ -54,6 +63,13 @@ export class MetadataController {
|
|
|
54
63
|
this._metadata.seqNumber++;
|
|
55
64
|
this._metadata.attnets = attnets;
|
|
56
65
|
}
|
|
66
|
+
get cgc() {
|
|
67
|
+
return this._metadata.cgc;
|
|
68
|
+
}
|
|
69
|
+
set cgc(cgc) {
|
|
70
|
+
this.onSetValue(ENRKey.cgc, intToBytes(this._metadata.cgc, Math.ceil(Math.log2(this._metadata.cgc + 1) / 8), "be"));
|
|
71
|
+
this._metadata.cgc = cgc;
|
|
72
|
+
}
|
|
57
73
|
/** Consumers that need the phase0.Metadata type can just ignore the .syncnets property */
|
|
58
74
|
get json() {
|
|
59
75
|
return this._metadata;
|
|
@@ -70,7 +86,7 @@ export class MetadataController {
|
|
|
70
86
|
* Current Clock implementation ensures no race conditions, epoch is correct if re-fetched
|
|
71
87
|
*/
|
|
72
88
|
updateEth2Field(epoch) {
|
|
73
|
-
const enrForkId = ssz.phase0.ENRForkID.serialize(getENRForkID(this.
|
|
89
|
+
const enrForkId = ssz.phase0.ENRForkID.serialize(getENRForkID(this.networkConfig.getConfig(), epoch));
|
|
74
90
|
this.onSetValue(ENRKey.eth2, enrForkId);
|
|
75
91
|
return enrForkId;
|
|
76
92
|
}
|
|
@@ -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":"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"}
|
package/lib/network/network.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { PeerScoreStatsDump } from "@chainsafe/libp2p-gossipsub/score";
|
|
2
|
-
import { PeerId
|
|
2
|
+
import { PeerId } 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, phase0 } from "@lodestar/types";
|
|
6
|
+
import { AttesterSlashing, LightClientBootstrap, LightClientFinalityUpdate, LightClientOptimisticUpdate, LightClientUpdate, Root, SignedAggregateAndProof, SignedBeaconBlock, SingleAttestation, SlotRootHex, SubnetID, WithBytes, altair, capella, deneb, fulu, 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";
|
|
10
11
|
import { PeerIdStr } from "../util/peerId.js";
|
|
11
12
|
import { BlobSidecarsByRootRequest } from "../util/types.js";
|
|
12
13
|
import { INetworkCore } from "./core/index.js";
|
|
@@ -18,10 +19,11 @@ import { PeerAction, PeerScoreStats } from "./peers/index.js";
|
|
|
18
19
|
import { AggregatorTracker } from "./processor/aggregatorTracker.js";
|
|
19
20
|
import { NetworkProcessor, PendingGossipsubMessage } from "./processor/index.js";
|
|
20
21
|
import { GetReqRespHandlerFn } from "./reqresp/types.js";
|
|
21
|
-
import { CommitteeSubscription } from "./subnets/index.js";
|
|
22
|
+
import { CommitteeSubscription, NodeId } from "./subnets/index.js";
|
|
22
23
|
type NetworkModules = {
|
|
23
24
|
opts: NetworkOptions;
|
|
24
|
-
|
|
25
|
+
peerId: PeerId;
|
|
26
|
+
nodeId: NodeId;
|
|
25
27
|
config: BeaconConfig;
|
|
26
28
|
logger: LoggerNode;
|
|
27
29
|
chain: IBeaconChain;
|
|
@@ -33,7 +35,8 @@ type NetworkModules = {
|
|
|
33
35
|
export type NetworkInitModules = {
|
|
34
36
|
opts: NetworkOptions;
|
|
35
37
|
config: BeaconConfig;
|
|
36
|
-
|
|
38
|
+
peerId: PeerId;
|
|
39
|
+
nodeId: NodeId;
|
|
37
40
|
peerStoreDir?: string;
|
|
38
41
|
logger: LoggerNode;
|
|
39
42
|
metrics: Metrics | null;
|
|
@@ -52,6 +55,8 @@ export type NetworkInitModules = {
|
|
|
52
55
|
*/
|
|
53
56
|
export declare class Network implements INetwork {
|
|
54
57
|
readonly peerId: PeerId;
|
|
58
|
+
readonly nodeId: NodeId;
|
|
59
|
+
readonly custodyConfig: CustodyConfig;
|
|
55
60
|
readonly events: INetworkEventBus;
|
|
56
61
|
private readonly logger;
|
|
57
62
|
private readonly config;
|
|
@@ -63,9 +68,10 @@ export declare class Network implements INetwork {
|
|
|
63
68
|
private readonly aggregatorTracker;
|
|
64
69
|
private subscribedToCoreTopics;
|
|
65
70
|
private connectedPeers;
|
|
71
|
+
private connectedPeerClients;
|
|
66
72
|
private regossipBlsChangesPromise;
|
|
67
73
|
constructor(modules: NetworkModules);
|
|
68
|
-
static init({ opts, config, logger, metrics, chain, db, gossipHandlers,
|
|
74
|
+
static init({ opts, config, logger, metrics, chain, db, gossipHandlers, peerId, nodeId, peerStoreDir, getReqRespHandler, }: NetworkInitModules): Promise<Network>;
|
|
69
75
|
get closed(): boolean;
|
|
70
76
|
/** Destroy this instance. Can only be called once. */
|
|
71
77
|
close(): Promise<void>;
|
|
@@ -82,6 +88,8 @@ export declare class Network implements INetwork {
|
|
|
82
88
|
searchUnknownSlotRoot(slotRoot: SlotRootHex, peer?: PeerIdStr): void;
|
|
83
89
|
reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): Promise<void>;
|
|
84
90
|
getConnectedPeers(): PeerIdStr[];
|
|
91
|
+
getConnectedPeerCustody(peerId: PeerIdStr): number[];
|
|
92
|
+
getConnectedPeerClientAgent(peerId: PeerIdStr): string;
|
|
85
93
|
getConnectedPeerCount(): number;
|
|
86
94
|
getNetworkIdentity(): Promise<routes.node.NetworkIdentity>;
|
|
87
95
|
/**
|
|
@@ -96,6 +104,7 @@ export declare class Network implements INetwork {
|
|
|
96
104
|
shouldAggregate(subnet: SubnetID, slot: number): boolean;
|
|
97
105
|
publishBeaconBlock(signedBlock: SignedBeaconBlock): Promise<number>;
|
|
98
106
|
publishBlobSidecar(blobSidecar: deneb.BlobSidecar): Promise<number>;
|
|
107
|
+
publishDataColumnSidecar(dataColumnSidecar: fulu.DataColumnSidecar): Promise<number>;
|
|
99
108
|
publishBeaconAggregateAndProof(aggregateAndProof: SignedAggregateAndProof): Promise<number>;
|
|
100
109
|
publishBeaconAttestation(attestation: SingleAttestation, subnet: SubnetID): Promise<number>;
|
|
101
110
|
publishVoluntaryExit(voluntaryExit: phase0.SignedVoluntaryExit): Promise<number>;
|
|
@@ -115,6 +124,8 @@ export declare class Network implements INetwork {
|
|
|
115
124
|
sendLightClientUpdatesByRange(peerId: PeerIdStr, request: altair.LightClientUpdatesByRange): Promise<LightClientUpdate[]>;
|
|
116
125
|
sendBlobSidecarsByRange(peerId: PeerIdStr, request: deneb.BlobSidecarsByRangeRequest): Promise<deneb.BlobSidecar[]>;
|
|
117
126
|
sendBlobSidecarsByRoot(peerId: PeerIdStr, request: BlobSidecarsByRootRequest): Promise<deneb.BlobSidecar[]>;
|
|
127
|
+
sendDataColumnSidecarsByRange(peerId: PeerIdStr, request: fulu.DataColumnSidecarsByRangeRequest): Promise<fulu.DataColumnSidecar[]>;
|
|
128
|
+
sendDataColumnSidecarsByRoot(peerId: PeerIdStr, request: fulu.DataColumnSidecarsByRootRequest): Promise<fulu.DataColumnSidecar[]>;
|
|
118
129
|
private sendReqRespRequest;
|
|
119
130
|
connectToPeer(peer: string, multiaddr: string[]): Promise<void>;
|
|
120
131
|
disconnectPeer(peer: string): Promise<void>;
|
|
@@ -135,6 +146,9 @@ export declare class Network implements INetwork {
|
|
|
135
146
|
private onHead;
|
|
136
147
|
private onPeerConnected;
|
|
137
148
|
private onPeerDisconnected;
|
|
149
|
+
private onTargetGroupCountUpdated;
|
|
150
|
+
private onAdvertisedGroupCountUpdated;
|
|
151
|
+
private onPublishDataColumns;
|
|
138
152
|
}
|
|
139
153
|
export {};
|
|
140
154
|
//# sourceMappingURL=network.d.ts.map
|