@lodestar/beacon-node 1.43.0-dev.180030f946 → 1.43.0-dev.1d4e5f45ec

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 (248) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +15 -4
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +45 -2
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/debug/index.d.ts.map +1 -1
  8. package/lib/api/impl/debug/index.js +0 -1
  9. package/lib/api/impl/debug/index.js.map +1 -1
  10. package/lib/api/impl/validator/index.d.ts.map +1 -1
  11. package/lib/api/impl/validator/index.js +68 -2
  12. package/lib/api/impl/validator/index.js.map +1 -1
  13. package/lib/chain/blocks/blockInput/blockInput.d.ts +3 -0
  14. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  15. package/lib/chain/blocks/blockInput/blockInput.js +4 -1
  16. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  17. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  18. package/lib/chain/blocks/importBlock.js +16 -31
  19. package/lib/chain/blocks/importBlock.js.map +1 -1
  20. package/lib/chain/blocks/importExecutionPayload.d.ts +9 -3
  21. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  22. package/lib/chain/blocks/importExecutionPayload.js +37 -15
  23. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  24. package/lib/chain/blocks/index.d.ts.map +1 -1
  25. package/lib/chain/blocks/index.js +35 -21
  26. package/lib/chain/blocks/index.js.map +1 -1
  27. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +12 -1
  28. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  29. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +28 -2
  30. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  31. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +17 -0
  32. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  33. package/lib/chain/blocks/types.d.ts +2 -1
  34. package/lib/chain/blocks/types.d.ts.map +1 -1
  35. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  36. package/lib/chain/blocks/utils/chainSegment.js +8 -0
  37. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  38. package/lib/chain/blocks/verifyBlock.d.ts +2 -1
  39. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  40. package/lib/chain/blocks/verifyBlock.js +30 -12
  41. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  42. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +0 -4
  43. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  44. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -2
  45. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  46. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +2 -1
  47. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  48. package/lib/chain/blocks/verifyBlocksSanityChecks.js +25 -5
  49. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  50. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +2 -2
  51. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  52. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +12 -8
  53. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  54. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  55. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +8 -3
  56. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  57. package/lib/chain/chain.d.ts +2 -1
  58. package/lib/chain/chain.d.ts.map +1 -1
  59. package/lib/chain/chain.js +28 -9
  60. package/lib/chain/chain.js.map +1 -1
  61. package/lib/chain/emitter.d.ts +0 -11
  62. package/lib/chain/emitter.d.ts.map +1 -1
  63. package/lib/chain/emitter.js +0 -4
  64. package/lib/chain/emitter.js.map +1 -1
  65. package/lib/chain/errors/index.d.ts +1 -0
  66. package/lib/chain/errors/index.d.ts.map +1 -1
  67. package/lib/chain/errors/index.js +1 -0
  68. package/lib/chain/errors/index.js.map +1 -1
  69. package/lib/chain/errors/proposerPreferences.d.ts +40 -0
  70. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -0
  71. package/lib/chain/errors/proposerPreferences.js +14 -0
  72. package/lib/chain/errors/proposerPreferences.js.map +1 -0
  73. package/lib/chain/initState.d.ts.map +1 -1
  74. package/lib/chain/initState.js +6 -1
  75. package/lib/chain/initState.js.map +1 -1
  76. package/lib/chain/interface.d.ts +2 -1
  77. package/lib/chain/interface.d.ts.map +1 -1
  78. package/lib/chain/interface.js.map +1 -1
  79. package/lib/chain/opPools/payloadAttestationPool.d.ts +3 -2
  80. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  81. package/lib/chain/opPools/payloadAttestationPool.js +26 -4
  82. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  83. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  84. package/lib/chain/prepareNextSlot.js +16 -18
  85. package/lib/chain/prepareNextSlot.js.map +1 -1
  86. package/lib/chain/produceBlock/produceBlockBody.d.ts +12 -3
  87. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  88. package/lib/chain/produceBlock/produceBlockBody.js +35 -17
  89. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  90. package/lib/chain/regen/interface.d.ts +1 -0
  91. package/lib/chain/regen/interface.d.ts.map +1 -1
  92. package/lib/chain/regen/interface.js +1 -0
  93. package/lib/chain/regen/interface.js.map +1 -1
  94. package/lib/chain/regen/queued.d.ts.map +1 -1
  95. package/lib/chain/regen/queued.js +1 -4
  96. package/lib/chain/regen/queued.js.map +1 -1
  97. package/lib/chain/regen/regen.d.ts.map +1 -1
  98. package/lib/chain/regen/regen.js +1 -4
  99. package/lib/chain/regen/regen.js.map +1 -1
  100. package/lib/chain/seenCache/index.d.ts +1 -0
  101. package/lib/chain/seenCache/index.d.ts.map +1 -1
  102. package/lib/chain/seenCache/index.js +1 -0
  103. package/lib/chain/seenCache/index.js.map +1 -1
  104. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +21 -11
  105. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  106. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +70 -20
  107. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  108. package/lib/chain/seenCache/seenProposerPreferences.d.ts +16 -0
  109. package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -0
  110. package/lib/chain/seenCache/seenProposerPreferences.js +26 -0
  111. package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -0
  112. package/lib/chain/validation/executionPayloadBid.js +11 -8
  113. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  114. package/lib/chain/validation/proposerPreferences.d.ts +8 -0
  115. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -0
  116. package/lib/chain/validation/proposerPreferences.js +91 -0
  117. package/lib/chain/validation/proposerPreferences.js.map +1 -0
  118. package/lib/metrics/metrics/lodestar.d.ts +1 -0
  119. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  120. package/lib/metrics/metrics/lodestar.js +4 -0
  121. package/lib/metrics/metrics/lodestar.js.map +1 -1
  122. package/lib/network/gossip/interface.d.ts +7 -1
  123. package/lib/network/gossip/interface.d.ts.map +1 -1
  124. package/lib/network/gossip/interface.js +1 -0
  125. package/lib/network/gossip/interface.js.map +1 -1
  126. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  127. package/lib/network/gossip/scoringParameters.js +12 -1
  128. package/lib/network/gossip/scoringParameters.js.map +1 -1
  129. package/lib/network/gossip/topic.d.ts +29 -766
  130. package/lib/network/gossip/topic.d.ts.map +1 -1
  131. package/lib/network/gossip/topic.js +6 -0
  132. package/lib/network/gossip/topic.js.map +1 -1
  133. package/lib/network/interface.d.ts +1 -0
  134. package/lib/network/interface.d.ts.map +1 -1
  135. package/lib/network/network.d.ts +1 -0
  136. package/lib/network/network.d.ts.map +1 -1
  137. package/lib/network/network.js +5 -0
  138. package/lib/network/network.js.map +1 -1
  139. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  140. package/lib/network/processor/gossipHandlers.js +38 -16
  141. package/lib/network/processor/gossipHandlers.js.map +1 -1
  142. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  143. package/lib/network/processor/gossipQueues/index.js +5 -0
  144. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  145. package/lib/network/processor/index.d.ts.map +1 -1
  146. package/lib/network/processor/index.js +6 -5
  147. package/lib/network/processor/index.js.map +1 -1
  148. package/lib/node/nodejs.js +2 -2
  149. package/lib/node/nodejs.js.map +1 -1
  150. package/lib/node/notifier.js +1 -7
  151. package/lib/node/notifier.js.map +1 -1
  152. package/lib/sync/constants.d.ts +3 -1
  153. package/lib/sync/constants.d.ts.map +1 -1
  154. package/lib/sync/constants.js +3 -4
  155. package/lib/sync/constants.js.map +1 -1
  156. package/lib/sync/range/batch.d.ts +23 -3
  157. package/lib/sync/range/batch.d.ts.map +1 -1
  158. package/lib/sync/range/batch.js +191 -36
  159. package/lib/sync/range/batch.js.map +1 -1
  160. package/lib/sync/range/chain.d.ts +13 -2
  161. package/lib/sync/range/chain.d.ts.map +1 -1
  162. package/lib/sync/range/chain.js +61 -9
  163. package/lib/sync/range/chain.js.map +1 -1
  164. package/lib/sync/range/range.d.ts.map +1 -1
  165. package/lib/sync/range/range.js +14 -3
  166. package/lib/sync/range/range.js.map +1 -1
  167. package/lib/sync/sync.d.ts.map +1 -1
  168. package/lib/sync/sync.js +13 -0
  169. package/lib/sync/sync.js.map +1 -1
  170. package/lib/sync/types.d.ts +34 -0
  171. package/lib/sync/types.d.ts.map +1 -1
  172. package/lib/sync/types.js +34 -0
  173. package/lib/sync/types.js.map +1 -1
  174. package/lib/sync/unknownBlock.d.ts +29 -1
  175. package/lib/sync/unknownBlock.d.ts.map +1 -1
  176. package/lib/sync/unknownBlock.js +738 -61
  177. package/lib/sync/unknownBlock.js.map +1 -1
  178. package/lib/sync/utils/downloadByRange.d.ts +29 -8
  179. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  180. package/lib/sync/utils/downloadByRange.js +104 -42
  181. package/lib/sync/utils/downloadByRange.js.map +1 -1
  182. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  183. package/lib/sync/utils/downloadByRoot.js +16 -2
  184. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  185. package/lib/sync/utils/pendingBlocksTree.d.ts +0 -1
  186. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -1
  187. package/lib/sync/utils/pendingBlocksTree.js +0 -9
  188. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  189. package/lib/util/sszBytes.d.ts.map +1 -1
  190. package/lib/util/sszBytes.js +8 -6
  191. package/lib/util/sszBytes.js.map +1 -1
  192. package/package.json +16 -16
  193. package/src/api/impl/beacon/blocks/index.ts +20 -4
  194. package/src/api/impl/beacon/pool/index.ts +83 -1
  195. package/src/api/impl/debug/index.ts +0 -1
  196. package/src/api/impl/validator/index.ts +82 -1
  197. package/src/chain/blocks/blockInput/blockInput.ts +4 -1
  198. package/src/chain/blocks/importBlock.ts +16 -50
  199. package/src/chain/blocks/importExecutionPayload.ts +51 -20
  200. package/src/chain/blocks/index.ts +32 -15
  201. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +37 -3
  202. package/src/chain/blocks/payloadEnvelopeInput/types.ts +18 -0
  203. package/src/chain/blocks/types.ts +2 -1
  204. package/src/chain/blocks/utils/chainSegment.ts +8 -0
  205. package/src/chain/blocks/verifyBlock.ts +45 -13
  206. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +6 -4
  207. package/src/chain/blocks/verifyBlocksSanityChecks.ts +26 -7
  208. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +16 -8
  209. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +7 -4
  210. package/src/chain/chain.ts +32 -7
  211. package/src/chain/emitter.ts +0 -11
  212. package/src/chain/errors/index.ts +1 -0
  213. package/src/chain/errors/proposerPreferences.ts +47 -0
  214. package/src/chain/initState.ts +9 -1
  215. package/src/chain/interface.ts +2 -0
  216. package/src/chain/opPools/payloadAttestationPool.ts +29 -8
  217. package/src/chain/prepareNextSlot.ts +21 -29
  218. package/src/chain/produceBlock/produceBlockBody.ts +46 -22
  219. package/src/chain/regen/interface.ts +1 -0
  220. package/src/chain/regen/queued.ts +2 -7
  221. package/src/chain/regen/regen.ts +2 -7
  222. package/src/chain/seenCache/index.ts +1 -0
  223. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +90 -24
  224. package/src/chain/seenCache/seenProposerPreferences.ts +32 -0
  225. package/src/chain/validation/executionPayloadBid.ts +11 -8
  226. package/src/chain/validation/proposerPreferences.ts +110 -0
  227. package/src/metrics/metrics/lodestar.ts +4 -0
  228. package/src/network/gossip/interface.ts +6 -0
  229. package/src/network/gossip/scoringParameters.ts +14 -1
  230. package/src/network/gossip/topic.ts +6 -0
  231. package/src/network/interface.ts +1 -0
  232. package/src/network/network.ts +11 -0
  233. package/src/network/processor/gossipHandlers.ts +53 -17
  234. package/src/network/processor/gossipQueues/index.ts +5 -0
  235. package/src/network/processor/index.ts +6 -5
  236. package/src/node/nodejs.ts +2 -2
  237. package/src/node/notifier.ts +1 -8
  238. package/src/sync/constants.ts +4 -4
  239. package/src/sync/range/batch.ts +240 -42
  240. package/src/sync/range/chain.ts +77 -10
  241. package/src/sync/range/range.ts +16 -3
  242. package/src/sync/sync.ts +13 -1
  243. package/src/sync/types.ts +72 -0
  244. package/src/sync/unknownBlock.ts +928 -65
  245. package/src/sync/utils/downloadByRange.ts +166 -44
  246. package/src/sync/utils/downloadByRoot.ts +24 -2
  247. package/src/sync/utils/pendingBlocksTree.ts +0 -15
  248. package/src/util/sszBytes.ts +8 -6
package/src/sync/sync.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import {SLOTS_PER_EPOCH} from "@lodestar/params";
2
2
  import {Slot} from "@lodestar/types";
3
- import {Logger} from "@lodestar/utils";
3
+ import {Logger, toRootHex} from "@lodestar/utils";
4
4
  import {IBeaconChain} from "../chain/index.js";
5
5
  import {GENESIS_SLOT} from "../constants/constants.js";
6
6
  import {ExecutionEngineState} from "../execution/index.js";
@@ -188,6 +188,18 @@ export class BeaconSync implements IBeaconSync {
188
188
  private addPeer = (data: NetworkEventData[NetworkEvent.peerConnected]): void => {
189
189
  const localStatus = this.chain.getStatus();
190
190
  const syncType = getPeerSyncType(localStatus, data.status, this.chain.forkChoice, this.slotImportTolerance);
191
+ this.logger.verbose("Peer sync type classified", {
192
+ peer: data.peer,
193
+ syncType,
194
+ localFinalizedEpoch: localStatus.finalizedEpoch,
195
+ localFinalizedRoot: toRootHex(localStatus.finalizedRoot),
196
+ localHeadSlot: localStatus.headSlot,
197
+ localHeadRoot: toRootHex(localStatus.headRoot),
198
+ remoteFinalizedEpoch: data.status.finalizedEpoch,
199
+ remoteFinalizedRoot: toRootHex(data.status.finalizedRoot),
200
+ remoteHeadSlot: data.status.headSlot,
201
+ remoteHeadRoot: toRootHex(data.status.headRoot),
202
+ });
191
203
 
192
204
  // For metrics only
193
205
  this.peerSyncType.set(data.peer, syncType);
package/src/sync/types.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  import {RootHex, Slot} from "@lodestar/types";
2
+ import {SignedExecutionPayloadEnvelope} from "@lodestar/types/gloas";
3
+ import {toRootHex} from "@lodestar/utils";
2
4
  import {IBlockInput} from "../chain/blocks/blockInput/index.js";
5
+ import {PayloadEnvelopeInput} from "../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
3
6
 
4
7
  export enum PendingBlockType {
5
8
  /**
@@ -26,6 +29,14 @@ export enum PendingBlockInputStatus {
26
29
  processing = "processing",
27
30
  }
28
31
 
32
+ export enum PendingPayloadInputStatus {
33
+ pending = "pending",
34
+ fetching = "fetching",
35
+ waitingForBlock = "waiting_for_block",
36
+ downloaded = "downloaded",
37
+ processing = "processing",
38
+ }
39
+
29
40
  export type PendingBlockInput = {
30
41
  status: PendingBlockInputStatus;
31
42
  blockInput: IBlockInput;
@@ -44,10 +55,47 @@ export type PendingRootHex = {
44
55
 
45
56
  export type BlockInputSyncCacheItem = PendingBlockInput | PendingRootHex;
46
57
 
58
+ export type PendingPayloadInput = {
59
+ status:
60
+ | PendingPayloadInputStatus.pending
61
+ | PendingPayloadInputStatus.fetching
62
+ | PendingPayloadInputStatus.downloaded
63
+ | PendingPayloadInputStatus.processing;
64
+ payloadInput: PayloadEnvelopeInput;
65
+ timeAddedSec: number;
66
+ timeSyncedSec?: number;
67
+ peerIdStrings: Set<string>;
68
+ };
69
+
70
+ export type PendingPayloadRootHex = {
71
+ status: PendingPayloadInputStatus.pending | PendingPayloadInputStatus.fetching;
72
+ rootHex: RootHex;
73
+ timeAddedSec: number;
74
+ timeSyncedSec?: number;
75
+ peerIdStrings: Set<string>;
76
+ };
77
+
78
+ export type PendingPayloadEnvelope = {
79
+ status: PendingPayloadInputStatus.waitingForBlock;
80
+ envelope: SignedExecutionPayloadEnvelope;
81
+ timeAddedSec: number;
82
+ peerIdStrings: Set<string>;
83
+ };
84
+
85
+ export type PayloadSyncCacheItem = PendingPayloadInput | PendingPayloadRootHex | PendingPayloadEnvelope;
86
+
47
87
  export function isPendingBlockInput(pending: BlockInputSyncCacheItem): pending is PendingBlockInput {
48
88
  return "blockInput" in pending;
49
89
  }
50
90
 
91
+ export function isPendingPayloadInput(pending: PayloadSyncCacheItem): pending is PendingPayloadInput {
92
+ return "payloadInput" in pending;
93
+ }
94
+
95
+ export function isPendingPayloadEnvelope(pending: PayloadSyncCacheItem): pending is PendingPayloadEnvelope {
96
+ return "envelope" in pending;
97
+ }
98
+
51
99
  export function getBlockInputSyncCacheItemRootHex(block: BlockInputSyncCacheItem): RootHex {
52
100
  return isPendingBlockInput(block) ? block.blockInput.blockRootHex : block.rootHex;
53
101
  }
@@ -55,3 +103,27 @@ export function getBlockInputSyncCacheItemRootHex(block: BlockInputSyncCacheItem
55
103
  export function getBlockInputSyncCacheItemSlot(block: BlockInputSyncCacheItem): Slot | string {
56
104
  return isPendingBlockInput(block) ? block.blockInput.slot : "unknown";
57
105
  }
106
+
107
+ export function getPayloadSyncCacheItemRootHex(payload: PayloadSyncCacheItem): RootHex {
108
+ if (isPendingPayloadInput(payload)) {
109
+ return payload.payloadInput.blockRootHex;
110
+ }
111
+
112
+ if (isPendingPayloadEnvelope(payload)) {
113
+ return toRootHex(payload.envelope.message.beaconBlockRoot);
114
+ }
115
+
116
+ return payload.rootHex;
117
+ }
118
+
119
+ export function getPayloadSyncCacheItemSlot(payload: PayloadSyncCacheItem): Slot | string {
120
+ if (isPendingPayloadInput(payload)) {
121
+ return payload.payloadInput.slot;
122
+ }
123
+
124
+ if (isPendingPayloadEnvelope(payload)) {
125
+ return payload.envelope.message.payload.slotNumber;
126
+ }
127
+
128
+ return "unknown";
129
+ }