@lodestar/beacon-node 1.20.0-dev.966f3acc0f → 1.20.0-dev.a074310f32

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 (115) hide show
  1. package/README.md +1 -1
  2. package/lib/api/impl/api.d.ts +2 -4
  3. package/lib/api/impl/beacon/blocks/index.d.ts +3 -2
  4. package/lib/api/impl/beacon/blocks/index.js +68 -73
  5. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  6. package/lib/api/impl/beacon/index.d.ts +3 -2
  7. package/lib/api/impl/beacon/index.js.map +1 -1
  8. package/lib/api/impl/beacon/pool/index.d.ts +3 -2
  9. package/lib/api/impl/beacon/pool/index.js +18 -18
  10. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  11. package/lib/api/impl/beacon/rewards/index.d.ts +3 -2
  12. package/lib/api/impl/beacon/rewards/index.js +7 -7
  13. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts +3 -2
  15. package/lib/api/impl/beacon/state/index.js +37 -51
  16. package/lib/api/impl/beacon/state/index.js.map +1 -1
  17. package/lib/api/impl/beacon/state/utils.d.ts +1 -2
  18. package/lib/api/impl/beacon/state/utils.js +2 -2
  19. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  20. package/lib/api/impl/config/index.d.ts +3 -2
  21. package/lib/api/impl/config/index.js.map +1 -1
  22. package/lib/api/impl/debug/index.d.ts +3 -2
  23. package/lib/api/impl/debug/index.js +15 -15
  24. package/lib/api/impl/debug/index.js.map +1 -1
  25. package/lib/api/impl/errors.d.ts +1 -1
  26. package/lib/api/impl/errors.js +1 -1
  27. package/lib/api/impl/errors.js.map +1 -1
  28. package/lib/api/impl/events/index.d.ts +3 -2
  29. package/lib/api/impl/events/index.js +2 -2
  30. package/lib/api/impl/events/index.js.map +1 -1
  31. package/lib/api/impl/lightclient/index.d.ts +3 -2
  32. package/lib/api/impl/lightclient/index.js +18 -18
  33. package/lib/api/impl/lightclient/index.js.map +1 -1
  34. package/lib/api/impl/lodestar/index.d.ts +3 -2
  35. package/lib/api/impl/lodestar/index.js +15 -17
  36. package/lib/api/impl/lodestar/index.js.map +1 -1
  37. package/lib/api/impl/node/index.d.ts +3 -2
  38. package/lib/api/impl/node/index.js +6 -11
  39. package/lib/api/impl/node/index.js.map +1 -1
  40. package/lib/api/impl/proof/index.d.ts +3 -2
  41. package/lib/api/impl/proof/index.js +12 -6
  42. package/lib/api/impl/proof/index.js.map +1 -1
  43. package/lib/api/impl/validator/index.d.ts +3 -2
  44. package/lib/api/impl/validator/index.js +124 -109
  45. package/lib/api/impl/validator/index.js.map +1 -1
  46. package/lib/api/rest/base.js +2 -0
  47. package/lib/api/rest/base.js.map +1 -1
  48. package/lib/api/rest/index.d.ts +4 -5
  49. package/lib/api/rest/index.js +1 -2
  50. package/lib/api/rest/index.js.map +1 -1
  51. package/lib/chain/beaconProposerCache.d.ts +2 -2
  52. package/lib/chain/beaconProposerCache.js +2 -2
  53. package/lib/chain/beaconProposerCache.js.map +1 -1
  54. package/lib/chain/blocks/importBlock.js +7 -7
  55. package/lib/chain/blocks/importBlock.js.map +1 -1
  56. package/lib/chain/blocks/index.js +1 -2
  57. package/lib/chain/blocks/index.js.map +1 -1
  58. package/lib/chain/blocks/types.d.ts +43 -37
  59. package/lib/chain/blocks/types.js +31 -15
  60. package/lib/chain/blocks/types.js.map +1 -1
  61. package/lib/chain/blocks/verifyBlock.d.ts +3 -3
  62. package/lib/chain/blocks/verifyBlock.js +1 -1
  63. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  64. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts +2 -2
  65. package/lib/chain/blocks/verifyBlocksDataAvailability.js +17 -14
  66. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  67. package/lib/chain/blocks/writeBlockInputToDb.js +6 -6
  68. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  69. package/lib/chain/chain.d.ts +2 -0
  70. package/lib/chain/chain.js +43 -5
  71. package/lib/chain/chain.js.map +1 -1
  72. package/lib/chain/forkChoice/index.js +2 -1
  73. package/lib/chain/forkChoice/index.js.map +1 -1
  74. package/lib/chain/interface.d.ts +9 -0
  75. package/lib/chain/interface.js +6 -0
  76. package/lib/chain/interface.js.map +1 -1
  77. package/lib/chain/options.js +2 -1
  78. package/lib/chain/options.js.map +1 -1
  79. package/lib/chain/prepareNextSlot.d.ts +2 -0
  80. package/lib/chain/prepareNextSlot.js +31 -9
  81. package/lib/chain/prepareNextSlot.js.map +1 -1
  82. package/lib/chain/regen/interface.d.ts +1 -0
  83. package/lib/chain/regen/interface.js +1 -0
  84. package/lib/chain/regen/interface.js.map +1 -1
  85. package/lib/chain/rewards/attestationsRewards.js +3 -4
  86. package/lib/chain/rewards/attestationsRewards.js.map +1 -1
  87. package/lib/chain/rewards/syncCommitteeRewards.js +2 -2
  88. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -1
  89. package/lib/chain/seenCache/seenGossipBlockInput.js +34 -18
  90. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  91. package/lib/execution/builder/http.d.ts +2 -2
  92. package/lib/execution/builder/http.js +14 -13
  93. package/lib/execution/builder/http.js.map +1 -1
  94. package/lib/metrics/metrics/beacon.d.ts +12 -2
  95. package/lib/metrics/metrics/beacon.js +11 -0
  96. package/lib/metrics/metrics/beacon.js.map +1 -1
  97. package/lib/metrics/options.d.ts +1 -1
  98. package/lib/network/gossip/encoding.d.ts +3 -2
  99. package/lib/network/gossip/encoding.js +2 -2
  100. package/lib/network/gossip/encoding.js.map +1 -1
  101. package/lib/network/processor/gossipHandlers.js +2 -2
  102. package/lib/network/processor/gossipHandlers.js.map +1 -1
  103. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +9 -3
  104. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  105. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +10 -7
  106. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  107. package/lib/node/nodejs.d.ts +3 -7
  108. package/lib/sync/interface.d.ts +1 -1
  109. package/lib/sync/range/chain.js +2 -2
  110. package/lib/sync/range/chain.js.map +1 -1
  111. package/lib/sync/unknownBlock.js +2 -2
  112. package/lib/sync/unknownBlock.js.map +1 -1
  113. package/lib/sync/utils/pendingBlocksTree.js +1 -1
  114. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  115. package/package.json +14 -14
@@ -1,11 +1,10 @@
1
- import { fromHexString, toHexString } from "@chainsafe/ssz";
2
1
  import { routes } from "@lodestar/api";
3
2
  import { computeStartSlotAtEpoch, proposerShufflingDecisionRoot, attesterShufflingDecisionRoot, getBlockRootAtSlot, computeEpochAtSlot, getCurrentSlot, beaconBlockToBlinded, } from "@lodestar/state-transition";
4
3
  import { GENESIS_SLOT, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT, SYNC_COMMITTEE_SUBNET_SIZE, isForkBlobs, isForkExecution, ForkSeq, } from "@lodestar/params";
5
4
  import { MAX_BUILDER_BOOST_FACTOR } from "@lodestar/validator";
6
5
  import { ssz, ProducedBlockSource, isBlindedBeaconBlock, isBlockContents, } from "@lodestar/types";
7
- import { ExecutionStatus } from "@lodestar/fork-choice";
8
- import { toHex, resolveOrRacePromises, prettyWeiToEth } from "@lodestar/utils";
6
+ import { ExecutionStatus, DataAvailabilityStatus } from "@lodestar/fork-choice";
7
+ import { fromHex, toHex, resolveOrRacePromises, prettyWeiToEth } from "@lodestar/utils";
9
8
  import { AttestationError, AttestationErrorCode, GossipAction, SyncCommitteeError, SyncCommitteeErrorCode, } from "../../../chain/errors/index.js";
10
9
  import { validateApiAggregateAndProof } from "../../../chain/validation/index.js";
11
10
  import { ZERO_HASH } from "../../../constants/index.js";
@@ -163,7 +162,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
163
162
  }
164
163
  const cp = {
165
164
  epoch: cpHex.epoch,
166
- root: fromHexString(cpHex.rootHex),
165
+ root: fromHex(cpHex.rootHex),
167
166
  };
168
167
  const slot0 = computeStartSlotAtEpoch(cp.epoch);
169
168
  // if not, wait for ChainEvent.checkpoint event until slot 1 of epoch
@@ -236,12 +235,20 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
236
235
  function notOnOptimisticBlockRoot(beaconBlockRoot) {
237
236
  const protoBeaconBlock = chain.forkChoice.getBlock(beaconBlockRoot);
238
237
  if (!protoBeaconBlock) {
239
- throw new ApiError(400, "Block not in forkChoice");
238
+ throw new ApiError(400, `Block not in forkChoice, beaconBlockRoot=${toHex(beaconBlockRoot)}`);
240
239
  }
241
240
  if (protoBeaconBlock.executionStatus === ExecutionStatus.Syncing)
242
241
  throw new NodeIsSyncing(`Block's execution payload not yet validated, executionPayloadBlockHash=${protoBeaconBlock.executionPayloadBlockHash} number=${protoBeaconBlock.executionPayloadNumber}`);
243
242
  }
244
- const produceBuilderBlindedBlock = async function produceBuilderBlindedBlock(slot, randaoReveal, graffiti,
243
+ function notOnOutOfRangeData(beaconBlockRoot) {
244
+ const protoBeaconBlock = chain.forkChoice.getBlock(beaconBlockRoot);
245
+ if (!protoBeaconBlock) {
246
+ throw new ApiError(400, `Block not in forkChoice, beaconBlockRoot=${toHex(beaconBlockRoot)}`);
247
+ }
248
+ if (protoBeaconBlock.dataAvailabilityStatus === DataAvailabilityStatus.OutOfRange)
249
+ throw new NodeIsSyncing("Block's data is out of range and not validated");
250
+ }
251
+ async function produceBuilderBlindedBlock(slot, randaoReveal, graffiti,
245
252
  // as of now fee recipient checks can not be performed because builder does not return bid recipient
246
253
  { skipHeadChecksAndUpdate, commonBlockBody, parentBlockRoot: inParentBlockRoot, } = {}) {
247
254
  const version = config.getForkName(slot);
@@ -265,11 +272,12 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
265
272
  // forkChoice.updateTime() might have already been called by the onSlot clock
266
273
  // handler, in which case this should just return.
267
274
  chain.forkChoice.updateTime(slot);
268
- parentBlockRoot = fromHexString(chain.recomputeForkChoiceHead().blockRoot);
275
+ parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
269
276
  }
270
277
  else {
271
278
  parentBlockRoot = inParentBlockRoot;
272
279
  }
280
+ notOnOutOfRangeData(parentBlockRoot);
273
281
  let timer;
274
282
  try {
275
283
  timer = metrics?.blockProductionTime.startTimer();
@@ -286,7 +294,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
286
294
  slot,
287
295
  executionPayloadValue,
288
296
  consensusBlockValue,
289
- root: toHexString(config.getBlindedForkTypes(slot).BeaconBlock.hashTreeRoot(block)),
297
+ root: toHex(config.getBlindedForkTypes(slot).BeaconBlock.hashTreeRoot(block)),
290
298
  });
291
299
  if (chain.opts.persistProducedBlocks) {
292
300
  void chain.persistBlock(block, "produced_builder_block");
@@ -297,8 +305,8 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
297
305
  if (timer)
298
306
  timer({ source });
299
307
  }
300
- };
301
- const produceEngineFullBlockOrContents = async function produceEngineFullBlockOrContents(slot, randaoReveal, graffiti, { feeRecipient, strictFeeRecipientCheck, skipHeadChecksAndUpdate, commonBlockBody, parentBlockRoot: inParentBlockRoot, } = {}) {
308
+ }
309
+ async function produceEngineFullBlockOrContents(slot, randaoReveal, graffiti, { feeRecipient, strictFeeRecipientCheck, skipHeadChecksAndUpdate, commonBlockBody, parentBlockRoot: inParentBlockRoot, } = {}) {
302
310
  const source = ProducedBlockSource.engine;
303
311
  metrics?.blockProductionRequests.inc({ source });
304
312
  let parentBlockRoot;
@@ -309,11 +317,12 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
309
317
  // forkChoice.updateTime() might have already been called by the onSlot clock
310
318
  // handler, in which case this should just return.
311
319
  chain.forkChoice.updateTime(slot);
312
- parentBlockRoot = fromHexString(chain.recomputeForkChoiceHead().blockRoot);
320
+ parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
313
321
  }
314
322
  else {
315
323
  parentBlockRoot = inParentBlockRoot;
316
324
  }
325
+ notOnOutOfRangeData(parentBlockRoot);
317
326
  let timer;
318
327
  try {
319
328
  timer = metrics?.blockProductionTime.startTimer();
@@ -327,7 +336,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
327
336
  });
328
337
  const version = config.getForkName(block.slot);
329
338
  if (strictFeeRecipientCheck && feeRecipient && isForkExecution(version)) {
330
- const blockFeeRecipient = toHexString(block.body.executionPayload.feeRecipient);
339
+ const blockFeeRecipient = toHex(block.body.executionPayload.feeRecipient);
331
340
  if (blockFeeRecipient !== feeRecipient) {
332
341
  throw Error(`Invalid feeRecipient set in engine block expected=${feeRecipient} actual=${blockFeeRecipient}`);
333
342
  }
@@ -338,7 +347,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
338
347
  slot,
339
348
  executionPayloadValue,
340
349
  consensusBlockValue,
341
- root: toHexString(config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block)),
350
+ root: toHex(config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block)),
342
351
  });
343
352
  if (chain.opts.persistProducedBlocks) {
344
353
  void chain.persistBlock(block, "produced_engine_block");
@@ -365,17 +374,18 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
365
374
  if (timer)
366
375
  timer({ source });
367
376
  }
368
- };
369
- const produceEngineOrBuilderBlock = async function produceEngineOrBuilderBlock(slot, randaoReveal, graffiti,
377
+ }
378
+ async function produceEngineOrBuilderBlock(slot, randaoReveal, graffiti,
370
379
  // TODO deneb: skip randao verification
371
- _skipRandaoVerification, { feeRecipient, builderSelection, builderBoostFactor, strictFeeRecipientCheck, } = {}) {
380
+ _skipRandaoVerification, builderBoostFactor, { feeRecipient, builderSelection, strictFeeRecipientCheck } = {}) {
372
381
  notWhileSyncing();
373
382
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
374
383
  // Process the queued attestations in the forkchoice for correct head estimation
375
384
  // forkChoice.updateTime() might have already been called by the onSlot clock
376
385
  // handler, in which case this should just return.
377
386
  chain.forkChoice.updateTime(slot);
378
- const parentBlockRoot = fromHexString(chain.recomputeForkChoiceHead().blockRoot);
387
+ const parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
388
+ notOnOutOfRangeData(parentBlockRoot);
379
389
  const fork = config.getForkName(slot);
380
390
  // set some sensible opts
381
391
  // builderSelection will be deprecated and will run in mode MaxProfit if builder is enabled
@@ -537,73 +547,70 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
537
547
  }
538
548
  }
539
549
  throw Error("Unreachable error occurred during the builder and execution block production");
540
- };
541
- const produceBlock = async function produceBlock(slot, randaoReveal, graffiti) {
542
- const producedData = await produceEngineFullBlockOrContents(slot, randaoReveal, graffiti);
543
- if (isForkBlobs(producedData.version)) {
544
- throw Error(`Invalid call to produceBlock for deneb+ fork=${producedData.version}`);
545
- }
546
- else {
547
- // TODO: need to figure out why typescript requires typecasting here
548
- // by typing of produceFullBlockOrContents respose it should have figured this out itself
549
- return producedData;
550
- }
551
- };
552
- const produceEngineOrBuilderBlindedBlock = async function produceEngineOrBuilderBlindedBlock(slot, randaoReveal, graffiti) {
553
- const { data, executionPayloadValue, consensusBlockValue, version } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti);
554
- if (!isForkExecution(version)) {
555
- throw Error(`Invalid fork=${version} for produceEngineOrBuilderBlindedBlock`);
556
- }
557
- const executionPayloadBlinded = true;
558
- if (isBlockContents(data)) {
559
- const { block } = data;
560
- const blindedBlock = beaconBlockToBlinded(config, block);
561
- return { executionPayloadValue, consensusBlockValue, data: blindedBlock, executionPayloadBlinded, version };
562
- }
563
- else if (isBlindedBeaconBlock(data)) {
564
- return { executionPayloadValue, consensusBlockValue, data, executionPayloadBlinded, version };
565
- }
566
- else {
567
- const blindedBlock = beaconBlockToBlinded(config, data);
568
- return { executionPayloadValue, consensusBlockValue, data: blindedBlock, executionPayloadBlinded, version };
569
- }
570
- };
571
- const produceBlockV3 = async function produceBlockV3(slot, randaoReveal, graffiti, skipRandaoVerification, opts = {}) {
572
- const produceBlockEngineOrBuilderRes = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti, skipRandaoVerification, opts);
573
- if (opts.blindedLocal === true && ForkSeq[produceBlockEngineOrBuilderRes.version] >= ForkSeq.bellatrix) {
574
- if (produceBlockEngineOrBuilderRes.executionPayloadBlinded) {
575
- return produceBlockEngineOrBuilderRes;
550
+ }
551
+ return {
552
+ async produceBlock({ slot, randaoReveal, graffiti }) {
553
+ const { data, ...meta } = await produceEngineFullBlockOrContents(slot, randaoReveal, graffiti);
554
+ if (isForkBlobs(meta.version)) {
555
+ throw Error(`Invalid call to produceBlock for deneb+ fork=${meta.version}`);
576
556
  }
577
557
  else {
578
- if (isBlockContents(produceBlockEngineOrBuilderRes.data)) {
579
- const { block } = produceBlockEngineOrBuilderRes.data;
580
- const blindedBlock = beaconBlockToBlinded(config, block);
581
- return {
582
- ...produceBlockEngineOrBuilderRes,
583
- data: blindedBlock,
584
- executionPayloadBlinded: true,
585
- };
558
+ // TODO: need to figure out why typescript requires typecasting here
559
+ // by typing of produceFullBlockOrContents respose it should have figured this out itself
560
+ return { data: data, meta };
561
+ }
562
+ },
563
+ async produceBlockV2({ slot, randaoReveal, graffiti, ...opts }) {
564
+ const { data, ...meta } = await produceEngineFullBlockOrContents(slot, randaoReveal, graffiti, opts);
565
+ return { data, meta };
566
+ },
567
+ async produceBlockV3({ slot, randaoReveal, graffiti, skipRandaoVerification, builderBoostFactor, ...opts }) {
568
+ const { data, ...meta } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti, skipRandaoVerification, builderBoostFactor, opts);
569
+ if (opts.blindedLocal === true && ForkSeq[meta.version] >= ForkSeq.bellatrix) {
570
+ if (meta.executionPayloadBlinded) {
571
+ return { data, meta };
586
572
  }
587
573
  else {
588
- const blindedBlock = beaconBlockToBlinded(config, produceBlockEngineOrBuilderRes.data);
589
- return {
590
- ...produceBlockEngineOrBuilderRes,
591
- data: blindedBlock,
592
- executionPayloadBlinded: true,
593
- };
574
+ if (isBlockContents(data)) {
575
+ const { block } = data;
576
+ const blindedBlock = beaconBlockToBlinded(config, block);
577
+ return {
578
+ data: blindedBlock,
579
+ meta: { ...meta, executionPayloadBlinded: true },
580
+ };
581
+ }
582
+ else {
583
+ const blindedBlock = beaconBlockToBlinded(config, data);
584
+ return {
585
+ data: blindedBlock,
586
+ meta: { ...meta, executionPayloadBlinded: true },
587
+ };
588
+ }
594
589
  }
595
590
  }
596
- }
597
- else {
598
- return produceBlockEngineOrBuilderRes;
599
- }
600
- };
601
- return {
602
- produceBlock,
603
- produceBlockV2: produceEngineFullBlockOrContents,
604
- produceBlockV3,
605
- produceBlindedBlock: produceEngineOrBuilderBlindedBlock,
606
- async produceAttestationData(committeeIndex, slot) {
591
+ else {
592
+ return { data, meta };
593
+ }
594
+ },
595
+ async produceBlindedBlock({ slot, randaoReveal, graffiti }) {
596
+ const { data, version } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti);
597
+ if (!isForkExecution(version)) {
598
+ throw Error(`Invalid fork=${version} for produceBlindedBlock`);
599
+ }
600
+ if (isBlockContents(data)) {
601
+ const { block } = data;
602
+ const blindedBlock = beaconBlockToBlinded(config, block);
603
+ return { data: blindedBlock, meta: { version } };
604
+ }
605
+ else if (isBlindedBeaconBlock(data)) {
606
+ return { data, meta: { version } };
607
+ }
608
+ else {
609
+ const blindedBlock = beaconBlockToBlinded(config, data);
610
+ return { data: blindedBlock, meta: { version } };
611
+ }
612
+ },
613
+ async produceAttestationData({ committeeIndex, slot }) {
607
614
  notWhileSyncing();
608
615
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
609
616
  // This needs a state in the same epoch as `slot` such that state.currentJustifiedCheckpoint is correct.
@@ -612,7 +619,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
612
619
  const headSlot = headState.slot;
613
620
  const attEpoch = computeEpochAtSlot(slot);
614
621
  const headBlockRootHex = chain.forkChoice.getHead().blockRoot;
615
- const headBlockRoot = fromHexString(headBlockRootHex);
622
+ const headBlockRoot = fromHex(headBlockRootHex);
616
623
  const beaconBlockRoot = slot >= headSlot
617
624
  ? // When attesting to the head slot or later, always use the head of the chain.
618
625
  headBlockRoot
@@ -627,9 +634,12 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
627
634
  // Check the execution status as validator shouldn't vote on an optimistic head
628
635
  // Check on target is sufficient as a valid target would imply a valid source
629
636
  notOnOptimisticBlockRoot(targetRoot);
637
+ notOnOutOfRangeData(targetRoot);
630
638
  // To get the correct source we must get a state in the same epoch as the attestation's epoch.
631
639
  // An epoch transition may change state.currentJustifiedCheckpoint
632
640
  const attEpochState = await chain.getHeadStateAtEpoch(attEpoch, RegenCaller.produceAttestationData);
641
+ // TODO confirm if the below is correct assertion
642
+ // notOnOutOfRangeData(attEpochState.currentJustifiedCheckpoint.root);
633
643
  return {
634
644
  data: {
635
645
  slot,
@@ -651,25 +661,26 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
651
661
  * @param subcommitteeIndex The subcommittee index for which to produce the contribution.
652
662
  * @param beaconBlockRoot The block root for which to produce the contribution.
653
663
  */
654
- async produceSyncCommitteeContribution(slot, subcommitteeIndex, beaconBlockRoot) {
664
+ async produceSyncCommitteeContribution({ slot, subcommitteeIndex, beaconBlockRoot }) {
655
665
  // when a validator is configured with multiple beacon node urls, this beaconBlockRoot may come from another beacon node
656
666
  // and it hasn't been in our forkchoice since we haven't seen / processing that block
657
667
  // see https://github.com/ChainSafe/lodestar/issues/5063
658
668
  if (!chain.forkChoice.hasBlock(beaconBlockRoot)) {
659
- const rootHex = toHexString(beaconBlockRoot);
669
+ const rootHex = toHex(beaconBlockRoot);
660
670
  network.searchUnknownSlotRoot({ slot, root: rootHex });
661
671
  // if result of this call is false, i.e. block hasn't seen after 1 slot then the below notOnOptimisticBlockRoot call will throw error
662
672
  await chain.waitForBlock(slot, rootHex);
663
673
  }
664
674
  // Check the execution status as validator shouldn't contribute on an optimistic head
665
675
  notOnOptimisticBlockRoot(beaconBlockRoot);
676
+ notOnOutOfRangeData(beaconBlockRoot);
666
677
  const contribution = chain.syncCommitteeMessagePool.getContribution(subcommitteeIndex, slot, beaconBlockRoot);
667
678
  if (!contribution)
668
679
  throw new ApiError(500, "No contribution available");
669
680
  metrics?.production.producedSyncContributionParticipants.observe(contribution.aggregationBits.getTrueBitIndexes().length);
670
681
  return { data: contribution };
671
682
  },
672
- async getProposerDuties(epoch) {
683
+ async getProposerDuties({ epoch }) {
673
684
  notWhileSyncing();
674
685
  // Early check that epoch is within [current_epoch, current_epoch + 1], or allow for pre-genesis
675
686
  const currentEpoch = currentEpochWithDisparity();
@@ -727,13 +738,15 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
727
738
  const dependentRoot = proposerShufflingDecisionRoot(state) || (await getGenesisBlockRoot(state));
728
739
  return {
729
740
  data: duties,
730
- dependentRoot: toHex(dependentRoot),
731
- executionOptimistic: isOptimisticBlock(head),
741
+ meta: {
742
+ dependentRoot: toHex(dependentRoot),
743
+ executionOptimistic: isOptimisticBlock(head),
744
+ },
732
745
  };
733
746
  },
734
- async getAttesterDuties(epoch, validatorIndices) {
747
+ async getAttesterDuties({ epoch, indices }) {
735
748
  notWhileSyncing();
736
- if (validatorIndices.length === 0) {
749
+ if (indices.length === 0) {
737
750
  throw new ApiError(400, "No validator to get attester duties");
738
751
  }
739
752
  // May request for an epoch that's in the future
@@ -752,11 +765,11 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
752
765
  // the first `MAXIMUM_GOSSIP_CLOCK_DISPARITY` duration of the epoch `tolerantCurrentEpoch`
753
766
  // will equal `currentEpoch + 1`
754
767
  // Check that all validatorIndex belong to the state before calling getCommitteeAssignments()
755
- const pubkeys = getPubkeysForIndices(state.validators, validatorIndices);
756
- const committeeAssignments = state.epochCtx.getCommitteeAssignments(epoch, validatorIndices);
768
+ const pubkeys = getPubkeysForIndices(state.validators, indices);
769
+ const committeeAssignments = state.epochCtx.getCommitteeAssignments(epoch, indices);
757
770
  const duties = [];
758
- for (let i = 0, len = validatorIndices.length; i < len; i++) {
759
- const validatorIndex = validatorIndices[i];
771
+ for (let i = 0, len = indices.length; i < len; i++) {
772
+ const validatorIndex = indices[i];
760
773
  const duty = committeeAssignments.get(validatorIndex);
761
774
  if (duty) {
762
775
  // Mutate existing object instead of re-creating another new object with spread operator
@@ -768,8 +781,10 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
768
781
  const dependentRoot = attesterShufflingDecisionRoot(state, epoch) || (await getGenesisBlockRoot(state));
769
782
  return {
770
783
  data: duties,
771
- dependentRoot: toHex(dependentRoot),
772
- executionOptimistic: isOptimisticBlock(head),
784
+ meta: {
785
+ dependentRoot: toHex(dependentRoot),
786
+ executionOptimistic: isOptimisticBlock(head),
787
+ },
773
788
  };
774
789
  },
775
790
  /**
@@ -785,9 +800,9 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
785
800
  *
786
801
  * @param validatorIndices an array of the validator indices for which to obtain the duties.
787
802
  */
788
- async getSyncCommitteeDuties(epoch, validatorIndices) {
803
+ async getSyncCommitteeDuties({ epoch, indices }) {
789
804
  notWhileSyncing();
790
- if (validatorIndices.length === 0) {
805
+ if (indices.length === 0) {
791
806
  throw new ApiError(400, "No validator to get attester duties");
792
807
  }
793
808
  // May request for an epoch that's in the future
@@ -798,13 +813,13 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
798
813
  const head = chain.forkChoice.getHead();
799
814
  const state = chain.getHeadState();
800
815
  // Check that all validatorIndex belong to the state before calling getCommitteeAssignments()
801
- const pubkeys = getPubkeysForIndices(state.validators, validatorIndices);
816
+ const pubkeys = getPubkeysForIndices(state.validators, indices);
802
817
  // Ensures `epoch // EPOCHS_PER_SYNC_COMMITTEE_PERIOD <= current_epoch // EPOCHS_PER_SYNC_COMMITTEE_PERIOD + 1`
803
818
  const syncCommitteeCache = state.epochCtx.getIndexedSyncCommitteeAtEpoch(epoch);
804
819
  const syncCommitteeValidatorIndexMap = syncCommitteeCache.validatorIndexMap;
805
820
  const duties = [];
806
- for (let i = 0, len = validatorIndices.length; i < len; i++) {
807
- const validatorIndex = validatorIndices[i];
821
+ for (let i = 0, len = indices.length; i < len; i++) {
822
+ const validatorIndex = indices[i];
808
823
  const validatorSyncCommitteeIndices = syncCommitteeValidatorIndexMap.get(validatorIndex);
809
824
  if (validatorSyncCommitteeIndices) {
810
825
  duties.push({
@@ -816,13 +831,13 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
816
831
  }
817
832
  return {
818
833
  data: duties,
819
- executionOptimistic: isOptimisticBlock(head),
834
+ meta: { executionOptimistic: isOptimisticBlock(head) },
820
835
  };
821
836
  },
822
- async getAggregatedAttestation(attestationDataRoot, slot) {
837
+ async getAggregatedAttestation({ attestationDataRoot, slot }) {
823
838
  notWhileSyncing();
824
839
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
825
- const dataRootHex = toHexString(attestationDataRoot);
840
+ const dataRootHex = toHex(attestationDataRoot);
826
841
  const aggregate = chain.attestationPool.getAggregate(slot, dataRootHex);
827
842
  if (!aggregate) {
828
843
  throw new ApiError(404, `No aggregated attestation for slot=${slot}, dataRoot=${dataRootHex}`);
@@ -832,7 +847,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
832
847
  data: aggregate,
833
848
  };
834
849
  },
835
- async publishAggregateAndProofs(signedAggregateAndProofs) {
850
+ async publishAggregateAndProofs({ signedAggregateAndProofs }) {
836
851
  notWhileSyncing();
837
852
  const seenTimestampSec = Date.now() / 1000;
838
853
  const errors = [];
@@ -881,7 +896,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
881
896
  *
882
897
  * https://github.com/ethereum/beacon-APIs/pull/137
883
898
  */
884
- async publishContributionAndProofs(contributionAndProofs) {
899
+ async publishContributionAndProofs({ contributionAndProofs }) {
885
900
  notWhileSyncing();
886
901
  const errors = [];
887
902
  await Promise.all(contributionAndProofs.map(async (contributionAndProof, i) => {
@@ -916,7 +931,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
916
931
  throw errors[0];
917
932
  }
918
933
  },
919
- async prepareBeaconCommitteeSubnet(subscriptions) {
934
+ async prepareBeaconCommitteeSubnet({ subscriptions }) {
920
935
  notWhileSyncing();
921
936
  await network.prepareBeaconCommitteeSubnets(subscriptions.map(({ validatorIndex, slot, isAggregator, committeesAtSlot, committeeIndex }) => ({
922
937
  validatorIndex: validatorIndex,
@@ -943,7 +958,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
943
958
  *
944
959
  * https://github.com/ethereum/beacon-APIs/pull/136
945
960
  */
946
- async prepareSyncCommitteeSubnets(subscriptions) {
961
+ async prepareSyncCommitteeSubnets({ subscriptions }) {
947
962
  notWhileSyncing();
948
963
  // A `validatorIndex` can be in multiple subnets, so compute the CommitteeSubscription with double for loop
949
964
  const subs = [];
@@ -966,7 +981,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
966
981
  }
967
982
  }
968
983
  },
969
- async prepareBeaconProposer(proposers) {
984
+ async prepareBeaconProposer({ proposers }) {
970
985
  await chain.updateBeaconProposerData(chain.clock.currentEpoch, proposers);
971
986
  },
972
987
  async submitBeaconCommitteeSelections() {
@@ -975,8 +990,8 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
975
990
  async submitSyncCommitteeSelections() {
976
991
  throw new OnlySupportedByDVT();
977
992
  },
978
- async getLiveness(epoch, validatorIndices) {
979
- if (validatorIndices.length === 0) {
993
+ async getLiveness({ epoch, indices }) {
994
+ if (indices.length === 0) {
980
995
  return {
981
996
  data: [],
982
997
  };
@@ -986,13 +1001,13 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
986
1001
  throw new ApiError(400, `Request epoch ${epoch} is more than one epoch before or after the current epoch ${currentEpoch}`);
987
1002
  }
988
1003
  return {
989
- data: validatorIndices.map((index) => ({
1004
+ data: indices.map((index) => ({
990
1005
  index,
991
1006
  isLive: chain.validatorSeenAtEpoch(index, epoch),
992
1007
  })),
993
1008
  };
994
1009
  },
995
- async registerValidator(registrations) {
1010
+ async registerValidator({ registrations }) {
996
1011
  if (!chain.executionBuilder) {
997
1012
  throw Error("Execution builder not enabled");
998
1013
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/validator/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/validator/index.ts"],"names":[],"mappings":"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"}