@lodestar/beacon-node 1.41.0-dev.ef310100c0 → 1.41.0-dev.f2caa915ab

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 (118) hide show
  1. package/lib/api/impl/debug/index.d.ts.map +1 -1
  2. package/lib/api/impl/debug/index.js +1 -0
  3. package/lib/api/impl/debug/index.js.map +1 -1
  4. package/lib/api/impl/node/utils.d.ts +1 -1
  5. package/lib/api/impl/node/utils.d.ts.map +1 -1
  6. package/lib/api/impl/node/utils.js.map +1 -1
  7. package/lib/chain/blocks/blockInput/blockInput.d.ts +20 -2
  8. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  9. package/lib/chain/blocks/blockInput/blockInput.js +47 -0
  10. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  11. package/lib/chain/blocks/blockInput/types.d.ts +2 -1
  12. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  13. package/lib/chain/blocks/blockInput/types.js +1 -0
  14. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  15. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  16. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -0
  17. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  18. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -0
  19. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  20. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -1
  21. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  22. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  23. package/lib/chain/seenCache/seenGossipBlockInput.js +15 -7
  24. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  25. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  26. package/lib/db/repositories/blockArchive.js +1 -2
  27. package/lib/db/repositories/blockArchive.js.map +1 -1
  28. package/lib/network/core/networkCore.d.ts +3 -3
  29. package/lib/network/core/networkCore.d.ts.map +1 -1
  30. package/lib/network/core/networkCore.js.map +1 -1
  31. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  32. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  33. package/lib/network/core/types.d.ts +2 -2
  34. package/lib/network/core/types.d.ts.map +1 -1
  35. package/lib/network/events.d.ts +2 -1
  36. package/lib/network/events.d.ts.map +1 -1
  37. package/lib/network/events.js.map +1 -1
  38. package/lib/network/gossip/encoding.d.ts +3 -3
  39. package/lib/network/gossip/encoding.d.ts.map +1 -1
  40. package/lib/network/gossip/encoding.js.map +1 -1
  41. package/lib/network/gossip/gossipsub.d.ts +13 -4
  42. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  43. package/lib/network/gossip/gossipsub.js +47 -20
  44. package/lib/network/gossip/gossipsub.js.map +1 -1
  45. package/lib/network/gossip/interface.d.ts +3 -3
  46. package/lib/network/gossip/interface.d.ts.map +1 -1
  47. package/lib/network/gossip/scoringParameters.d.ts +1 -1
  48. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  49. package/lib/network/gossip/scoringParameters.js +1 -1
  50. package/lib/network/gossip/scoringParameters.js.map +1 -1
  51. package/lib/network/interface.d.ts +3 -3
  52. package/lib/network/interface.d.ts.map +1 -1
  53. package/lib/network/libp2p/index.d.ts +1 -1
  54. package/lib/network/libp2p/index.d.ts.map +1 -1
  55. package/lib/network/libp2p/index.js +7 -2
  56. package/lib/network/libp2p/index.js.map +1 -1
  57. package/lib/network/network.d.ts +2 -2
  58. package/lib/network/network.d.ts.map +1 -1
  59. package/lib/network/network.js.map +1 -1
  60. package/lib/network/options.d.ts.map +1 -1
  61. package/lib/network/options.js +3 -0
  62. package/lib/network/options.js.map +1 -1
  63. package/lib/network/peers/datastore.d.ts +7 -5
  64. package/lib/network/peers/datastore.d.ts.map +1 -1
  65. package/lib/network/peers/datastore.js +10 -10
  66. package/lib/network/peers/datastore.js.map +1 -1
  67. package/lib/network/peers/peerManager.d.ts +1 -0
  68. package/lib/network/peers/peerManager.d.ts.map +1 -1
  69. package/lib/network/peers/peerManager.js +51 -29
  70. package/lib/network/peers/peerManager.js.map +1 -1
  71. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  72. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  73. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  74. package/lib/network/processor/gossipHandlers.js +3 -1
  75. package/lib/network/processor/gossipHandlers.js.map +1 -1
  76. package/lib/network/processor/gossipValidatorFn.js +1 -1
  77. package/lib/network/processor/types.d.ts +1 -1
  78. package/lib/network/processor/types.d.ts.map +1 -1
  79. package/lib/network/reqresp/score.d.ts.map +1 -1
  80. package/lib/network/reqresp/score.js +0 -1
  81. package/lib/network/reqresp/score.js.map +1 -1
  82. package/lib/network/util.js +2 -2
  83. package/lib/network/util.js.map +1 -1
  84. package/lib/util/clock.d.ts +6 -0
  85. package/lib/util/clock.d.ts.map +1 -1
  86. package/lib/util/clock.js +9 -3
  87. package/lib/util/clock.js.map +1 -1
  88. package/package.json +38 -41
  89. package/src/api/impl/debug/index.ts +1 -0
  90. package/src/api/impl/node/utils.ts +3 -3
  91. package/src/chain/blocks/blockInput/blockInput.ts +68 -3
  92. package/src/chain/blocks/blockInput/types.ts +1 -0
  93. package/src/chain/blocks/verifyBlocksDataAvailability.ts +3 -0
  94. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  95. package/src/chain/seenCache/seenGossipBlockInput.ts +16 -7
  96. package/src/db/repositories/blockArchive.ts +1 -2
  97. package/src/network/core/networkCore.ts +3 -3
  98. package/src/network/core/networkCoreWorkerHandler.ts +3 -3
  99. package/src/network/core/types.ts +2 -2
  100. package/src/network/events.ts +2 -1
  101. package/src/network/gossip/encoding.ts +3 -3
  102. package/src/network/gossip/gossipsub.ts +86 -25
  103. package/src/network/gossip/interface.ts +3 -3
  104. package/src/network/gossip/scoringParameters.ts +4 -4
  105. package/src/network/interface.ts +3 -3
  106. package/src/network/libp2p/index.ts +8 -3
  107. package/src/network/network.ts +3 -3
  108. package/src/network/options.ts +3 -0
  109. package/src/network/peers/datastore.ts +13 -10
  110. package/src/network/peers/peerManager.ts +56 -30
  111. package/src/network/peers/utils/prioritizePeers.ts +3 -3
  112. package/src/network/processor/gossipHandlers.ts +7 -3
  113. package/src/network/processor/gossipValidatorFn.ts +1 -1
  114. package/src/network/processor/types.ts +1 -1
  115. package/src/network/reqresp/score.ts +0 -1
  116. package/src/network/util.ts +2 -2
  117. package/src/util/clock.ts +9 -4
  118. package/src/util/workerEvents.ts +1 -1
package/src/util/clock.ts CHANGED
@@ -92,15 +92,17 @@ export class Clock extends EventEmitter implements IClock {
92
92
  }
93
93
  return slot;
94
94
  }
95
-
96
95
  /**
97
96
  * If it's too close to next slot given MAXIMUM_GOSSIP_CLOCK_DISPARITY, return currentSlot + 1.
98
97
  * Otherwise return currentSlot
98
+ *
99
+ * Spec: phase0/p2p-interface.md - gossip validation uses `current_time + MAXIMUM_GOSSIP_CLOCK_DISPARITY < message_time`
100
+ * to reject future messages (strict `<`), so the boundary (exactly equal) is accepted, hence `<=` here.
99
101
  */
100
102
  get currentSlotWithGossipDisparity(): Slot {
101
103
  const currentSlot = this.currentSlot;
102
104
  const nextSlotTime = computeTimeAtSlot(this.config, currentSlot + 1, this.genesisTime) * 1000;
103
- return nextSlotTime - Date.now() < this.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY ? currentSlot + 1 : currentSlot;
105
+ return nextSlotTime - Date.now() <= this.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY ? currentSlot + 1 : currentSlot;
104
106
  }
105
107
 
106
108
  get currentEpoch(): Epoch {
@@ -121,6 +123,9 @@ export class Clock extends EventEmitter implements IClock {
121
123
 
122
124
  /**
123
125
  * Check if a slot is current slot given MAXIMUM_GOSSIP_CLOCK_DISPARITY.
126
+ *
127
+ * Uses `<=` for disparity checks because the spec rejects with strict `<`
128
+ * (phase0/p2p-interface.md), meaning the boundary (exactly equal) is accepted.
124
129
  */
125
130
  isCurrentSlotGivenGossipDisparity(slot: Slot): boolean {
126
131
  const currentSlot = this.currentSlot;
@@ -129,12 +134,12 @@ export class Clock extends EventEmitter implements IClock {
129
134
  }
130
135
  const nextSlotTime = computeTimeAtSlot(this.config, currentSlot + 1, this.genesisTime) * 1000;
131
136
  // we're too close to next slot, accept next slot
132
- if (nextSlotTime - Date.now() < this.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY) {
137
+ if (nextSlotTime - Date.now() <= this.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY) {
133
138
  return slot === currentSlot + 1;
134
139
  }
135
140
  const currentSlotTime = computeTimeAtSlot(this.config, currentSlot, this.genesisTime) * 1000;
136
141
  // we've just passed the current slot, accept previous slot
137
- if (Date.now() - currentSlotTime < this.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY) {
142
+ if (Date.now() - currentSlotTime <= this.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY) {
138
143
  return slot === currentSlot - 1;
139
144
  }
140
145
  return false;
@@ -1,5 +1,5 @@
1
1
  import {MessagePort, Worker} from "node:worker_threads";
2
- import {Message} from "@libp2p/interface";
2
+ import type {Message} from "@libp2p/gossipsub";
3
3
  import {Thread} from "@chainsafe/threads";
4
4
  import {Logger} from "@lodestar/logger";
5
5
  import {sleep} from "@lodestar/utils";