@lodestar/beacon-node 1.45.0-dev.f2645825a8 → 1.45.0-dev.f6c521a123

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 (214) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +3 -2
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/index.d.ts +1 -1
  5. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  6. package/lib/api/impl/beacon/index.js.map +1 -1
  7. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  8. package/lib/api/impl/beacon/pool/index.js +6 -42
  9. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  10. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  11. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/state/index.js +2 -2
  13. package/lib/api/impl/beacon/state/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/utils.d.ts +2 -1
  15. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  16. package/lib/api/impl/beacon/state/utils.js +9 -1
  17. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  18. package/lib/api/impl/debug/index.d.ts +1 -1
  19. package/lib/api/impl/debug/index.d.ts.map +1 -1
  20. package/lib/api/impl/debug/index.js +2 -2
  21. package/lib/api/impl/debug/index.js.map +1 -1
  22. package/lib/api/impl/lodestar/index.js +2 -2
  23. package/lib/api/impl/lodestar/index.js.map +1 -1
  24. package/lib/api/impl/proof/index.d.ts +1 -1
  25. package/lib/api/impl/proof/index.d.ts.map +1 -1
  26. package/lib/api/impl/proof/index.js +2 -2
  27. package/lib/api/impl/proof/index.js.map +1 -1
  28. package/lib/api/impl/utils.d.ts +23 -0
  29. package/lib/api/impl/utils.d.ts.map +1 -1
  30. package/lib/api/impl/utils.js +44 -1
  31. package/lib/api/impl/utils.js.map +1 -1
  32. package/lib/api/impl/validator/index.d.ts +0 -14
  33. package/lib/api/impl/validator/index.d.ts.map +1 -1
  34. package/lib/api/impl/validator/index.js +58 -59
  35. package/lib/api/impl/validator/index.js.map +1 -1
  36. package/lib/api/rest/base.d.ts.map +1 -1
  37. package/lib/api/rest/base.js +14 -3
  38. package/lib/api/rest/base.js.map +1 -1
  39. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  40. package/lib/chain/blocks/importBlock.js +3 -21
  41. package/lib/chain/blocks/importBlock.js.map +1 -1
  42. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  43. package/lib/chain/blocks/utils/chainSegment.js +13 -5
  44. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  45. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +1 -1
  46. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  47. package/lib/chain/blocks/verifyBlocksSanityChecks.js +1 -1
  48. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  49. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +2 -2
  50. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  51. package/lib/chain/builderCircuitBreaker.d.ts +31 -0
  52. package/lib/chain/builderCircuitBreaker.d.ts.map +1 -0
  53. package/lib/chain/builderCircuitBreaker.js +59 -0
  54. package/lib/chain/builderCircuitBreaker.js.map +1 -0
  55. package/lib/chain/chain.d.ts +2 -0
  56. package/lib/chain/chain.d.ts.map +1 -1
  57. package/lib/chain/chain.js +26 -2
  58. package/lib/chain/chain.js.map +1 -1
  59. package/lib/chain/errors/blockError.d.ts +48 -6
  60. package/lib/chain/errors/blockError.d.ts.map +1 -1
  61. package/lib/chain/errors/blockError.js +25 -4
  62. package/lib/chain/errors/blockError.js.map +1 -1
  63. package/lib/chain/errors/executionPayloadEnvelope.d.ts +11 -0
  64. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  65. package/lib/chain/errors/executionPayloadEnvelope.js +2 -0
  66. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  67. package/lib/chain/interface.d.ts +2 -0
  68. package/lib/chain/interface.d.ts.map +1 -1
  69. package/lib/chain/interface.js.map +1 -1
  70. package/lib/chain/lightClient/index.d.ts.map +1 -1
  71. package/lib/chain/lightClient/index.js +11 -6
  72. package/lib/chain/lightClient/index.js.map +1 -1
  73. package/lib/chain/lightClient/proofs.d.ts.map +1 -1
  74. package/lib/chain/lightClient/proofs.js +28 -2
  75. package/lib/chain/lightClient/proofs.js.map +1 -1
  76. package/lib/chain/lightClient/types.d.ts +3 -1
  77. package/lib/chain/lightClient/types.d.ts.map +1 -1
  78. package/lib/chain/opPools/aggregatedAttestationPool.js +1 -1
  79. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  80. package/lib/chain/opPools/proposerPreferencesPool.d.ts +1 -1
  81. package/lib/chain/opPools/proposerPreferencesPool.d.ts.map +1 -1
  82. package/lib/chain/opPools/proposerPreferencesPool.js +1 -1
  83. package/lib/chain/opPools/proposerPreferencesPool.js.map +1 -1
  84. package/lib/chain/options.d.ts +4 -0
  85. package/lib/chain/options.d.ts.map +1 -1
  86. package/lib/chain/options.js.map +1 -1
  87. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  88. package/lib/chain/prepareNextSlot.js +12 -7
  89. package/lib/chain/prepareNextSlot.js.map +1 -1
  90. package/lib/chain/validation/aggregateAndProof.js +10 -6
  91. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  92. package/lib/chain/validation/attestation.d.ts.map +1 -1
  93. package/lib/chain/validation/attestation.js +10 -6
  94. package/lib/chain/validation/attestation.js.map +1 -1
  95. package/lib/chain/validation/block.d.ts.map +1 -1
  96. package/lib/chain/validation/block.js +53 -4
  97. package/lib/chain/validation/block.js.map +1 -1
  98. package/lib/chain/validation/executionPayloadBid.js +13 -12
  99. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  100. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  101. package/lib/chain/validation/executionPayloadEnvelope.js +29 -0
  102. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  103. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -1
  104. package/lib/chain/validation/proposerPreferences.js +3 -2
  105. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  106. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -1
  107. package/lib/chain/validation/signatureSets/aggregateAndProof.js +2 -3
  108. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  109. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  110. package/lib/db/repositories/lightclientSyncCommitteeWitness.js +42 -7
  111. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  112. package/lib/execution/builder/http.d.ts +18 -0
  113. package/lib/execution/builder/http.d.ts.map +1 -1
  114. package/lib/execution/builder/http.js +20 -11
  115. package/lib/execution/builder/http.js.map +1 -1
  116. package/lib/metrics/metrics/beacon.d.ts +6 -0
  117. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  118. package/lib/metrics/metrics/beacon.js +18 -0
  119. package/lib/metrics/metrics/beacon.js.map +1 -1
  120. package/lib/network/core/metrics.d.ts +65 -0
  121. package/lib/network/core/metrics.d.ts.map +1 -1
  122. package/lib/network/core/metrics.js +94 -0
  123. package/lib/network/core/metrics.js.map +1 -1
  124. package/lib/network/discv5/utils.d.ts.map +1 -1
  125. package/lib/network/discv5/utils.js +12 -3
  126. package/lib/network/discv5/utils.js.map +1 -1
  127. package/lib/network/gossip/encoding.d.ts +2 -2
  128. package/lib/network/gossip/encoding.d.ts.map +1 -1
  129. package/lib/network/gossip/encoding.js +22 -9
  130. package/lib/network/gossip/encoding.js.map +1 -1
  131. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  132. package/lib/network/gossip/gossipsub.js +4 -3
  133. package/lib/network/gossip/gossipsub.js.map +1 -1
  134. package/lib/network/gossip/topic.d.ts +80 -232
  135. package/lib/network/gossip/topic.d.ts.map +1 -1
  136. package/lib/network/gossip/topic.js +47 -4
  137. package/lib/network/gossip/topic.js.map +1 -1
  138. package/lib/network/peers/peerManager.d.ts.map +1 -1
  139. package/lib/network/peers/peerManager.js +10 -0
  140. package/lib/network/peers/peerManager.js.map +1 -1
  141. package/lib/network/peers/score/score.d.ts +3 -1
  142. package/lib/network/peers/score/score.d.ts.map +1 -1
  143. package/lib/network/peers/score/score.js +6 -1
  144. package/lib/network/peers/score/score.js.map +1 -1
  145. package/lib/network/peers/score/store.d.ts.map +1 -1
  146. package/lib/network/peers/score/store.js +6 -1
  147. package/lib/network/peers/score/store.js.map +1 -1
  148. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  149. package/lib/network/peers/utils/prioritizePeers.js +14 -0
  150. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  151. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  152. package/lib/network/processor/gossipHandlers.js +18 -8
  153. package/lib/network/processor/gossipHandlers.js.map +1 -1
  154. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
  155. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +4 -2
  156. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
  157. package/lib/sync/sync.d.ts.map +1 -1
  158. package/lib/sync/sync.js +7 -0
  159. package/lib/sync/sync.js.map +1 -1
  160. package/lib/sync/unknownBlock.d.ts.map +1 -1
  161. package/lib/sync/unknownBlock.js +7 -2
  162. package/lib/sync/unknownBlock.js.map +1 -1
  163. package/package.json +23 -21
  164. package/src/api/impl/beacon/blocks/index.ts +3 -2
  165. package/src/api/impl/beacon/index.ts +1 -1
  166. package/src/api/impl/beacon/pool/index.ts +5 -52
  167. package/src/api/impl/beacon/state/index.ts +3 -2
  168. package/src/api/impl/beacon/state/utils.ts +11 -0
  169. package/src/api/impl/debug/index.ts +3 -2
  170. package/src/api/impl/lodestar/index.ts +2 -2
  171. package/src/api/impl/proof/index.ts +2 -2
  172. package/src/api/impl/utils.ts +51 -1
  173. package/src/api/impl/validator/index.ts +66 -64
  174. package/src/api/rest/base.ts +17 -3
  175. package/src/chain/blocks/importBlock.ts +1 -23
  176. package/src/chain/blocks/utils/chainSegment.ts +16 -5
  177. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +1 -1
  178. package/src/chain/blocks/verifyBlocksSanityChecks.ts +1 -1
  179. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +2 -2
  180. package/src/chain/builderCircuitBreaker.ts +84 -0
  181. package/src/chain/chain.ts +38 -2
  182. package/src/chain/errors/blockError.ts +44 -7
  183. package/src/chain/errors/executionPayloadEnvelope.ts +9 -0
  184. package/src/chain/interface.ts +2 -0
  185. package/src/chain/lightClient/index.ts +12 -7
  186. package/src/chain/lightClient/proofs.ts +36 -1
  187. package/src/chain/lightClient/types.ts +3 -1
  188. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  189. package/src/chain/opPools/proposerPreferencesPool.ts +1 -1
  190. package/src/chain/options.ts +4 -0
  191. package/src/chain/prepareNextSlot.ts +11 -7
  192. package/src/chain/validation/aggregateAndProof.ts +12 -6
  193. package/src/chain/validation/attestation.ts +12 -6
  194. package/src/chain/validation/block.ts +69 -4
  195. package/src/chain/validation/executionPayloadBid.ts +16 -11
  196. package/src/chain/validation/executionPayloadEnvelope.ts +37 -0
  197. package/src/chain/validation/proposerPreferences.ts +3 -2
  198. package/src/chain/validation/signatureSets/aggregateAndProof.ts +3 -3
  199. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +57 -9
  200. package/src/execution/builder/http.ts +30 -17
  201. package/src/metrics/metrics/beacon.ts +19 -0
  202. package/src/network/core/metrics.ts +94 -0
  203. package/src/network/discv5/utils.ts +11 -3
  204. package/src/network/gossip/encoding.ts +20 -7
  205. package/src/network/gossip/gossipsub.ts +9 -3
  206. package/src/network/gossip/topic.ts +58 -4
  207. package/src/network/peers/peerManager.ts +11 -0
  208. package/src/network/peers/score/score.ts +8 -1
  209. package/src/network/peers/score/store.ts +8 -1
  210. package/src/network/peers/utils/prioritizePeers.ts +15 -0
  211. package/src/network/processor/gossipHandlers.ts +18 -7
  212. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +4 -2
  213. package/src/sync/sync.ts +10 -0
  214. package/src/sync/unknownBlock.ts +8 -2
@@ -169,7 +169,7 @@ export function getLodestarApi({ chain, config, db, network, sync, }) {
169
169
  return { data: await db.stateArchive.dumpRootIndexEntries() };
170
170
  },
171
171
  async getHistoricalSummaries({ stateId }) {
172
- const { state, executionOptimistic, finalized } = await getStateResponseWithRegen(chain, stateId);
172
+ const { state, executionOptimistic, finalized } = await getStateResponseWithRegen(chain, sync, stateId);
173
173
  const stateView = state instanceof Uint8Array ? chain.getHeadState().loadOtherState(state) : state;
174
174
  const fork = config.getForkName(stateView.slot);
175
175
  if (ForkSeq[fork] < ForkSeq.capella) {
@@ -266,7 +266,7 @@ export function getLodestarApi({ chain, config, db, network, sync, }) {
266
266
  const forkSeq = config.getForkSeq(signedBlocks[0].message.slot);
267
267
  for (const [epoch, attestationsPerEpoch] of attestations) {
268
268
  const slot = computeStartSlotAtEpoch(epoch);
269
- const { state } = await getStateResponseWithRegen(chain, slot);
269
+ const { state } = await getStateResponseWithRegen(chain, sync, slot);
270
270
  const stateView = state instanceof Uint8Array ? chain.getHeadState().loadOtherState(state) : state;
271
271
  const shuffling = stateView.getShufflingAtEpoch(epoch);
272
272
  for (const attestation of attestationsPerEpoch) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/lodestar/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/lodestar/index.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@ import { routes } from "@lodestar/api";
2
2
  import { ApplicationMethods } from "@lodestar/api/server";
3
3
  import { ApiOptions } from "../../options.js";
4
4
  import { ApiModules } from "../types.js";
5
- export declare function getProofApi(opts: ApiOptions, { chain, config }: Pick<ApiModules, "chain" | "config" | "db">): ApplicationMethods<routes.proof.Endpoints>;
5
+ export declare function getProofApi(opts: ApiOptions, { chain, config, sync }: Pick<ApiModules, "chain" | "config" | "db" | "sync">): ApplicationMethods<routes.proof.Endpoints>;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/impl/proof/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC,GAC3D,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAwC5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/impl/proof/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAC,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,GAC1E,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAwC5C"}
@@ -1,7 +1,7 @@
1
1
  import { ProofType, createProof } from "@chainsafe/persistent-merkle-tree";
2
2
  import { getBlockResponse } from "../beacon/blocks/utils.js";
3
3
  import { getStateResponseWithRegen } from "../beacon/state/utils.js";
4
- export function getProofApi(opts, { chain, config }) {
4
+ export function getProofApi(opts, { chain, config, sync }) {
5
5
  // It's currently possible to request gigantic proofs (eg: a proof of the entire beacon state)
6
6
  // We want some some sort of resistance against this DoS vector.
7
7
  const maxGindicesInProof = opts.maxGindicesInProof ?? 512;
@@ -11,7 +11,7 @@ export function getProofApi(opts, { chain, config }) {
11
11
  if (descriptor.length / 2 > maxGindicesInProof) {
12
12
  throw new Error("Requested proof is too large.");
13
13
  }
14
- const res = await getStateResponseWithRegen(chain, stateId);
14
+ const res = await getStateResponseWithRegen(chain, sync, stateId);
15
15
  const state = res.state instanceof Uint8Array ? chain.getHeadState().loadOtherState(res.state) : res.state;
16
16
  return {
17
17
  data: state.createMultiProof(descriptor),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/proof/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,WAAW,EAAC,MAAM,mCAAmC,CAAC;AAI5F,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AAGnE,MAAM,UAAU,WAAW,CACzB,IAAgB,EAChB,EAAC,KAAK,EAAE,MAAM,EAA8C,EAChB;IAC5C,8FAA8F;IAC9F,gEAAgE;IAChE,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,GAAG,CAAC;IAE1D,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE;YACzC,kEAAkE;YAClE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,kBAAkB,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAE5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAE3G,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBACxC,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;aAChD,CAAC;QAAA,CACH;QACD,KAAK,CAAC,aAAa,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE;YACzC,kEAAkE;YAClE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,kBAAkB,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEvD,4GAA4G;YAC5G,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;YAEjG,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,UAAU,EAAC,CAAC,CAAC;YAEjF,OAAO;gBACL,IAAI,EAAE,KAA0B;gBAChC,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC;aACxD,CAAC;QAAA,CACH;KACF,CAAC;AAAA,CACH"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/proof/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,WAAW,EAAC,MAAM,mCAAmC,CAAC;AAI5F,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AAGnE,MAAM,UAAU,WAAW,CACzB,IAAgB,EAChB,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAuD,EAC/B;IAC5C,8FAA8F;IAC9F,gEAAgE;IAChE,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,GAAG,CAAC;IAE1D,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE;YACzC,kEAAkE;YAClE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,kBAAkB,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAElE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAE3G,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBACxC,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC;aAChD,CAAC;QAAA,CACH;QACD,KAAK,CAAC,aAAa,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE;YACzC,kEAAkE;YAClE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,kBAAkB,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YAED,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEvD,4GAA4G;YAC5G,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;YAEjG,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,UAAU,EAAC,CAAC,CAAC;YAEjF,OAAO;gBACL,IAAI,EAAE,KAA0B;gBAChC,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC;aACxD,CAAC;QAAA,CACH;KACF,CAAC;AAAA,CACH"}
@@ -1,3 +1,26 @@
1
+ import type { IBeaconChain } from "../../chain/index.js";
2
+ import { SyncState } from "../../sync/index.js";
3
+ /**
4
+ * If the node is within this many epochs from the head, we declare it to be synced regardless of
5
+ * the network sync state.
6
+ *
7
+ * This helps prevent attacks where nodes can convince us that we're syncing some non-existent
8
+ * finalized head.
9
+ *
10
+ * TODO: Lighthouse uses 8 for the attack described above. However, 8 kills Lodestar since validators
11
+ * can trigger regen to fast-forward head state 8 epochs to be immediately invalidated as sync sets
12
+ * a new head. Then the checkpoint state cache grows unbounded with very different states (because
13
+ * they are 8 epochs apart) and causes an OOM. Research a proper solution once regen and the state
14
+ * caches are better.
15
+ */
16
+ export declare const SYNC_TOLERANCE_EPOCHS = 1;
17
+ /**
18
+ * Reject any request while the node is syncing. Used by endpoints that must not serve while the
19
+ * node is behind — validator duties, and beacon state lookups whose regen could otherwise walk
20
+ * back past the block-root window (`SLOTS_PER_HISTORICAL_ROOT`) and wedge the node. Throws
21
+ * {@link NodeIsSyncing} (503).
22
+ */
23
+ export declare function notWhileSyncing(chain: IBeaconChain, syncState: SyncState): void;
1
24
  /**
2
25
  * Ensures that the array contains unique values, and throws an ApiError
3
26
  * otherwise.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/api/impl/utils.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAerF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/api/impl/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAG9C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAwB/E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAerF"}
@@ -1,4 +1,47 @@
1
- import { ApiError } from "./errors.js";
1
+ import { SLOTS_PER_EPOCH } from "@lodestar/params";
2
+ import { SyncState } from "../../sync/index.js";
3
+ import { ApiError, NodeIsSyncing } from "./errors.js";
4
+ /**
5
+ * If the node is within this many epochs from the head, we declare it to be synced regardless of
6
+ * the network sync state.
7
+ *
8
+ * This helps prevent attacks where nodes can convince us that we're syncing some non-existent
9
+ * finalized head.
10
+ *
11
+ * TODO: Lighthouse uses 8 for the attack described above. However, 8 kills Lodestar since validators
12
+ * can trigger regen to fast-forward head state 8 epochs to be immediately invalidated as sync sets
13
+ * a new head. Then the checkpoint state cache grows unbounded with very different states (because
14
+ * they are 8 epochs apart) and causes an OOM. Research a proper solution once regen and the state
15
+ * caches are better.
16
+ */
17
+ export const SYNC_TOLERANCE_EPOCHS = 1;
18
+ /**
19
+ * Reject any request while the node is syncing. Used by endpoints that must not serve while the
20
+ * node is behind — validator duties, and beacon state lookups whose regen could otherwise walk
21
+ * back past the block-root window (`SLOTS_PER_HISTORICAL_ROOT`) and wedge the node. Throws
22
+ * {@link NodeIsSyncing} (503).
23
+ */
24
+ export function notWhileSyncing(chain, syncState) {
25
+ // Consider node synced before or close to genesis
26
+ if (chain.clock.currentSlot < SLOTS_PER_EPOCH) {
27
+ return;
28
+ }
29
+ switch (syncState) {
30
+ case SyncState.SyncingFinalized:
31
+ case SyncState.SyncingHead: {
32
+ const currentSlot = chain.clock.currentSlot;
33
+ const headSlot = chain.forkChoice.getHead().slot;
34
+ if (currentSlot - headSlot > SYNC_TOLERANCE_EPOCHS * SLOTS_PER_EPOCH) {
35
+ throw new NodeIsSyncing(`headSlot ${headSlot} currentSlot ${currentSlot}`);
36
+ }
37
+ return;
38
+ }
39
+ case SyncState.Synced:
40
+ return;
41
+ case SyncState.Stalled:
42
+ throw new NodeIsSyncing("waiting for peers");
43
+ }
44
+ }
2
45
  /**
3
46
  * Ensures that the array contains unique values, and throws an ApiError
4
47
  * otherwise.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/api/impl/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA4B,EAAE,OAAe,EAAQ;IACrF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,qBAAgC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3E,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,qBAAqB,CAAC;IAAA,CAC9B,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,OAAO,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;AAAA,CACF"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/api/impl/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAmB,EAAE,SAAoB,EAAQ;IAC/E,kDAAkD;IAClD,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,SAAS,CAAC,gBAAgB,CAAC;QAChC,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;YAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YACjD,IAAI,WAAW,GAAG,QAAQ,GAAG,qBAAqB,GAAG,eAAe,EAAE,CAAC;gBACrE,MAAM,IAAI,aAAa,CAAC,YAAY,QAAQ,gBAAgB,WAAW,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,OAAO;QACT,CAAC;QAED,KAAK,SAAS,CAAC,MAAM;YACnB,OAAO;QAET,KAAK,SAAS,CAAC,OAAO;YACpB,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC;AAAA,CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA4B,EAAE,OAAe,EAAQ;IACrF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,qBAAgC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3E,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,qBAAqB,CAAC;IAAA,CAC9B,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,OAAO,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;AAAA,CACF"}
@@ -3,20 +3,6 @@ import { ApplicationMethods } from "@lodestar/api/server";
3
3
  import { ProducedBlockSource } from "@lodestar/types";
4
4
  import { ApiOptions } from "../../options.js";
5
5
  import { ApiModules } from "../types.js";
6
- /**
7
- * If the node is within this many epochs from the head, we declare it to be synced regardless of
8
- * the network sync state.
9
- *
10
- * This helps prevent attacks where nodes can convince us that we're syncing some non-existent
11
- * finalized head.
12
- *
13
- * TODO: Lighthouse uses 8 for the attack described above. However, 8 kills Lodestar since validators
14
- * can trigger regen to fast-forward head state 8 epochs to be immediately invalidated as sync sets
15
- * a new head. Then the checkpoint state cache grows unbounded with very different states (because
16
- * they are 8 epochs apart) and causes an OOM. Research a proper solution once regen and the state
17
- * caches are better.
18
- */
19
- export declare const SYNC_TOLERANCE_EPOCHS = 1;
20
6
  /**
21
7
  * Engine block selection reasons tracked in metrics / logs
22
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/impl/validator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AA+BxD,OAAO,EAQL,mBAAmB,EAUpB,MAAM,iBAAiB,CAAC;AAoCzB,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAGvC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AA8BvC;;GAEG;AACH,oBAAY,0BAA0B;IACpC,eAAe,qBAAqB;IACpC,YAAY,kBAAkB;IAC9B,cAAc,oBAAoB;IAClC,cAAc,oBAAoB;IAClC,YAAY,mBAAmB;IAC/B,iBAAiB,uBAAuB;IACxC,UAAU,gBAAgB;IAC1B,eAAe,qBAAqB;CACrC;AAED;;GAEG;AACH,oBAAY,2BAA2B;IACrC,cAAc,oBAAoB;IAClC,WAAW,iBAAiB;IAC5B,aAAa,mBAAmB;IAChC,UAAU,gBAAgB;IAC1B,gBAAgB,sBAAsB;CACvC;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,0BAA0B,CAAC;CACpC,GACD;IACE,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,2BAA2B,CAAC;CACrC,CAAC;AAEN;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,EAAE,UAAU,GAC1D,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CA4mDhD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/impl/validator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AA+BxD,OAAO,EAQL,mBAAmB,EAUpB,MAAM,iBAAiB,CAAC;AAsCzB,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAgCvC;;GAEG;AACH,oBAAY,0BAA0B;IACpC,eAAe,qBAAqB;IACpC,YAAY,kBAAkB;IAC9B,cAAc,oBAAoB;IAClC,cAAc,oBAAoB;IAClC,YAAY,mBAAmB;IAC/B,iBAAiB,uBAAuB;IACxC,UAAU,gBAAgB;IAC1B,eAAe,qBAAqB;CACrC;AAED;;GAEG;AACH,oBAAY,2BAA2B;IACrC,cAAc,oBAAoB;IAClC,WAAW,iBAAiB;IAC5B,aAAa,mBAAmB;IAChC,UAAU,gBAAgB;IAC1B,gBAAgB,sBAAsB;CACvC;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,0BAA0B,CAAC;CACpC,GACD;IACE,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,2BAA2B,CAAC;CACrC,CAAC;AAEN;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,EAAE,UAAU,GAC1D,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CA0nDhD"}
@@ -6,38 +6,25 @@ import { ProducedBlockSource, getValidatorStatus, ssz, } from "@lodestar/types";
6
6
  import { TimeoutError, defer, formatWeiToEth, fromHex, prettyWeiToEth, resolveOrRacePromises, toHex, toRootHex, } from "@lodestar/utils";
7
7
  import { MAX_BUILDER_BOOST_FACTOR } from "@lodestar/validator";
8
8
  import { BlockInputSource } from "../../../chain/blocks/blockInput/types.js";
9
- import { AttestationError, AttestationErrorCode, GossipAction, SyncCommitteeError, SyncCommitteeErrorCode, } from "../../../chain/errors/index.js";
9
+ import { AttestationError, AttestationErrorCode, GossipAction, ProposerPreferencesError, ProposerPreferencesErrorCode, SyncCommitteeError, SyncCommitteeErrorCode, } from "../../../chain/errors/index.js";
10
10
  import { ChainEvent } from "../../../chain/index.js";
11
11
  import { PREPARE_NEXT_SLOT_BPS } from "../../../chain/prepareNextSlot.js";
12
12
  import { BlockType } from "../../../chain/produceBlock/index.js";
13
13
  import { RegenCaller } from "../../../chain/regen/index.js";
14
14
  import { validateApiAggregateAndProof } from "../../../chain/validation/index.js";
15
+ import { validateGossipProposerPreferences } from "../../../chain/validation/proposerPreferences.js";
15
16
  import { validateSyncCommitteeGossipContributionAndProof } from "../../../chain/validation/syncCommitteeContributionAndProof.js";
16
17
  import { ZERO_HASH } from "../../../constants/index.js";
17
18
  import { BuilderStatus, NoBidReceived } from "../../../execution/builder/http.js";
18
19
  import { validateGossipFnRetryUnknownRoot } from "../../../network/processor/gossipHandlers.js";
19
- import { SyncState } from "../../../sync/index.js";
20
20
  import { callInNextEventLoop } from "../../../util/eventLoop.js";
21
21
  import { isOptimisticBlock } from "../../../util/forkChoice.js";
22
22
  import { getBlockGraffiti, toGraffitiBytes } from "../../../util/graffiti.js";
23
23
  import { getLodestarClientVersion } from "../../../util/metadata.js";
24
24
  import { getStateResponseWithRegen } from "../beacon/state/utils.js";
25
25
  import { ApiError, IndexedError, NodeIsSyncing, OnlySupportedByDVT } from "../errors.js";
26
+ import { notWhileSyncing } from "../utils.js";
26
27
  import { computeSubnetForCommitteesAtSlot, getPubkeysForIndices, selectBlockProductionSource } from "./utils.js";
27
- /**
28
- * If the node is within this many epochs from the head, we declare it to be synced regardless of
29
- * the network sync state.
30
- *
31
- * This helps prevent attacks where nodes can convince us that we're syncing some non-existent
32
- * finalized head.
33
- *
34
- * TODO: Lighthouse uses 8 for the attack described above. However, 8 kills Lodestar since validators
35
- * can trigger regen to fast-forward head state 8 epochs to be immediately invalidated as sync sets
36
- * a new head. Then the checkpoint state cache grows unbounded with very different states (because
37
- * they are 8 epochs apart) and causes an OOM. Research a proper solution once regen and the state
38
- * caches are better.
39
- */
40
- export const SYNC_TOLERANCE_EPOCHS = 1;
41
28
  /**
42
29
  * Cutoff time to wait from start of the slot for execution and builder block production apis to resolve.
43
30
  * Post this time, race execution and builder to pick whatever resolves first.
@@ -221,31 +208,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
221
208
  }
222
209
  return null;
223
210
  }
224
- /**
225
- * Reject any request while the node is syncing
226
- */
227
- function notWhileSyncing() {
228
- // Consider node synced before or close to genesis
229
- if (chain.clock.currentSlot < SLOTS_PER_EPOCH) {
230
- return;
231
- }
232
- const syncState = sync.state;
233
- switch (syncState) {
234
- case SyncState.SyncingFinalized:
235
- case SyncState.SyncingHead: {
236
- const currentSlot = chain.clock.currentSlot;
237
- const headSlot = chain.forkChoice.getHead().slot;
238
- if (currentSlot - headSlot > SYNC_TOLERANCE_EPOCHS * SLOTS_PER_EPOCH) {
239
- throw new NodeIsSyncing(`headSlot ${headSlot} currentSlot ${currentSlot}`);
240
- }
241
- return;
242
- }
243
- case SyncState.Synced:
244
- return;
245
- case SyncState.Stalled:
246
- throw new NodeIsSyncing("waiting for peers");
247
- }
248
- }
249
211
  /**
250
212
  * Post merge, the CL and EL could be out of step in the sync, and could result in
251
213
  * Syncing status of the chain head. To be precise:
@@ -402,7 +364,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
402
364
  async function produceEngineOrBuilderBlock(slot, randaoReveal, graffiti,
403
365
  // TODO deneb: skip randao verification
404
366
  _skipRandaoVerification, builderBoostFactor, { feeRecipient, builderSelection, strictFeeRecipientCheck } = {}) {
405
- notWhileSyncing();
367
+ notWhileSyncing(chain, sync.state);
406
368
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
407
369
  const parentBlock = chain.getProposerHead(slot);
408
370
  const { blockRoot: parentBlockRootHex, slot: parentSlot } = parentBlock;
@@ -675,7 +637,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
675
637
  if (!isForkPostGloas(fork)) {
676
638
  throw new ApiError(400, `produceBlockV4 not supported for pre-gloas fork=${fork}`);
677
639
  }
678
- notWhileSyncing();
640
+ notWhileSyncing(chain, sync.state);
679
641
  await waitForSlot(slot);
680
642
  const parentBlock = chain.getProposerHead(slot);
681
643
  const { blockRoot: parentBlockRootHex, slot: parentSlot } = parentBlock;
@@ -691,13 +653,17 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
691
653
  // support when it is implemented.
692
654
  const isBuildingOnFull = chain.forkChoice.shouldBuildOnFull(parentBlock, slot);
693
655
  const bidParentBlockHash = isBuildingOnFull ? parentBlock.executionPayloadBlockHash : parentBlock.parentBlockHash;
694
- const builderBid = chain.executionPayloadBidPool.getBestBid(slot, bidParentBlockHash, parentBlockRootHex);
656
+ const circuitBreakerActive = chain.builderCircuitBreaker.isActive(slot);
657
+ const builderBid = circuitBreakerActive
658
+ ? null
659
+ : chain.executionPayloadBidPool.getBestBid(slot, bidParentBlockHash, parentBlockRootHex);
695
660
  const logCtx = {
696
661
  slot,
697
662
  parentSlot,
698
663
  parentBlockRoot: parentBlockRootHex,
699
664
  parentBlockHash: parentBlock.executionPayloadBlockHash,
700
665
  fork,
666
+ circuitBreakerActive,
701
667
  ...(builderBid !== null
702
668
  ? {
703
669
  bidValue: builderBid.message.value,
@@ -776,7 +742,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
776
742
  };
777
743
  },
778
744
  async produceAttestationData({ committeeIndex, slot }) {
779
- notWhileSyncing();
745
+ notWhileSyncing(chain, sync.state);
780
746
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
781
747
  // This needs a state in the same epoch as `slot` such that state.currentJustifiedCheckpoint is correct.
782
748
  // Note: This may trigger an epoch transition if there skipped slots at the beginning of the epoch.
@@ -847,12 +813,12 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
847
813
  if (!isForkPostGloas(fork)) {
848
814
  throw new ApiError(400, `producePayloadAttestationData is not supported before Gloas fork=${fork}`);
849
815
  }
850
- notWhileSyncing();
816
+ notWhileSyncing(chain, sync.state);
851
817
  await waitForSlot(slot);
852
818
  const block = chain.forkChoice.getCanonicalBlockAtSlot(slot);
853
819
  if (!block) {
854
- // No block is seen at slot. Return 404 so vc can skip casting payload attestation.
855
- throw new ApiError(404, `No canonical block found at slot=${slot}`);
820
+ // No canonical block is seen at slot. Return 204 so vc can skip casting payload attestation.
821
+ return { data: undefined, meta: { version: fork }, status: 204 };
856
822
  }
857
823
  const payloadInput = chain.seenPayloadEnvelopeInputCache.get(block.blockRoot);
858
824
  // Spec: set payload_present only if the envelope was seen before get_payload_due_ms()
@@ -916,7 +882,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
916
882
  return { data: contribution };
917
883
  },
918
884
  async getProposerDuties({ epoch }, _context, opts) {
919
- notWhileSyncing();
885
+ notWhileSyncing(chain, sync.state);
920
886
  const currentEpoch = currentEpochWithDisparity();
921
887
  const nextEpoch = currentEpoch + 1;
922
888
  const startSlot = computeStartSlotAtEpoch(epoch);
@@ -958,7 +924,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
958
924
  state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
959
925
  }
960
926
  else {
961
- const res = await getStateResponseWithRegen(chain, startSlot);
927
+ const res = await getStateResponseWithRegen(chain, sync, startSlot);
962
928
  state = res.state instanceof Uint8Array ? chain.getHeadState().loadOtherState(res.state) : res.state;
963
929
  if (state.epoch !== epoch) {
964
930
  throw Error(`Loaded state epoch ${state.epoch} does not match requested epoch ${epoch}`);
@@ -1034,7 +1000,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1034
1000
  return this.getProposerDuties(args, context, { v2: true });
1035
1001
  },
1036
1002
  async getAttesterDuties({ epoch, indices }) {
1037
- notWhileSyncing();
1003
+ notWhileSyncing(chain, sync.state);
1038
1004
  if (indices.length === 0) {
1039
1005
  throw new ApiError(400, "No validator to get attester duties");
1040
1006
  }
@@ -1082,7 +1048,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1082
1048
  };
1083
1049
  },
1084
1050
  async getPtcDuties({ epoch, indices }) {
1085
- notWhileSyncing();
1051
+ notWhileSyncing(chain, sync.state);
1086
1052
  if (indices.length === 0) {
1087
1053
  throw new ApiError(400, "No validator to get PTC duties");
1088
1054
  }
@@ -1135,7 +1101,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1135
1101
  * @param validatorIndices an array of the validator indices for which to obtain the duties.
1136
1102
  */
1137
1103
  async getSyncCommitteeDuties({ epoch, indices }) {
1138
- notWhileSyncing();
1104
+ notWhileSyncing(chain, sync.state);
1139
1105
  if (indices.length === 0) {
1140
1106
  throw new ApiError(400, "No validator to get attester duties");
1141
1107
  }
@@ -1175,7 +1141,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1175
1141
  };
1176
1142
  },
1177
1143
  async getAggregatedAttestationV2({ attestationDataRoot, slot, committeeIndex }) {
1178
- notWhileSyncing();
1144
+ notWhileSyncing(chain, sync.state);
1179
1145
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
1180
1146
  const dataRootHex = toRootHex(attestationDataRoot);
1181
1147
  const aggregate = chain.attestationPool.getAggregate(slot, dataRootHex, committeeIndex);
@@ -1189,7 +1155,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1189
1155
  };
1190
1156
  },
1191
1157
  async publishAggregateAndProofsV2({ signedAggregateAndProofs }) {
1192
- notWhileSyncing();
1158
+ notWhileSyncing(chain, sync.state);
1193
1159
  const seenTimestampSec = Date.now() / 1000;
1194
1160
  const failures = [];
1195
1161
  const fork = chain.config.getForkName(chain.clock.currentSlot);
@@ -1235,7 +1201,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1235
1201
  * https://github.com/ethereum/beacon-APIs/pull/137
1236
1202
  */
1237
1203
  async publishContributionAndProofs({ contributionAndProofs }) {
1238
- notWhileSyncing();
1204
+ notWhileSyncing(chain, sync.state);
1239
1205
  const failures = [];
1240
1206
  await Promise.all(contributionAndProofs.map(async (contributionAndProof, i) => {
1241
1207
  try {
@@ -1268,7 +1234,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1268
1234
  }
1269
1235
  },
1270
1236
  async prepareBeaconCommitteeSubnet({ subscriptions }) {
1271
- notWhileSyncing();
1237
+ notWhileSyncing(chain, sync.state);
1272
1238
  await network.prepareBeaconCommitteeSubnets(subscriptions.map(({ validatorIndex, slot, isAggregator, committeesAtSlot, committeeIndex }) => ({
1273
1239
  validatorIndex: validatorIndex,
1274
1240
  subnet: computeSubnetForCommitteesAtSlot(slot, committeesAtSlot, committeeIndex),
@@ -1295,7 +1261,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1295
1261
  * https://github.com/ethereum/beacon-APIs/pull/136
1296
1262
  */
1297
1263
  async prepareSyncCommitteeSubnets({ subscriptions }) {
1298
- notWhileSyncing();
1264
+ notWhileSyncing(chain, sync.state);
1299
1265
  // A `validatorIndex` can be in multiple subnets, so compute the CommitteeSubscription with double for loop
1300
1266
  const subs = [];
1301
1267
  for (const sub of subscriptions) {
@@ -1370,12 +1336,45 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1370
1336
  count: filteredRegistrations.length,
1371
1337
  });
1372
1338
  },
1339
+ async submitProposerPreferences({ signedProposerPreferences }) {
1340
+ const failures = [];
1341
+ await Promise.all(signedProposerPreferences.map(async (signed, i) => {
1342
+ try {
1343
+ await validateGossipProposerPreferences(chain, signed);
1344
+ chain.proposerPreferencesPool.add(signed);
1345
+ await network.publishProposerPreferences(signed);
1346
+ chain.emitter.emit(routes.events.EventType.proposerPreferences, {
1347
+ version: config.getForkName(signed.message.proposalSlot),
1348
+ data: signed,
1349
+ });
1350
+ }
1351
+ catch (e) {
1352
+ const logCtx = {
1353
+ slot: signed.message.proposalSlot,
1354
+ validatorIndex: signed.message.validatorIndex,
1355
+ dependentRoot: toRootHex(signed.message.dependentRoot),
1356
+ };
1357
+ if (e instanceof ProposerPreferencesError && e.type.code === ProposerPreferencesErrorCode.ALREADY_KNOWN) {
1358
+ logger.debug("Ignoring known signed proposer preferences", logCtx);
1359
+ return;
1360
+ }
1361
+ failures.push({ index: i, message: e.message });
1362
+ logger.verbose(`Error on submitProposerPreferences [${i}]`, logCtx, e);
1363
+ if (e instanceof ProposerPreferencesError && e.action === GossipAction.REJECT) {
1364
+ chain.persistInvalidSszValue(ssz.gloas.SignedProposerPreferences, signed, "api_reject");
1365
+ }
1366
+ }
1367
+ }));
1368
+ if (failures.length > 0) {
1369
+ throw new IndexedError("Error processing signed proposer preferences", failures);
1370
+ }
1371
+ },
1373
1372
  async getExecutionPayloadEnvelope({ slot, beaconBlockRoot }) {
1374
1373
  const fork = config.getForkName(slot);
1375
1374
  if (!isForkPostGloas(fork)) {
1376
1375
  throw new ApiError(400, `getExecutionPayloadEnvelope not supported for pre-gloas fork=${fork}`);
1377
1376
  }
1378
- notWhileSyncing();
1377
+ notWhileSyncing(chain, sync.state);
1379
1378
  await waitForSlot(slot);
1380
1379
  const blockRootHex = toRootHex(beaconBlockRoot);
1381
1380
  const produceResult = chain.blockProductionCache.get(blockRootHex);