@lodestar/beacon-node 1.50.0 → 1.51.0-dev.7d2ef8139c

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 (142) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +7 -2
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/validator/index.d.ts.map +1 -1
  5. package/lib/api/impl/validator/index.js +31 -17
  6. package/lib/api/impl/validator/index.js.map +1 -1
  7. package/lib/chain/ColumnReconstructionTracker.d.ts +0 -2
  8. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  9. package/lib/chain/ColumnReconstructionTracker.js +4 -5
  10. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  11. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  12. package/lib/chain/archiveStore/utils/archiveBlocks.js +4 -5
  13. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  14. package/lib/chain/blocks/blockInput/blockInput.d.ts +1 -1
  15. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  16. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  17. package/lib/chain/blocks/blockInput/utils.js +2 -2
  18. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  19. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  20. package/lib/chain/blocks/importBlock.js +7 -4
  21. package/lib/chain/blocks/importBlock.js.map +1 -1
  22. package/lib/chain/chain.d.ts.map +1 -1
  23. package/lib/chain/chain.js +3 -2
  24. package/lib/chain/chain.js.map +1 -1
  25. package/lib/chain/interface.d.ts +1 -1
  26. package/lib/chain/interface.d.ts.map +1 -1
  27. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  28. package/lib/chain/prepareNextSlot.js +4 -3
  29. package/lib/chain/prepareNextSlot.js.map +1 -1
  30. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  31. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  32. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  33. package/lib/chain/produceBlock/produceBlockBody.js +8 -6
  34. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  35. package/lib/chain/reprocess.d.ts +2 -1
  36. package/lib/chain/reprocess.d.ts.map +1 -1
  37. package/lib/chain/reprocess.js +2 -1
  38. package/lib/chain/reprocess.js.map +1 -1
  39. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  40. package/lib/chain/seenCache/seenGossipBlockInput.js +1 -1
  41. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  42. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  43. package/lib/chain/stateCache/persistentCheckpointsCache.js +1 -1
  44. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  45. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  46. package/lib/chain/validatorMonitor.js +6 -4
  47. package/lib/chain/validatorMonitor.js.map +1 -1
  48. package/lib/constants/constants.d.ts +1 -0
  49. package/lib/constants/constants.d.ts.map +1 -1
  50. package/lib/constants/constants.js +1 -0
  51. package/lib/constants/constants.js.map +1 -1
  52. package/lib/db/repositories/blockArchive.js +2 -2
  53. package/lib/db/repositories/blockArchive.js.map +1 -1
  54. package/lib/db/repositories/blockArchiveIndex.d.ts +1 -1
  55. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  56. package/lib/db/repositories/blockArchiveIndex.js +1 -2
  57. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  58. package/lib/execution/engine/index.d.ts.map +1 -1
  59. package/lib/execution/engine/index.js +1 -1
  60. package/lib/execution/engine/index.js.map +1 -1
  61. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  62. package/lib/execution/engine/jsonRpcHttpClient.js +14 -4
  63. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  64. package/lib/execution/engine/restTransport.d.ts +3 -1
  65. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  66. package/lib/execution/engine/restTransport.js +33 -21
  67. package/lib/execution/engine/restTransport.js.map +1 -1
  68. package/lib/execution/engine/transportMetrics.d.ts +5 -1
  69. package/lib/execution/engine/transportMetrics.d.ts.map +1 -1
  70. package/lib/execution/engine/types.d.ts.map +1 -1
  71. package/lib/execution/engine/types.js +12 -11
  72. package/lib/execution/engine/types.js.map +1 -1
  73. package/lib/metrics/metrics/lodestar.d.ts +4 -0
  74. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  75. package/lib/metrics/metrics/lodestar.js +7 -1
  76. package/lib/metrics/metrics/lodestar.js.map +1 -1
  77. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  78. package/lib/network/gossip/gossipsub.js +3 -1
  79. package/lib/network/gossip/gossipsub.js.map +1 -1
  80. package/lib/network/gossip/topic.d.ts +0 -14
  81. package/lib/network/gossip/topic.d.ts.map +1 -1
  82. package/lib/network/processor/index.js +3 -3
  83. package/lib/network/processor/index.js.map +1 -1
  84. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  85. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +4 -4
  86. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  87. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +3 -3
  88. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  89. package/lib/network/reqresp/rateLimit.js +2 -2
  90. package/lib/network/reqresp/rateLimit.js.map +1 -1
  91. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  92. package/lib/network/subnets/attnetsService.js +3 -1
  93. package/lib/network/subnets/attnetsService.js.map +1 -1
  94. package/lib/node/notifier.d.ts.map +1 -1
  95. package/lib/node/notifier.js +12 -13
  96. package/lib/node/notifier.js.map +1 -1
  97. package/lib/sync/unknownBlock.d.ts.map +1 -1
  98. package/lib/sync/unknownBlock.js +3 -2
  99. package/lib/sync/unknownBlock.js.map +1 -1
  100. package/lib/util/clock.d.ts.map +1 -1
  101. package/lib/util/clock.js +3 -4
  102. package/lib/util/clock.js.map +1 -1
  103. package/lib/util/sszBytes.d.ts +2 -2
  104. package/lib/util/sszBytes.d.ts.map +1 -1
  105. package/lib/util/sszBytes.js +22 -14
  106. package/lib/util/sszBytes.js.map +1 -1
  107. package/package.json +15 -15
  108. package/src/api/impl/beacon/blocks/index.ts +10 -3
  109. package/src/api/impl/validator/index.ts +41 -19
  110. package/src/chain/ColumnReconstructionTracker.ts +4 -6
  111. package/src/chain/archiveStore/utils/archiveBlocks.ts +6 -7
  112. package/src/chain/blocks/blockInput/blockInput.ts +1 -1
  113. package/src/chain/blocks/blockInput/utils.ts +2 -2
  114. package/src/chain/blocks/importBlock.ts +8 -4
  115. package/src/chain/chain.ts +3 -2
  116. package/src/chain/interface.ts +2 -1
  117. package/src/chain/prepareNextSlot.ts +7 -3
  118. package/src/chain/produceBlock/computeNewStateRoot.ts +9 -2
  119. package/src/chain/produceBlock/produceBlockBody.ts +10 -5
  120. package/src/chain/reprocess.ts +2 -1
  121. package/src/chain/seenCache/seenGossipBlockInput.ts +2 -1
  122. package/src/chain/stateCache/persistentCheckpointsCache.ts +4 -1
  123. package/src/chain/validatorMonitor.ts +7 -4
  124. package/src/constants/constants.ts +1 -0
  125. package/src/db/repositories/blockArchive.ts +2 -2
  126. package/src/db/repositories/blockArchiveIndex.ts +2 -3
  127. package/src/execution/engine/index.ts +2 -1
  128. package/src/execution/engine/jsonRpcHttpClient.ts +12 -5
  129. package/src/execution/engine/restTransport.ts +53 -22
  130. package/src/execution/engine/transportMetrics.ts +2 -1
  131. package/src/execution/engine/types.ts +13 -11
  132. package/src/metrics/metrics/lodestar.ts +7 -1
  133. package/src/network/gossip/gossipsub.ts +3 -1
  134. package/src/network/processor/index.ts +3 -3
  135. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -10
  136. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +3 -3
  137. package/src/network/reqresp/rateLimit.ts +2 -2
  138. package/src/network/subnets/attnetsService.ts +8 -3
  139. package/src/node/notifier.ts +14 -13
  140. package/src/sync/unknownBlock.ts +3 -2
  141. package/src/util/clock.ts +3 -4
  142. package/src/util/sszBytes.ts +25 -12
@@ -6,10 +6,12 @@ import {
6
6
  FIELD_ELEMENTS_PER_BLOB,
7
7
  ForkName,
8
8
  ForkPostDeneb,
9
+ ForkPostGloas,
9
10
  ForkSeq,
10
11
  MAX_COMMITTEES_PER_SLOT,
11
12
  isForkPostElectra,
12
13
  isForkPostGloas,
14
+ isForkPostHeze,
13
15
  } from "@lodestar/params";
14
16
  import {BLSSignature, CommitteeIndex, RootHex, Slot, ValidatorIndex, ssz} from "@lodestar/types";
15
17
 
@@ -57,6 +59,8 @@ const ATTESTATION_DATA_SIZE = 128;
57
59
  // MAX_COMMITTEES_PER_SLOT is in bit, need to convert to byte
58
60
  const COMMITTEE_BITS_SIZE = Math.max(Math.ceil(MAX_COMMITTEES_PER_SLOT / 8), 1);
59
61
  const SIGNATURE_SIZE = 96;
62
+ // SyncAggregate is a fixed-size container, so minSize is its serialized size
63
+ const SYNC_AGGREGATE_SIZE = ssz.altair.SyncAggregate.minSize;
60
64
  const SINGLE_ATTESTATION_ATTDATA_OFFSET = 8 + 8;
61
65
  const SINGLE_ATTESTATION_SLOT_OFFSET = SINGLE_ATTESTATION_ATTDATA_OFFSET;
62
66
  const SINGLE_ATTESTATION_COMMITTEE_INDEX_OFFSET = 0;
@@ -447,30 +451,39 @@ export function getParentRootFromSignedBeaconBlockSerialized(data: Uint8Array):
447
451
  * BeaconBlockBody (GLOAS) fixed section before signedExecutionPayloadBid offset pointer:
448
452
  * randaoReveal(96) + eth1Data(72) + graffiti(32)
449
453
  * + proposerSlashings(4) + attesterSlashings(4) + attestations(4) + deposits(4) + voluntaryExits(4)
450
- * + syncAggregate(160) + blsToExecutionChanges(4) = 384 bytes
454
+ * + syncAggregate(SyncAggregate.minSize) + blsToExecutionChanges(4) = 384 bytes (mainnet preset)
451
455
  *
452
- * The 4-byte pointer at byte 568 (= 184+384) gives the offset of SignedExecutionPayloadBid
456
+ * Heze body: randaoReveal(96) + graffiti(32) + proposerSlashings(4) + attesterSlashings(4) + attestations(4) + voluntaryExits(4) + syncAggregate(SyncAggregate.minSize) + blsToExecutionChanges(4) = 308 bytes (mainnet preset)
457
+ *
458
+ * The 4-byte pointer at byte 568 (= 184+384) for Gloas and 492 (= 184+308) for Heze (mainnet preset) gives the offset of SignedExecutionPayloadBid
453
459
  * within BeaconBlockBody. parentBlockHash is at that bid's byte 100 (after offset+sig).
454
460
  */
455
461
  // BeaconBlock body starts after: msg_offset(4) + sig(96) + slot(8) + proposer_index(8) + parent_root(32) + state_root(32) + body_offset_ptr(4)
456
462
  const GLOAS_BODY_START_IN_SIGNED_BEACON_BLOCK =
457
463
  VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE + SLOT_SIZE + 8 + ROOT_SIZE + ROOT_SIZE + VARIABLE_FIELD_OFFSET; // = 184
458
- const GLOAS_SIGNED_BID_OFFSET_POINTER_IN_BODY = 96 + 72 + 32 + 4 + 4 + 4 + 4 + 4 + 160 + 4; // = 384
459
- const GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK =
460
- GLOAS_BODY_START_IN_SIGNED_BEACON_BLOCK + GLOAS_SIGNED_BID_OFFSET_POINTER_IN_BODY; // = 568
464
+ const GLOAS_SIGNED_BID_OFFSET_POINTER_IN_BODY = 96 + 72 + 32 + 4 + 4 + 4 + 4 + 4 + SYNC_AGGREGATE_SIZE + 4; // = 384 at mainnet preset
465
+ // Heze removes eth1Data (72 B) and the deposits offset (4 B) from the body fixed section
466
+ const HEZE_SIGNED_BID_OFFSET_POINTER_IN_BODY = GLOAS_SIGNED_BID_OFFSET_POINTER_IN_BODY - 72 - VARIABLE_FIELD_OFFSET; // = 308
461
467
  // Within SignedExecutionPayloadBid, parentBlockHash is at byte 100 (msg_offset:4 + sig:96)
462
468
  const PARENT_BLOCK_HASH_OFFSET_IN_SIGNED_BID = VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE; // = 100
463
469
 
464
- // CAUTION: update offsets if BeaconBlockBody fixed fields change after Gloas
465
- export function getParentBlockHashFromGloasSignedBeaconBlockSerialized(data: Uint8Array): RootHex | null {
466
- if (data.length < GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK + VARIABLE_FIELD_OFFSET) {
470
+ // CAUTION: update offsets if BeaconBlockBody fixed fields change after Heze
471
+ export function getParentBlockHashFromGloasSignedBeaconBlockSerialized(
472
+ data: Uint8Array,
473
+ fork: ForkPostGloas
474
+ ): RootHex | null {
475
+ const bidOffsetPointer =
476
+ GLOAS_BODY_START_IN_SIGNED_BEACON_BLOCK +
477
+ (isForkPostHeze(fork) ? HEZE_SIGNED_BID_OFFSET_POINTER_IN_BODY : GLOAS_SIGNED_BID_OFFSET_POINTER_IN_BODY);
478
+ if (data.length < bidOffsetPointer + VARIABLE_FIELD_OFFSET) {
467
479
  return null;
468
480
  }
469
481
  const bidOffset =
470
- data[GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK] |
471
- (data[GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK + 1] << 8) |
472
- (data[GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK + 2] << 16) |
473
- (data[GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK + 3] << 24);
482
+ (data[bidOffsetPointer] |
483
+ (data[bidOffsetPointer + 1] << 8) |
484
+ (data[bidOffsetPointer + 2] << 16) |
485
+ (data[bidOffsetPointer + 3] << 24)) >>>
486
+ 0;
474
487
 
475
488
  const parentBlockHashStart =
476
489
  GLOAS_BODY_START_IN_SIGNED_BEACON_BLOCK + bidOffset + PARENT_BLOCK_HASH_OFFSET_IN_SIGNED_BID;