@lodestar/beacon-node 1.43.0-dev.e5b13221e5 → 1.43.0-dev.f758dd5f38

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 (95) hide show
  1. package/lib/api/impl/beacon/state/utils.d.ts +2 -2
  2. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  3. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  4. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  5. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  6. package/lib/chain/archiveStore/interface.d.ts +4 -4
  7. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  8. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +4 -4
  9. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  10. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  11. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +2 -2
  12. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  13. package/lib/chain/archiveStore/utils/archiveBlocks.js +110 -58
  14. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  15. package/lib/chain/blocks/importExecutionPayload.d.ts +14 -13
  16. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  17. package/lib/chain/blocks/importExecutionPayload.js +59 -74
  18. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  19. package/lib/chain/blocks/index.d.ts.map +1 -1
  20. package/lib/chain/blocks/index.js +0 -1
  21. package/lib/chain/blocks/index.js.map +1 -1
  22. package/lib/chain/blocks/types.d.ts +14 -20
  23. package/lib/chain/blocks/types.d.ts.map +1 -1
  24. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +24 -0
  25. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -0
  26. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +76 -0
  27. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -0
  28. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +1 -1
  29. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -1
  30. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +2 -11
  31. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -1
  32. package/lib/chain/chain.d.ts +5 -4
  33. package/lib/chain/chain.d.ts.map +1 -1
  34. package/lib/chain/chain.js +9 -2
  35. package/lib/chain/chain.js.map +1 -1
  36. package/lib/chain/emitter.d.ts +3 -3
  37. package/lib/chain/emitter.d.ts.map +1 -1
  38. package/lib/chain/errors/executionPayloadBid.d.ts +5 -0
  39. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  40. package/lib/chain/errors/executionPayloadBid.js +1 -0
  41. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  42. package/lib/chain/errors/executionPayloadEnvelope.d.ts +5 -0
  43. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  44. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  45. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  46. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  47. package/lib/chain/forkChoice/index.js +5 -17
  48. package/lib/chain/forkChoice/index.js.map +1 -1
  49. package/lib/chain/interface.d.ts +4 -3
  50. package/lib/chain/interface.d.ts.map +1 -1
  51. package/lib/chain/interface.js.map +1 -1
  52. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  53. package/lib/chain/prepareNextSlot.js +30 -10
  54. package/lib/chain/prepareNextSlot.js.map +1 -1
  55. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  56. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  57. package/lib/chain/produceBlock/produceBlockBody.js +27 -12
  58. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  59. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +11 -4
  60. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  61. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +20 -18
  62. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  63. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  64. package/lib/chain/validation/executionPayloadBid.js +13 -1
  65. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  66. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  67. package/lib/chain/validation/executionPayloadEnvelope.js +11 -1
  68. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  69. package/lib/network/gossip/topic.d.ts +19 -766
  70. package/lib/network/gossip/topic.d.ts.map +1 -1
  71. package/lib/node/notifier.js +7 -1
  72. package/lib/node/notifier.js.map +1 -1
  73. package/package.json +16 -15
  74. package/src/api/impl/beacon/state/utils.ts +2 -2
  75. package/src/chain/archiveStore/archiveStore.ts +5 -5
  76. package/src/chain/archiveStore/interface.ts +4 -4
  77. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +4 -4
  78. package/src/chain/archiveStore/utils/archiveBlocks.ts +153 -94
  79. package/src/chain/blocks/importExecutionPayload.ts +73 -93
  80. package/src/chain/blocks/index.ts +0 -1
  81. package/src/chain/blocks/types.ts +14 -25
  82. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +129 -0
  83. package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +9 -18
  84. package/src/chain/chain.ts +22 -16
  85. package/src/chain/emitter.ts +3 -3
  86. package/src/chain/errors/executionPayloadBid.ts +6 -0
  87. package/src/chain/errors/executionPayloadEnvelope.ts +6 -0
  88. package/src/chain/forkChoice/index.ts +2 -22
  89. package/src/chain/interface.ts +4 -2
  90. package/src/chain/prepareNextSlot.ts +42 -12
  91. package/src/chain/produceBlock/produceBlockBody.ts +30 -10
  92. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +22 -20
  93. package/src/chain/validation/executionPayloadBid.ts +14 -0
  94. package/src/chain/validation/executionPayloadEnvelope.ts +12 -2
  95. package/src/node/notifier.ts +8 -1
@@ -1,5 +1,5 @@
1
1
  import { PublicKey } from "@chainsafe/blst";
2
- import { createSingleSignatureSetFromComponents, getExecutionPayloadBidSigningRoot, isActiveBuilder, isStatePostGloas, } from "@lodestar/state-transition";
2
+ import { computeEpochAtSlot, createSingleSignatureSetFromComponents, getExecutionPayloadBidSigningRoot, isActiveBuilder, isStatePostGloas, } from "@lodestar/state-transition";
3
3
  import { toRootHex } from "@lodestar/utils";
4
4
  import { ExecutionPayloadBidError, ExecutionPayloadBidErrorCode, GossipAction } from "../errors/index.js";
5
5
  import { RegenCaller } from "../regen/index.js";
@@ -51,6 +51,18 @@ async function validateExecutionPayloadBid(chain, signedExecutionPayloadBid) {
51
51
  // [REJECT] `bid.gas_limit` matches the `gas_limit` from the proposer's
52
52
  // `SignedProposerPreferences` associated with `bid.slot`.
53
53
  // TODO GLOAS: Implement this along with proposer preference
54
+ // [REJECT] The length of KZG commitments is less than or equal to the limitation defined in the
55
+ // consensus layer -- i.e. validate that
56
+ // `len(bid.blob_kzg_commitments) <= get_blob_parameters(compute_epoch_at_slot(bid.slot)).max_blobs_per_block`.
57
+ const blobKzgCommitmentsLen = bid.blobKzgCommitments.length;
58
+ const maxBlobsPerBlock = chain.config.getMaxBlobsPerBlock(computeEpochAtSlot(bid.slot));
59
+ if (blobKzgCommitmentsLen > maxBlobsPerBlock) {
60
+ throw new ExecutionPayloadBidError(GossipAction.REJECT, {
61
+ code: ExecutionPayloadBidErrorCode.TOO_MANY_KZG_COMMITMENTS,
62
+ blobKzgCommitmentsLen,
63
+ commitmentLimit: maxBlobsPerBlock,
64
+ });
65
+ }
54
66
  // [IGNORE] this is the first signed bid seen with a valid signature from the given builder for this slot.
55
67
  if (chain.seenExecutionPayloadBids.isKnown(bid.slot, bid.builderIndex)) {
56
68
  throw new ExecutionPayloadBidError(GossipAction.IGNORE, {
@@ -1 +1 @@
1
- {"version":3,"file":"executionPayloadBid.js","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadBid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executionPayloadBid.js","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadBid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,sCAAsC,EACtC,iCAAiC,EACjC,eAAe,EACf,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,wBAAwB,EAAE,4BAA4B,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAExG,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAAmB,EACnB,yBAA0D,EAC3C;IACf,OAAO,2BAA2B,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;AAAA,CACtE;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,KAAmB,EACnB,yBAA0D,EAC3C;IACf,OAAO,2BAA2B,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;AAAA,CACtE;AAED,KAAK,UAAU,2BAA2B,CACxC,KAAmB,EACnB,yBAA0D,EAC3C;IACf,MAAM,GAAG,GAAG,yBAAyB,CAAC,OAAO,CAAC;IAC9C,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;IACpG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,wEAAwE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,4DAA4D;IAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;IAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,YAAY;YAC/C,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,wCAAwC;IACxC,4DAA4D;IAE5D,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,oBAAoB;YACvD,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,IAAI,GAAG,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,0BAA0B;YAC7D,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;SACvC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,0DAA0D;IAC1D,uEAAuE;IACvE,0DAA0D;IAC1D,4DAA4D;IAE5D,gGAAgG;IAChG,wCAAwC;IACxC,+GAA+G;IAC/G,MAAM,qBAAqB,GAAG,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC;IAC5D,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,IAAI,qBAAqB,GAAG,gBAAgB,EAAE,CAAC;QAC7C,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,wBAAwB;YAC3D,qBAAqB;YACrB,eAAe,EAAE,gBAAgB;SAClC,CAAC,CAAC;IACL,CAAC;IAED,0GAA0G;IAC1G,IAAI,KAAK,CAAC,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,iBAAiB;YACpD,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;SACpC,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,8DAA8D;IAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAC3G,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACnD,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,WAAW;YAC9C,QAAQ,EAAE,GAAG,CAAC,KAAK;YACnB,iBAAiB,EAAE,OAAO,CAAC,KAAK;SACjC,CAAC,CAAC;IACL,CAAC;IACD,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,YAAY;YAC/C,QAAQ,EAAE,GAAG,CAAC,KAAK;YACnB,cAAc,EAAE,OAAO,CAAC,OAAO;SAChC,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,0BAA0B;IAC1B,6BAA6B;IAE7B,2EAA2E;IAC3E,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,kBAAkB;YACrD,eAAe,EAAE,kBAAkB;SACpC,CAAC,CAAC;IACL,CAAC;IAED,sGAAsG;IACtG,MAAM,YAAY,GAAG,sCAAsC,CACzD,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EACnC,iCAAiC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAChE,yBAAyB,CAAC,SAAS,CACpC,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,wBAAwB,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,IAAI,EAAE,4BAA4B,CAAC,iBAAiB;YACpD,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;IACR,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;AAAA,CAChE"}
@@ -1 +1 @@
1
- {"version":3,"file":"executionPayloadEnvelope.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadEnvelope.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,YAAY,EACnB,wBAAwB,EAAE,KAAK,CAAC,8BAA8B,GAC7D,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,sCAAsC,CAC1D,KAAK,EAAE,YAAY,EACnB,wBAAwB,EAAE,KAAK,CAAC,8BAA8B,GAC7D,OAAO,CAAC,IAAI,CAAC,CAEf"}
1
+ {"version":3,"file":"executionPayloadEnvelope.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadEnvelope.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,wBAAsB,mCAAmC,CACvD,KAAK,EAAE,YAAY,EACnB,wBAAwB,EAAE,KAAK,CAAC,8BAA8B,GAC7D,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,sCAAsC,CAC1D,KAAK,EAAE,YAAY,EACnB,wBAAwB,EAAE,KAAK,CAAC,8BAA8B,GAC7D,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -1,6 +1,7 @@
1
1
  import { PayloadStatus } from "@lodestar/fork-choice";
2
2
  import { computeStartSlotAtEpoch, getExecutionPayloadEnvelopeSignatureSet, isStatePostGloas, } from "@lodestar/state-transition";
3
- import { toRootHex } from "@lodestar/utils";
3
+ import { ssz } from "@lodestar/types";
4
+ import { byteArrayEquals, toRootHex } from "@lodestar/utils";
4
5
  import { ExecutionPayloadEnvelopeError, ExecutionPayloadEnvelopeErrorCode, GossipAction } from "../errors/index.js";
5
6
  import { RegenCaller } from "../regen/index.js";
6
7
  export async function validateApiExecutionPayloadEnvelope(chain, executionPayloadEnvelope) {
@@ -80,6 +81,15 @@ async function validateExecutionPayloadEnvelope(chain, executionPayloadEnvelope)
80
81
  bidBlockHash: payloadInput.getBlockHashHex(),
81
82
  });
82
83
  }
84
+ // [REJECT] `hash_tree_root(envelope.execution_requests) == bid.execution_requests_root`
85
+ const requestsRoot = ssz.electra.ExecutionRequests.hashTreeRoot(envelope.executionRequests);
86
+ if (!byteArrayEquals(requestsRoot, payloadInput.getBid().executionRequestsRoot)) {
87
+ throw new ExecutionPayloadEnvelopeError(GossipAction.REJECT, {
88
+ code: ExecutionPayloadEnvelopeErrorCode.EXECUTION_REQUESTS_ROOT_MISMATCH,
89
+ envelopeRequestsRoot: toRootHex(requestsRoot),
90
+ bidRequestsRoot: toRootHex(payloadInput.getBid().executionRequestsRoot),
91
+ });
92
+ }
83
93
  // Get the block state to verify the builder's signature.
84
94
  const blockState = await chain.regen
85
95
  .getState(block.stateRoot, RegenCaller.validateGossipPayloadEnvelope)
@@ -1 +1 @@
1
- {"version":3,"file":"executionPayloadEnvelope.js","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadEnvelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executionPayloadEnvelope.js","sourceRoot":"","sources":["../../../src/chain/validation/executionPayloadEnvelope.ts"],"names":[],"mappings":"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"}