@lodestar/beacon-node 1.43.0-dev.d166e3b6f7 → 1.43.0-dev.dfb984e779

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 (131) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +3 -2
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/lodestar/index.js +1 -1
  5. package/lib/api/impl/lodestar/index.js.map +1 -1
  6. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  7. package/lib/chain/blocks/importBlock.js +6 -3
  8. package/lib/chain/blocks/importBlock.js.map +1 -1
  9. package/lib/chain/blocks/importExecutionPayload.d.ts +19 -8
  10. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  11. package/lib/chain/blocks/importExecutionPayload.js +31 -20
  12. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  13. package/lib/chain/blocks/index.d.ts +5 -3
  14. package/lib/chain/blocks/index.d.ts.map +1 -1
  15. package/lib/chain/blocks/index.js +28 -9
  16. package/lib/chain/blocks/index.js.map +1 -1
  17. package/lib/chain/blocks/payloadEnvelopeProcessor.js +2 -2
  18. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  19. package/lib/chain/blocks/types.d.ts +2 -2
  20. package/lib/chain/blocks/types.d.ts.map +1 -1
  21. package/lib/chain/blocks/utils/chainSegment.d.ts +23 -2
  22. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  23. package/lib/chain/blocks/utils/chainSegment.js +81 -12
  24. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  25. package/lib/chain/blocks/verifyBlock.d.ts +3 -2
  26. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  27. package/lib/chain/blocks/verifyBlock.js +30 -5
  28. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  29. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  30. package/lib/chain/blocks/verifyBlocksSanityChecks.js +15 -4
  31. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  32. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +2 -2
  33. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  34. package/lib/chain/chain.d.ts +1 -1
  35. package/lib/chain/chain.d.ts.map +1 -1
  36. package/lib/chain/chain.js +7 -3
  37. package/lib/chain/chain.js.map +1 -1
  38. package/lib/chain/errors/blockError.d.ts +8 -1
  39. package/lib/chain/errors/blockError.d.ts.map +1 -1
  40. package/lib/chain/errors/blockError.js +2 -0
  41. package/lib/chain/errors/blockError.js.map +1 -1
  42. package/lib/chain/interface.d.ts +1 -1
  43. package/lib/chain/interface.d.ts.map +1 -1
  44. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  45. package/lib/chain/produceBlock/produceBlockBody.js +8 -2
  46. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  47. package/lib/chain/validation/block.d.ts.map +1 -1
  48. package/lib/chain/validation/block.js +1 -0
  49. package/lib/chain/validation/block.js.map +1 -1
  50. package/lib/metrics/metrics/lodestar.d.ts +1 -0
  51. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  52. package/lib/metrics/metrics/lodestar.js +4 -0
  53. package/lib/metrics/metrics/lodestar.js.map +1 -1
  54. package/lib/network/processor/gossipHandlers.js +4 -6
  55. package/lib/network/processor/gossipHandlers.js.map +1 -1
  56. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  57. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +14 -6
  58. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  59. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  60. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +11 -5
  61. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  62. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  63. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +17 -5
  64. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  65. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
  66. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +7 -4
  67. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
  68. package/lib/node/notifier.js +7 -1
  69. package/lib/node/notifier.js.map +1 -1
  70. package/lib/sync/range/batch.d.ts +12 -2
  71. package/lib/sync/range/batch.d.ts.map +1 -1
  72. package/lib/sync/range/batch.js +56 -30
  73. package/lib/sync/range/batch.js.map +1 -1
  74. package/lib/sync/range/chain.d.ts +6 -2
  75. package/lib/sync/range/chain.d.ts.map +1 -1
  76. package/lib/sync/range/chain.js +4 -3
  77. package/lib/sync/range/chain.js.map +1 -1
  78. package/lib/sync/range/range.d.ts.map +1 -1
  79. package/lib/sync/range/range.js +17 -6
  80. package/lib/sync/range/range.js.map +1 -1
  81. package/lib/sync/types.d.ts +34 -0
  82. package/lib/sync/types.d.ts.map +1 -1
  83. package/lib/sync/types.js +34 -0
  84. package/lib/sync/types.js.map +1 -1
  85. package/lib/sync/unknownBlock.d.ts +24 -1
  86. package/lib/sync/unknownBlock.d.ts.map +1 -1
  87. package/lib/sync/unknownBlock.js +649 -53
  88. package/lib/sync/unknownBlock.js.map +1 -1
  89. package/lib/sync/utils/downloadByRange.d.ts +46 -10
  90. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  91. package/lib/sync/utils/downloadByRange.js +147 -24
  92. package/lib/sync/utils/downloadByRange.js.map +1 -1
  93. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  94. package/lib/sync/utils/downloadByRoot.js +6 -2
  95. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  96. package/lib/sync/utils/pendingBlocksTree.d.ts +0 -1
  97. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -1
  98. package/lib/sync/utils/pendingBlocksTree.js +0 -9
  99. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  100. package/package.json +15 -15
  101. package/src/api/impl/beacon/blocks/index.ts +5 -2
  102. package/src/api/impl/lodestar/index.ts +1 -1
  103. package/src/chain/blocks/importBlock.ts +4 -2
  104. package/src/chain/blocks/importExecutionPayload.ts +36 -21
  105. package/src/chain/blocks/index.ts +44 -12
  106. package/src/chain/blocks/payloadEnvelopeProcessor.ts +2 -2
  107. package/src/chain/blocks/types.ts +2 -2
  108. package/src/chain/blocks/utils/chainSegment.ts +106 -17
  109. package/src/chain/blocks/verifyBlock.ts +35 -6
  110. package/src/chain/blocks/verifyBlocksSanityChecks.ts +16 -7
  111. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +2 -2
  112. package/src/chain/chain.ts +11 -3
  113. package/src/chain/errors/blockError.ts +4 -1
  114. package/src/chain/interface.ts +5 -1
  115. package/src/chain/produceBlock/produceBlockBody.ts +8 -2
  116. package/src/chain/validation/block.ts +1 -0
  117. package/src/metrics/metrics/lodestar.ts +4 -0
  118. package/src/network/processor/gossipHandlers.ts +6 -6
  119. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +14 -6
  120. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +11 -5
  121. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +17 -5
  122. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +7 -4
  123. package/src/node/notifier.ts +8 -1
  124. package/src/sync/range/batch.ts +90 -35
  125. package/src/sync/range/chain.ts +13 -5
  126. package/src/sync/range/range.ts +18 -6
  127. package/src/sync/types.ts +72 -0
  128. package/src/sync/unknownBlock.ts +810 -57
  129. package/src/sync/utils/downloadByRange.ts +256 -39
  130. package/src/sync/utils/downloadByRoot.ts +12 -2
  131. package/src/sync/utils/pendingBlocksTree.ts +0 -15
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
+ }