@lodestar/beacon-node 1.17.0-dev.cd59df328b → 1.17.0-dev.d66f607108

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 (284) hide show
  1. package/README.md +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  4. package/lib/api/impl/beacon/index.js +3 -0
  5. package/lib/api/impl/beacon/index.js.map +1 -1
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/rewards/index.d.ts +4 -0
  8. package/lib/api/impl/beacon/rewards/index.js +16 -0
  9. package/lib/api/impl/beacon/rewards/index.js.map +1 -0
  10. package/lib/api/impl/beacon/state/index.js.map +1 -1
  11. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  12. package/lib/api/impl/debug/index.js.map +1 -1
  13. package/lib/api/impl/events/index.js.map +1 -1
  14. package/lib/api/impl/lightclient/index.js.map +1 -1
  15. package/lib/api/impl/lodestar/index.js.map +1 -1
  16. package/lib/api/impl/node/index.js.map +1 -1
  17. package/lib/api/impl/node/utils.js.map +1 -1
  18. package/lib/api/impl/proof/index.js.map +1 -1
  19. package/lib/api/impl/validator/index.js.map +1 -1
  20. package/lib/api/impl/validator/utils.js.map +1 -1
  21. package/lib/api/rest/activeSockets.js.map +1 -1
  22. package/lib/api/rest/base.js.map +1 -1
  23. package/lib/api/rest/index.js +1 -1
  24. package/lib/api/rest/index.js.map +1 -1
  25. package/lib/api/rest/swaggerUI.js.map +1 -1
  26. package/lib/chain/archiver/archiveBlocks.js.map +1 -1
  27. package/lib/chain/archiver/archiveStates.js.map +1 -1
  28. package/lib/chain/archiver/index.js.map +1 -1
  29. package/lib/chain/balancesCache.js.map +1 -1
  30. package/lib/chain/beaconProposerCache.js.map +1 -1
  31. package/lib/chain/blocks/importBlock.js.map +1 -1
  32. package/lib/chain/blocks/index.js.map +1 -1
  33. package/lib/chain/blocks/types.d.ts +3 -1
  34. package/lib/chain/blocks/types.js +16 -1
  35. package/lib/chain/blocks/types.js.map +1 -1
  36. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  37. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  38. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  39. package/lib/chain/blocks/verifyBlocksDataAvailability.js +4 -3
  40. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  41. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  42. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  43. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  44. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  45. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  46. package/lib/chain/bls/maybeBatch.js.map +1 -1
  47. package/lib/chain/bls/multithread/index.js.map +1 -1
  48. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  49. package/lib/chain/bls/multithread/poolSize.js.map +1 -1
  50. package/lib/chain/bls/multithread/utils.js.map +1 -1
  51. package/lib/chain/bls/multithread/worker.js.map +1 -1
  52. package/lib/chain/bls/singleThread.js.map +1 -1
  53. package/lib/chain/bls/utils.js.map +1 -1
  54. package/lib/chain/chain.d.ts +4 -0
  55. package/lib/chain/chain.js +17 -0
  56. package/lib/chain/chain.js.map +1 -1
  57. package/lib/chain/emitter.d.ts +1 -0
  58. package/lib/chain/errors/attestationError.js.map +1 -1
  59. package/lib/chain/errors/blockError.js.map +1 -1
  60. package/lib/chain/genesis/genesis.js.map +1 -1
  61. package/lib/chain/initState.js.map +1 -1
  62. package/lib/chain/interface.d.ts +4 -0
  63. package/lib/chain/interface.js.map +1 -1
  64. package/lib/chain/lightClient/index.js.map +1 -1
  65. package/lib/chain/lightClient/proofs.js +3 -3
  66. package/lib/chain/lightClient/proofs.js.map +1 -1
  67. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  68. package/lib/chain/opPools/attestationPool.js.map +1 -1
  69. package/lib/chain/opPools/opPool.js.map +1 -1
  70. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  71. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  72. package/lib/chain/opPools/utils.js.map +1 -1
  73. package/lib/chain/prepareNextSlot.js.map +1 -1
  74. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  75. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  76. package/lib/chain/regen/errors.d.ts +7 -1
  77. package/lib/chain/regen/errors.js +1 -0
  78. package/lib/chain/regen/errors.js.map +1 -1
  79. package/lib/chain/regen/interface.d.ts +1 -0
  80. package/lib/chain/regen/queued.d.ts +1 -0
  81. package/lib/chain/regen/queued.js +32 -25
  82. package/lib/chain/regen/queued.js.map +1 -1
  83. package/lib/chain/regen/regen.d.ts +15 -6
  84. package/lib/chain/regen/regen.js +57 -22
  85. package/lib/chain/regen/regen.js.map +1 -1
  86. package/lib/chain/reprocess.js.map +1 -1
  87. package/lib/chain/rewards/blockRewards.d.ts +14 -0
  88. package/lib/chain/rewards/blockRewards.js +90 -0
  89. package/lib/chain/rewards/blockRewards.js.map +1 -0
  90. package/lib/chain/rewards/syncCommitteeRewards.d.ts +6 -0
  91. package/lib/chain/rewards/syncCommitteeRewards.js +36 -0
  92. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -0
  93. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  94. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  95. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  96. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  97. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  98. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  99. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  100. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +6 -1
  101. package/lib/chain/seenCache/seenGossipBlockInput.js +9 -17
  102. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  103. package/lib/chain/shufflingCache.js.map +1 -1
  104. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  105. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  106. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  107. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  108. package/lib/chain/stateCache/stateContextCache.js.map +1 -1
  109. package/lib/chain/stateCache/stateContextCheckpointsCache.js.map +1 -1
  110. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  111. package/lib/chain/validation/attestation.js.map +1 -1
  112. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  113. package/lib/chain/validation/blobSidecar.js.map +1 -1
  114. package/lib/chain/validation/block.js.map +1 -1
  115. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  116. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  117. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  118. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  119. package/lib/chain/validation/syncCommittee.js.map +1 -1
  120. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  121. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  122. package/lib/db/buckets.d.ts +25 -25
  123. package/lib/db/buckets.js.map +1 -1
  124. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  125. package/lib/db/repositories/blockArchive.js.map +1 -1
  126. package/lib/db/repositories/depositDataRoot.js.map +1 -1
  127. package/lib/db/repositories/depositEvent.js.map +1 -1
  128. package/lib/db/repositories/stateArchive.js.map +1 -1
  129. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  130. package/lib/eth1/eth1DepositsCache.js.map +1 -1
  131. package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
  132. package/lib/eth1/index.js.map +1 -1
  133. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  134. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -0
  135. package/lib/eth1/provider/jsonRpcHttpClient.js +1 -1
  136. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  137. package/lib/eth1/provider/utils.js.map +1 -1
  138. package/lib/eth1/stream.js.map +1 -1
  139. package/lib/eth1/utils/deposits.js.map +1 -1
  140. package/lib/eth1/utils/eth1Data.js.map +1 -1
  141. package/lib/eth1/utils/eth1DepositEvent.js.map +1 -1
  142. package/lib/eth1/utils/eth1Vote.js +0 -1
  143. package/lib/eth1/utils/eth1Vote.js.map +1 -1
  144. package/lib/eth1/utils/groupDepositEventsByBlock.js.map +1 -1
  145. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +1 -1
  146. package/lib/execution/builder/http.js +5 -8
  147. package/lib/execution/builder/http.js.map +1 -1
  148. package/lib/execution/builder/index.js.map +1 -1
  149. package/lib/execution/engine/http.js.map +1 -1
  150. package/lib/execution/engine/index.js.map +1 -1
  151. package/lib/execution/engine/mock.js.map +1 -1
  152. package/lib/execution/engine/types.js.map +1 -1
  153. package/lib/execution/engine/utils.js.map +1 -1
  154. package/lib/metrics/metrics/lodestar.d.ts +8 -1
  155. package/lib/metrics/metrics/lodestar.js +10 -0
  156. package/lib/metrics/metrics/lodestar.js.map +1 -1
  157. package/lib/metrics/metrics.js.map +1 -1
  158. package/lib/metrics/server/http.js.map +1 -1
  159. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  160. package/lib/metrics/utils/gauge.js.map +1 -1
  161. package/lib/metrics/validatorMonitor.js.map +1 -1
  162. package/lib/monitoring/clientStats.js.map +1 -1
  163. package/lib/monitoring/properties.js.map +1 -1
  164. package/lib/monitoring/service.js.map +1 -1
  165. package/lib/monitoring/system.js.map +1 -1
  166. package/lib/network/core/networkCore.js.map +1 -1
  167. package/lib/network/core/networkCoreWorker.js.map +1 -1
  168. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  169. package/lib/network/discv5/index.d.ts +1 -0
  170. package/lib/network/discv5/index.js.map +1 -1
  171. package/lib/network/discv5/utils.js.map +1 -1
  172. package/lib/network/discv5/worker.js.map +1 -1
  173. package/lib/network/events.d.ts +5 -0
  174. package/lib/network/events.js +3 -1
  175. package/lib/network/events.js.map +1 -1
  176. package/lib/network/forks.js.map +1 -1
  177. package/lib/network/gossip/encoding.js.map +1 -1
  178. package/lib/network/gossip/gossipsub.js +1 -1
  179. package/lib/network/gossip/gossipsub.js.map +1 -1
  180. package/lib/network/gossip/scoringParameters.js.map +1 -1
  181. package/lib/network/gossip/topic.js +1 -1
  182. package/lib/network/gossip/topic.js.map +1 -1
  183. package/lib/network/libp2p/index.js.map +1 -1
  184. package/lib/network/metadata.js.map +1 -1
  185. package/lib/network/network.js.map +1 -1
  186. package/lib/network/options.js +1 -1
  187. package/lib/network/options.js.map +1 -1
  188. package/lib/network/peers/datastore.js.map +1 -1
  189. package/lib/network/peers/discover.js +1 -1
  190. package/lib/network/peers/discover.js.map +1 -1
  191. package/lib/network/peers/peerManager.js.map +1 -1
  192. package/lib/network/peers/peersData.js.map +1 -1
  193. package/lib/network/peers/score/score.js.map +1 -1
  194. package/lib/network/peers/score/store.js.map +1 -1
  195. package/lib/network/peers/score/utils.js.map +1 -1
  196. package/lib/network/peers/utils/assertPeerRelevance.js +1 -1
  197. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  198. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  199. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  200. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  201. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  202. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  203. package/lib/network/processor/gossipHandlers.js +7 -4
  204. package/lib/network/processor/gossipHandlers.js.map +1 -1
  205. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  206. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  207. package/lib/network/processor/gossipQueues/indexedAvgTime.js.map +1 -1
  208. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  209. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  210. package/lib/network/processor/index.js.map +1 -1
  211. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  212. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  213. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +2 -0
  214. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +39 -1
  215. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  216. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  217. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  218. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  219. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  220. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  221. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  222. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  223. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  224. package/lib/network/reqresp/protocols.js.map +1 -1
  225. package/lib/network/reqresp/rateLimit.js.map +1 -1
  226. package/lib/network/reqresp/score.js.map +1 -1
  227. package/lib/network/reqresp/types.js.map +1 -1
  228. package/lib/network/reqresp/utils/collect.js.map +1 -1
  229. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  230. package/lib/network/subnets/attnetsService.js.map +1 -1
  231. package/lib/network/subnets/dllAttnetsService.js.map +1 -1
  232. package/lib/network/subnets/syncnetsService.js.map +1 -1
  233. package/lib/network/subnets/util.js.map +1 -1
  234. package/lib/node/nodejs.js.map +1 -1
  235. package/lib/node/notifier.js.map +1 -1
  236. package/lib/node/utils/state.js.map +1 -1
  237. package/lib/sync/backfill/backfill.js.map +1 -1
  238. package/lib/sync/backfill/verify.js.map +1 -1
  239. package/lib/sync/interface.d.ts +15 -4
  240. package/lib/sync/interface.js +1 -0
  241. package/lib/sync/interface.js.map +1 -1
  242. package/lib/sync/range/batch.js.map +1 -1
  243. package/lib/sync/range/chain.js.map +1 -1
  244. package/lib/sync/range/range.js.map +1 -1
  245. package/lib/sync/range/utils/batches.js.map +1 -1
  246. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  247. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  248. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  249. package/lib/sync/range/utils/updateChains.js.map +1 -1
  250. package/lib/sync/sync.js.map +1 -1
  251. package/lib/sync/unknownBlock.d.ts +9 -0
  252. package/lib/sync/unknownBlock.js +127 -14
  253. package/lib/sync/unknownBlock.js.map +1 -1
  254. package/lib/sync/utils/pendingBlocksTree.js +5 -2
  255. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  256. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  257. package/lib/util/array.js.map +1 -1
  258. package/lib/util/asyncIterableToEvents.js.map +1 -1
  259. package/lib/util/binarySearch.js.map +1 -1
  260. package/lib/util/bitArray.js.map +1 -1
  261. package/lib/util/blobs.js.map +1 -1
  262. package/lib/util/bufferPool.js.map +1 -1
  263. package/lib/util/bytes.js.map +1 -1
  264. package/lib/util/chunkify.js.map +1 -1
  265. package/lib/util/clock.js.map +1 -1
  266. package/lib/util/dependentRoot.js.map +1 -1
  267. package/lib/util/error.js.map +1 -1
  268. package/lib/util/file.js.map +1 -1
  269. package/lib/util/forkName.js.map +1 -1
  270. package/lib/util/itTrigger.js.map +1 -1
  271. package/lib/util/kzg.js.map +1 -1
  272. package/lib/util/map.js.map +1 -1
  273. package/lib/util/multifork.js.map +1 -1
  274. package/lib/util/profile.js.map +1 -1
  275. package/lib/util/promises.js.map +1 -1
  276. package/lib/util/queue/itemQueue.js.map +1 -1
  277. package/lib/util/set.js.map +1 -1
  278. package/lib/util/shuffle.js.map +1 -1
  279. package/lib/util/sortBy.js.map +1 -1
  280. package/lib/util/sszBytes.js.map +1 -1
  281. package/lib/util/timeSeries.js.map +1 -1
  282. package/lib/util/workerEvents.js.map +1 -1
  283. package/lib/util/wrapError.js.map +1 -1
  284. package/package.json +16 -24
@@ -7,6 +7,10 @@ import { ChainEvent } from "../emitter.js";
7
7
  import { RegenError, RegenErrorCode } from "./errors.js";
8
8
  /**
9
9
  * Regenerates states that have already been processed by the fork choice
10
+ * Since Feb 2024, we support reloading checkpoint state from disk via allowDiskReload flag. Due to its performance impact
11
+ * this flag is only set to true in this case:
12
+ * - getPreState: this is for block processing, it's important to reload state in unfinality time
13
+ * - updateHeadState: rarely happen, but it's important to make sure we always can regen head state
10
14
  */
11
15
  export class StateRegenerator {
12
16
  constructor(modules) {
@@ -16,8 +20,9 @@ export class StateRegenerator {
16
20
  * Get the state to run with `block`. May be:
17
21
  * - If parent is in same epoch -> Exact state at `block.parentRoot`
18
22
  * - If parent is in prev epoch -> State after `block.parentRoot` dialed forward through epoch transition
23
+ * - reload state if needed in this flow
19
24
  */
20
- async getPreState(block, opts, rCaller) {
25
+ async getPreState(block, opts, regenCaller) {
21
26
  const parentBlock = this.modules.forkChoice.getBlock(block.parentRoot);
22
27
  if (!parentBlock) {
23
28
  throw new RegenError({
@@ -27,28 +32,30 @@ export class StateRegenerator {
27
32
  }
28
33
  const parentEpoch = computeEpochAtSlot(parentBlock.slot);
29
34
  const blockEpoch = computeEpochAtSlot(block.slot);
35
+ const allowDiskReload = true;
30
36
  // This may save us at least one epoch transition.
31
37
  // If the requested state crosses an epoch boundary
32
38
  // then we may use the checkpoint state before the block
33
39
  // We may have the checkpoint state with parent root inside the checkpoint state cache
34
40
  // through gossip validation.
35
41
  if (parentEpoch < blockEpoch) {
36
- return this.getCheckpointState({ root: block.parentRoot, epoch: blockEpoch }, opts, rCaller);
42
+ return this.getCheckpointState({ root: block.parentRoot, epoch: blockEpoch }, opts, regenCaller, allowDiskReload);
37
43
  }
38
44
  // Otherwise, get the state normally.
39
- return this.getState(parentBlock.stateRoot, rCaller);
45
+ return this.getState(parentBlock.stateRoot, regenCaller, allowDiskReload);
40
46
  }
41
47
  /**
42
48
  * Get state after block `cp.root` dialed forward to first slot of `cp.epoch`
43
49
  */
44
- async getCheckpointState(cp, opts, rCaller) {
50
+ async getCheckpointState(cp, opts, regenCaller, allowDiskReload = false) {
45
51
  const checkpointStartSlot = computeStartSlotAtEpoch(cp.epoch);
46
- return this.getBlockSlotState(toHexString(cp.root), checkpointStartSlot, opts, rCaller);
52
+ return this.getBlockSlotState(toHexString(cp.root), checkpointStartSlot, opts, regenCaller, allowDiskReload);
47
53
  }
48
54
  /**
49
55
  * Get state after block `blockRoot` dialed forward to `slot`
56
+ * - allowDiskReload should be used with care, as it will cause the state to be reloaded from disk
50
57
  */
51
- async getBlockSlotState(blockRoot, slot, opts, rCaller) {
58
+ async getBlockSlotState(blockRoot, slot, opts, regenCaller, allowDiskReload = false) {
52
59
  const block = this.modules.forkChoice.getBlockHex(blockRoot);
53
60
  if (!block) {
54
61
  throw new RegenError({
@@ -63,23 +70,28 @@ export class StateRegenerator {
63
70
  blockSlot: block.slot,
64
71
  });
65
72
  }
66
- const latestCheckpointStateCtx = this.modules.checkpointStateCache.getLatest(blockRoot, computeEpochAtSlot(slot));
73
+ const { checkpointStateCache } = this.modules;
74
+ const epoch = computeEpochAtSlot(slot);
75
+ const latestCheckpointStateCtx = allowDiskReload
76
+ ? await checkpointStateCache.getOrReloadLatest(blockRoot, epoch)
77
+ : checkpointStateCache.getLatest(blockRoot, epoch);
67
78
  // If a checkpoint state exists with the given checkpoint root, it either is in requested epoch
68
79
  // or needs to have empty slots processed until the requested epoch
69
80
  if (latestCheckpointStateCtx) {
70
- return processSlotsByCheckpoint(this.modules, latestCheckpointStateCtx, slot, opts);
81
+ return processSlotsByCheckpoint(this.modules, latestCheckpointStateCtx, slot, regenCaller, opts);
71
82
  }
72
83
  // Otherwise, use the fork choice to get the stateRoot from block at the checkpoint root
73
84
  // regenerate that state,
74
85
  // then process empty slots until the requested epoch
75
- const blockStateCtx = await this.getState(block.stateRoot, rCaller);
76
- return processSlotsByCheckpoint(this.modules, blockStateCtx, slot, opts);
86
+ const blockStateCtx = await this.getState(block.stateRoot, regenCaller, allowDiskReload);
87
+ return processSlotsByCheckpoint(this.modules, blockStateCtx, slot, regenCaller, opts);
77
88
  }
78
89
  /**
79
90
  * Get state by exact root. If not in cache directly, requires finding the block that references the state from the
80
91
  * forkchoice and replaying blocks to get to it.
92
+ * - allowDiskReload should be used with care, as it will cause the state to be reloaded from disk
81
93
  */
82
- async getState(stateRoot, _rCaller) {
94
+ async getState(stateRoot, _rCaller, allowDiskReload = false) {
83
95
  // Trivial case, state at stateRoot is already cached
84
96
  const cachedStateCtx = this.modules.stateCache.get(stateRoot);
85
97
  if (cachedStateCtx) {
@@ -93,12 +105,17 @@ export class StateRegenerator {
93
105
  // gets reversed when replayed
94
106
  const blocksToReplay = [block];
95
107
  let state = null;
96
- for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.parentRoot)) {
108
+ const { checkpointStateCache } = this.modules;
109
+ // iterateAncestorBlocks only returns ancestor blocks, not the block itself
110
+ for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.blockRoot)) {
97
111
  state = this.modules.stateCache.get(b.stateRoot);
98
112
  if (state) {
99
113
  break;
100
114
  }
101
- state = this.modules.checkpointStateCache.getLatest(b.blockRoot, computeEpochAtSlot(blocksToReplay[blocksToReplay.length - 1].slot - 1));
115
+ const epoch = computeEpochAtSlot(blocksToReplay[blocksToReplay.length - 1].slot - 1);
116
+ state = allowDiskReload
117
+ ? await checkpointStateCache.getOrReloadLatest(b.blockRoot, epoch)
118
+ : checkpointStateCache.getLatest(b.blockRoot, epoch);
102
119
  if (state) {
103
120
  break;
104
121
  }
@@ -116,6 +133,8 @@ export class StateRegenerator {
116
133
  stateRoot,
117
134
  });
118
135
  }
136
+ const replaySlots = blocksToReplay.map((b) => b.slot).join(",");
137
+ this.modules.logger.debug("Replaying blocks to get state", { stateRoot, replaySlots });
119
138
  for (const b of blocksToReplay.reverse()) {
120
139
  const block = await this.modules.db.block.get(fromHexString(b.blockRoot));
121
140
  if (!block) {
@@ -134,9 +153,20 @@ export class StateRegenerator {
134
153
  verifyStateRoot: false,
135
154
  verifyProposer: false,
136
155
  verifySignatures: false,
137
- }, null);
138
- // TODO: Persist states, note that regen could be triggered by old states.
139
- // Should those take a place in the cache?
156
+ }, this.modules.metrics);
157
+ const stateRoot = toHexString(state.hashTreeRoot());
158
+ if (b.stateRoot !== stateRoot) {
159
+ throw new RegenError({
160
+ slot: b.slot,
161
+ code: RegenErrorCode.INVALID_STATE_ROOT,
162
+ actual: stateRoot,
163
+ expected: b.stateRoot,
164
+ });
165
+ }
166
+ if (allowDiskReload) {
167
+ // also with allowDiskReload flag, we "reload" it to the state cache too
168
+ this.modules.stateCache.add(state);
169
+ }
140
170
  // this avoids keeping our node busy processing blocks
141
171
  await sleep(0);
142
172
  }
@@ -147,11 +177,12 @@ export class StateRegenerator {
147
177
  });
148
178
  }
149
179
  }
180
+ this.modules.logger.debug("Replayed blocks to get state", { stateRoot, replaySlots });
150
181
  return state;
151
182
  }
152
183
  findFirstStateBlock(stateRoot) {
153
184
  for (const block of this.modules.forkChoice.forwarditerateAncestorBlocks()) {
154
- if (block !== undefined) {
185
+ if (block.stateRoot === stateRoot) {
155
186
  return block;
156
187
  }
157
188
  }
@@ -166,8 +197,8 @@ export class StateRegenerator {
166
197
  * process slots forward towards `slot`,
167
198
  * emitting "checkpoint" events after every epoch processed.
168
199
  */
169
- async function processSlotsByCheckpoint(modules, preState, slot, opts) {
170
- let postState = await processSlotsToNearestCheckpoint(modules, preState, slot, opts);
200
+ async function processSlotsByCheckpoint(modules, preState, slot, regenCaller, opts) {
201
+ let postState = await processSlotsToNearestCheckpoint(modules, preState, slot, regenCaller, opts);
171
202
  if (postState.slot < slot) {
172
203
  postState = processSlots(postState, slot, opts, modules.metrics);
173
204
  }
@@ -180,7 +211,7 @@ async function processSlotsByCheckpoint(modules, preState, slot, opts) {
180
211
  *
181
212
  * Stops processing after no more full epochs can be processed.
182
213
  */
183
- async function processSlotsToNearestCheckpoint(modules, preState, slot, opts) {
214
+ async function processSlotsToNearestCheckpoint(modules, preState, slot, regenCaller, opts) {
184
215
  const preSlot = preState.slot;
185
216
  const postSlot = slot;
186
217
  const preEpoch = computeEpochAtSlot(preSlot);
@@ -189,11 +220,15 @@ async function processSlotsToNearestCheckpoint(modules, preState, slot, opts) {
189
220
  for (let nextEpochSlot = computeStartSlotAtEpoch(preEpoch + 1); nextEpochSlot <= postSlot; nextEpochSlot += SLOTS_PER_EPOCH) {
190
221
  // processSlots calls .clone() before mutating
191
222
  postState = processSlots(postState, nextEpochSlot, opts, metrics);
192
- // Cache state to preserve epoch transition work
223
+ modules.metrics?.epochTransitionByCaller.inc({ caller: regenCaller });
224
+ // this is usually added when we prepare for next slot or validate gossip block
225
+ // then when we process the 1st block of epoch, we don't have to do state transition again
226
+ // This adds Previous Root Checkpoint State to the checkpoint state cache
227
+ // This may becomes the "official" checkpoint state if the 1st block of epoch is skipped
193
228
  const checkpointState = postState;
194
229
  const cp = getCheckpointFromState(checkpointState);
195
230
  checkpointStateCache.add(cp, checkpointState);
196
- emitter.emit(ChainEvent.checkpoint, cp, checkpointState);
231
+ emitter.emit(ChainEvent.checkpoint, cp, checkpointState.clone());
197
232
  // this avoids keeping our node busy processing blocks
198
233
  await sleep(0);
199
234
  }
@@ -1 +1 @@
1
- {"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAKjD,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAC,UAAU,EAAoB,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAYvD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B,YAA6B,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;IAAG,CAAC;IAEtD;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,KAA2B,EAC3B,IAAoB,EACpB,OAAoB;QAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,UAAU,CAAC;gBACnB,IAAI,EAAE,cAAc,CAAC,uBAAuB;gBAC5C,SAAS,EAAE,KAAK,CAAC,UAAU;aAC5B,CAAC,CAAC;SACJ;QAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElD,kDAAkD;QAClD,mDAAmD;QACnD,wDAAwD;QACxD,sFAAsF;QACtF,6BAA6B;QAC7B,IAAI,WAAW,GAAG,UAAU,EAAE;YAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SAC5F;QAED,qCAAqC;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,EAAqB,EACrB,IAAoB,EACpB,OAAoB;QAEpB,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,SAAkB,EAClB,IAAU,EACV,IAAoB,EACpB,OAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,UAAU,CAAC;gBACnB,IAAI,EAAE,cAAc,CAAC,uBAAuB;gBAC5C,SAAS;aACV,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE;YACrB,MAAM,IAAI,UAAU,CAAC;gBACnB,IAAI,EAAE,cAAc,CAAC,sBAAsB;gBAC3C,IAAI;gBACJ,SAAS,EAAE,KAAK,CAAC,IAAI;aACtB,CAAC,CAAC;SACJ;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAElH,+FAA+F;QAC/F,mEAAmE;QACnE,IAAI,wBAAwB,EAAE;YAC5B,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACrF;QAED,wFAAwF;QACxF,yBAAyB;QACzB,qDAAqD;QACrD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,SAAkB,EAAE,QAAqB;QACtD,qDAAqD;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,cAAc,EAAE;YAClB,OAAO,cAAc,CAAC;SACvB;QAED,kFAAkF;QAClF,6BAA6B;QAC7B,sDAAsD;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAElD,8CAA8C;QAC9C,8BAA8B;QAC9B,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAqC,IAAI,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC/E,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,KAAK,EAAE;gBACT,MAAM;aACP;YACD,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,CACjD,CAAC,CAAC,SAAS,EACX,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CACvE,CAAC;YACF,IAAI,KAAK,EAAE;gBACT,MAAM;aACP;YACD,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;QAED,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,MAAM,IAAI,UAAU,CAAC;gBACnB,IAAI,EAAE,cAAc,CAAC,aAAa;aACnC,CAAC,CAAC;SACJ;QAED,MAAM,oBAAoB,GAAG,CAAC,CAAC;QAC/B,IAAI,cAAc,CAAC,MAAM,GAAG,oBAAoB,GAAG,eAAe,EAAE;YAClE,MAAM,IAAI,UAAU,CAAC;gBACnB,IAAI,EAAE,cAAc,CAAC,wBAAwB;gBAC7C,SAAS;aACV,CAAC,CAAC;SACJ;QAED,KAAK,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,KAAK,EAAE;gBACV,MAAM,IAAI,UAAU,CAAC;oBACnB,IAAI,EAAE,cAAc,CAAC,eAAe;oBACpC,SAAS,EAAE,CAAC,CAAC,SAAS;iBACvB,CAAC,CAAC;aACJ;YAED,IAAI;gBACF,4DAA4D;gBAC5D,2EAA2E;gBAC3E,KAAK,GAAG,eAAe,CACrB,KAAK,EACL,KAAK,EACL;oBACE,gEAAgE;oBAChE,sBAAsB,EAAE,sBAAsB,CAAC,KAAK;oBACpD,mBAAmB,EAAE,mBAAmB,CAAC,SAAS;oBAClD,eAAe,EAAE,KAAK;oBACtB,cAAc,EAAE,KAAK;oBACrB,gBAAgB,EAAE,KAAK;iBACxB,EACD,IAAI,CACL,CAAC;gBAEF,0EAA0E;gBAC1E,0CAA0C;gBAE1C,sDAAsD;gBACtD,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;aAChB;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,IAAI,UAAU,CAAC;oBACnB,IAAI,EAAE,cAAc,CAAC,sBAAsB;oBAC3C,KAAK,EAAE,CAAU;iBAClB,CAAC,CAAC;aACJ;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB,CAAC,SAAkB;QAC5C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,EAAE,EAAE;YAC1E,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAO,KAAK,CAAC;aACd;SACF;QAED,MAAM,IAAI,UAAU,CAAC;YACnB,IAAI,EAAE,cAAc,CAAC,uBAAuB;YAC5C,SAAS;SACV,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;GAIG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAA0G,EAC1G,QAAmC,EACnC,IAAU,EACV,IAAoB;IAEpB,IAAI,SAAS,GAAG,MAAM,+BAA+B,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrF,IAAI,SAAS,CAAC,IAAI,GAAG,IAAI,EAAE;QACzB,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;KAClE;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,+BAA+B,CAC5C,OAA0G,EAC1G,QAAmC,EACnC,IAAU,EACV,IAAoB;IAEpB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC;IACtB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,SAAS,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAC,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAC,GAAG,OAAO,CAAC;IAEzD,KACE,IAAI,aAAa,GAAG,uBAAuB,CAAC,QAAQ,GAAG,CAAC,CAAC,EACzD,aAAa,IAAI,QAAQ,EACzB,aAAa,IAAI,eAAe,EAChC;QACA,8CAA8C;QAC9C,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAElE,gDAAgD;QAChD,MAAM,eAAe,GAAG,SAAS,CAAC;QAClC,MAAM,EAAE,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;QACnD,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;QAEzD,sDAAsD;QACtD,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;KAChB;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reprocess.js","sourceRoot":"","sources":["../../src/chain/reprocess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reprocess.js","sourceRoot":"","sources":["../../src/chain/reprocess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
2
+ import { allForks } from "@lodestar/types";
3
+ import { routes } from "@lodestar/api";
4
+ export type BlockRewards = routes.beacon.BlockRewards;
5
+ /**
6
+ * Calculate total proposer block rewards given block and the beacon state of the same slot before the block is applied (preState)
7
+ * postState can be passed in to read reward cache if available
8
+ * Standard (Non MEV) rewards for proposing a block consists of:
9
+ * 1) Including attestations from (beacon) committee
10
+ * 2) Including attestations from sync committee
11
+ * 3) Reporting slashable behaviours from proposer and attester
12
+ */
13
+ export declare function computeBlockRewards(block: allForks.BeaconBlock, preState: CachedBeaconStateAllForks, postState?: CachedBeaconStateAllForks): Promise<BlockRewards>;
14
+ //# sourceMappingURL=blockRewards.d.ts.map
@@ -0,0 +1,90 @@
1
+ import { getAttesterSlashableIndices, processAttestationsAltair, } from "@lodestar/state-transition";
2
+ import { ForkName, WHISTLEBLOWER_REWARD_QUOTIENT } from "@lodestar/params";
3
+ /**
4
+ * Calculate total proposer block rewards given block and the beacon state of the same slot before the block is applied (preState)
5
+ * postState can be passed in to read reward cache if available
6
+ * Standard (Non MEV) rewards for proposing a block consists of:
7
+ * 1) Including attestations from (beacon) committee
8
+ * 2) Including attestations from sync committee
9
+ * 3) Reporting slashable behaviours from proposer and attester
10
+ */
11
+ export async function computeBlockRewards(block, preState, postState) {
12
+ const fork = preState.config.getForkName(block.slot);
13
+ const { attestations: cachedAttestationsReward = 0, syncAggregate: cachedSyncAggregateReward = 0 } = postState?.proposerRewards ?? {};
14
+ let blockAttestationReward = cachedAttestationsReward;
15
+ let syncAggregateReward = cachedSyncAggregateReward;
16
+ if (blockAttestationReward === 0) {
17
+ blockAttestationReward =
18
+ fork === ForkName.phase0
19
+ ? computeBlockAttestationRewardPhase0(block, preState)
20
+ : computeBlockAttestationRewardAltair(block, preState);
21
+ }
22
+ if (syncAggregateReward === 0) {
23
+ syncAggregateReward = computeSyncAggregateReward(block, preState);
24
+ }
25
+ const blockProposerSlashingReward = computeBlockProposerSlashingReward(block, preState);
26
+ const blockAttesterSlashingReward = computeBlockAttesterSlashingReward(block, preState);
27
+ const total = blockAttestationReward + syncAggregateReward + blockProposerSlashingReward + blockAttesterSlashingReward;
28
+ return {
29
+ proposerIndex: block.proposerIndex,
30
+ total,
31
+ attestations: blockAttestationReward,
32
+ syncAggregate: syncAggregateReward,
33
+ proposerSlashings: blockProposerSlashingReward,
34
+ attesterSlashings: blockAttesterSlashingReward,
35
+ };
36
+ }
37
+ /**
38
+ * TODO: Calculate rewards received by block proposer for including attestations.
39
+ */
40
+ function computeBlockAttestationRewardPhase0(_block, _preState) {
41
+ throw new Error("Unsupported fork! Block attestation reward calculation is not available in phase0");
42
+ }
43
+ /**
44
+ * Calculate rewards received by block proposer for including attestations since Altair.
45
+ * Reuses `processAttestationsAltair()`. Has dependency on RewardCache
46
+ */
47
+ function computeBlockAttestationRewardAltair(block, preState) {
48
+ const fork = preState.config.getForkSeq(block.slot);
49
+ const { attestations } = block.body;
50
+ processAttestationsAltair(fork, preState, attestations, false);
51
+ return preState.proposerRewards.attestations;
52
+ }
53
+ function computeSyncAggregateReward(block, preState) {
54
+ if (block.body.syncAggregate !== undefined) {
55
+ const { syncCommitteeBits } = block.body.syncAggregate;
56
+ const { syncProposerReward } = preState.epochCtx;
57
+ return syncCommitteeBits.getTrueBitIndexes().length * Math.floor(syncProposerReward); // syncProposerReward should already be integer
58
+ }
59
+ else {
60
+ return 0; // phase0 block does not have syncAggregate
61
+ }
62
+ }
63
+ /**
64
+ * Calculate rewards received by block proposer for including proposer slashings.
65
+ * All proposer slashing rewards go to block proposer and none to whistleblower as of Deneb
66
+ */
67
+ function computeBlockProposerSlashingReward(block, state) {
68
+ let proposerSlashingReward = 0;
69
+ for (const proposerSlashing of block.body.proposerSlashings) {
70
+ const offendingProposerIndex = proposerSlashing.signedHeader1.message.proposerIndex;
71
+ const offendingProposerBalance = state.validators.getReadonly(offendingProposerIndex).effectiveBalance;
72
+ proposerSlashingReward += Math.floor(offendingProposerBalance / WHISTLEBLOWER_REWARD_QUOTIENT);
73
+ }
74
+ return proposerSlashingReward;
75
+ }
76
+ /**
77
+ * Calculate rewards received by block proposer for including attester slashings.
78
+ * All attester slashing rewards go to block proposer and none to whistleblower as of Deneb
79
+ */
80
+ function computeBlockAttesterSlashingReward(block, preState) {
81
+ let attesterSlashingReward = 0;
82
+ for (const attesterSlashing of block.body.attesterSlashings) {
83
+ for (const offendingAttesterIndex of getAttesterSlashableIndices(attesterSlashing)) {
84
+ const offendingAttesterBalance = preState.validators.getReadonly(offendingAttesterIndex).effectiveBalance;
85
+ attesterSlashingReward += Math.floor(offendingAttesterBalance / WHISTLEBLOWER_REWARD_QUOTIENT);
86
+ }
87
+ }
88
+ return attesterSlashingReward;
89
+ }
90
+ //# sourceMappingURL=blockRewards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockRewards.js","sourceRoot":"","sources":["../../../src/chain/rewards/blockRewards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
2
+ import { ValidatorIndex, allForks } from "@lodestar/types";
3
+ import { routes } from "@lodestar/api";
4
+ export type SyncCommitteeRewards = routes.beacon.SyncCommitteeRewards;
5
+ export declare function computeSyncCommitteeRewards(block: allForks.BeaconBlock, preState: CachedBeaconStateAllForks, validatorIds?: (ValidatorIndex | string)[]): Promise<SyncCommitteeRewards>;
6
+ //# sourceMappingURL=syncCommitteeRewards.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { ForkName, SYNC_COMMITTEE_SIZE } from "@lodestar/params";
2
+ export async function computeSyncCommitteeRewards(block, preState, validatorIds) {
3
+ const fork = preState.config.getForkName(block.slot);
4
+ if (fork === ForkName.phase0) {
5
+ throw Error("Cannot get sync rewards as phase0 block does not have sync committee");
6
+ }
7
+ const altairBlock = block;
8
+ const preStateAltair = preState;
9
+ const { index2pubkey } = preStateAltair.epochCtx;
10
+ // Bound committeeIndices in case it goes beyond SYNC_COMMITTEE_SIZE just to be safe
11
+ const committeeIndices = preStateAltair.epochCtx.currentSyncCommitteeIndexed.validatorIndices.slice(0, SYNC_COMMITTEE_SIZE);
12
+ const { syncParticipantReward } = preStateAltair.epochCtx;
13
+ const { syncCommitteeBits } = altairBlock.body.syncAggregate;
14
+ // Use balance of each committee as starting point such that we cap the penalty to avoid balance dropping below 0
15
+ const balances = new Map(committeeIndices.map((i) => [i, { val: preStateAltair.balances.get(i) }]));
16
+ for (const i of committeeIndices) {
17
+ const balanceRecord = balances.get(i);
18
+ if (syncCommitteeBits.get(i)) {
19
+ // Positive rewards for participants
20
+ balanceRecord.val += syncParticipantReward;
21
+ }
22
+ else {
23
+ // Negative rewards for non participants
24
+ balanceRecord.val = Math.max(0, balanceRecord.val - syncParticipantReward);
25
+ }
26
+ }
27
+ const rewards = Array.from(balances, ([validatorIndex, v]) => ({ validatorIndex, reward: v.val }));
28
+ if (validatorIds !== undefined) {
29
+ const filtersSet = new Set(validatorIds);
30
+ return rewards.filter((reward) => filtersSet.has(reward.validatorIndex) || filtersSet.has(index2pubkey[reward.validatorIndex].toHex()));
31
+ }
32
+ else {
33
+ return rewards;
34
+ }
35
+ }
36
+ //# sourceMappingURL=syncCommitteeRewards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncCommitteeRewards.js","sourceRoot":"","sources":["../../../src/chain/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAM/D,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAA2B,EAC3B,QAAmC,EACnC,YAA0C;IAE1C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,WAAW,GAAG,KAA2B,CAAC;IAChD,MAAM,cAAc,GAAG,QAAmC,CAAC;IAC3D,MAAM,EAAC,YAAY,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IAE/C,oFAAoF;IACpF,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,KAAK,CACjG,CAAC,EACD,mBAAmB,CACpB,CAAC;IACF,MAAM,EAAC,qBAAqB,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IACxD,MAAM,EAAC,iBAAiB,EAAC,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IAE3D,iHAAiH;IACjH,MAAM,QAAQ,GAAuC,IAAI,GAAG,CAC1D,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CACxE,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAkB,CAAC;QACvD,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,oCAAoC;YACpC,aAAa,CAAC,GAAG,IAAI,qBAAqB,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC;IAEjG,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CACjH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"seenAggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAggregateAndProof.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seenAggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAggregateAndProof.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"seenAttestationData.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttestationData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seenAttestationData.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttestationData.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"seenAttesters.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttesters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,8EAA8E;AAC9E,4EAA4E;AAC5E,0BAA0B;AAC1B,EAAE;AACF,MAAM;AACN,2DAA2D;AAC3D,8CAA8C;AAC9C,MAAM;AACN,EAAE;AACF,gFAAgF;AAChF,gDAAgD;AAChD,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,OAAO,aAAa;IAA1B;QACqB,4BAAuB,GAAG,IAAI,MAAM,CAA6B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QAC3G,2BAAsB,GAAU,CAAC,CAAC;IAsB9C,CAAC;IApBC,OAAO,CAAC,WAAkB,EAAE,cAA8B;QACxD,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACrF,CAAC;IAED,GAAG,CAAC,WAAkB,EAAE,cAA8B;QACpD,IAAI,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE;YAC7C,MAAM,KAAK,CAAC,eAAe,WAAW,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;SAC5E;QAED,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,YAAmB;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE;gBACvC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC5C;SACF;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAAa;CAAG"}
1
+ {"version":3,"file":"seenAttesters.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttesters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,8EAA8E;AAC9E,4EAA4E;AAC5E,0BAA0B;AAC1B,EAAE;AACF,MAAM;AACN,2DAA2D;AAC3D,8CAA8C;AAC9C,MAAM;AACN,EAAE;AACF,gFAAgF;AAChF,gDAAgD;AAChD,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,OAAO,aAAa;IAA1B;QACqB,4BAAuB,GAAG,IAAI,MAAM,CAA6B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QAC3G,2BAAsB,GAAU,CAAC,CAAC;IAsB9C,CAAC;IApBC,OAAO,CAAC,WAAkB,EAAE,cAA8B;QACxD,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACrF,CAAC;IAED,GAAG,CAAC,WAAkB,EAAE,cAA8B;QACpD,IAAI,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9C,MAAM,KAAK,CAAC,eAAe,WAAW,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,YAAmB;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC;YACxD,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACxC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAAa;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"seenBlockAttesters.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockAttesters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,8EAA8E;AAC9E,qEAAqE;AAErE,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACnD,UAAU,CAAC,KAAY,EAAE,gBAAkC;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE;YACvC,MAAM,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;SACtE;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAExE,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE;YACpC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC3B;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"seenBlockAttesters.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockAttesters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,8EAA8E;AAC9E,qEAAqE;AAErE,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACnD,UAAU,CAAC,KAAY,EAAE,gBAAkC;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACxC,MAAM,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAExE,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACrC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"seenBlockProposers.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockProposers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACmB,0BAAqB,GAAG,IAAI,MAAM,CAA4B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QACxG,kBAAa,GAAU,CAAC,CAAC;IAmCnC,CAAC;IAjCC,OAAO,CAAC,SAAe,EAAE,aAA6B;QACpD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAChF,CAAC;IAED,GAAG,CAAC,SAAe,EAAE,aAA6B;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;YAClC,MAAM,KAAK,CAAC,aAAa,SAAS,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC7E;QAED,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,aAAmB;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE;YACpD,IAAI,IAAI,GAAG,aAAa,EAAE;gBACxB,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACzC;SACF;IACH,CAAC;IAED,WAAW,CAAC,KAAW,EAAE,KAAqB;QAC5C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAElD,KAAK,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE;YAC/C,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;gBAC7D,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"seenBlockProposers.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockProposers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACmB,0BAAqB,GAAG,IAAI,MAAM,CAA4B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QACxG,kBAAa,GAAU,CAAC,CAAC;IAmCnC,CAAC;IAjCC,OAAO,CAAC,SAAe,EAAE,aAA6B;QACpD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAChF,CAAC;IAED,GAAG,CAAC,SAAe,EAAE,aAA6B;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC,aAAa,SAAS,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,aAAmB;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC;YACrD,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;gBACzB,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAW,EAAE,KAAqB;QAC5C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAElD,KAAK,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"seenCommittee.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAK7B;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAAtC;QACmB,oBAAe,GAAG,IAAI,MAAM,CAAyC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAuBzG,CAAC;IArBC;;OAEG;IACH,GAAG,CAAC,IAAU,EAAE,MAAyB,EAAE,cAA8B;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAED,yCAAyC;IACzC,GAAG,CAAC,IAAU,EAAE,MAAyB,EAAE,cAA8B,EAAE,IAAa;QACtF,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,SAAe;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE;YAC9C,IAAI,IAAI,GAAG,SAAS,GAAG,kBAAkB,EAAE;gBACzC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnC;SACF;IACH,CAAC;CACF;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,cAA8B;IAClE,OAAO,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"seenCommittee.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAK7B;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAAtC;QACmB,oBAAe,GAAG,IAAI,MAAM,CAAyC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAuBzG,CAAC;IArBC;;OAEG;IACH,GAAG,CAAC,IAAU,EAAE,MAAyB,EAAE,cAA8B;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAED,yCAAyC;IACzC,GAAG,CAAC,IAAU,EAAE,MAAyB,EAAE,cAA8B,EAAE,IAAa;QACtF,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,SAAe;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAI,IAAI,GAAG,SAAS,GAAG,kBAAkB,EAAE,CAAC;gBAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,cAA8B;IAClE,OAAO,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"seenCommitteeContribution.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommitteeContribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seenCommitteeContribution.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommitteeContribution.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  import { deneb, RootHex, allForks } from "@lodestar/types";
2
2
  import { ChainForkConfig } from "@lodestar/config";
3
3
  import { BlockInput, GossipedInputType } from "../blocks/types.js";
4
+ import { Metrics } from "../../metrics/index.js";
5
+ export declare enum BlockInputAvailabilitySource {
6
+ GOSSIP = "gossip",
7
+ UNKNOWN_SYNC = "unknown_sync"
8
+ }
4
9
  type GossipedBlockInput = {
5
10
  type: GossipedInputType.block;
6
11
  signedBlock: allForks.SignedBeaconBlock;
@@ -25,7 +30,7 @@ export declare class SeenGossipBlockInput {
25
30
  private blockInputCache;
26
31
  prune(): void;
27
32
  hasBlock(blockRoot: RootHex): boolean;
28
- getGossipBlockInput(config: ChainForkConfig, gossipedInput: GossipedBlockInput): {
33
+ getGossipBlockInput(config: ChainForkConfig, gossipedInput: GossipedBlockInput, metrics: Metrics | null): {
29
34
  blockInput: BlockInput;
30
35
  blockInputMeta: {
31
36
  pending: GossipedInputType.blob | null;
@@ -2,7 +2,12 @@ import { toHexString } from "@chainsafe/ssz";
2
2
  import { ssz } from "@lodestar/types";
3
3
  import { pruneSetToMax } from "@lodestar/utils";
4
4
  import { BLOBSIDECAR_FIXED_SIZE, ForkSeq } from "@lodestar/params";
5
- import { getBlockInput, BlockSource, GossipedInputType, } from "../blocks/types.js";
5
+ import { getBlockInput, BlockSource, GossipedInputType, getBlockInputBlobs, } from "../blocks/types.js";
6
+ export var BlockInputAvailabilitySource;
7
+ (function (BlockInputAvailabilitySource) {
8
+ BlockInputAvailabilitySource["GOSSIP"] = "gossip";
9
+ BlockInputAvailabilitySource["UNKNOWN_SYNC"] = "unknown_sync";
10
+ })(BlockInputAvailabilitySource || (BlockInputAvailabilitySource = {}));
6
11
  const MAX_GOSSIPINPUT_CACHE = 5;
7
12
  /**
8
13
  * For predeneb, SeenGossipBlockInput only tracks and caches block so that we don't need to download known block
@@ -25,7 +30,7 @@ export class SeenGossipBlockInput {
25
30
  hasBlock(blockRoot) {
26
31
  return this.blockInputCache.has(blockRoot);
27
32
  }
28
- getGossipBlockInput(config, gossipedInput) {
33
+ getGossipBlockInput(config, gossipedInput, metrics) {
29
34
  let blockHex;
30
35
  let blockCache;
31
36
  if (gossipedInput.type === GossipedInputType.block) {
@@ -68,6 +73,7 @@ export class SeenGossipBlockInput {
68
73
  if (blobKzgCommitments.length === blobsCache.size) {
69
74
  const allBlobs = getBlockInputBlobs(blobsCache);
70
75
  resolveAvailability(allBlobs);
76
+ metrics?.syncUnknownBlock.resolveAvailabilitySource.inc({ source: BlockInputAvailabilitySource.GOSSIP });
71
77
  const { blobs, blobsBytes } = allBlobs;
72
78
  return {
73
79
  blockInput: getBlockInput.postDeneb(config, signedBlock, BlockSource.gossip, blobs, blockBytes ?? null, blobsBytes),
@@ -76,7 +82,7 @@ export class SeenGossipBlockInput {
76
82
  }
77
83
  else {
78
84
  return {
79
- blockInput: getBlockInput.blobsPromise(config, signedBlock, BlockSource.gossip, blobsCache, blockBytes ?? null, availabilityPromise),
85
+ blockInput: getBlockInput.blobsPromise(config, signedBlock, BlockSource.gossip, blobsCache, blockBytes ?? null, availabilityPromise, resolveAvailability),
80
86
  blockInputMeta: {
81
87
  pending: GossipedInputType.blob,
82
88
  haveBlobs: blobsCache.size,
@@ -107,18 +113,4 @@ function getEmptyBlockInputCacheEntry() {
107
113
  const blobsCache = new Map();
108
114
  return { availabilityPromise, resolveAvailability, blobsCache };
109
115
  }
110
- function getBlockInputBlobs(blobsCache) {
111
- const blobs = [];
112
- const blobsBytes = [];
113
- for (let index = 0; index < blobsCache.size; index++) {
114
- const blobCache = blobsCache.get(index);
115
- if (blobCache === undefined) {
116
- throw Error(`Missing blobSidecar at index=${index}`);
117
- }
118
- const { blobSidecar, blobBytes } = blobCache;
119
- blobs.push(blobSidecar);
120
- blobsBytes.push(blobBytes);
121
- }
122
- return { blobs, blobsBytes };
123
- }
124
116
  //# sourceMappingURL=seenGossipBlockInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"seenGossipBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenGossipBlockInput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seenGossipBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenGossipBlockInput.ts"],"names":[],"mappings":"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"}