@lodestar/beacon-node 1.45.0-dev.9ed373bf56 → 1.45.0-dev.b620872107

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.
Files changed (38) hide show
  1. package/lib/chain/validation/executionPayloadBid.js +10 -11
  2. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  3. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -1
  4. package/lib/chain/validation/proposerPreferences.js +2 -3
  5. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  6. package/lib/network/core/metrics.d.ts +0 -65
  7. package/lib/network/core/metrics.d.ts.map +1 -1
  8. package/lib/network/core/metrics.js +0 -94
  9. package/lib/network/core/metrics.js.map +1 -1
  10. package/lib/network/discv5/utils.d.ts.map +1 -1
  11. package/lib/network/discv5/utils.js +3 -12
  12. package/lib/network/discv5/utils.js.map +1 -1
  13. package/lib/network/gossip/encoding.d.ts.map +1 -1
  14. package/lib/network/gossip/encoding.js +0 -7
  15. package/lib/network/gossip/encoding.js.map +1 -1
  16. package/lib/network/peers/peerManager.d.ts.map +1 -1
  17. package/lib/network/peers/peerManager.js +0 -10
  18. package/lib/network/peers/peerManager.js.map +1 -1
  19. package/lib/network/peers/score/score.d.ts +1 -3
  20. package/lib/network/peers/score/score.d.ts.map +1 -1
  21. package/lib/network/peers/score/score.js +1 -6
  22. package/lib/network/peers/score/score.js.map +1 -1
  23. package/lib/network/peers/score/store.d.ts.map +1 -1
  24. package/lib/network/peers/score/store.js +1 -6
  25. package/lib/network/peers/score/store.js.map +1 -1
  26. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  27. package/lib/network/peers/utils/prioritizePeers.js +0 -14
  28. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  29. package/package.json +14 -14
  30. package/src/chain/validation/executionPayloadBid.ts +9 -14
  31. package/src/chain/validation/proposerPreferences.ts +2 -3
  32. package/src/network/core/metrics.ts +0 -94
  33. package/src/network/discv5/utils.ts +3 -11
  34. package/src/network/gossip/encoding.ts +0 -7
  35. package/src/network/peers/peerManager.ts +0 -11
  36. package/src/network/peers/score/score.ts +1 -8
  37. package/src/network/peers/score/store.ts +1 -8
  38. package/src/network/peers/utils/prioritizePeers.ts +0 -15
@@ -13,17 +13,9 @@ export enum ENRRelevance {
13
13
  }
14
14
 
15
15
  export function enrRelevance(enr: ENR, config: BeaconConfig, clock: IClock): ENRRelevance {
16
- // We are not interested in peers that don't advertise at least one transport (tcp or quic).
17
- let multiaddrTCP: ReturnType<ENR["getLocationMultiaddr"]>;
18
- let multiaddrQUIC: ReturnType<ENR["getLocationMultiaddr"]>;
19
- // Malformed ENR endpoint fields can make multiaddr conversion throw.
20
- // Treat endpoints that cannot be converted as unusable.
21
- try {
22
- multiaddrTCP = enr.getLocationMultiaddr(ENRKey.tcp);
23
- multiaddrQUIC = enr.getLocationMultiaddr(ENRKey.quic);
24
- } catch {
25
- return ENRRelevance.no_transport;
26
- }
16
+ // We are not interested in peers that don't advertise at least one transport (tcp or quic)
17
+ const multiaddrTCP = enr.getLocationMultiaddr(ENRKey.tcp);
18
+ const multiaddrQUIC = enr.getLocationMultiaddr(ENRKey.quic);
27
19
  if (!multiaddrTCP && !multiaddrQUIC) {
28
20
  return ENRRelevance.no_transport;
29
21
  }
@@ -52,13 +52,6 @@ export function fastMsgIdFn(rpcMsg: RPC.Message): string {
52
52
  }
53
53
 
54
54
  export function msgIdToStrFn(msgId: Uint8Array): string {
55
- // Spec mandates a 20-byte gossipsub message-id, but control-message IDs from peers
56
- // can be any length. Reject non-20-byte IDs to avoid a Buffer.set() RangeError on
57
- // longer IDs and stale shared-buffer bytes on shorter ones.
58
- // Ref: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.10/specs/phase0/p2p-interface.md?plain=1#L486
59
- if (msgId.length !== 20) {
60
- throw Error(`Expect msgId to be 20 bytes, got ${msgId.length}`);
61
- }
62
55
  // this is the same logic to `toHex(msgId)` with better performance
63
56
  sharedMsgIdBuf.set(msgId);
64
57
  return `0x${sharedMsgIdBuf.toString("hex")}`;
@@ -415,10 +415,8 @@ export class PeerManager {
415
415
  );
416
416
  if (irrelevantReasonType === null) {
417
417
  isIrrelevant = false;
418
- this.metrics?.peerManager.relevanceCheck.inc({result: "relevant"});
419
418
  } else {
420
419
  isIrrelevant = true;
421
- this.metrics?.peerManager.relevanceCheck.inc({result: irrelevantReasonType.code});
422
420
  this.logger.debug("Irrelevant peer", {
423
421
  peer: prettyPrintPeerId(peer),
424
422
  reason: renderIrrelevantPeerType(irrelevantReasonType),
@@ -426,7 +424,6 @@ export class PeerManager {
426
424
  }
427
425
  } catch (e) {
428
426
  this.logger.error("Irrelevant peer - unexpected error", {peer: prettyPrintPeerId(peer)}, e as Error);
429
- this.metrics?.peerManager.relevanceCheck.inc({result: "error"});
430
427
  isIrrelevant = true;
431
428
  }
432
429
 
@@ -555,18 +552,15 @@ export class PeerManager {
555
552
  for (const peer of connectedPeers) {
556
553
  switch (this.peerRpcScores.getScoreState(peer)) {
557
554
  case ScoreState.Banned:
558
- this.metrics?.peerManager.peersPruned.inc({reason: "banned"});
559
555
  void this.goodbyeAndDisconnect(peer, GoodByeReasonCode.BANNED);
560
556
  break;
561
557
  case ScoreState.Disconnected:
562
- this.metrics?.peerManager.peersPruned.inc({reason: "score_too_low"});
563
558
  void this.goodbyeAndDisconnect(peer, GoodByeReasonCode.SCORE_TOO_LOW);
564
559
  break;
565
560
  case ScoreState.Healthy:
566
561
  connectedHealthyPeers.push(peer);
567
562
  }
568
563
  }
569
- this.metrics?.peerManager.peersEvaluated.observe(connectedHealthyPeers.length);
570
564
 
571
565
  const status = this.statusCache.get();
572
566
  const starved =
@@ -578,7 +572,6 @@ export class PeerManager {
578
572
  this.metrics?.peerManager.starved.set(starved ? 1 : 0);
579
573
  const forkSeq = this.config.getForkSeq(this.clock.currentSlot);
580
574
 
581
- const prioritizeTimer = this.metrics?.peerManager.prioritizePeersDuration.startTimer();
582
575
  const {peersToDisconnect, peersToConnect, attnetQueries, syncnetQueries, custodyGroupQueries} = prioritizePeers(
583
576
  connectedHealthyPeers.map((peer) => {
584
577
  const peerData = this.connectedPeers.get(peer.toString());
@@ -608,7 +601,6 @@ export class PeerManager {
608
601
  this.config,
609
602
  this.metrics
610
603
  );
611
- prioritizeTimer?.();
612
604
 
613
605
  const queriesMerged: SubnetDiscvQueryMs[] = [];
614
606
  for (const {type, queries} of [
@@ -640,7 +632,6 @@ export class PeerManager {
640
632
  // disconnect first to have more slots before we dial new peers
641
633
  for (const [reason, peers] of peersToDisconnect) {
642
634
  this.metrics?.peersRequestedToDisconnect.inc({reason}, peers.length);
643
- this.metrics?.peerManager.peersPruned.inc({reason}, peers.length);
644
635
  for (const peer of peers) {
645
636
  void this.goodbyeAndDisconnect(peer, GoodByeReasonCode.TOO_MANY_PEERS);
646
637
  }
@@ -668,8 +659,6 @@ export class PeerManager {
668
659
  }
669
660
  }
670
661
 
671
- this.metrics?.peerManager.connectedPeersMapSize.set(this.connectedPeers.size);
672
-
673
662
  timer?.();
674
663
 
675
664
  this.logger.debug("peerManager heartbeat result", {
@@ -1,5 +1,4 @@
1
1
  import {GoodByeReasonCode} from "../../../constants/network.js";
2
- import {NetworkCoreMetrics} from "../../core/metrics.js";
3
2
  import {
4
3
  COOL_DOWN_BEFORE_DECAY_MS,
5
4
  DEFAULT_SCORE,
@@ -24,15 +23,13 @@ export class RealScore implements IPeerScore {
24
23
  /** The final score, computed from the above */
25
24
  private score: number;
26
25
  private lastUpdate: number;
27
- private readonly metrics: NetworkCoreMetrics | null;
28
26
 
29
- constructor(metrics: NetworkCoreMetrics | null = null) {
27
+ constructor() {
30
28
  this.lodestarScore = DEFAULT_SCORE;
31
29
  this.gossipScore = DEFAULT_SCORE;
32
30
  this.score = DEFAULT_SCORE;
33
31
  this.ignoreNegativeGossipScore = false;
34
32
  this.lastUpdate = Date.now();
35
- this.metrics = metrics;
36
33
  }
37
34
 
38
35
  isCoolingDown(): boolean {
@@ -139,10 +136,6 @@ export class RealScore implements IPeerScore {
139
136
  this.recomputeScore();
140
137
  const newState = scoreToState(this.score);
141
138
 
142
- if (prevState !== newState) {
143
- this.metrics?.peerManager.scoreStateTransitions.inc({from: prevState, to: newState});
144
- }
145
-
146
139
  if (prevState !== ScoreState.Banned && newState === ScoreState.Banned) {
147
140
  // ban this peer for at least BANNED_BEFORE_DECAY_MS seconds
148
141
  this.lastUpdate = Date.now() + COOL_DOWN_BEFORE_DECAY_MS;
@@ -32,9 +32,7 @@ export class PeerRpcScoreStore implements IPeerRpcScoreStore {
32
32
  constructor(opts: PeerRpcScoreOpts = {}, metrics: NetworkCoreMetrics | null = null, logger: Logger | null = null) {
33
33
  this.metrics = metrics;
34
34
  this.logger = logger;
35
- this.scores = opts.disablePeerScoring
36
- ? new MapDef(() => new MaxScore())
37
- : new MapDef(() => new RealScore(this.metrics));
35
+ this.scores = opts.disablePeerScoring ? new MapDef(() => new MaxScore()) : new MapDef(() => new RealScore());
38
36
  }
39
37
 
40
38
  getScore(peer: PeerId): number {
@@ -77,8 +75,6 @@ export class PeerRpcScoreStore implements IPeerRpcScoreStore {
77
75
  }
78
76
 
79
77
  update(): void {
80
- const timer = this.metrics?.peerManager.scoreUpdateDuration.startTimer();
81
-
82
78
  // Bound size of data structures
83
79
  pruneSetToMax(this.scores, MAX_ENTRIES);
84
80
 
@@ -90,9 +86,6 @@ export class PeerRpcScoreStore implements IPeerRpcScoreStore {
90
86
  this.scores.delete(peerIdStr);
91
87
  }
92
88
  }
93
-
94
- this.metrics?.peerManager.scoreMapSize.set(this.scores.size);
95
- timer?.();
96
89
  }
97
90
 
98
91
  updateGossipsubScore(peerId: PeerIdStr, newScore: number, ignore: boolean): void {
@@ -7,7 +7,6 @@ import {MapDef} from "@lodestar/utils";
7
7
  import {shuffle} from "../../../util/shuffle.js";
8
8
  import {sortBy} from "../../../util/sortBy.js";
9
9
  import {NetworkCoreMetrics} from "../../core/metrics.js";
10
- import {SubnetType} from "../../metadata.js";
11
10
  import {RequestedSubnet} from "./subnetMap.js";
12
11
 
13
12
  /** Target number of peers we'd like to have connected to a given long-lived subnet */
@@ -190,18 +189,6 @@ export function prioritizePeers(
190
189
 
191
190
  const connectedPeerCount = connectedPeers.length;
192
191
 
193
- // Track the outbound peers invariant (we keep at least OUTBOUND_PEERS_RATIO outbound peers).
194
- // Report 0 when there are no peers so the gauge doesn't go stale at its last value.
195
- if (metrics) {
196
- let outboundPeerCount = 0;
197
- for (const peer of connectedPeers) {
198
- if (peer.direction === "outbound") {
199
- outboundPeerCount++;
200
- }
201
- }
202
- metrics.peerManager.outboundPeersRatio.set(connectedPeerCount > 0 ? outboundPeerCount / connectedPeerCount : 0);
203
- }
204
-
205
192
  if (connectedPeerCount < targetPeers) {
206
193
  // Need more peers.
207
194
  // Instead of attempting to connect the exact amount necessary this will overshoot a little since the success
@@ -269,7 +256,6 @@ function requestSubnetPeers(
269
256
 
270
257
  for (const {subnet, toSlot} of activeAttnets) {
271
258
  const peersInSubnet = peersPerSubnet.get(subnet) ?? 0;
272
- metrics?.peerManager.peersPerActiveSubnet.observe({type: SubnetType.attnets}, peersInSubnet);
273
259
  if (peersInSubnet < targetSubnetPeers) {
274
260
  // We need more peers
275
261
  attnetQueries.push({subnet, toSlot, maxPeersToDiscover: targetSubnetPeers - peersInSubnet});
@@ -296,7 +282,6 @@ function requestSubnetPeers(
296
282
 
297
283
  for (const {subnet, toSlot} of activeSyncnets) {
298
284
  const peersInSubnet = peersPerSubnet.get(subnet) ?? 0;
299
- metrics?.peerManager.peersPerActiveSubnet.observe({type: SubnetType.syncnets}, peersInSubnet);
300
285
  if (peersInSubnet < targetSubnetPeers) {
301
286
  // We need more peers
302
287
  syncnetQueries.push({subnet, toSlot, maxPeersToDiscover: targetSubnetPeers - peersInSubnet});