@lodestar/beacon-node 1.42.0-rc.0 → 1.43.0-dev.2740f92909

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 (165) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +20 -0
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +4 -0
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  8. package/lib/api/impl/beacon/state/index.js +13 -10
  9. package/lib/api/impl/beacon/state/index.js.map +1 -1
  10. package/lib/api/impl/lodestar/attesterSlashing.d.ts +8 -0
  11. package/lib/api/impl/lodestar/attesterSlashing.d.ts.map +1 -0
  12. package/lib/api/impl/lodestar/attesterSlashing.js +29 -0
  13. package/lib/api/impl/lodestar/attesterSlashing.js.map +1 -0
  14. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  15. package/lib/api/impl/lodestar/index.js +39 -0
  16. package/lib/api/impl/lodestar/index.js.map +1 -1
  17. package/lib/api/impl/validator/index.d.ts.map +1 -1
  18. package/lib/api/impl/validator/index.js +9 -3
  19. package/lib/api/impl/validator/index.js.map +1 -1
  20. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  21. package/lib/chain/blocks/importBlock.js +6 -4
  22. package/lib/chain/blocks/importBlock.js.map +1 -1
  23. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  24. package/lib/chain/blocks/importExecutionPayload.js +14 -5
  25. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  26. package/lib/chain/blocks/index.js +1 -1
  27. package/lib/chain/blocks/index.js.map +1 -1
  28. package/lib/chain/blocks/types.d.ts +3 -3
  29. package/lib/chain/blocks/types.d.ts.map +1 -1
  30. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  31. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +3 -2
  32. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  33. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  34. package/lib/chain/blocks/verifyBlocksSignatures.js +4 -2
  35. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  36. package/lib/chain/chain.d.ts +2 -1
  37. package/lib/chain/chain.d.ts.map +1 -1
  38. package/lib/chain/chain.js +22 -8
  39. package/lib/chain/chain.js.map +1 -1
  40. package/lib/chain/errors/blockError.d.ts +11 -1
  41. package/lib/chain/errors/blockError.d.ts.map +1 -1
  42. package/lib/chain/errors/blockError.js +4 -0
  43. package/lib/chain/errors/blockError.js.map +1 -1
  44. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  45. package/lib/chain/forkChoice/index.js +10 -8
  46. package/lib/chain/forkChoice/index.js.map +1 -1
  47. package/lib/chain/interface.d.ts +2 -1
  48. package/lib/chain/interface.d.ts.map +1 -1
  49. package/lib/chain/interface.js.map +1 -1
  50. package/lib/chain/lightClient/index.d.ts +2 -2
  51. package/lib/chain/lightClient/index.d.ts.map +1 -1
  52. package/lib/chain/lightClient/index.js +7 -0
  53. package/lib/chain/lightClient/index.js.map +1 -1
  54. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  55. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -2
  56. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  57. package/lib/chain/opPools/executionPayloadBidPool.d.ts +2 -2
  58. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  59. package/lib/chain/opPools/executionPayloadBidPool.js +2 -2
  60. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  61. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  62. package/lib/chain/prepareNextSlot.js +7 -1
  63. package/lib/chain/prepareNextSlot.js.map +1 -1
  64. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +3 -3
  65. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  66. package/lib/chain/produceBlock/computeNewStateRoot.js +8 -8
  67. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  68. package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -5
  69. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  70. package/lib/chain/produceBlock/produceBlockBody.js +23 -4
  71. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  72. package/lib/chain/validation/block.d.ts.map +1 -1
  73. package/lib/chain/validation/block.js +27 -5
  74. package/lib/chain/validation/block.js.map +1 -1
  75. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  76. package/lib/chain/validation/executionPayloadBid.js +7 -4
  77. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  78. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  79. package/lib/chain/validation/executionPayloadEnvelope.js +6 -1
  80. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  81. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  82. package/lib/chain/validation/payloadAttestationMessage.js +4 -1
  83. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  84. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  85. package/lib/chain/validation/syncCommittee.js +4 -0
  86. package/lib/chain/validation/syncCommittee.js.map +1 -1
  87. package/lib/chain/validation/syncCommitteeContributionAndProof.js +4 -1
  88. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  89. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  90. package/lib/chain/validatorMonitor.js +3 -3
  91. package/lib/chain/validatorMonitor.js.map +1 -1
  92. package/lib/network/gossip/topic.d.ts +727 -0
  93. package/lib/network/gossip/topic.d.ts.map +1 -1
  94. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  95. package/lib/network/processor/gossipHandlers.js +4 -0
  96. package/lib/network/processor/gossipHandlers.js.map +1 -1
  97. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  98. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -1
  99. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  100. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -1
  101. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +2 -0
  102. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  103. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
  104. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  105. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +7 -3
  106. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  107. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -1
  108. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +6 -0
  109. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  110. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +2 -2
  111. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  112. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +7 -3
  113. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  114. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
  115. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +2 -1
  116. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
  117. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -1
  118. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +3 -8
  119. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -1
  120. package/lib/node/nodejs.d.ts.map +1 -1
  121. package/lib/node/nodejs.js +4 -1
  122. package/lib/node/nodejs.js.map +1 -1
  123. package/lib/node/notifier.d.ts.map +1 -1
  124. package/lib/node/notifier.js +2 -2
  125. package/lib/node/notifier.js.map +1 -1
  126. package/package.json +15 -15
  127. package/src/api/impl/beacon/blocks/index.ts +29 -0
  128. package/src/api/impl/beacon/pool/index.ts +4 -0
  129. package/src/api/impl/beacon/state/index.ts +15 -15
  130. package/src/api/impl/lodestar/attesterSlashing.ts +43 -0
  131. package/src/api/impl/lodestar/index.ts +51 -1
  132. package/src/api/impl/validator/index.ts +9 -2
  133. package/src/chain/blocks/importBlock.ts +11 -7
  134. package/src/chain/blocks/importExecutionPayload.ts +15 -5
  135. package/src/chain/blocks/index.ts +1 -1
  136. package/src/chain/blocks/types.ts +3 -3
  137. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +2 -1
  138. package/src/chain/blocks/verifyBlocksSignatures.ts +9 -2
  139. package/src/chain/chain.ts +30 -8
  140. package/src/chain/errors/blockError.ts +7 -1
  141. package/src/chain/forkChoice/index.ts +11 -8
  142. package/src/chain/interface.ts +5 -0
  143. package/src/chain/lightClient/index.ts +15 -3
  144. package/src/chain/opPools/aggregatedAttestationPool.ts +6 -1
  145. package/src/chain/opPools/executionPayloadBidPool.ts +3 -3
  146. package/src/chain/prepareNextSlot.ts +8 -0
  147. package/src/chain/produceBlock/computeNewStateRoot.ts +11 -10
  148. package/src/chain/produceBlock/produceBlockBody.ts +40 -10
  149. package/src/chain/validation/block.ts +30 -7
  150. package/src/chain/validation/executionPayloadBid.ts +7 -3
  151. package/src/chain/validation/executionPayloadEnvelope.ts +10 -1
  152. package/src/chain/validation/payloadAttestationMessage.ts +4 -0
  153. package/src/chain/validation/syncCommittee.ts +5 -1
  154. package/src/chain/validation/syncCommitteeContributionAndProof.ts +5 -1
  155. package/src/chain/validatorMonitor.ts +3 -2
  156. package/src/network/processor/gossipHandlers.ts +5 -0
  157. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +3 -1
  158. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +3 -0
  159. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +15 -3
  160. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +11 -0
  161. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +19 -3
  162. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +3 -1
  163. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +3 -12
  164. package/src/node/nodejs.ts +5 -2
  165. package/src/node/notifier.ts +7 -2
@@ -1,6 +1,7 @@
1
1
  import { setMaxListeners } from "node:events";
2
2
  import { hasher } from "@chainsafe/persistent-merkle-tree";
3
3
  import { ZERO_HASH_HEX } from "@lodestar/params";
4
+ import { isStatePostBellatrix } from "@lodestar/state-transition";
4
5
  import { sleep, toRootHex } from "@lodestar/utils";
5
6
  import { BeaconRestApiServer, getApi } from "../api/index.js";
6
7
  import { BeaconChain, initBeaconMetrics } from "../chain/index.js";
@@ -122,7 +123,9 @@ export class BeaconNode {
122
123
  : null;
123
124
  let executionEngineOpts = opts.executionEngine;
124
125
  if (opts.executionEngine.mode === "mock") {
125
- const eth1BlockHash = anchorState.isExecutionStateType ? toRootHex(anchorState.latestBlockHash) : undefined;
126
+ const eth1BlockHash = isStatePostBellatrix(anchorState) && anchorState.isExecutionStateType
127
+ ? toRootHex(anchorState.latestBlockHash)
128
+ : undefined;
126
129
  executionEngineOpts = {
127
130
  ...opts.executionEngine,
128
131
  genesisBlockHash: ZERO_HASH_HEX,
@@ -1 +1 @@
1
- {"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"notifier.d.ts","sourceRoot":"","sources":["../../src/node/notifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAK9C,OAAO,EAAe,MAAM,EAAuC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAC,WAAW,EAAY,MAAM,kBAAkB,CAAC;AAOxD,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,QAAQ,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0GjF"}
1
+ {"version":3,"file":"notifier.d.ts","sourceRoot":"","sources":["../../src/node/notifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAU9C,OAAO,EAAe,MAAM,EAAuC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAC,WAAW,EAAY,MAAM,kBAAkB,CAAC;AAOxD,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,QAAQ,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0GjF"}
@@ -1,6 +1,6 @@
1
1
  import { ExecutionStatus } from "@lodestar/fork-choice";
2
2
  import { EPOCHS_PER_SYNC_COMMITTEE_PERIOD, SLOTS_PER_EPOCH } from "@lodestar/params";
3
- import { computeEpochAtSlot, computeStartSlotAtEpoch } from "@lodestar/state-transition";
3
+ import { computeEpochAtSlot, computeStartSlotAtEpoch, isStatePostBellatrix, } from "@lodestar/state-transition";
4
4
  import { ErrorAborted, prettyBytes, prettyBytesShort, sleep } from "@lodestar/utils";
5
5
  import { ExecutionEngineState } from "../execution/index.js";
6
6
  import { SyncState } from "../sync/index.js";
@@ -127,7 +127,7 @@ function getHeadExecutionInfo(config, clockEpoch, headState, headInfo) {
127
127
  }
128
128
  const executionStatusStr = headInfo.executionStatus.toLowerCase();
129
129
  // Add execution status to notifier only if head is on/post bellatrix
130
- if (headState.isExecutionStateType) {
130
+ if (isStatePostBellatrix(headState) && headState.isExecutionStateType) {
131
131
  if (headState.isMergeTransitionComplete) {
132
132
  const executionPayloadHashInfo = headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadBlockHash : "empty";
133
133
  const executionPayloadNumberInfo = headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadNumber : NaN;
@@ -1 +1 @@
1
- {"version":3,"file":"notifier.js","sourceRoot":"","sources":["../../src/node/notifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifier.js","sourceRoot":"","sources":["../../src/node/notifier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.42.0-rc.0",
14
+ "version": "1.43.0-dev.2740f92909",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -135,18 +135,18 @@
135
135
  "@libp2p/peer-id": "^6.0.4",
136
136
  "@libp2p/prometheus-metrics": "^5.0.14",
137
137
  "@libp2p/tcp": "^11.0.13",
138
- "@lodestar/api": "^1.42.0-rc.0",
139
- "@lodestar/config": "^1.42.0-rc.0",
140
- "@lodestar/db": "^1.42.0-rc.0",
141
- "@lodestar/fork-choice": "^1.42.0-rc.0",
142
- "@lodestar/light-client": "^1.42.0-rc.0",
143
- "@lodestar/logger": "^1.42.0-rc.0",
144
- "@lodestar/params": "^1.42.0-rc.0",
145
- "@lodestar/reqresp": "^1.42.0-rc.0",
146
- "@lodestar/state-transition": "^1.42.0-rc.0",
147
- "@lodestar/types": "^1.42.0-rc.0",
148
- "@lodestar/utils": "^1.42.0-rc.0",
149
- "@lodestar/validator": "^1.42.0-rc.0",
138
+ "@lodestar/api": "^1.43.0-dev.2740f92909",
139
+ "@lodestar/config": "^1.43.0-dev.2740f92909",
140
+ "@lodestar/db": "^1.43.0-dev.2740f92909",
141
+ "@lodestar/fork-choice": "^1.43.0-dev.2740f92909",
142
+ "@lodestar/light-client": "^1.43.0-dev.2740f92909",
143
+ "@lodestar/logger": "^1.43.0-dev.2740f92909",
144
+ "@lodestar/params": "^1.43.0-dev.2740f92909",
145
+ "@lodestar/reqresp": "^1.43.0-dev.2740f92909",
146
+ "@lodestar/state-transition": "^1.43.0-dev.2740f92909",
147
+ "@lodestar/types": "^1.43.0-dev.2740f92909",
148
+ "@lodestar/utils": "^1.43.0-dev.2740f92909",
149
+ "@lodestar/validator": "^1.43.0-dev.2740f92909",
150
150
  "@multiformats/multiaddr": "^13.0.1",
151
151
  "datastore-core": "^11.0.2",
152
152
  "datastore-fs": "^11.0.2",
@@ -169,7 +169,7 @@
169
169
  "@libp2p/interface-internal": "^3.0.13",
170
170
  "@libp2p/logger": "^6.2.2",
171
171
  "@libp2p/utils": "^7.0.13",
172
- "@lodestar/spec-test-util": "^1.42.0-rc.0",
172
+ "@lodestar/spec-test-util": "^1.43.0-dev.2740f92909",
173
173
  "@types/js-yaml": "^4.0.5",
174
174
  "@types/qs": "^6.9.7",
175
175
  "@types/tmp": "^0.2.3",
@@ -186,5 +186,5 @@
186
186
  "beacon",
187
187
  "blockchain"
188
188
  ],
189
- "gitHead": "d6eb9a518bb11bc77fb497f9c9e2f9e1d60a6877"
189
+ "gitHead": "ca082739323537e636d41772433e6dc57c9d6067"
190
190
  }
@@ -812,6 +812,35 @@ export function getBeaconBlockApi({
812
812
  });
813
813
  },
814
814
 
815
+ async getSignedExecutionPayloadEnvelope({blockId}, context) {
816
+ const {block, executionOptimistic, finalized} = await getBlockResponse(chain, blockId);
817
+ const slot = block.message.slot;
818
+ const fork = config.getForkName(slot);
819
+
820
+ if (!isForkPostGloas(fork)) {
821
+ throw new ApiError(
822
+ 400,
823
+ `Execution payload envelopes are not available for pre-gloas fork=${fork}, slot=${slot}`
824
+ );
825
+ }
826
+
827
+ const blockRoot = config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message);
828
+ const blockRootHex = toRootHex(blockRoot);
829
+
830
+ const data = context?.returnBytes
831
+ ? await chain.getSerializedExecutionPayloadEnvelope(slot, blockRootHex)
832
+ : await chain.getExecutionPayloadEnvelope(slot, blockRootHex);
833
+
834
+ if (!data) {
835
+ throw new ApiError(404, `Execution payload envelope not found for slot=${slot}, blockRoot=${blockRootHex}`);
836
+ }
837
+
838
+ return {
839
+ data,
840
+ meta: {executionOptimistic, finalized, version: fork},
841
+ };
842
+ },
843
+
815
844
  async getBlobSidecars({blockId, indices}) {
816
845
  assertUniqueItems(indices, "Duplicate indices provided");
817
846
 
@@ -1,6 +1,7 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {ApplicationMethods} from "@lodestar/api/server";
3
3
  import {ForkPostElectra, ForkPreElectra, SYNC_COMMITTEE_SUBNET_SIZE, isForkPostElectra} from "@lodestar/params";
4
+ import {isStatePostAltair} from "@lodestar/state-transition";
4
5
  import {Attestation, Epoch, SingleAttestation, isElectraAttestation, ssz, sszTypesFor} from "@lodestar/types";
5
6
  import {
6
7
  AttestationError,
@@ -249,6 +250,9 @@ export function getBeaconPoolApi({
249
250
 
250
251
  // TODO: Fetch states at signature slots
251
252
  const state = chain.getHeadState();
253
+ if (!isStatePostAltair(state)) {
254
+ throw new ApiError(400, "Sync committee pool is not supported before Altair");
255
+ }
252
256
 
253
257
  const failures: FailureList = [];
254
258
 
@@ -1,17 +1,14 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {ApplicationMethods} from "@lodestar/api/server";
3
- import {
4
- EPOCHS_PER_HISTORICAL_VECTOR,
5
- SLOTS_PER_EPOCH,
6
- SYNC_COMMITTEE_SUBNET_SIZE,
7
- isForkPostElectra,
8
- isForkPostFulu,
9
- } from "@lodestar/params";
3
+ import {EPOCHS_PER_HISTORICAL_VECTOR, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SUBNET_SIZE} from "@lodestar/params";
10
4
  import {
11
5
  IBeaconStateView,
12
6
  computeEpochAtSlot,
13
7
  computeStartSlotAtEpoch,
14
8
  getCurrentEpoch,
9
+ isStatePostAltair,
10
+ isStatePostElectra,
11
+ isStatePostFulu,
15
12
  } from "@lodestar/state-transition";
16
13
  import {ValidatorIndex, getValidatorStatus, ssz} from "@lodestar/types";
17
14
  import {ApiError} from "../../errors.js";
@@ -303,6 +300,9 @@ export function getBeaconStateApi({
303
300
  if (stateEpoch < config.ALTAIR_FORK_EPOCH) {
304
301
  throw new ApiError(400, "Requested state before ALTAIR_FORK_EPOCH");
305
302
  }
303
+ if (!isStatePostAltair(state)) {
304
+ throw new Error("Expected Altair state for sync committee lookup");
305
+ }
306
306
 
307
307
  const syncCommitteeCache = state.getIndexedSyncCommitteeAtEpoch(epoch ?? stateEpoch);
308
308
  const validatorIndices = new Array<ValidatorIndex>(...syncCommitteeCache.validatorIndices);
@@ -324,9 +324,9 @@ export function getBeaconStateApi({
324
324
 
325
325
  async getPendingDeposits({stateId}, context) {
326
326
  const {state, executionOptimistic, finalized} = await getState(stateId);
327
- const fork = config.getForkName(state.slot);
327
+ const fork = state.forkName;
328
328
 
329
- if (!isForkPostElectra(fork)) {
329
+ if (!isStatePostElectra(state)) {
330
330
  throw new ApiError(400, `Cannot retrieve pending deposits for pre-electra state fork=${fork}`);
331
331
  }
332
332
 
@@ -340,9 +340,9 @@ export function getBeaconStateApi({
340
340
 
341
341
  async getPendingPartialWithdrawals({stateId}, context) {
342
342
  const {state, executionOptimistic, finalized} = await getState(stateId);
343
- const fork = config.getForkName(state.slot);
343
+ const fork = state.forkName;
344
344
 
345
- if (!isForkPostElectra(fork)) {
345
+ if (!isStatePostElectra(state)) {
346
346
  throw new ApiError(400, `Cannot retrieve pending partial withdrawals for pre-electra state fork=${fork}`);
347
347
  }
348
348
 
@@ -358,9 +358,9 @@ export function getBeaconStateApi({
358
358
 
359
359
  async getPendingConsolidations({stateId}, context) {
360
360
  const {state, executionOptimistic, finalized} = await getState(stateId);
361
- const fork = config.getForkName(state.slot);
361
+ const fork = state.forkName;
362
362
 
363
- if (!isForkPostElectra(fork)) {
363
+ if (!isStatePostElectra(state)) {
364
364
  throw new ApiError(400, `Cannot retrieve pending consolidations for pre-electra state fork=${fork}`);
365
365
  }
366
366
 
@@ -376,9 +376,9 @@ export function getBeaconStateApi({
376
376
 
377
377
  async getProposerLookahead({stateId}, context) {
378
378
  const {state, executionOptimistic, finalized} = await getState(stateId);
379
- const fork = config.getForkName(state.slot);
379
+ const fork = state.forkName;
380
380
 
381
- if (!isForkPostFulu(fork)) {
381
+ if (!isStatePostFulu(state)) {
382
382
  throw new ApiError(400, `Cannot retrieve proposer lookahead for pre-fulu state fork=${fork}`);
383
383
  }
384
384
 
@@ -0,0 +1,43 @@
1
+ import {ForkSeq} from "@lodestar/params";
2
+ import {
3
+ getIntersectingIndices,
4
+ isSlashableAttestationData,
5
+ toIndexedAttestationBigint,
6
+ } from "@lodestar/state-transition";
7
+ import {AttesterSlashing, IndexedAttestation} from "@lodestar/types";
8
+
9
+ /**
10
+ * Find all slashable pairs within a list of IndexedAttestations and
11
+ * construct AttesterSlashing objects for each.
12
+ */
13
+ export function getAttesterSlashingsFromIndexedAttestations(
14
+ fork: ForkSeq,
15
+ indexedAttestations: IndexedAttestation[]
16
+ ): AttesterSlashing[] {
17
+ const slashings: AttesterSlashing[] = [];
18
+
19
+ for (let i = 0; i < indexedAttestations.length; i++) {
20
+ for (let j = i + 1; j < indexedAttestations.length; j++) {
21
+ // Order by source epoch so the surrounding attestation is always first,
22
+ // matching what isSlashableAttestationData expects (one-directional check).
23
+ const [first, second] =
24
+ indexedAttestations[j].data.source.epoch < indexedAttestations[i].data.source.epoch
25
+ ? [indexedAttestations[j], indexedAttestations[i]]
26
+ : [indexedAttestations[i], indexedAttestations[j]];
27
+
28
+ if (getIntersectingIndices(first.attestingIndices, second.attestingIndices).length === 0) continue;
29
+
30
+ const firstBigint = toIndexedAttestationBigint(first, fork);
31
+ const secondBigint = toIndexedAttestationBigint(second, fork);
32
+
33
+ if (!isSlashableAttestationData(firstBigint.data, secondBigint.data)) continue;
34
+
35
+ slashings.push({
36
+ attestation1: firstBigint,
37
+ attestation2: secondBigint,
38
+ });
39
+ }
40
+ }
41
+
42
+ return slashings;
43
+ }
@@ -3,7 +3,13 @@ import {ApplicationMethods} from "@lodestar/api/server";
3
3
  import {ChainForkConfig} from "@lodestar/config";
4
4
  import {Repository} from "@lodestar/db";
5
5
  import {ForkSeq, SLOTS_PER_EPOCH} from "@lodestar/params";
6
- import {ssz} from "@lodestar/types";
6
+ import {
7
+ computeEpochAtSlot,
8
+ computeStartSlotAtEpoch,
9
+ getIndexedAttestation,
10
+ isStatePostCapella,
11
+ } from "@lodestar/state-transition";
12
+ import {Attestation, Epoch, IndexedAttestation, ssz} from "@lodestar/types";
7
13
  import {Checkpoint} from "@lodestar/types/phase0";
8
14
  import {fromHex, toHex, toRootHex} from "@lodestar/utils";
9
15
  import {BeaconChain} from "../../../chain/index.js";
@@ -15,6 +21,7 @@ import {ProfileThread, profileThread, writeHeapSnapshot} from "../../../util/pro
15
21
  import {getStateResponseWithRegen} from "../beacon/state/utils.js";
16
22
  import {ApiError} from "../errors.js";
17
23
  import {ApiModules} from "../types.js";
24
+ import {getAttesterSlashingsFromIndexedAttestations} from "./attesterSlashing.js";
18
25
 
19
26
  export function getLodestarApi({
20
27
  chain,
@@ -218,6 +225,9 @@ export function getLodestarApi({
218
225
  if (ForkSeq[fork] < ForkSeq.capella) {
219
226
  throw new Error("Historical summaries are not supported before Capella");
220
227
  }
228
+ if (!isStatePostCapella(stateView)) {
229
+ throw new Error("Expected Capella state for historical summaries");
230
+ }
221
231
 
222
232
  const {gindex} = ssz[fork].BeaconState.getPathInfo(["historicalSummaries"]);
223
233
  const proof = stateView.getSingleProof(gindex);
@@ -269,6 +279,46 @@ export function getLodestarApi({
269
279
  },
270
280
  };
271
281
  },
282
+
283
+ async getAttesterSlashingsFromBlocks({signedBlocks}) {
284
+ const attestations = new Map<Epoch, Attestation[]>();
285
+
286
+ for (const block of signedBlocks) {
287
+ const attestationsOfABlock = block.message.body.attestations;
288
+ for (const attestation of attestationsOfABlock) {
289
+ const epoch = computeEpochAtSlot(attestation.data.slot);
290
+ let attestationsPerEpoch = attestations.get(epoch);
291
+ if (!attestationsPerEpoch) {
292
+ attestationsPerEpoch = [];
293
+ attestations.set(epoch, attestationsPerEpoch);
294
+ }
295
+ attestationsPerEpoch.push(attestation);
296
+ }
297
+ }
298
+
299
+ const indexedAttestations: IndexedAttestation[] = [];
300
+ // Assume all blocks are from the same fork
301
+ const forkSeq = config.getForkSeq(signedBlocks[0].message.slot);
302
+
303
+ for (const [epoch, attestationsPerEpoch] of attestations) {
304
+ const slot = computeStartSlotAtEpoch(epoch);
305
+ const {state} = await getStateResponseWithRegen(chain, slot);
306
+ const stateView = state instanceof Uint8Array ? chain.getHeadState().loadOtherState(state) : state;
307
+ const shuffling = stateView.getShufflingAtEpoch(epoch);
308
+ for (const attestation of attestationsPerEpoch) {
309
+ indexedAttestations.push(getIndexedAttestation(shuffling, forkSeq, attestation));
310
+ }
311
+ }
312
+
313
+ const result = getAttesterSlashingsFromIndexedAttestations(forkSeq, indexedAttestations);
314
+
315
+ return {
316
+ data: result,
317
+ meta: {
318
+ version: config.getForkName(signedBlocks[0].message.slot),
319
+ },
320
+ };
321
+ },
272
322
  };
273
323
  }
274
324
 
@@ -25,6 +25,7 @@ import {
25
25
  computeStartSlotAtEpoch,
26
26
  computeTimeAtSlot,
27
27
  getCurrentSlot,
28
+ isStatePostAltair,
28
29
  proposerShufflingDecisionRoot,
29
30
  } from "@lodestar/state-transition";
30
31
  import {
@@ -1282,6 +1283,9 @@ export function getValidatorApi(
1282
1283
  if (indices.length === 0) {
1283
1284
  throw new ApiError(400, "No validator to get attester duties");
1284
1285
  }
1286
+ if (epoch < config.ALTAIR_FORK_EPOCH) {
1287
+ throw new ApiError(400, "Sync committee duties are not supported before Altair");
1288
+ }
1285
1289
 
1286
1290
  // May request for an epoch that's in the future
1287
1291
  await waitForNextClosestEpoch();
@@ -1291,6 +1295,9 @@ export function getValidatorApi(
1291
1295
  // Note: does not support requesting past duties
1292
1296
  const head = chain.forkChoice.getHead();
1293
1297
  const state = chain.getHeadState();
1298
+ if (!isStatePostAltair(state)) {
1299
+ throw new ApiError(400, "Sync committee duties are not available before Altair");
1300
+ }
1294
1301
 
1295
1302
  // Check that all validatorIndex belong to the state before calling getCommitteeAssignments()
1296
1303
  const pubkeys = getPubkeysForIndices(state, indices);
@@ -1635,7 +1642,7 @@ export function getValidatorApi(
1635
1642
  throw Error("Cached block production result is not full block");
1636
1643
  }
1637
1644
 
1638
- const {executionPayload, executionRequests, envelopeStateRoot} = produceResult as ProduceFullGloas;
1645
+ const {executionPayload, executionRequests, payloadEnvelopeStateRoot} = produceResult as ProduceFullGloas;
1639
1646
 
1640
1647
  const envelope: gloas.ExecutionPayloadEnvelope = {
1641
1648
  payload: executionPayload,
@@ -1643,7 +1650,7 @@ export function getValidatorApi(
1643
1650
  builderIndex: BUILDER_INDEX_SELF_BUILD,
1644
1651
  beaconBlockRoot,
1645
1652
  slot,
1646
- stateRoot: envelopeStateRoot,
1653
+ stateRoot: payloadEnvelopeStateRoot,
1647
1654
  };
1648
1655
 
1649
1656
  logger.info("Produced execution payload envelope", {
@@ -25,6 +25,8 @@ import {
25
25
  computeStartSlotAtEpoch,
26
26
  computeTimeAtSlot,
27
27
  isStartSlotOfEpoch,
28
+ isStatePostAltair,
29
+ isStatePostBellatrix,
28
30
  } from "@lodestar/state-transition";
29
31
  import {
30
32
  Attestation,
@@ -388,11 +390,13 @@ export async function importBlock(
388
390
  // we want to import block asap so do this in the next event loop
389
391
  callInNextEventLoop(() => {
390
392
  try {
391
- this.lightClientServer?.onImportBlockHead(
392
- block.message as BeaconBlock<ForkPostAltair>,
393
- postBlockState,
394
- parentBlockSlot
395
- );
393
+ if (isStatePostAltair(postBlockState)) {
394
+ this.lightClientServer?.onImportBlockHead(
395
+ block.message as BeaconBlock<ForkPostAltair>,
396
+ postBlockState,
397
+ parentBlockSlot
398
+ );
399
+ }
396
400
  } catch (e) {
397
401
  this.logger.verbose("Error lightClientServer.onImportBlock", {slot: blockSlot}, e as Error);
398
402
  }
@@ -411,7 +415,7 @@ export async function importBlock(
411
415
  // and the block is weak and can potentially be reorged out.
412
416
  let shouldOverrideFcu = false;
413
417
 
414
- if (blockSlot >= currentSlot && postBlockState.isExecutionStateType) {
418
+ if (blockSlot >= currentSlot && isStatePostBellatrix(postBlockState) && postBlockState.isExecutionStateType) {
415
419
  let notOverrideFcuReason = NotReorgedReason.Unknown;
416
420
  const proposalSlot = blockSlot + 1;
417
421
  try {
@@ -598,7 +602,7 @@ export async function importBlock(
598
602
  this.metrics?.parentBlockDistance.observe(blockSlot - parentBlockSlot);
599
603
  this.metrics?.proposerBalanceDeltaAny.observe(fullyVerifiedBlock.proposerBalanceDelta);
600
604
  this.validatorMonitor?.registerImportedBlock(block.message, fullyVerifiedBlock);
601
- if (this.config.getForkSeq(blockSlot) >= ForkSeq.altair) {
605
+ if (isStatePostAltair(fullyVerifiedBlock.postBlockState)) {
602
606
  this.validatorMonitor?.registerSyncAggregateInBlock(
603
607
  blockEpoch,
604
608
  (block as altair.SignedBeaconBlock).message.body.syncAggregate,
@@ -1,7 +1,7 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {ExecutionStatus, PayloadExecutionStatus} from "@lodestar/fork-choice";
3
3
  import {SLOTS_PER_EPOCH} from "@lodestar/params";
4
- import {getExecutionPayloadEnvelopeSignatureSet} from "@lodestar/state-transition";
4
+ import {getExecutionPayloadEnvelopeSignatureSet, isStatePostGloas} from "@lodestar/state-transition";
5
5
  import {byteArrayEquals, fromHex, toRootHex} from "@lodestar/utils";
6
6
  import {ExecutionPayloadStatus} from "../../execution/index.js";
7
7
  import {isQueueErrorAborted} from "../../util/queue/index.js";
@@ -96,7 +96,7 @@ export async function importExecutionPayload(
96
96
  // is already complete, so the payload and required data are available for payload attestation.
97
97
  // This event is only about availability, not validity of the execution payload, hence we can emit
98
98
  // it before getting a response from the execution client on whether the payload is valid or not.
99
- if (this.clock.currentSlot === envelope.slot) {
99
+ if (this.clock.currentSlot - envelope.slot < EVENTSTREAM_EMIT_RECENT_EXECUTION_PAYLOAD_SLOTS) {
100
100
  this.emitter.emit(routes.events.EventType.executionPayloadAvailable, {
101
101
  slot: envelope.slot,
102
102
  blockRoot: blockRootHex,
@@ -124,6 +124,12 @@ export async function importExecutionPayload(
124
124
  {dontTransferCache: true},
125
125
  RegenCaller.processBlock
126
126
  );
127
+ if (!isStatePostGloas(blockState)) {
128
+ throw new PayloadError({
129
+ code: PayloadErrorCode.STATE_TRANSITION_ERROR,
130
+ message: `Expected gloas+ block state for payload import, got fork=${blockState.forkName}`,
131
+ });
132
+ }
127
133
 
128
134
  // 5. Run verification steps in parallel
129
135
  // Note: No data availability check needed here - importExecutionPayload is only
@@ -218,7 +224,7 @@ export async function importExecutionPayload(
218
224
  if (!isQueueErrorAborted(e)) {
219
225
  this.logger.error(
220
226
  "Error pushing payload envelope to unfinalized write queue",
221
- {slot: envelope.slot, root: blockRootHex},
227
+ {slot: envelope.slot, blockRoot: blockRootHex},
222
228
  e as Error
223
229
  );
224
230
  }
@@ -246,6 +252,8 @@ export async function importExecutionPayload(
246
252
  this.metrics?.importPayload.columnsBySource.inc({source});
247
253
  }
248
254
 
255
+ const stateRootHex = toRootHex(envelope.stateRoot);
256
+
249
257
  // 10. Emit event after payload is fully verified and imported to fork choice, only for recent enough payloads
250
258
  if (this.clock.currentSlot - envelope.slot < EVENTSTREAM_EMIT_RECENT_EXECUTION_PAYLOAD_SLOTS) {
251
259
  this.emitter.emit(routes.events.EventType.executionPayload, {
@@ -253,7 +261,7 @@ export async function importExecutionPayload(
253
261
  builderIndex: envelope.builderIndex,
254
262
  blockHash: blockHashHex,
255
263
  blockRoot: blockRootHex,
256
- stateRoot: toRootHex(envelope.stateRoot),
264
+ stateRoot: stateRootHex,
257
265
  // TODO GLOAS: revisit once we support optimistic import
258
266
  executionOptimistic: false,
259
267
  });
@@ -261,7 +269,9 @@ export async function importExecutionPayload(
261
269
 
262
270
  this.logger.verbose("Execution payload imported", {
263
271
  slot: envelope.slot,
264
- root: blockRootHex,
272
+ builderIndex: envelope.builderIndex,
273
+ blockRoot: blockRootHex,
265
274
  blockHash: blockHashHex,
275
+ stateRoot: stateRootHex,
266
276
  });
267
277
  }
@@ -89,7 +89,7 @@ export async function processBlocks(
89
89
  (block, i): FullyVerifiedBlock => ({
90
90
  blockInput: block,
91
91
  postBlockState: postStates[i],
92
- postEnvelopeState: null,
92
+ postPayloadState: null,
93
93
  parentBlockSlot: parentSlots[i],
94
94
  executionStatus: executionStatuses[i],
95
95
  // start supporting optimistic syncing/processing
@@ -103,7 +103,7 @@ type FullyVerifiedBlockBase = {
103
103
  /**
104
104
  * A wrapper around a `SignedBeaconBlock` that indicates that this block is fully verified and ready to import.
105
105
  *
106
- * Discriminated union on `postEnvelopeState`:
106
+ * Discriminated union on `postPayloadState`:
107
107
  * - `null` → block has no pre-verified envelope; `executionStatus` is any `BlockExecutionStatus`
108
108
  * - non-null → envelope was pre-verified during state transition; `executionStatus` is narrowed to
109
109
  * `Valid | Syncing` (matching what `forkChoice.onExecutionPayload` expects)
@@ -111,12 +111,12 @@ type FullyVerifiedBlockBase = {
111
111
  export type FullyVerifiedBlock = FullyVerifiedBlockBase &
112
112
  (
113
113
  | {
114
- postEnvelopeState: null;
114
+ postPayloadState: null;
115
115
  /** If the execution payload couldn't be verified because of EL syncing status, used in optimistic sync or for merge block */
116
116
  executionStatus: BlockExecutionStatus;
117
117
  }
118
118
  | {
119
- postEnvelopeState: IBeaconStateView;
119
+ postPayloadState: IBeaconStateView;
120
120
  executionStatus: PayloadExecutionStatus;
121
121
  }
122
122
  );
@@ -8,7 +8,7 @@ import {
8
8
  ProtoBlock,
9
9
  } from "@lodestar/fork-choice";
10
10
  import {ForkSeq} from "@lodestar/params";
11
- import {IBeaconStateView, isExecutionBlockBodyType} from "@lodestar/state-transition";
11
+ import {IBeaconStateView, isExecutionBlockBodyType, isStatePostBellatrix} from "@lodestar/state-transition";
12
12
  import {bellatrix, electra} from "@lodestar/types";
13
13
  import {ErrorAborted, Logger, toRootHex} from "@lodestar/utils";
14
14
  import {ExecutionPayloadStatus, IExecutionEngine} from "../../execution/engine/interface.js";
@@ -152,6 +152,7 @@ export async function verifyBlockExecutionPayload(
152
152
 
153
153
  /** Not null if execution is enabled */
154
154
  const executionPayloadEnabled =
155
+ isStatePostBellatrix(preState0) &&
155
156
  preState0.isExecutionStateType &&
156
157
  isExecutionBlockBodyType(block.message.body) &&
157
158
  preState0.isExecutionEnabled(block.message)