@lodestar/beacon-node 1.34.0-dev.d5a4e7a09c → 1.34.0-dev.d9fc7bb103
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 +162 -55
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +3 -3
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.js +15 -16
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/debug/index.d.ts +1 -1
- package/lib/api/impl/debug/index.js +24 -1
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +37 -26
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/impl/validator/utils.d.ts +3 -3
- package/lib/api/impl/validator/utils.js +2 -2
- package/lib/api/impl/validator/utils.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/interface.d.ts +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +89 -22
- 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 +3 -2
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +66 -23
- package/lib/chain/blocks/types.js +39 -5
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/utils/zebraBanner.d.ts +2 -0
- package/lib/chain/blocks/utils/zebraBanner.js +45 -0
- package/lib/chain/blocks/utils/zebraBanner.js.map +1 -0
- package/lib/chain/blocks/verifyBlock.js +18 -5
- package/lib/chain/blocks/verifyBlock.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 +63 -16
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +18 -101
- package/lib/chain/chain.js +107 -68
- 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 +69 -0
- package/lib/chain/errors/dataColumnSidecarError.js +21 -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 +6 -7
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/options.d.ts +4 -1
- package/lib/chain/options.js +1 -0
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/prepareNextSlot.js +2 -1
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +30 -16
- package/lib/chain/produceBlock/produceBlockBody.js +28 -28
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +6 -3
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +28 -4
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +64 -18
- package/lib/chain/seenCache/seenGossipBlockInput.js +321 -53
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +29 -0
- package/lib/chain/validation/dataColumnSidecar.js +248 -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/dataColumnSidecar.d.ts +26 -0
- package/lib/db/repositories/dataColumnSidecar.js +39 -0
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -0
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts +24 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js +39 -0
- package/lib/db/repositories/dataColumnSidecarArchive.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/builder/http.d.ts +20 -4
- package/lib/execution/builder/http.js +30 -11
- package/lib/execution/builder/http.js.map +1 -1
- package/lib/execution/builder/interface.d.ts +5 -4
- package/lib/execution/engine/http.d.ts +8 -5
- package/lib/execution/engine/http.js +56 -42
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +6 -13
- 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 +5 -0
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +12 -2
- package/lib/execution/engine/types.js +8 -2
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +15 -5
- package/lib/metrics/metrics/beacon.js +61 -14
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +29 -1
- package/lib/metrics/metrics/lodestar.js +59 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/metrics.d.ts +10 -3
- package/lib/network/core/metrics.js +22 -4
- package/lib/network/core/metrics.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +15 -4
- package/lib/network/core/networkCore.js +73 -23
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +2 -0
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +5 -3
- package/lib/network/core/networkCoreWorkerHandler.js +6 -1
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/core/types.d.ts +7 -4
- package/lib/network/events.d.ts +4 -2
- package/lib/network/events.js.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts +2 -2
- package/lib/network/gossip/gossipsub.js +8 -6
- 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/scoringParameters.d.ts +6 -2
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +2033 -1484
- package/lib/network/gossip/topic.js +29 -1
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +11 -3
- package/lib/network/metadata.d.ts +9 -5
- package/lib/network/metadata.js +26 -5
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts +14 -4
- package/lib/network/network.js +73 -11
- package/lib/network/network.js.map +1 -1
- package/lib/network/networkConfig.d.ts +12 -0
- package/lib/network/networkConfig.js +2 -0
- package/lib/network/networkConfig.js.map +1 -0
- package/lib/network/options.d.ts +1 -0
- package/lib/network/options.js +5 -0
- package/lib/network/options.js.map +1 -1
- package/lib/network/peers/discover.d.ts +8 -3
- package/lib/network/peers/discover.js +99 -14
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.d.ts +10 -4
- package/lib/network/peers/peerManager.js +105 -19
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/peersData.d.ts +17 -3
- 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/assertPeerRelevance.d.ts +7 -3
- package/lib/network/peers/utils/assertPeerRelevance.js +10 -1
- package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts +19 -7
- package/lib/network/peers/utils/prioritizePeers.js +42 -6
- 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 +165 -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 +1 -0
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts +2 -2
- package/lib/network/reqresp/ReqRespBeaconNode.js +36 -14
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +24 -4
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +259 -20
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +37 -6
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +283 -28
- 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 -3
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +2 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -3
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +8 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +73 -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 +36 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -0
- package/lib/network/reqresp/handlers/index.js +13 -2
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/protocols.d.ts +4 -0
- package/lib/network/reqresp/protocols.js +20 -0
- package/lib/network/reqresp/protocols.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +19 -3
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/score.js +3 -0
- package/lib/network/reqresp/score.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +13 -6
- package/lib/network/reqresp/types.js +14 -5
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/network/statusCache.d.ts +5 -5
- package/lib/network/statusCache.js.map +1 -1
- package/lib/network/subnets/interface.d.ts +3 -0
- package/lib/network/subnets/interface.js +14 -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/node/nodejs.js +1 -0
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/constants.d.ts +18 -3
- package/lib/sync/constants.js +21 -3
- package/lib/sync/constants.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 +17 -2
- package/lib/sync/range/batch.js +39 -7
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +15 -1
- package/lib/sync/range/chain.js +124 -33
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.d.ts +3 -2
- package/lib/sync/range/range.js +9 -3
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/chainTarget.d.ts +5 -1
- package/lib/sync/range/utils/chainTarget.js +26 -1
- package/lib/sync/range/utils/chainTarget.js.map +1 -1
- package/lib/sync/range/utils/peerBalancer.d.ts +19 -5
- package/lib/sync/range/utils/peerBalancer.js +104 -10
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/sync.js +1 -1
- package/lib/sync/sync.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +54 -5
- package/lib/sync/unknownBlock.js +321 -61
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/remoteSyncType.d.ts +4 -4
- package/lib/sync/utils/remoteSyncType.js.map +1 -1
- package/lib/util/blobs.d.ts +16 -4
- package/lib/util/blobs.js +122 -5
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/dataColumns.d.ts +137 -0
- package/lib/util/dataColumns.js +358 -0
- package/lib/util/dataColumns.js.map +1 -0
- package/lib/util/metadata.d.ts +5 -0
- package/lib/util/metadata.js +10 -0
- package/lib/util/metadata.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/lib/util/types.d.ts +7 -0
- package/lib/util/types.js +3 -0
- package/lib/util/types.js.map +1 -1
- package/package.json +18 -18
- package/lib/network/reqresp/handlers/status.d.ts +0 -4
- package/lib/network/reqresp/handlers/status.js +0 -11
- package/lib/network/reqresp/handlers/status.js.map +0 -1
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { BitArray } from "@chainsafe/ssz";
|
|
2
|
-
import { SLOTS_PER_EPOCH, SYNC_COMMITTEE_SUBNET_COUNT } from "@lodestar/params";
|
|
3
|
-
import { withTimeout } from "@lodestar/utils";
|
|
2
|
+
import { ForkSeq, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SUBNET_COUNT } from "@lodestar/params";
|
|
3
|
+
import { prettyPrintIndices, toHex, withTimeout } from "@lodestar/utils";
|
|
4
4
|
import { GOODBYE_KNOWN_CODES, GoodByeReasonCode, Libp2pEvent } from "../../constants/index.js";
|
|
5
|
+
import { getCustodyGroups, getDataColumns } from "../../util/dataColumns.js";
|
|
5
6
|
import { NetworkEvent } from "../events.js";
|
|
6
7
|
import { SubnetType } from "../metadata.js";
|
|
7
8
|
import { ReqRespMethod } from "../reqresp/ReqRespBeaconNode.js";
|
|
9
|
+
import { computeNodeId } from "../subnets/index.js";
|
|
8
10
|
import { getConnection, getConnectionsMap, prettyPrintPeerId, prettyPrintPeerIdStr } from "../util.js";
|
|
9
11
|
import { ClientKind, getKnownClientFromAgentVersion } from "./client.js";
|
|
10
12
|
import { PeerDiscovery } from "./discover.js";
|
|
@@ -42,6 +44,7 @@ const STARVATION_PRUNE_RATIO = 0.05;
|
|
|
42
44
|
* Relative factor of peers that are allowed to have a negative gossipsub score without penalizing them in lodestar.
|
|
43
45
|
*/
|
|
44
46
|
const ALLOWED_NEGATIVE_GOSSIPSUB_FACTOR = 0.1;
|
|
47
|
+
// TODO(fulu): dedupe with network/peers/peerData.ts
|
|
45
48
|
var RelevantPeerStatus;
|
|
46
49
|
(function (RelevantPeerStatus) {
|
|
47
50
|
RelevantPeerStatus["Unknown"] = "unknown";
|
|
@@ -93,12 +96,16 @@ export class PeerManager {
|
|
|
93
96
|
*/
|
|
94
97
|
this.onLibp2pPeerConnect = async (evt) => {
|
|
95
98
|
const { direction, status, remotePeer } = evt.detail;
|
|
96
|
-
|
|
99
|
+
const remotePeerStr = remotePeer.toString();
|
|
100
|
+
const remotePeerPrettyStr = prettyPrintPeerId(remotePeer);
|
|
101
|
+
this.logger.verbose("peer connected", { peer: remotePeerPrettyStr, direction, status });
|
|
97
102
|
// NOTE: The peerConnect event is not emitted here here, but after asserting peer relevance
|
|
98
103
|
this.metrics?.peerConnectedEvent.inc({ direction, status });
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
if (evt.detail.status !== "open") {
|
|
105
|
+
this.logger.debug("Peer disconnected before identify protocol initiated", {
|
|
106
|
+
peerId: remotePeerPrettyStr,
|
|
107
|
+
status: evt.detail.status,
|
|
108
|
+
});
|
|
102
109
|
return;
|
|
103
110
|
}
|
|
104
111
|
// On connection:
|
|
@@ -107,6 +114,7 @@ export class PeerManager {
|
|
|
107
114
|
// NOTE: libp2p may emit two "peer:connect" events: One for inbound, one for outbound
|
|
108
115
|
// If that happens, it's okay. Only the "outbound" connection triggers immediate action
|
|
109
116
|
const now = Date.now();
|
|
117
|
+
const nodeId = computeNodeId(remotePeer);
|
|
110
118
|
const peerData = {
|
|
111
119
|
lastReceivedMsgUnixTsMs: direction === "outbound" ? 0 : now,
|
|
112
120
|
// If inbound, request after STATUS_INBOUND_GRACE_PERIOD
|
|
@@ -114,6 +122,7 @@ export class PeerManager {
|
|
|
114
122
|
connectedUnixTsMs: now,
|
|
115
123
|
relevantStatus: RelevantPeerStatus.Unknown,
|
|
116
124
|
direction,
|
|
125
|
+
nodeId,
|
|
117
126
|
peerId: remotePeer,
|
|
118
127
|
status: null,
|
|
119
128
|
metadata: null,
|
|
@@ -121,9 +130,9 @@ export class PeerManager {
|
|
|
121
130
|
agentClient: null,
|
|
122
131
|
encodingPreference: null,
|
|
123
132
|
};
|
|
124
|
-
this.connectedPeers.set(
|
|
133
|
+
this.connectedPeers.set(remotePeerStr, peerData);
|
|
125
134
|
if (direction === "outbound") {
|
|
126
|
-
//this.pingAndStatusTimeouts();
|
|
135
|
+
// this.pingAndStatusTimeouts();
|
|
127
136
|
void this.requestPing(remotePeer);
|
|
128
137
|
void this.requestStatus(remotePeer, this.statusCache.get());
|
|
129
138
|
}
|
|
@@ -137,7 +146,12 @@ export class PeerManager {
|
|
|
137
146
|
}
|
|
138
147
|
})
|
|
139
148
|
.catch((err) => {
|
|
140
|
-
|
|
149
|
+
if (evt.detail.status !== "open") {
|
|
150
|
+
this.logger.debug("Peer disconnected during identify protocol", { peerId: remotePeerPrettyStr }, err);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
this.logger.debug("Error setting agentVersion for the peer", { peerId: remotePeerPrettyStr }, err);
|
|
154
|
+
}
|
|
141
155
|
});
|
|
142
156
|
};
|
|
143
157
|
/**
|
|
@@ -169,6 +183,7 @@ export class PeerManager {
|
|
|
169
183
|
.merge(remotePeer, { tags: { [PEER_RELEVANT_TAG]: undefined } })
|
|
170
184
|
.catch((e) => this.logger.verbose("cannot untag peer", { peerId: peerIdStr }, e));
|
|
171
185
|
};
|
|
186
|
+
const { networkConfig } = modules;
|
|
172
187
|
this.libp2p = modules.libp2p;
|
|
173
188
|
this.logger = modules.logger;
|
|
174
189
|
this.metrics = modules.metrics;
|
|
@@ -178,12 +193,14 @@ export class PeerManager {
|
|
|
178
193
|
this.syncnetsService = modules.syncnetsService;
|
|
179
194
|
this.statusCache = modules.statusCache;
|
|
180
195
|
this.clock = modules.clock;
|
|
181
|
-
this.
|
|
196
|
+
this.networkConfig = networkConfig;
|
|
197
|
+
this.config = networkConfig.config;
|
|
182
198
|
this.peerRpcScores = modules.peerRpcScores;
|
|
183
199
|
this.networkEventBus = modules.events;
|
|
184
200
|
this.connectedPeers = modules.peersData.connectedPeers;
|
|
185
201
|
this.opts = opts;
|
|
186
202
|
this.discovery = discovery;
|
|
203
|
+
this.nodeId = networkConfig.nodeId;
|
|
187
204
|
const { metrics } = modules;
|
|
188
205
|
if (metrics) {
|
|
189
206
|
metrics.peers.addCollect(() => this.runPeerCountMetrics(metrics));
|
|
@@ -281,12 +298,36 @@ export class PeerManager {
|
|
|
281
298
|
// Store metadata always in case the peer updates attnets but not the sequence number
|
|
282
299
|
// Trust that the peer always sends the latest metadata (From Lighthouse)
|
|
283
300
|
const peerData = this.connectedPeers.get(peer.toString());
|
|
301
|
+
this.logger.debug("onMetadata", {
|
|
302
|
+
peer: peer.toString(),
|
|
303
|
+
peerData: peerData !== undefined,
|
|
304
|
+
custodyGroupCount: metadata?.custodyGroupCount,
|
|
305
|
+
});
|
|
284
306
|
if (peerData) {
|
|
307
|
+
const oldMetadata = peerData.metadata;
|
|
308
|
+
const custodyGroupCount = metadata.custodyGroupCount ?? this.config.CUSTODY_REQUIREMENT;
|
|
309
|
+
const samplingGroupCount = Math.max(this.config.SAMPLES_PER_SLOT, custodyGroupCount);
|
|
310
|
+
const nodeId = peerData?.nodeId ?? computeNodeId(peer);
|
|
311
|
+
const custodyGroups = oldMetadata == null || oldMetadata.custodyGroups == null || custodyGroupCount !== oldMetadata.custodyGroupCount
|
|
312
|
+
? getCustodyGroups(this.config, nodeId, custodyGroupCount)
|
|
313
|
+
: oldMetadata.custodyGroups;
|
|
314
|
+
const oldSamplingGroupCount = Math.max(this.config.SAMPLES_PER_SLOT, oldMetadata?.custodyGroupCount ?? 0);
|
|
315
|
+
const samplingGroups = oldMetadata == null || oldMetadata.samplingGroups == null || samplingGroupCount !== oldSamplingGroupCount
|
|
316
|
+
? getCustodyGroups(this.config, nodeId, samplingGroupCount)
|
|
317
|
+
: oldMetadata.samplingGroups;
|
|
285
318
|
peerData.metadata = {
|
|
286
319
|
seqNumber: metadata.seqNumber,
|
|
287
320
|
attnets: metadata.attnets,
|
|
288
321
|
syncnets: metadata.syncnets ?? BitArray.fromBitLen(SYNC_COMMITTEE_SUBNET_COUNT),
|
|
322
|
+
custodyGroupCount: metadata.custodyGroupCount ??
|
|
323
|
+
// TODO: spec says that Clients MAY reject peers with a value less than CUSTODY_REQUIREMENT
|
|
324
|
+
this.config.CUSTODY_REQUIREMENT,
|
|
325
|
+
custodyGroups,
|
|
326
|
+
samplingGroups,
|
|
289
327
|
};
|
|
328
|
+
if (oldMetadata === null || oldMetadata.custodyGroupCount !== peerData.metadata.custodyGroupCount) {
|
|
329
|
+
void this.requestStatus(peer, this.statusCache.get());
|
|
330
|
+
}
|
|
290
331
|
}
|
|
291
332
|
}
|
|
292
333
|
/**
|
|
@@ -312,9 +353,10 @@ export class PeerManager {
|
|
|
312
353
|
peerData.lastStatusUnixTsMs = Date.now();
|
|
313
354
|
peerData.status = status;
|
|
314
355
|
}
|
|
356
|
+
const forkName = this.config.getForkName(this.clock.currentSlot);
|
|
315
357
|
let isIrrelevant;
|
|
316
358
|
try {
|
|
317
|
-
const irrelevantReasonType = assertPeerRelevance(status, this.statusCache.get(), this.clock.currentSlot);
|
|
359
|
+
const irrelevantReasonType = assertPeerRelevance(forkName, status, this.statusCache.get(), this.clock.currentSlot);
|
|
318
360
|
if (irrelevantReasonType === null) {
|
|
319
361
|
isIrrelevant = false;
|
|
320
362
|
}
|
|
@@ -349,18 +391,47 @@ export class PeerManager {
|
|
|
349
391
|
peerData.relevantStatus = RelevantPeerStatus.relevant;
|
|
350
392
|
}
|
|
351
393
|
if (getConnection(this.libp2p, peer.toString())) {
|
|
352
|
-
|
|
394
|
+
const nodeId = peerData?.nodeId ?? computeNodeId(peer);
|
|
395
|
+
// TODO(fulu): Are we sure we've run Metadata before this?
|
|
396
|
+
const custodyGroupCount = peerData?.metadata?.custodyGroupCount ?? this.config.CUSTODY_REQUIREMENT;
|
|
397
|
+
const custodyGroups = peerData?.metadata?.custodyGroups ?? getCustodyGroups(this.config, nodeId, custodyGroupCount);
|
|
398
|
+
const dataColumns = getDataColumns(this.config, nodeId, custodyGroupCount);
|
|
399
|
+
const sampleSubnets = this.networkConfig.custodyConfig.sampledSubnets;
|
|
400
|
+
const matchingSubnetsNum = sampleSubnets.reduce((acc, elem) => acc + (dataColumns.includes(elem) ? 1 : 0), 0);
|
|
401
|
+
const hasAllColumns = matchingSubnetsNum === sampleSubnets.length;
|
|
402
|
+
const clientAgent = peerData?.agentClient ?? ClientKind.Unknown;
|
|
403
|
+
this.logger.debug("onStatus", {
|
|
404
|
+
nodeId: toHex(nodeId),
|
|
405
|
+
myNodeId: toHex(this.nodeId),
|
|
406
|
+
peerId: peer.toString(),
|
|
407
|
+
custodyGroupCount,
|
|
408
|
+
hasAllColumns,
|
|
409
|
+
dataColumns: prettyPrintIndices(dataColumns),
|
|
410
|
+
matchingSubnetsNum,
|
|
411
|
+
custodyGroups: prettyPrintIndices(custodyGroups),
|
|
412
|
+
mySampleSubnets: sampleSubnets.join(" "),
|
|
413
|
+
clientAgent,
|
|
414
|
+
});
|
|
415
|
+
this.networkEventBus.emit(NetworkEvent.peerConnected, {
|
|
416
|
+
peer: peer.toString(),
|
|
417
|
+
status,
|
|
418
|
+
clientAgent,
|
|
419
|
+
custodyGroups,
|
|
420
|
+
});
|
|
353
421
|
}
|
|
354
422
|
}
|
|
355
423
|
async requestMetadata(peer) {
|
|
424
|
+
const peerIdStr = peer.toString();
|
|
356
425
|
try {
|
|
357
426
|
this.onMetadata(peer, await this.reqResp.sendMetadata(peer));
|
|
358
427
|
}
|
|
359
|
-
catch (
|
|
428
|
+
catch (e) {
|
|
429
|
+
this.logger.verbose("invalid requestMetadata", { peer: prettyPrintPeerIdStr(peerIdStr) }, e);
|
|
360
430
|
// TODO: Downvote peer here or in the reqResp layer
|
|
361
431
|
}
|
|
362
432
|
}
|
|
363
433
|
async requestPing(peer) {
|
|
434
|
+
const peerIdStr = peer.toString();
|
|
364
435
|
try {
|
|
365
436
|
this.onPing(peer, await this.reqResp.sendPing(peer));
|
|
366
437
|
// If peer replies a PING request also update lastReceivedMsg
|
|
@@ -368,15 +439,18 @@ export class PeerManager {
|
|
|
368
439
|
if (peerData)
|
|
369
440
|
peerData.lastReceivedMsgUnixTsMs = Date.now();
|
|
370
441
|
}
|
|
371
|
-
catch (
|
|
442
|
+
catch (e) {
|
|
443
|
+
this.logger.verbose("invalid requestPing", { peer: prettyPrintPeerIdStr(peerIdStr) }, e);
|
|
372
444
|
// TODO: Downvote peer here or in the reqResp layer
|
|
373
445
|
}
|
|
374
446
|
}
|
|
375
447
|
async requestStatus(peer, localStatus) {
|
|
448
|
+
const peerIdStr = peer.toString();
|
|
376
449
|
try {
|
|
377
450
|
this.onStatus(peer, await this.reqResp.sendStatus(peer, localStatus));
|
|
378
451
|
}
|
|
379
|
-
catch (
|
|
452
|
+
catch (e) {
|
|
453
|
+
this.logger.verbose("invalid requestStatus", { peer: prettyPrintPeerIdStr(peerIdStr) }, e);
|
|
380
454
|
// TODO: Failed to get peer latest status: downvote but don't disconnect
|
|
381
455
|
}
|
|
382
456
|
}
|
|
@@ -422,7 +496,8 @@ export class PeerManager {
|
|
|
422
496
|
this.clock.currentSlot - status.headSlot > STARVATION_THRESHOLD_SLOTS;
|
|
423
497
|
this.lastStatus = status;
|
|
424
498
|
this.metrics?.peerManager.starved.set(starved ? 1 : 0);
|
|
425
|
-
const
|
|
499
|
+
const forkSeq = this.config.getForkSeq(this.clock.currentSlot);
|
|
500
|
+
const { peersToDisconnect, peersToConnect, attnetQueries, syncnetQueries, custodyGroupQueries } = prioritizePeers(connectedHealthyPeers.map((peer) => {
|
|
426
501
|
const peerData = this.connectedPeers.get(peer.toString());
|
|
427
502
|
return {
|
|
428
503
|
id: peer,
|
|
@@ -430,17 +505,21 @@ export class PeerManager {
|
|
|
430
505
|
status: peerData?.status ?? null,
|
|
431
506
|
attnets: peerData?.metadata?.attnets ?? null,
|
|
432
507
|
syncnets: peerData?.metadata?.syncnets ?? null,
|
|
508
|
+
// here we care samplingGroups not custodyGroups in order to know which column subnets peers subscribe to
|
|
509
|
+
samplingGroups: peerData?.metadata?.samplingGroups ?? null,
|
|
433
510
|
score: this.peerRpcScores.getScore(peer),
|
|
434
511
|
};
|
|
435
512
|
}),
|
|
436
513
|
// Collect subnets which we need peers for in the current slot
|
|
437
|
-
this.attnetsService.getActiveSubnets(), this.syncnetsService.getActiveSubnets(),
|
|
514
|
+
this.attnetsService.getActiveSubnets(), this.syncnetsService.getActiveSubnets(),
|
|
515
|
+
// ignore samplingGroups for pre-fulu forks
|
|
516
|
+
forkSeq >= ForkSeq.fulu ? this.networkConfig.custodyConfig.sampleGroups : undefined, {
|
|
438
517
|
...this.opts,
|
|
439
518
|
status,
|
|
440
519
|
starved,
|
|
441
520
|
starvationPruneRatio: STARVATION_PRUNE_RATIO,
|
|
442
521
|
starvationThresholdSlots: STARVATION_THRESHOLD_SLOTS,
|
|
443
|
-
});
|
|
522
|
+
}, this.config, this.metrics);
|
|
444
523
|
const queriesMerged = [];
|
|
445
524
|
for (const { type, queries } of [
|
|
446
525
|
{ type: SubnetType.attnets, queries: attnetQueries },
|
|
@@ -461,6 +540,10 @@ export class PeerManager {
|
|
|
461
540
|
this.metrics?.peersRequestedSubnetsPeerCount.inc({ type }, count);
|
|
462
541
|
}
|
|
463
542
|
}
|
|
543
|
+
for (const maxPeersToDiscover of custodyGroupQueries.values()) {
|
|
544
|
+
this.metrics?.peersRequestedSubnetsToQuery.inc({ type: "column" }, 1);
|
|
545
|
+
this.metrics?.peersRequestedSubnetsPeerCount.inc({ type: "column" }, maxPeersToDiscover);
|
|
546
|
+
}
|
|
464
547
|
// disconnect first to have more slots before we dial new peers
|
|
465
548
|
for (const [reason, peers] of peersToDisconnect) {
|
|
466
549
|
this.metrics?.peersRequestedToDisconnect.inc({ reason }, peers.length);
|
|
@@ -471,7 +554,8 @@ export class PeerManager {
|
|
|
471
554
|
if (this.discovery) {
|
|
472
555
|
try {
|
|
473
556
|
this.metrics?.peersRequestedToConnect.inc(peersToConnect);
|
|
474
|
-
|
|
557
|
+
// for PeerDAS, lodestar implements subnet sampling strategy, hence we need to issue columnSubnetQueries to PeerDiscovery
|
|
558
|
+
this.discovery.discoverPeers(peersToConnect, custodyGroupQueries, queriesMerged);
|
|
475
559
|
}
|
|
476
560
|
catch (e) {
|
|
477
561
|
this.logger.error("Error on discoverPeers", {}, e);
|
|
@@ -540,6 +624,7 @@ export class PeerManager {
|
|
|
540
624
|
const peerIdStr = peer.toString();
|
|
541
625
|
try {
|
|
542
626
|
this.metrics?.peerGoodbyeSent.inc({ reason });
|
|
627
|
+
this.logger.debug("initiating goodbyeAndDisconnect peer", { reason, peerId: prettyPrintPeerId(peer) });
|
|
543
628
|
const conn = getConnection(this.libp2p, peerIdStr);
|
|
544
629
|
if (conn && Date.now() - conn.timeline.open > LONG_PEER_CONNECTION_MS) {
|
|
545
630
|
this.metrics?.peerLongConnectionDisconnect.inc({ reason });
|
|
@@ -592,6 +677,7 @@ export class PeerManager {
|
|
|
592
677
|
const attnets = peerData?.metadata?.attnets;
|
|
593
678
|
// TODO: Consider optimizing by doing observe in batch
|
|
594
679
|
metrics.peerLongLivedAttnets.observe(attnets ? attnets.getTrueBitIndexes().length : 0);
|
|
680
|
+
metrics.peerColumnGroupCount.observe(peerData?.metadata?.custodyGroupCount ?? 0);
|
|
595
681
|
metrics.peerScoreByClient.observe({ client }, this.peerRpcScores.getScore(peerId));
|
|
596
682
|
metrics.peerGossipScoreByClient.observe({ client }, this.peerRpcScores.getGossipScore(peerId));
|
|
597
683
|
metrics.peerConnectionLength.observe((now - openCnx.timeline.open) / 1000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peerManager.js","sourceRoot":"","sources":["../../../src/network/peers/peerManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"peerManager.js","sourceRoot":"","sources":["../../../src/network/peers/peerManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { PeerId } from "@libp2p/interface";
|
|
2
2
|
import { Encoding } from "@lodestar/reqresp";
|
|
3
|
-
import {
|
|
3
|
+
import { CustodyIndex, Slot, Status, fulu } from "@lodestar/types";
|
|
4
|
+
import { NodeId } from "../subnets/interface.js";
|
|
4
5
|
import { ClientKind } from "./client.js";
|
|
6
|
+
type PeerIdStr = string;
|
|
7
|
+
type Metadata = fulu.Metadata & {
|
|
8
|
+
custodyGroups: CustodyIndex[];
|
|
9
|
+
samplingGroups: CustodyIndex[];
|
|
10
|
+
};
|
|
11
|
+
export type PeerSyncMeta = {
|
|
12
|
+
peerId: PeerIdStr;
|
|
13
|
+
client: string;
|
|
14
|
+
custodyGroups: CustodyIndex[];
|
|
15
|
+
earliestAvailableSlot?: Slot;
|
|
16
|
+
};
|
|
5
17
|
export declare enum RelevantPeerStatus {
|
|
6
18
|
Unknown = "unknown",
|
|
7
19
|
relevant = "relevant",
|
|
@@ -14,8 +26,9 @@ export type PeerData = {
|
|
|
14
26
|
relevantStatus: RelevantPeerStatus;
|
|
15
27
|
direction: "inbound" | "outbound";
|
|
16
28
|
peerId: PeerId;
|
|
17
|
-
|
|
18
|
-
metadata:
|
|
29
|
+
nodeId: NodeId | null;
|
|
30
|
+
metadata: Metadata | null;
|
|
31
|
+
status: Status | null;
|
|
19
32
|
agentVersion: string | null;
|
|
20
33
|
agentClient: ClientKind | null;
|
|
21
34
|
encodingPreference: Encoding | null;
|
|
@@ -34,4 +47,5 @@ export declare class PeersData {
|
|
|
34
47
|
getEncodingPreference(peerIdStr: string): Encoding | null;
|
|
35
48
|
setEncodingPreference(peerIdStr: string, encoding: Encoding): void;
|
|
36
49
|
}
|
|
50
|
+
export {};
|
|
37
51
|
//# sourceMappingURL=peersData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peersData.js","sourceRoot":"","sources":["../../../src/network/peers/peersData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peersData.js","sourceRoot":"","sources":["../../../src/network/peers/peersData.ts"],"names":[],"mappings":"AAeA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,+CAAyB,CAAA;AAC3B,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAiBD;;;;;;GAMG;AACH,MAAM,OAAO,SAAS;IAAtB;QACW,mBAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IAoB3D,CAAC;IAlBC,eAAe,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IAClE,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC;IACjE,CAAC;IAED,qBAAqB,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,kBAAkB,IAAI,IAAI,CAAC;IACxE,CAAC;IAED,qBAAqB,CAAC,SAAiB,EAAE,QAAkB;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACzC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -20,7 +20,7 @@ export interface IPeerScore {
|
|
|
20
20
|
getScore(): number;
|
|
21
21
|
getGossipScore(): number;
|
|
22
22
|
isCoolingDown(): boolean;
|
|
23
|
-
add(scoreDelta: number):
|
|
23
|
+
add(scoreDelta: number): number;
|
|
24
24
|
update(): number;
|
|
25
25
|
updateGossipsubScore(newScore: number, ignore: boolean): void;
|
|
26
26
|
getStat(): PeerScoreStat;
|
|
@@ -14,7 +14,7 @@ export declare class RealScore implements IPeerScore {
|
|
|
14
14
|
isCoolingDown(): boolean;
|
|
15
15
|
getScore(): number;
|
|
16
16
|
getGossipScore(): number;
|
|
17
|
-
add(scoreDelta: number):
|
|
17
|
+
add(scoreDelta: number): number;
|
|
18
18
|
applyReconnectionCoolDown(reason: GoodByeReasonCode): number;
|
|
19
19
|
/**
|
|
20
20
|
* Applies time-based logic such as decay rates to the score.
|
|
@@ -44,7 +44,7 @@ export declare class MaxScore implements IPeerScore {
|
|
|
44
44
|
getScore(): number;
|
|
45
45
|
getGossipScore(): number;
|
|
46
46
|
isCoolingDown(): boolean;
|
|
47
|
-
add():
|
|
47
|
+
add(): number;
|
|
48
48
|
update(): number;
|
|
49
49
|
applyReconnectionCoolDown(_reason: GoodByeReasonCode): number;
|
|
50
50
|
updateGossipsubScore(): void;
|
|
@@ -29,6 +29,7 @@ export class RealScore {
|
|
|
29
29
|
if (newScore < MIN_SCORE)
|
|
30
30
|
newScore = MIN_SCORE;
|
|
31
31
|
this.setLodestarScore(newScore);
|
|
32
|
+
return newScore;
|
|
32
33
|
}
|
|
33
34
|
applyReconnectionCoolDown(reason) {
|
|
34
35
|
let coolDownMin = NO_COOL_DOWN_APPLIED;
|
|
@@ -138,7 +139,9 @@ export class MaxScore {
|
|
|
138
139
|
isCoolingDown() {
|
|
139
140
|
return false;
|
|
140
141
|
}
|
|
141
|
-
add() {
|
|
142
|
+
add() {
|
|
143
|
+
return DEFAULT_SCORE;
|
|
144
|
+
}
|
|
142
145
|
update() {
|
|
143
146
|
return MAX_SCORE;
|
|
144
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/network/peers/score/score.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,+BAA+B,EAC/B,+BAA+B,EAC/B,iBAAiB,EACjB,SAAS,EACT,6BAA6B,EAC7B,SAAS,EACT,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA4B,UAAU,EAAC,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,OAAO,SAAS;IAQpB;QACE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;QAC3B,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,UAAkB;QACpB,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAC/C,IAAI,QAAQ,GAAG,SAAS;YAAE,QAAQ,GAAG,SAAS,CAAC;QAC/C,IAAI,QAAQ,GAAG,SAAS;YAAE,QAAQ,GAAG,SAAS,CAAC;QAE/C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/network/peers/score/score.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PeerId } from "@libp2p/interface";
|
|
2
|
+
import { Logger } from "@lodestar/utils";
|
|
2
3
|
import { GoodByeReasonCode } from "../../../constants/network.js";
|
|
3
4
|
import { PeerIdStr } from "../../../util/peerId.js";
|
|
4
5
|
import { NetworkCoreMetrics } from "../../core/metrics.js";
|
|
@@ -12,7 +13,8 @@ import { IPeerRpcScoreStore, PeerAction, PeerRpcScoreOpts, PeerScoreStats, Score
|
|
|
12
13
|
export declare class PeerRpcScoreStore implements IPeerRpcScoreStore {
|
|
13
14
|
private readonly scores;
|
|
14
15
|
private readonly metrics;
|
|
15
|
-
|
|
16
|
+
private readonly logger;
|
|
17
|
+
constructor(opts?: PeerRpcScoreOpts, metrics?: NetworkCoreMetrics | null, logger?: Logger | null);
|
|
16
18
|
getScore(peer: PeerId): number;
|
|
17
19
|
getGossipScore(peer: PeerId): number;
|
|
18
20
|
getScoreState(peer: PeerId): ScoreState;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MapDef, pruneSetToMax } from "@lodestar/utils";
|
|
2
|
+
import { prettyPrintPeerId } from "../../util.js";
|
|
2
3
|
import { DEFAULT_SCORE, MAX_ENTRIES, MAX_SCORE, MIN_SCORE, SCORE_THRESHOLD } from "./constants.js";
|
|
3
4
|
import { PeerAction } from "./interface.js";
|
|
4
5
|
import { MaxScore, RealScore } from "./score.js";
|
|
@@ -17,8 +18,9 @@ const peerActionScore = {
|
|
|
17
18
|
*/
|
|
18
19
|
export class PeerRpcScoreStore {
|
|
19
20
|
// TODO: Persist scores, at least BANNED status to disk
|
|
20
|
-
constructor(opts = {}, metrics = null) {
|
|
21
|
+
constructor(opts = {}, metrics = null, logger = null) {
|
|
21
22
|
this.metrics = metrics;
|
|
23
|
+
this.logger = logger;
|
|
22
24
|
this.scores = opts.disablePeerScoring ? new MapDef(() => new MaxScore()) : new MapDef(() => new RealScore());
|
|
23
25
|
}
|
|
24
26
|
getScore(peer) {
|
|
@@ -38,7 +40,9 @@ export class PeerRpcScoreStore {
|
|
|
38
40
|
}
|
|
39
41
|
applyAction(peer, action, actionName) {
|
|
40
42
|
const peerScore = this.scores.getOrDefault(peer.toString());
|
|
41
|
-
|
|
43
|
+
const scoreChange = peerActionScore[action];
|
|
44
|
+
const newScore = peerScore.add(scoreChange);
|
|
45
|
+
this.logger?.debug("peer score adjusted", { scoreChange, newScore, peerId: prettyPrintPeerId(peer), actionName });
|
|
42
46
|
this.metrics?.peersReportPeerCount.inc({ reason: actionName });
|
|
43
47
|
}
|
|
44
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/network/peers/score/store.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/network/peers/score/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ForkName } from "@lodestar/params";
|
|
2
|
+
import { ForkDigest, Root, Slot, Status } from "@lodestar/types";
|
|
2
3
|
export declare enum IrrelevantPeerCode {
|
|
3
4
|
INCOMPATIBLE_FORKS = "IRRELEVANT_PEER_INCOMPATIBLE_FORKS",
|
|
4
5
|
DIFFERENT_CLOCKS = "IRRELEVANT_PEER_DIFFERENT_CLOCKS",
|
|
5
|
-
DIFFERENT_FINALIZED = "IRRELEVANT_PEER_DIFFERENT_FINALIZED"
|
|
6
|
+
DIFFERENT_FINALIZED = "IRRELEVANT_PEER_DIFFERENT_FINALIZED",
|
|
7
|
+
NO_EARLIEST_AVAILABLE_SLOT = "NO_EARLIEST_AVAILABLE_SLOT"
|
|
6
8
|
}
|
|
7
9
|
type IrrelevantPeerType = {
|
|
8
10
|
code: IrrelevantPeerCode.INCOMPATIBLE_FORKS;
|
|
@@ -11,6 +13,8 @@ type IrrelevantPeerType = {
|
|
|
11
13
|
} | {
|
|
12
14
|
code: IrrelevantPeerCode.DIFFERENT_CLOCKS;
|
|
13
15
|
slotDiff: number;
|
|
16
|
+
} | {
|
|
17
|
+
code: IrrelevantPeerCode.NO_EARLIEST_AVAILABLE_SLOT;
|
|
14
18
|
} | {
|
|
15
19
|
code: IrrelevantPeerCode.DIFFERENT_FINALIZED;
|
|
16
20
|
expectedRoot: Root;
|
|
@@ -20,7 +24,7 @@ type IrrelevantPeerType = {
|
|
|
20
24
|
* Process a `Status` message to determine if a peer is relevant to us. If the peer is
|
|
21
25
|
* irrelevant the reason is returned.
|
|
22
26
|
*/
|
|
23
|
-
export declare function assertPeerRelevance(remote:
|
|
27
|
+
export declare function assertPeerRelevance(forkName: ForkName, remote: Status, local: Status, currentSlot: Slot): IrrelevantPeerType | null;
|
|
24
28
|
export declare function isZeroRoot(root: Root): boolean;
|
|
25
29
|
export declare function renderIrrelevantPeerType(type: IrrelevantPeerType): string;
|
|
26
30
|
export {};
|