@lodestar/beacon-node 1.50.0-dev.c04a499311 → 1.50.0-dev.c24762bc60

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 (228) hide show
  1. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/index.js +13 -0
  3. package/lib/api/impl/beacon/index.js.map +1 -1
  4. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/state/index.js +28 -6
  6. package/lib/api/impl/beacon/state/index.js.map +1 -1
  7. package/lib/api/impl/debug/index.d.ts.map +1 -1
  8. package/lib/api/impl/debug/index.js +26 -18
  9. package/lib/api/impl/debug/index.js.map +1 -1
  10. package/lib/api/impl/validator/index.d.ts.map +1 -1
  11. package/lib/api/impl/validator/index.js +32 -0
  12. package/lib/api/impl/validator/index.js.map +1 -1
  13. package/lib/chain/archiveStore/archiveStore.d.ts +5 -0
  14. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  15. package/lib/chain/archiveStore/archiveStore.js +13 -23
  16. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  17. package/lib/chain/archiveStore/utils/pruneHistory.d.ts +1 -1
  18. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -1
  19. package/lib/chain/archiveStore/utils/pruneHistory.js +2 -1
  20. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  21. package/lib/chain/beaconProposerCache.d.ts +6 -0
  22. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  23. package/lib/chain/beaconProposerCache.js +16 -0
  24. package/lib/chain/beaconProposerCache.js.map +1 -1
  25. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  26. package/lib/chain/blocks/importBlock.js +14 -8
  27. package/lib/chain/blocks/importBlock.js.map +1 -1
  28. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  29. package/lib/chain/blocks/verifyBlock.js +6 -6
  30. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  31. package/lib/chain/chain.d.ts +5 -1
  32. package/lib/chain/chain.d.ts.map +1 -1
  33. package/lib/chain/chain.js +73 -20
  34. package/lib/chain/chain.js.map +1 -1
  35. package/lib/chain/interface.d.ts +3 -0
  36. package/lib/chain/interface.d.ts.map +1 -1
  37. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -2
  38. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  39. package/lib/chain/opPools/aggregatedAttestationPool.js +30 -8
  40. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  41. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  42. package/lib/chain/opPools/opPool.js +1 -23
  43. package/lib/chain/opPools/opPool.js.map +1 -1
  44. package/lib/chain/opPools/proposerPreferencesPool.d.ts +8 -4
  45. package/lib/chain/opPools/proposerPreferencesPool.d.ts.map +1 -1
  46. package/lib/chain/opPools/proposerPreferencesPool.js +27 -12
  47. package/lib/chain/opPools/proposerPreferencesPool.js.map +1 -1
  48. package/lib/chain/opPools/utils.d.ts +11 -0
  49. package/lib/chain/opPools/utils.d.ts.map +1 -1
  50. package/lib/chain/opPools/utils.js +22 -0
  51. package/lib/chain/opPools/utils.js.map +1 -1
  52. package/lib/chain/options.d.ts +1 -0
  53. package/lib/chain/options.d.ts.map +1 -1
  54. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  55. package/lib/chain/prepareNextSlot.js +11 -3
  56. package/lib/chain/prepareNextSlot.js.map +1 -1
  57. package/lib/chain/produceBlock/produceBlockBody.d.ts +8 -0
  58. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  59. package/lib/chain/produceBlock/produceBlockBody.js +40 -28
  60. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  61. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -0
  62. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  63. package/lib/chain/seenCache/seenGossipBlockInput.js +21 -0
  64. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  65. package/lib/chain/shufflingCache.d.ts +18 -8
  66. package/lib/chain/shufflingCache.d.ts.map +1 -1
  67. package/lib/chain/shufflingCache.js +72 -18
  68. package/lib/chain/shufflingCache.js.map +1 -1
  69. package/lib/db/beacon.d.ts +4 -1
  70. package/lib/db/beacon.d.ts.map +1 -1
  71. package/lib/db/beacon.js +6 -1
  72. package/lib/db/beacon.js.map +1 -1
  73. package/lib/db/buckets.d.ts +3 -1
  74. package/lib/db/buckets.d.ts.map +1 -1
  75. package/lib/db/buckets.js +2 -0
  76. package/lib/db/buckets.js.map +1 -1
  77. package/lib/db/interface.d.ts +4 -1
  78. package/lib/db/interface.d.ts.map +1 -1
  79. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  80. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  81. package/lib/db/repositories/earliestAvailableSlot.d.ts +11 -0
  82. package/lib/db/repositories/earliestAvailableSlot.d.ts.map +1 -0
  83. package/lib/db/repositories/earliestAvailableSlot.js +19 -0
  84. package/lib/db/repositories/earliestAvailableSlot.js.map +1 -0
  85. package/lib/db/repositories/index.d.ts +1 -0
  86. package/lib/db/repositories/index.d.ts.map +1 -1
  87. package/lib/db/repositories/index.js +1 -0
  88. package/lib/db/repositories/index.js.map +1 -1
  89. package/lib/db/repositories/proposerPreferences.d.ts +14 -0
  90. package/lib/db/repositories/proposerPreferences.d.ts.map +1 -0
  91. package/lib/db/repositories/proposerPreferences.js +21 -0
  92. package/lib/db/repositories/proposerPreferences.js.map +1 -0
  93. package/lib/execution/engine/blobVersionedHashes.d.ts +9 -0
  94. package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -0
  95. package/lib/execution/engine/blobVersionedHashes.js +74 -0
  96. package/lib/execution/engine/blobVersionedHashes.js.map +1 -0
  97. package/lib/execution/engine/http.d.ts +45 -13
  98. package/lib/execution/engine/http.d.ts.map +1 -1
  99. package/lib/execution/engine/http.js +236 -198
  100. package/lib/execution/engine/http.js.map +1 -1
  101. package/lib/execution/engine/index.d.ts +3 -2
  102. package/lib/execution/engine/index.d.ts.map +1 -1
  103. package/lib/execution/engine/index.js +33 -8
  104. package/lib/execution/engine/index.js.map +1 -1
  105. package/lib/execution/engine/interface.d.ts +1 -1
  106. package/lib/execution/engine/interface.d.ts.map +1 -1
  107. package/lib/execution/engine/jsonRpcTransport.d.ts +25 -0
  108. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -0
  109. package/lib/execution/engine/jsonRpcTransport.js +158 -0
  110. package/lib/execution/engine/jsonRpcTransport.js.map +1 -0
  111. package/lib/execution/engine/restHttpClient.d.ts +71 -0
  112. package/lib/execution/engine/restHttpClient.d.ts.map +1 -0
  113. package/lib/execution/engine/restHttpClient.js +201 -0
  114. package/lib/execution/engine/restHttpClient.js.map +1 -0
  115. package/lib/execution/engine/restTransport.d.ts +46 -0
  116. package/lib/execution/engine/restTransport.d.ts.map +1 -0
  117. package/lib/execution/engine/restTransport.js +399 -0
  118. package/lib/execution/engine/restTransport.js.map +1 -0
  119. package/lib/execution/engine/sszTypes.d.ts +1261 -0
  120. package/lib/execution/engine/sszTypes.d.ts.map +1 -0
  121. package/lib/execution/engine/sszTypes.js +216 -0
  122. package/lib/execution/engine/sszTypes.js.map +1 -0
  123. package/lib/execution/engine/transport.d.ts +39 -0
  124. package/lib/execution/engine/transport.d.ts.map +1 -0
  125. package/lib/execution/engine/transport.js +2 -0
  126. package/lib/execution/engine/transport.js.map +1 -0
  127. package/lib/execution/engine/types.d.ts +2 -0
  128. package/lib/execution/engine/types.d.ts.map +1 -1
  129. package/lib/execution/engine/types.js +24 -57
  130. package/lib/execution/engine/types.js.map +1 -1
  131. package/lib/execution/engine/utils.d.ts.map +1 -1
  132. package/lib/execution/engine/utils.js +9 -2
  133. package/lib/execution/engine/utils.js.map +1 -1
  134. package/lib/metrics/metrics/lodestar.d.ts +10 -0
  135. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  136. package/lib/metrics/metrics/lodestar.js +22 -0
  137. package/lib/metrics/metrics/lodestar.js.map +1 -1
  138. package/lib/network/core/events.d.ts +5 -1
  139. package/lib/network/core/events.d.ts.map +1 -1
  140. package/lib/network/core/events.js +8 -0
  141. package/lib/network/core/events.js.map +1 -1
  142. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  143. package/lib/network/processor/gossipHandlers.js +60 -64
  144. package/lib/network/processor/gossipHandlers.js.map +1 -1
  145. package/lib/node/nodejs.d.ts +3 -1
  146. package/lib/node/nodejs.d.ts.map +1 -1
  147. package/lib/node/nodejs.js +2 -1
  148. package/lib/node/nodejs.js.map +1 -1
  149. package/lib/node/options.d.ts +3 -2
  150. package/lib/node/options.d.ts.map +1 -1
  151. package/lib/node/options.js +2 -2
  152. package/lib/node/options.js.map +1 -1
  153. package/lib/sync/range/batch.d.ts +5 -5
  154. package/lib/sync/range/batch.d.ts.map +1 -1
  155. package/lib/sync/range/batch.js +11 -17
  156. package/lib/sync/range/batch.js.map +1 -1
  157. package/lib/sync/range/chain.d.ts +4 -4
  158. package/lib/sync/range/chain.d.ts.map +1 -1
  159. package/lib/sync/range/chain.js +9 -5
  160. package/lib/sync/range/chain.js.map +1 -1
  161. package/lib/sync/range/range.d.ts.map +1 -1
  162. package/lib/sync/range/range.js +25 -11
  163. package/lib/sync/range/range.js.map +1 -1
  164. package/lib/sync/unknownBlock.d.ts +5 -2
  165. package/lib/sync/unknownBlock.d.ts.map +1 -1
  166. package/lib/sync/unknownBlock.js +44 -20
  167. package/lib/sync/unknownBlock.js.map +1 -1
  168. package/lib/sync/utils/downloadByRange.d.ts +38 -14
  169. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  170. package/lib/sync/utils/downloadByRange.js +84 -39
  171. package/lib/sync/utils/downloadByRange.js.map +1 -1
  172. package/lib/util/asyncIterableToEvents.d.ts +10 -2
  173. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  174. package/lib/util/asyncIterableToEvents.js +29 -3
  175. package/lib/util/asyncIterableToEvents.js.map +1 -1
  176. package/lib/util/metadata.d.ts.map +1 -1
  177. package/lib/util/metadata.js +2 -1
  178. package/lib/util/metadata.js.map +1 -1
  179. package/package.json +17 -16
  180. package/src/api/impl/beacon/index.ts +15 -0
  181. package/src/api/impl/beacon/state/index.ts +43 -6
  182. package/src/api/impl/debug/index.ts +28 -19
  183. package/src/api/impl/validator/index.ts +45 -0
  184. package/src/chain/archiveStore/archiveStore.ts +18 -24
  185. package/src/chain/archiveStore/utils/pruneHistory.ts +4 -1
  186. package/src/chain/beaconProposerCache.ts +19 -1
  187. package/src/chain/blocks/importBlock.ts +17 -7
  188. package/src/chain/blocks/verifyBlock.ts +7 -6
  189. package/src/chain/chain.ts +97 -19
  190. package/src/chain/interface.ts +3 -0
  191. package/src/chain/opPools/aggregatedAttestationPool.ts +34 -10
  192. package/src/chain/opPools/opPool.ts +1 -31
  193. package/src/chain/opPools/proposerPreferencesPool.ts +34 -11
  194. package/src/chain/opPools/utils.ts +31 -0
  195. package/src/chain/options.ts +1 -1
  196. package/src/chain/prepareNextSlot.ts +15 -3
  197. package/src/chain/produceBlock/produceBlockBody.ts +68 -34
  198. package/src/chain/seenCache/seenGossipBlockInput.ts +23 -0
  199. package/src/chain/shufflingCache.ts +84 -22
  200. package/src/db/beacon.ts +6 -0
  201. package/src/db/buckets.ts +2 -0
  202. package/src/db/interface.ts +4 -0
  203. package/src/db/repositories/earliestAvailableSlot.ts +19 -0
  204. package/src/db/repositories/index.ts +1 -0
  205. package/src/db/repositories/proposerPreferences.ts +23 -0
  206. package/src/execution/engine/blobVersionedHashes.ts +72 -0
  207. package/src/execution/engine/http.ts +304 -271
  208. package/src/execution/engine/index.ts +41 -7
  209. package/src/execution/engine/interface.ts +1 -1
  210. package/src/execution/engine/jsonRpcTransport.ts +247 -0
  211. package/src/execution/engine/restHttpClient.ts +269 -0
  212. package/src/execution/engine/restTransport.ts +544 -0
  213. package/src/execution/engine/sszTypes.ts +354 -0
  214. package/src/execution/engine/transport.ts +61 -0
  215. package/src/execution/engine/types.ts +34 -74
  216. package/src/execution/engine/utils.ts +12 -2
  217. package/src/metrics/metrics/lodestar.ts +23 -0
  218. package/src/network/core/events.ts +16 -1
  219. package/src/network/processor/gossipHandlers.ts +91 -77
  220. package/src/node/nodejs.ts +4 -0
  221. package/src/node/options.ts +10 -1
  222. package/src/sync/range/batch.ts +14 -19
  223. package/src/sync/range/chain.ts +12 -7
  224. package/src/sync/range/range.ts +26 -12
  225. package/src/sync/unknownBlock.ts +57 -21
  226. package/src/sync/utils/downloadByRange.ts +123 -58
  227. package/src/util/asyncIterableToEvents.ts +44 -5
  228. package/src/util/metadata.ts +2 -1
@@ -1,13 +1,17 @@
1
- import { ForkName, ForkSeq, SLOTS_PER_EPOCH, isForkPostFulu } from "@lodestar/params";
2
- import { strip0xPrefix } from "@lodestar/utils";
1
+ import { ForkName, ForkSeq, SLOTS_PER_EPOCH, isForkPostBellatrix, isForkPostFulu, } from "@lodestar/params";
2
+ import { isErrorAborted } from "@lodestar/utils";
3
3
  import { EPOCHS_PER_BATCH } from "../../sync/constants.js";
4
4
  import { getLodestarClientVersion } from "../../util/metadata.js";
5
+ import { isQueueErrorAborted } from "../../util/queue/errors.js";
5
6
  import { JobItemQueue } from "../../util/queue/index.js";
6
- import { ClientCode, ExecutionEngineState, ExecutionPayloadStatus, } from "./interface.js";
7
- import { ErrorJsonRpcResponse, HttpRpcError, JsonRpcHttpClientEvent, } from "./jsonRpcHttpClient.js";
7
+ import { ExecutionEngineState, ExecutionPayloadStatus, } from "./interface.js";
8
+ import { ErrorJsonRpcResponse, HttpRpcError, JsonRpcHttpClientEvent } from "./jsonRpcHttpClient.js";
8
9
  import { PayloadIdCache } from "./payloadIdCache.js";
9
- import { BLOB_AND_PROOF_V2_RPC_BYTES, assertReqSizeLimit, deserializeBlobAndProofs, deserializeBlobAndProofsV2, deserializeBlobAndProofsV2IntoBytes, deserializeExecutionPayloadBodyV2, parseExecutionPayload, serializeBeaconBlockRoot, serializeExecutionPayload, serializeExecutionRequests, serializePayloadAttributes, serializeVersionedHashes, } from "./types.js";
10
- import { bytesToData, getExecutionEngineState } from "./utils.js";
10
+ import { EngineRestError, EngineRestResponseError, isRetryableEngineRestError } from "./restHttpClient.js";
11
+ import { executionForkName } from "./sszTypes.js";
12
+ import { serializePayloadAttributes } from "./types.js";
13
+ import { getExecutionEngineState } from "./utils.js";
14
+ export const engineApiModes = ["auto", "ssz", "json-rpc"];
11
15
  export const defaultExecutionEngineHttpOpts = {
12
16
  /**
13
17
  * By default ELs host engine api on an auth protected 8551 port, would need a jwt secret to be
@@ -18,37 +22,26 @@ export const defaultExecutionEngineHttpOpts = {
18
22
  retries: 2,
19
23
  retryDelay: 2000,
20
24
  timeout: 12000,
25
+ engineApi: "auto",
21
26
  };
22
27
  /**
23
28
  * Size for the serializing queue for fcUs and new payloads, the max length could be equal to
24
29
  * EPOCHS_PER_BATCH * 2 in case new payloads are also not awaited serially
25
30
  */
26
31
  const QUEUE_MAX_LENGTH = EPOCHS_PER_BATCH * SLOTS_PER_EPOCH * 2;
32
+ /** Minimum delay between capabilities probes while the execution client is unreachable */
33
+ const REST_PROBE_RETRY_MS = 12_000;
27
34
  /**
28
- * Maximum number of version hashes that can be sent in a getBlobs request
29
- * Clients must support at least 128 versionedHashes, so we avoid sending more
30
- * https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#specification-3
31
- */
32
- const MAX_VERSIONED_HASHES = 128;
33
- // Define static options once to prevent extra allocations
34
- const notifyNewPayloadOpts = { routeId: "notifyNewPayload" };
35
- const forkchoiceUpdatedV1Opts = { routeId: "forkchoiceUpdated" };
36
- const getPayloadOpts = { routeId: "getPayload" };
37
- const getPayloadBodiesByHashOpts = { routeId: "getPayloadBodiesByHash" };
38
- const getBlobsV1Opts = { routeId: "getBlobsV1" };
39
- const getBlobsV2Opts = { routeId: "getBlobsV2" };
40
- const getClientVersionOpts = { routeId: "getClientVersion" };
41
- /**
42
- * based on Ethereum JSON-RPC API and inherits the following properties of this standard:
43
- * - Supported communication protocols (HTTP and WebSocket)
44
- * - Message format and encoding notation
45
- * - Error codes improvement proposal
35
+ * Drives the execution client over the engine API, either the legacy `engine_*` JSON-RPC methods
36
+ * or the REST API with SSZ encoded bodies.
37
+ * https://github.com/ethereum/execution-apis/tree/main/src/engine
46
38
  *
47
- * Client software MUST expose Engine API at a port independent from JSON-RPC API. The default port for the Engine API is 8550 for HTTP and 8551 for WebSocket.
48
- * https://github.com/ethereum/execution-apis/blob/v1.0.0-alpha.1/src/engine/interop/specification.md
39
+ * In `auto` mode a capabilities response from a server without the REST API, a 4xx other than
40
+ * 401/403, selects JSON-RPC until the EL reconnects. Transient discovery failures use JSON-RPC while
41
+ * awaiting another probe; authentication failures fail visibly, malformed capabilities fall back to
42
+ * JSON-RPC with a warning. Forks and blob revisions the EL does not advertise also use JSON-RPC.
49
43
  */
50
44
  export class ExecutionEngineHttp {
51
- rpc;
52
45
  opts;
53
46
  logger;
54
47
  metrics;
@@ -68,29 +61,41 @@ export class ExecutionEngineHttp {
68
61
  * the order of new payloads and fcUs is pretty important to EL, this queue will serialize the calls in the
69
62
  * order with which we make them.
70
63
  */
71
- rpcFetchQueue;
72
- jobQueueProcessor = async ({ method, params, methodOpts }) => {
73
- return this.rpc.fetchWithRetries({ method, params }, methodOpts);
74
- };
75
- constructor(rpc, { metrics, signal, logger }, opts) {
76
- this.rpc = rpc;
64
+ queue;
65
+ jsonRpc;
66
+ rest;
67
+ engineApi;
68
+ restSupport = { state: "pending" };
69
+ restProbe = null;
70
+ lastRestProbeMs = Number.NEGATIVE_INFINITY;
71
+ loggedRestFallbacks = new Set();
72
+ constructor({ jsonRpc, rest }, { metrics, signal, logger }, opts) {
77
73
  this.opts = opts;
78
- this.rpcFetchQueue = new JobItemQueue(this.jobQueueProcessor, { maxLength: QUEUE_MAX_LENGTH, maxConcurrency: 1, noYieldIfOneItem: true, signal }, metrics?.engineHttpProcessorQueue);
74
+ this.queue = new JobItemQueue((job) => job(), { maxLength: QUEUE_MAX_LENGTH, maxConcurrency: 1, noYieldIfOneItem: true, signal }, metrics?.engineHttpProcessorQueue);
79
75
  this.logger = logger;
80
76
  this.metrics = metrics ?? null;
81
- this.rpc.emitter.on(JsonRpcHttpClientEvent.ERROR, ({ error }) => {
82
- this.updateEngineState(getExecutionEngineState({ payloadError: error, oldState: this.state }));
83
- });
84
- this.rpc.emitter.on(JsonRpcHttpClientEvent.RESPONSE, () => {
85
- if (this.clientVersion === undefined) {
86
- this.clientVersion = null;
87
- // This statement should only be called first time receiving response after startup
88
- this.getClientVersion(getLodestarClientVersion(this.opts)).catch((e) => {
89
- this.logger.debug("Unable to get execution client version", {}, e);
90
- });
91
- }
92
- this.updateEngineState(getExecutionEngineState({ targetState: ExecutionEngineState.ONLINE, oldState: this.state }));
77
+ this.jsonRpc = jsonRpc;
78
+ this.rest = rest ?? null;
79
+ this.engineApi = opts?.engineApi ?? "auto";
80
+ if (this.engineApi === "ssz" && this.rest === null) {
81
+ throw Error("REST transport is required for engineApi=ssz");
82
+ }
83
+ // REST errors are handled in withTransport after compatibility fallback.
84
+ this.jsonRpc.emitter.on(JsonRpcHttpClientEvent.ERROR, ({ error }) => {
85
+ this.updateEngineState(getExecutionEngineState({ payloadError: error, oldState: this.state }), error);
93
86
  });
87
+ for (const transport of [this.jsonRpc, this.rest]) {
88
+ transport?.emitter.on(JsonRpcHttpClientEvent.RESPONSE, () => {
89
+ if (this.clientVersion === undefined) {
90
+ this.clientVersion = null;
91
+ // This statement should only be called first time receiving response after startup
92
+ this.getClientVersion(getLodestarClientVersion(this.opts)).catch((e) => {
93
+ this.logger.debug("Unable to get execution client version", {}, e);
94
+ });
95
+ }
96
+ this.updateEngineState(getExecutionEngineState({ targetState: ExecutionEngineState.ONLINE, oldState: this.state }));
97
+ });
98
+ }
94
99
  }
95
100
  /**
96
101
  * `engine_newPayloadV1`
@@ -115,17 +120,7 @@ export class ExecutionEngineHttp {
115
120
  * If any of the above fails due to errors unrelated to the normal processing flow of the method, client software MUST respond with an error object.
116
121
  */
117
122
  async notifyNewPayload(fork, executionPayload, versionedHashes, parentBlockRoot, executionRequests) {
118
- const method = ForkSeq[fork] >= ForkSeq.gloas
119
- ? "engine_newPayloadV5"
120
- : ForkSeq[fork] >= ForkSeq.electra
121
- ? "engine_newPayloadV4"
122
- : ForkSeq[fork] >= ForkSeq.deneb
123
- ? "engine_newPayloadV3"
124
- : ForkSeq[fork] >= ForkSeq.capella
125
- ? "engine_newPayloadV2"
126
- : "engine_newPayloadV1";
127
- const serializedExecutionPayload = serializeExecutionPayload(fork, executionPayload);
128
- let engineRequest;
123
+ // Validate before queueing, argument errors must not be reported as an unavailable execution client
129
124
  if (ForkSeq[fork] >= ForkSeq.deneb) {
130
125
  if (versionedHashes === undefined) {
131
126
  throw Error(`versionedHashes required in notifyNewPayload for fork=${fork}`);
@@ -133,46 +128,26 @@ export class ExecutionEngineHttp {
133
128
  if (parentBlockRoot === undefined) {
134
129
  throw Error(`parentBlockRoot required in notifyNewPayload for fork=${fork}`);
135
130
  }
136
- const serializedVersionedHashes = serializeVersionedHashes(versionedHashes);
137
- const parentBeaconBlockRoot = serializeBeaconBlockRoot(parentBlockRoot);
138
- if (ForkSeq[fork] >= ForkSeq.electra) {
139
- if (executionRequests === undefined) {
140
- throw Error(`executionRequests required in notifyNewPayload for fork=${fork}`);
141
- }
142
- const serializedExecutionRequests = serializeExecutionRequests(fork, executionRequests);
143
- engineRequest = {
144
- method: ForkSeq[fork] >= ForkSeq.gloas ? "engine_newPayloadV5" : "engine_newPayloadV4",
145
- params: [
146
- serializedExecutionPayload,
147
- serializedVersionedHashes,
148
- parentBeaconBlockRoot,
149
- serializedExecutionRequests,
150
- ],
151
- methodOpts: notifyNewPayloadOpts,
152
- };
153
- }
154
- else {
155
- engineRequest = {
156
- method: "engine_newPayloadV3",
157
- params: [serializedExecutionPayload, serializedVersionedHashes, parentBeaconBlockRoot],
158
- methodOpts: notifyNewPayloadOpts,
159
- };
131
+ if (ForkSeq[fork] >= ForkSeq.electra && executionRequests === undefined) {
132
+ throw Error(`executionRequests required in notifyNewPayload for fork=${fork}`);
160
133
  }
161
134
  }
162
- else {
163
- const method = ForkSeq[fork] >= ForkSeq.capella ? "engine_newPayloadV2" : "engine_newPayloadV1";
164
- engineRequest = {
165
- method,
166
- params: [serializedExecutionPayload],
167
- methodOpts: notifyNewPayloadOpts,
168
- };
135
+ let result;
136
+ try {
137
+ result = await this.enqueue(() => this.withTransport(fork, undefined, (transport) => transport.newPayload(fork, executionPayload, versionedHashes, parentBlockRoot, executionRequests)));
169
138
  }
170
- const { status, latestValidHash, validationError } = await this.rpcFetchQueue.push(engineRequest).catch((e) => {
171
- if (e instanceof HttpRpcError || e instanceof ErrorJsonRpcResponse) {
172
- return { status: ExecutionPayloadStatus.ELERROR, latestValidHash: null, validationError: e.message };
173
- }
174
- return { status: ExecutionPayloadStatus.UNAVAILABLE, latestValidHash: null, validationError: e.message };
175
- });
139
+ catch (e) {
140
+ const status = isEngineResponseError(e)
141
+ ? ExecutionPayloadStatus.ELERROR
142
+ : ExecutionPayloadStatus.UNAVAILABLE;
143
+ // Only newPayload treats an unreachable execution client, including a timeout, as offline
144
+ const newState = status === ExecutionPayloadStatus.UNAVAILABLE && !isErrorAborted(e) && !isQueueErrorAborted(e)
145
+ ? getExecutionEngineState({ payloadStatus: status, oldState: this.state })
146
+ : getExecutionEngineState({ payloadError: e, oldState: this.state });
147
+ this.updateEngineState(newState, e);
148
+ return { status, latestValidHash: null, validationError: e.message };
149
+ }
150
+ const { status, latestValidHash, validationError } = result;
176
151
  this.updateEngineState(getExecutionEngineState({ payloadStatus: status, oldState: this.state }));
177
152
  switch (status) {
178
153
  case ExecutionPayloadStatus.VALID:
@@ -227,38 +202,21 @@ export class ExecutionEngineHttp {
227
202
  * If any of the above fails due to errors unrelated to the normal processing flow of the method, client software MUST respond with an error object.
228
203
  */
229
204
  async notifyForkchoiceUpdate(fork, headBlockHash, safeBlockHash, finalizedBlockHash, payloadAttributes) {
230
- // Once on capella, should this need to be permanently switched to v2 when payload attrs
231
- // not provided
232
- const method = ForkSeq[fork] >= ForkSeq.gloas
233
- ? "engine_forkchoiceUpdatedV4"
234
- : ForkSeq[fork] >= ForkSeq.deneb
235
- ? "engine_forkchoiceUpdatedV3"
236
- : ForkSeq[fork] >= ForkSeq.capella
237
- ? "engine_forkchoiceUpdatedV2"
238
- : "engine_forkchoiceUpdatedV1";
239
- const payloadAttributesRpc = payloadAttributes ? serializePayloadAttributes(payloadAttributes) : undefined;
240
- // If we are just fcUing and not asking execution for payload, retry is not required
241
- // and we can move on, as the next fcU will be issued soon on the new slot
242
- const fcUReqOpts = payloadAttributes !== undefined ? forkchoiceUpdatedV1Opts : { ...forkchoiceUpdatedV1Opts, retries: 0 };
243
- const request = this.rpcFetchQueue.push({
244
- method,
245
- params: [{ headBlockHash, safeBlockHash, finalizedBlockHash }, payloadAttributesRpc],
246
- methodOpts: fcUReqOpts,
247
- });
248
- const { payloadStatus: { status, latestValidHash: _latestValidHash, validationError }, payloadId, } = await request;
205
+ const { payloadStatus: { status, validationError }, payloadId, } = await this.enqueue(() => this.withTransport(fork, undefined, (transport) => transport.forkchoiceUpdated(fork, headBlockHash, safeBlockHash, finalizedBlockHash, payloadAttributes)));
249
206
  this.updateEngineState(getExecutionEngineState({ payloadStatus: status, oldState: this.state }));
250
207
  this.metrics?.engineNotifyForkchoiceUpdateResult.inc({ result: status });
251
208
  switch (status) {
252
209
  case ExecutionPayloadStatus.VALID:
253
210
  // if payloadAttributes are provided, a valid payloadId is expected
254
- if (payloadAttributesRpc) {
255
- if (!payloadId || payloadId === "0x") {
211
+ if (payloadAttributes) {
212
+ if (payloadId === null) {
256
213
  throw Error(`Received invalid payloadId=${payloadId}`);
257
214
  }
215
+ const payloadAttributesRpc = serializePayloadAttributes(payloadAttributes);
258
216
  this.payloadIdCache.add({ headBlockHash, finalizedBlockHash, ...payloadAttributesRpc }, payloadId);
259
217
  void this.prunePayloadIdCache();
260
218
  }
261
- return payloadId !== "0x" ? payloadId : null;
219
+ return payloadId;
262
220
  case ExecutionPayloadStatus.SYNCING:
263
221
  // Throw error on syncing if requested to produce a block, else silently ignore
264
222
  if (payloadAttributes) {
@@ -279,104 +237,154 @@ export class ExecutionEngineHttp {
279
237
  * 3. Client software MAY stop the corresponding building process after serving this call.
280
238
  */
281
239
  async getPayload(fork, payloadId) {
282
- let method;
283
- switch (fork) {
284
- case ForkName.phase0:
285
- case ForkName.altair:
286
- case ForkName.bellatrix:
287
- method = "engine_getPayloadV1";
288
- break;
289
- case ForkName.capella:
290
- method = "engine_getPayloadV2";
291
- break;
292
- case ForkName.deneb:
293
- method = "engine_getPayloadV3";
294
- break;
295
- case ForkName.electra:
296
- method = "engine_getPayloadV4";
297
- break;
298
- case ForkName.fulu:
299
- method = "engine_getPayloadV5";
300
- break;
301
- default:
302
- method = "engine_getPayloadV6";
303
- break;
304
- }
305
- const payloadResponse = await this.rpc.fetchWithRetries({
306
- method,
307
- params: [payloadId],
308
- }, getPayloadOpts);
309
- return parseExecutionPayload(fork, payloadResponse);
240
+ return this.withTransport(fork, undefined, (transport) => transport.getPayload(fork, payloadId));
310
241
  }
311
242
  async prunePayloadIdCache() {
312
243
  this.payloadIdCache.prune();
313
244
  }
314
245
  async getPayloadBodiesByHashV2(blockHashes) {
315
- const method = "engine_getPayloadBodiesByHashV2";
316
- assertReqSizeLimit(blockHashes.length, 32);
317
- const response = await this.rpc.fetchWithRetries({ method, params: [blockHashes] }, getPayloadBodiesByHashOpts);
318
- return response.map(deserializeExecutionPayloadBodyV2);
246
+ return this.withTransport(ForkName.gloas, undefined, (transport) => transport.getPayloadBodiesByHashV2(blockHashes));
319
247
  }
320
248
  async getBlobs(fork, versionedHashes, buffers) {
321
- assertReqSizeLimit(versionedHashes.length, MAX_VERSIONED_HASHES);
322
- const versionedHashesHex = versionedHashes.map(bytesToData);
323
249
  if (isForkPostFulu(fork)) {
324
- return await this.getBlobsV2(versionedHashesHex, buffers);
250
+ return this.withTransport(undefined, "v2", (transport) => transport.getBlobsV2(versionedHashes, buffers));
325
251
  }
326
- return await this.getBlobsV1(versionedHashesHex);
252
+ return this.withTransport(undefined, "v1", (transport) => transport.getBlobsV1(versionedHashes));
327
253
  }
328
- async getBlobsV1(versionedHashesHex) {
329
- const response = await this.rpc.fetchWithRetries({
330
- method: "engine_getBlobsV1",
331
- params: [versionedHashesHex],
332
- }, getBlobsV1Opts);
333
- const invalidLength = response.length !== versionedHashesHex.length;
334
- if (invalidLength) {
335
- const error = `Invalid engine_getBlobsV1 response length=${response.length} versionedHashes=${versionedHashesHex.length}`;
336
- this.logger.error(error);
337
- throw Error(error);
338
- }
339
- return response.map(deserializeBlobAndProofs);
254
+ enqueue(job) {
255
+ return this.queue.push(job);
340
256
  }
341
- async getBlobsV2(versionedHashesHex, buffers) {
342
- if (buffers) {
343
- // Callers preallocate one buffer per max blobs of the epoch, only the first entries are used
344
- if (buffers.length < versionedHashesHex.length) {
345
- throw Error(`Not enough buffers length=${buffers.length} versionedHashes=${versionedHashesHex.length}`);
257
+ /**
258
+ * Run a call on the selected transport. An execution client that advertises a fork in its
259
+ * capabilities but rejects it with `unsupported-fork` is not spec compliant, keep the node
260
+ * functional by serving that fork over JSON-RPC from then on.
261
+ */
262
+ async withTransport(fork, blobsRevision, fn) {
263
+ const transport = await this.getTransport(fork, blobsRevision);
264
+ this.metrics?.engineApiRequests.inc({ transport: transport === this.rest ? "ssz" : "json-rpc" });
265
+ try {
266
+ return await fn(transport);
267
+ }
268
+ catch (e) {
269
+ if (fork !== undefined && transport === this.rest && this.engineApi === "auto" && isUnsupportedForkError(e)) {
270
+ this.disableRestForFork(fork, e);
271
+ this.metrics?.engineApiRequests.inc({ transport: "json-rpc" });
272
+ return fn(this.jsonRpc);
346
273
  }
347
- for (const [i, buffer] of buffers.entries()) {
348
- if (buffer.length !== BLOB_AND_PROOF_V2_RPC_BYTES) {
349
- throw Error(`Invalid buffer[${i}] length=${buffer.length} expected=${BLOB_AND_PROOF_V2_RPC_BYTES}`);
274
+ if (transport === this.rest) {
275
+ this.updateEngineState(getExecutionEngineState({ payloadError: e, oldState: this.state }), e);
276
+ }
277
+ throw e;
278
+ }
279
+ }
280
+ disableRestForFork(fork, e) {
281
+ const executionFork = isForkPostBellatrix(fork) ? executionForkName[fork] : null;
282
+ if (this.restSupport.state === "supported" && executionFork !== null) {
283
+ this.restSupport.capabilities.supportedForks.delete(executionFork);
284
+ }
285
+ if (!this.loggedRestFallbacks.has(fork)) {
286
+ this.loggedRestFallbacks.add(fork);
287
+ this.logger.debug("REST engine API rejected an advertised fork, using JSON-RPC until reconnect", {
288
+ fork,
289
+ executionFork,
290
+ status: e.status,
291
+ type: e.type,
292
+ detail: e.detail,
293
+ });
294
+ }
295
+ }
296
+ /**
297
+ * Pick the transport for a call. Fork-scoped calls only go over REST if the execution client
298
+ * advertises that fork, blob requests only if it serves the needed `/blobs/vN` revision.
299
+ */
300
+ async getTransport(fork, blobsRevision) {
301
+ if (this.rest === null || this.engineApi === "json-rpc") {
302
+ return this.jsonRpc;
303
+ }
304
+ const restSupport = await this.probeRestSupport(this.rest);
305
+ if (restSupport.state === "pending" && restSupport.error) {
306
+ this.updateEngineState(getExecutionEngineState({ payloadError: restSupport.error, oldState: this.state }), restSupport.error);
307
+ throw restSupport.error;
308
+ }
309
+ if (this.engineApi === "ssz") {
310
+ return this.rest;
311
+ }
312
+ if (restSupport.state !== "supported") {
313
+ return this.jsonRpc;
314
+ }
315
+ if (fork !== undefined) {
316
+ const executionFork = isForkPostBellatrix(fork) ? executionForkName[fork] : null;
317
+ if (executionFork === null || !restSupport.capabilities.supportedForks.has(executionFork)) {
318
+ if (!this.loggedRestFallbacks.has(fork)) {
319
+ this.loggedRestFallbacks.add(fork);
320
+ this.logger.debug("Using JSON-RPC for a fork not advertised by the REST engine API", { fork, executionFork });
350
321
  }
322
+ return this.jsonRpc;
323
+ }
324
+ }
325
+ if (blobsRevision !== undefined && !restSupport.capabilities.blobsRevisions.has(blobsRevision)) {
326
+ if (!this.loggedRestFallbacks.has(blobsRevision)) {
327
+ this.loggedRestFallbacks.add(blobsRevision);
328
+ this.logger.debug("Using JSON-RPC for a blob revision not advertised by the REST engine API", { blobsRevision });
351
329
  }
330
+ return this.jsonRpc;
352
331
  }
353
- const response = await this.rpc.fetchWithRetries({
354
- method: "engine_getBlobsV2",
355
- params: [versionedHashesHex],
356
- }, getBlobsV2Opts);
357
- // engine_getBlobsV2 does not return partial responses. It returns null if any blob is not found
358
- const invalidLength = !!response && response.length !== versionedHashesHex.length;
359
- if (invalidLength) {
360
- const error = `Invalid engine_getBlobsV2 response length=${response?.length ?? "null"} versionedHashes=${versionedHashesHex.length}`;
361
- this.logger.error(error);
362
- throw Error(error);
332
+ return this.rest;
333
+ }
334
+ probeRestSupport(rest) {
335
+ if (this.restSupport.state !== "pending") {
336
+ return Promise.resolve(this.restSupport);
363
337
  }
364
- if (response == null) {
365
- return null;
338
+ if (this.restProbe !== null) {
339
+ return this.restProbe;
366
340
  }
367
- if (buffers) {
368
- // getBlobsV2() is designed to called once per slot so we expect to have buffers
369
- return response.map((data, i) => deserializeBlobAndProofsV2IntoBytes(data, buffers[i]));
341
+ // Transport errors keep the probe pending, do not retry on every call while the EL is down
342
+ if (Date.now() - this.lastRestProbeMs < REST_PROBE_RETRY_MS) {
343
+ return Promise.resolve(this.restSupport);
370
344
  }
371
- return response.map(deserializeBlobAndProofsV2);
345
+ this.restProbe = rest
346
+ .getCapabilities()
347
+ .then((capabilities) => {
348
+ this.restSupport = { state: "supported", capabilities };
349
+ this.loggedRestFallbacks.clear();
350
+ this.logger.debug("Discovered REST engine API capabilities", {
351
+ supportedForks: Array.from(capabilities.supportedForks).join(","),
352
+ blobsRevisions: Array.from(capabilities.blobsRevisions).join(","),
353
+ ...capabilities.limits,
354
+ });
355
+ return this.restSupport;
356
+ }, (e) => {
357
+ if (this.engineApi === "auto" && isRestApiAbsent(e)) {
358
+ this.restSupport = { state: "unsupported" };
359
+ this.logger.debug("Execution client does not support engine API over REST, using JSON-RPC", {
360
+ status: e.status,
361
+ type: e.type ?? "unknown",
362
+ });
363
+ }
364
+ else if (this.engineApi === "auto" && e instanceof EngineRestResponseError) {
365
+ // The REST API answered but cannot be trusted, auto mode must keep the node on a working transport
366
+ this.restSupport = { state: "unsupported" };
367
+ this.logger.warn("Invalid engine API capabilities, using JSON-RPC until reconnect", {}, e);
368
+ }
369
+ else {
370
+ const transient = isRetryableEngineRestError(e);
371
+ this.restSupport = { state: "pending", error: this.engineApi === "auto" && transient ? undefined : e };
372
+ this.logger.debug("Unable to probe engine API capabilities", {
373
+ engineApi: this.engineApi,
374
+ fallback: this.restSupport.error ? "none" : "json-rpc",
375
+ retryAfterMs: REST_PROBE_RETRY_MS,
376
+ }, e);
377
+ }
378
+ return this.restSupport;
379
+ })
380
+ .finally(() => {
381
+ this.restProbe = null;
382
+ this.lastRestProbeMs = Date.now();
383
+ });
384
+ return this.restProbe;
372
385
  }
373
386
  async getClientVersion(clientVersion) {
374
- const method = "engine_getClientVersionV1";
375
- const response = await this.rpc.fetchWithRetries({ method, params: [{ ...clientVersion, commit: `0x${clientVersion.commit}` }] }, getClientVersionOpts);
376
- const clientVersions = response.map((cv) => {
377
- const code = cv.code in ClientCode ? ClientCode[cv.code] : ClientCode.XX;
378
- return { code, name: cv.name, version: cv.version, commit: strip0xPrefix(cv.commit) };
379
- });
387
+ const clientVersions = await this.withTransport(undefined, undefined, (transport) => transport.getClientVersion(clientVersion));
380
388
  if (clientVersions.length === 0) {
381
389
  throw Error("Received empty client versions array");
382
390
  }
@@ -384,32 +392,62 @@ export class ExecutionEngineHttp {
384
392
  this.logger.debug("Execution client version updated", this.clientVersion);
385
393
  return clientVersions;
386
394
  }
387
- updateEngineState(newState) {
395
+ updateEngineState(newState, error) {
388
396
  const oldState = this.state;
389
397
  if (oldState === newState)
390
398
  return;
391
399
  switch (newState) {
392
400
  case ExecutionEngineState.ONLINE:
393
401
  this.logger.info("Execution client became online", { oldState, newState });
402
+ if (oldState === ExecutionEngineState.AUTH_FAILED) {
403
+ this.restSupport = { state: "pending" };
404
+ this.lastRestProbeMs = Number.NEGATIVE_INFINITY;
405
+ }
394
406
  this.getClientVersion(getLodestarClientVersion(this.opts)).catch((e) => {
395
407
  this.logger.debug("Unable to get execution client version", {}, e);
396
408
  this.clientVersion = null;
397
409
  });
398
410
  break;
399
411
  case ExecutionEngineState.OFFLINE:
400
- this.logger.error("Execution client went offline", { oldState, newState });
412
+ // Reprobe before choosing a transport for the next call after a disconnect.
413
+ this.restSupport = { state: "pending" };
414
+ this.lastRestProbeMs = Number.NEGATIVE_INFINITY;
415
+ this.logger.error("Execution client went offline", { oldState, newState }, error);
401
416
  break;
402
417
  case ExecutionEngineState.SYNCED:
403
418
  this.logger.info("Execution client is synced", { oldState, newState });
404
419
  break;
405
420
  case ExecutionEngineState.SYNCING:
406
- this.logger.warn("Execution client is syncing", { oldState, newState });
421
+ this.logger.warn(error ? "Execution client request failed" : "Execution client is syncing", { oldState, newState }, error);
407
422
  break;
408
423
  case ExecutionEngineState.AUTH_FAILED:
409
- this.logger.error("Execution client authentication failed", { oldState, newState });
424
+ this.logger.error("Execution client authentication failed", { oldState, newState }, error);
410
425
  break;
411
426
  }
412
427
  this.state = newState;
413
428
  }
414
429
  }
430
+ /** The execution client answered, as opposed to being unreachable */
431
+ function isEngineResponseError(e) {
432
+ return (e instanceof HttpRpcError ||
433
+ e instanceof ErrorJsonRpcResponse ||
434
+ e instanceof EngineRestError ||
435
+ e instanceof EngineRestResponseError);
436
+ }
437
+ /**
438
+ * Legacy JSON-RPC servers and proxies reject the capabilities probe in different ways, a 404 or
439
+ * another client error such as 405. Neither serves the REST API. Authentication failures and
440
+ * transient client errors say nothing about REST support.
441
+ */
442
+ function isRestApiAbsent(e) {
443
+ return (e instanceof EngineRestError &&
444
+ e.status >= 400 &&
445
+ e.status < 500 &&
446
+ e.status !== 401 &&
447
+ e.status !== 403 &&
448
+ !isRetryableEngineRestError(e));
449
+ }
450
+ function isUnsupportedForkError(e) {
451
+ return e instanceof EngineRestError && e.status === 400 && e.type === "/engine-api/errors/unsupported-fork";
452
+ }
415
453
  //# sourceMappingURL=http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/engine/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/engine/http.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { ExecutionEngineDisabled } from "./disabled.js";
2
- import { ExecutionEngineHttp, ExecutionEngineHttpOpts, ExecutionEngineModules, defaultExecutionEngineHttpOpts } from "./http.js";
2
+ import { EngineApiMode, ExecutionEngineHttp, ExecutionEngineHttpOpts, ExecutionEngineModules, defaultExecutionEngineHttpOpts, engineApiModes } from "./http.js";
3
3
  import { IExecutionEngine } from "./interface.js";
4
4
  import { ExecutionEngineMockOpts } from "./mock.js";
5
5
  import { JsonRpcBackend } from "./utils.js";
6
- export { ExecutionEngineHttp, ExecutionEngineDisabled, defaultExecutionEngineHttpOpts };
6
+ export { ExecutionEngineHttp, ExecutionEngineDisabled, defaultExecutionEngineHttpOpts, engineApiModes };
7
+ export type { EngineApiMode };
7
8
  export type ExecutionEngineOpts = ({
8
9
  mode?: "http";
9
10
  } & ExecutionEngineHttpOpts) | ({