@chainsafe/lodestar 1.51.0-dev.fe53cec080 → 1.51.0-rc.0

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.
package/.git-data.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "branch": "unstable",
3
- "commit": "fe53cec080a37fa21c4b2e5e916c0eb9fc1447d8"
2
+ "branch": "HEAD",
3
+ "commit": "04b5cfe0c631b01de81a97faa4d2f71785497585"
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/builder/handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAKlD,OAAO,EAAC,eAAe,EAA+B,MAAM,cAAc,CAAC;AAI3E,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoEtF"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/builder/handler.ts"],"names":[],"mappings":"AAcA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAWlD,OAAO,EAAC,eAAe,EAA+B,MAAM,cAAc,CAAC;AAI3E,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwHtF"}
@@ -1,12 +1,13 @@
1
+ import fs from "node:fs";
1
2
  import path from "node:path";
2
3
  import { getClient } from "@lodestar/api";
3
- import { RegistryMetricCreator, collectNodeJSMetrics, getHttpMetricsServer } from "@lodestar/beacon-node";
4
- import { Builder, getMetrics } from "@lodestar/builder";
4
+ import { RegistryMetricCreator, collectNodeJSMetrics, defaultExecutionEngineHttpOpts, getHttpMetricsServer, initializeExecutionEngine, } from "@lodestar/beacon-node";
5
+ import { Builder, EnginePayloadSource, getMetrics } from "@lodestar/builder";
5
6
  import { getNodeLogger } from "@lodestar/logger/node";
6
7
  import { fromHex, toPrintableUrl } from "@lodestar/utils";
7
8
  import { getBeaconConfigFromArgs } from "../../config/beaconParams.js";
8
9
  import { getGlobalPaths } from "../../paths/global.js";
9
- import { cleanOldLogFiles, onGracefulShutdown, parseFeeRecipient, parseLoggerArgs } from "../../util/index.js";
10
+ import { cleanOldLogFiles, extractJwtHexSecret, onGracefulShutdown, parseFeeRecipient, parseLoggerArgs, } from "../../util/index.js";
10
11
  import { getVersionData } from "../../util/version.js";
11
12
  import { loadBuilderKeypair } from "./loadKeypair.js";
12
13
  import { builderMetricsDefaultOptions } from "./options.js";
@@ -51,6 +52,39 @@ export async function builderHandler(args) {
51
52
  }
52
53
  const api = getClient({ urls: [args.beaconNodeUrl], globalInit: { signal: abortController.signal, timeoutMs: args.requestTimeout } }, { config, logger, metrics: metrics?.restApiClient });
53
54
  logger.info("Beacon node", { beaconNode: toPrintableUrl(args.beaconNodeUrl), timeoutMs: args.requestTimeout });
55
+ // Payload ids are local to the execution client that issued them, fallback urls can't be used
56
+ if (args["execution.urls"].length !== 1) {
57
+ throw Error("Exactly one execution client url is required");
58
+ }
59
+ const executionUrl = args["execution.urls"][0];
60
+ const engine = initializeExecutionEngine({
61
+ mode: "http",
62
+ urls: [executionUrl],
63
+ timeout: args["execution.timeout"] ?? defaultExecutionEngineHttpOpts.timeout,
64
+ retries: args["execution.retries"],
65
+ retryDelay: args["execution.retryDelay"],
66
+ jwtSecretHex: args["execution.jwtSecret"]
67
+ ? extractJwtHexSecret(fs.readFileSync(args["execution.jwtSecret"], "utf-8").trim())
68
+ : undefined,
69
+ version,
70
+ commit,
71
+ }, { signal: abortController.signal, logger });
72
+ const payloadSource = new EnginePayloadSource(toPrintableUrl(executionUrl), {
73
+ notifyForkchoiceUpdate: async (fork, headBlockHash, safeBlockHash, finalizedBlockHash, payloadAttributes) => {
74
+ try {
75
+ return await engine.notifyForkchoiceUpdate(fork, headBlockHash, safeBlockHash, finalizedBlockHash, payloadAttributes);
76
+ }
77
+ catch (e) {
78
+ // Only retry while the execution client is syncing, it has not imported the parent payload yet.
79
+ // The engine interface does not expose the fcU status, this matches the error thrown for the SYNCING status
80
+ // in ExecutionEngineHttp.notifyForkchoiceUpdate until a typed error is added to the beacon node
81
+ if (e instanceof Error && e.message === "Execution Layer Syncing")
82
+ return null;
83
+ throw e;
84
+ }
85
+ },
86
+ getPayload: async (fork, payloadId) => (await engine.getPayload(fork, payloadId)),
87
+ });
54
88
  const builder = await Builder.init({
55
89
  keypair,
56
90
  logger,
@@ -59,6 +93,17 @@ export async function builderHandler(args) {
59
93
  api,
60
94
  executionFeeRecipient: fromHex(executionFeeRecipient),
61
95
  metrics,
96
+ payloadSource,
97
+ bidding: {
98
+ shareBps: args["bidding.shareBps"],
99
+ fixedCostGwei: args["bidding.fixedCostGwei"],
100
+ minValueGwei: args["bidding.minValueGwei"],
101
+ maxValueGwei: args["bidding.maxValueGwei"],
102
+ deadlineBps: args["bidding.deadlineBps"],
103
+ getPayloadTimeout: args["bidding.getPayloadTimeout"],
104
+ minOperatingBalanceGwei: args["bidding.minOperatingBalanceGwei"],
105
+ },
106
+ reveal: { cutoffBps: args["reveal.cutoffBps"] },
62
107
  });
63
108
  onGracefulShutdownCbs.push(() => builder.close());
64
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/builder/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/builder/handler.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,19 @@ export type IBuilderCliArgs = LogArgs & {
12
12
  builderPubkey?: string;
13
13
  executionFeeRecipient: string;
14
14
  requestTimeout: number;
15
+ "execution.urls": string[];
16
+ "execution.timeout"?: number;
17
+ "execution.retries": number;
18
+ "execution.retryDelay": number;
19
+ "execution.jwtSecret"?: string;
20
+ "bidding.shareBps": number;
21
+ "bidding.fixedCostGwei": number;
22
+ "bidding.minValueGwei": number;
23
+ "bidding.maxValueGwei"?: number;
24
+ "bidding.deadlineBps": number;
25
+ "bidding.getPayloadTimeout": number;
26
+ "bidding.minOperatingBalanceGwei": number;
27
+ "reveal.cutoffBps"?: number;
15
28
  metrics?: boolean;
16
29
  "metrics.port"?: number;
17
30
  "metrics.address"?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/cmds/builder/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,OAAO,EAAa,MAAM,6BAA6B,CAAC;AAEhE,eAAO,MAAM,4BAA4B;IACvC,OAAO;IACP,IAAI;IACJ,OAAO;CACR,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,eAAe,CA4D7D,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/cmds/builder/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,OAAO,EAAa,MAAM,6BAA6B,CAAC;AAEhE,eAAO,MAAM,4BAA4B;IACvC,OAAO;IACP,IAAI;IACJ,OAAO;CACR,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IAEvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2BAA2B,EAAE,MAAM,CAAC;IACpC,iCAAiC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,eAAe,CAiK7D,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { defaultExecutionEngineHttpOpts } from "@lodestar/beacon-node";
1
2
  import { defaultOptions } from "@lodestar/builder";
2
3
  import { logOptions } from "../../options/logOptions.js";
3
4
  export const builderMetricsDefaultOptions = {
@@ -8,7 +9,7 @@ export const builderMetricsDefaultOptions = {
8
9
  export const builderOptions = {
9
10
  ...logOptions,
10
11
  beaconNodeUrl: {
11
- description: "Url to a trusted beacon node",
12
+ description: "URL of the beacon node. It must run with `--emitPayloadAttributes` to emit payload attributes for every slot",
12
13
  type: "string",
13
14
  default: defaultOptions.beaconNodeUrl,
14
15
  },
@@ -36,6 +37,87 @@ export const builderOptions = {
36
37
  type: "number",
37
38
  default: defaultOptions.requestTimeout,
38
39
  },
40
+ // Execution
41
+ "execution.urls": {
42
+ description: "Url to the execution client engine API that builds the payloads. The execution client must be kept in sync by a beacon node",
43
+ default: defaultExecutionEngineHttpOpts.urls.join(","),
44
+ type: "array",
45
+ string: true,
46
+ coerce: (urls) =>
47
+ // Parse ["url1,url2"] to ["url1", "url2"]
48
+ urls.flatMap((item) => item.split(",")),
49
+ group: "execution",
50
+ },
51
+ "execution.timeout": {
52
+ description: "Timeout in milliseconds for execution engine API HTTP client",
53
+ type: "number",
54
+ defaultDescription: String(defaultExecutionEngineHttpOpts.timeout),
55
+ group: "execution",
56
+ },
57
+ "execution.retries": {
58
+ description: "Number of retries when calling execution engine API",
59
+ type: "number",
60
+ default: defaultExecutionEngineHttpOpts.retries,
61
+ group: "execution",
62
+ },
63
+ "execution.retryDelay": {
64
+ description: "Delay time in milliseconds between retries when retrying calls to the execution engine API",
65
+ type: "number",
66
+ default: defaultExecutionEngineHttpOpts.retryDelay,
67
+ group: "execution",
68
+ },
69
+ "execution.jwtSecret": {
70
+ description: "File path to a shared hex-encoded jwt secret which will be used to generate and bundle HS256 encoded jwt tokens for authentication with the EL client's rpc server hosting engine apis. Secret to be exactly same as the one used by the corresponding EL client.",
71
+ type: "string",
72
+ group: "execution",
73
+ },
74
+ // Bidding
75
+ "bidding.shareBps": {
76
+ description: "Share of the payload value offered to the proposer, in basis points",
77
+ type: "number",
78
+ default: defaultOptions.bidding.shareBps,
79
+ group: "bidding",
80
+ },
81
+ "bidding.fixedCostGwei": {
82
+ description: "Fixed amount in gwei deducted from the proposer share of every bid",
83
+ type: "number",
84
+ default: defaultOptions.bidding.fixedCostGwei,
85
+ group: "bidding",
86
+ },
87
+ "bidding.minValueGwei": {
88
+ description: "Never bid below this value in gwei",
89
+ type: "number",
90
+ default: defaultOptions.bidding.minValueGwei,
91
+ group: "bidding",
92
+ },
93
+ "bidding.maxValueGwei": {
94
+ description: "Never bid above this value in gwei",
95
+ type: "number",
96
+ group: "bidding",
97
+ },
98
+ "bidding.deadlineBps": {
99
+ description: "Point within the slot before the proposal slot at which the payload is retrieved and the bid is published, in basis points",
100
+ type: "number",
101
+ default: defaultOptions.bidding.deadlineBps,
102
+ group: "bidding",
103
+ },
104
+ "bidding.getPayloadTimeout": {
105
+ description: "Timeout in milliseconds for retrieving the payload from the execution client at the bid deadline",
106
+ type: "number",
107
+ default: defaultOptions.bidding.getPayloadTimeout,
108
+ group: "bidding",
109
+ },
110
+ "bidding.minOperatingBalanceGwei": {
111
+ description: "Do not bid while the builder balance is below this value in gwei",
112
+ type: "number",
113
+ default: defaultOptions.bidding.minOperatingBalanceGwei,
114
+ group: "bidding",
115
+ },
116
+ "reveal.cutoffBps": {
117
+ description: "Do not reveal the payload if the block committing to our bid arrives after this point within its slot, in basis points. Defaults to PAYLOAD_ATTESTATION_DUE_BPS of the network",
118
+ type: "number",
119
+ group: "reveal",
120
+ },
39
121
  // Metrics
40
122
  metrics: {
41
123
  description: "Enable the Prometheus metrics HTTP server",
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/builder/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAEhE,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,WAAW;CACrB,CAAC;AAeF,MAAM,CAAC,MAAM,cAAc,GAAuC;IAChE,GAAG,UAAU;IAEb,aAAa,EAAE;QACb,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc,CAAC,aAAa;KACtC;IAED,QAAQ,EAAE;QACR,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB;IAED,gBAAgB,EAAE;QAChB,WAAW,EAAE,6EAA6E;QAC1F,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB;IAED,aAAa,EAAE;QACb,WAAW,EAAE,4EAA4E;QACzF,IAAI,EAAE,QAAQ;KACf;IAED,qBAAqB,EAAE;QACrB,WAAW,EAAE,qDAAqD;QAClE,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB;IAED,cAAc,EAAE;QACd,WAAW,EAAE,8DAA8D;QAC3E,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc,CAAC,cAAc;KACvC;IAED,UAAU;IAEV,OAAO,EAAE;QACP,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,SAAS;QACf,kBAAkB,EAAE,MAAM,CAAC,4BAA4B,CAAC,OAAO,CAAC;QAChE,KAAK,EAAE,SAAS;KACjB;IAED,cAAc,EAAE;QACd,WAAW,EAAE,wDAAwD;QACrE,IAAI,EAAE,QAAQ;QACd,kBAAkB,EAAE,MAAM,CAAC,4BAA4B,CAAC,IAAI,CAAC;QAC7D,KAAK,EAAE,SAAS;KACjB;IAED,iBAAiB,EAAE;QACjB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,QAAQ;QACd,kBAAkB,EAAE,MAAM,CAAC,4BAA4B,CAAC,OAAO,CAAC;QAChE,KAAK,EAAE,SAAS;KACjB;CACF,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/builder/options.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator/handler.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAsBlD,OAAO,EAAC,iBAAiB,EAAoE,MAAM,cAAc,CAAC;AAKlH;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8L1F"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/validator/handler.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAsBlD,OAAO,EAAC,iBAAiB,EAAoE,MAAM,cAAc,CAAC;AAKlH;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuM1F"}
@@ -43,8 +43,18 @@ export async function validatorHandler(args) {
43
43
  mkdir(dbPath);
44
44
  const onGracefulShutdownCbs = [];
45
45
  onGracefulShutdown(async () => {
46
- for (const cb of onGracefulShutdownCbs)
47
- await cb();
46
+ let exitCode = 0;
47
+ try {
48
+ for (const cb of onGracefulShutdownCbs)
49
+ await cb();
50
+ logger.debug("Validator client closed");
51
+ }
52
+ catch (e) {
53
+ logger.warn("Error closing validator client", {}, e);
54
+ exitCode = 1;
55
+ }
56
+ // Explicitly exit process due to potential active handles (e.g. EventSource / in-flight HTTP via DVT middleware)
57
+ process.exit(exitCode);
48
58
  }, logger.info.bind(logger));
49
59
  // Callback for validator to request forced exit, in case of doppelganger detection
50
60
  const processShutdownCallback = (err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/validator/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/validator/handler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainsafe/lodestar",
3
- "version": "1.51.0-dev.fe53cec080",
3
+ "version": "1.51.0-rc.0",
4
4
  "description": "Command line interface for lodestar",
5
5
  "author": "ChainSafe Systems",
6
6
  "license": "Apache-2.0",
@@ -9,6 +9,9 @@
9
9
  },
10
10
  "homepage": "https://github.com/ChainSafe/lodestar#readme",
11
11
  "type": "module",
12
+ "engines": {
13
+ "node": "^24.22.1"
14
+ },
12
15
  "exports": {
13
16
  ".": {
14
17
  "typescript": "./src/index.ts",
@@ -68,17 +71,17 @@
68
71
  "@libp2p/crypto": "^5.1.25",
69
72
  "@libp2p/interface": "^3.4.0",
70
73
  "@libp2p/peer-id": "^6.0.17",
71
- "@lodestar/api": "^1.51.0-dev.fe53cec080",
72
- "@lodestar/beacon-node": "^1.51.0-dev.fe53cec080",
73
- "@lodestar/builder": "^1.51.0-dev.fe53cec080",
74
- "@lodestar/config": "^1.51.0-dev.fe53cec080",
75
- "@lodestar/db": "^1.51.0-dev.fe53cec080",
76
- "@lodestar/logger": "^1.51.0-dev.fe53cec080",
77
- "@lodestar/params": "^1.51.0-dev.fe53cec080",
78
- "@lodestar/state-transition": "^1.51.0-dev.fe53cec080",
79
- "@lodestar/types": "^1.51.0-dev.fe53cec080",
80
- "@lodestar/utils": "^1.51.0-dev.fe53cec080",
81
- "@lodestar/validator": "^1.51.0-dev.fe53cec080",
74
+ "@lodestar/api": "^1.51.0-rc.0",
75
+ "@lodestar/beacon-node": "^1.51.0-rc.0",
76
+ "@lodestar/builder": "^1.51.0-rc.0",
77
+ "@lodestar/config": "^1.51.0-rc.0",
78
+ "@lodestar/db": "^1.51.0-rc.0",
79
+ "@lodestar/logger": "^1.51.0-rc.0",
80
+ "@lodestar/params": "^1.51.0-rc.0",
81
+ "@lodestar/state-transition": "^1.51.0-rc.0",
82
+ "@lodestar/types": "^1.51.0-rc.0",
83
+ "@lodestar/utils": "^1.51.0-rc.0",
84
+ "@lodestar/validator": "^1.51.0-rc.0",
82
85
  "@multiformats/multiaddr": "^13.0.1",
83
86
  "deepmerge": "^4.3.1",
84
87
  "ethers": "^6.7.0",
@@ -94,7 +97,7 @@
94
97
  "devDependencies": {
95
98
  "@chainsafe/as-sha256": "^1.2.5",
96
99
  "@ethereumjs/rlp": "^4.0.1",
97
- "@lodestar/test-utils": "^1.51.0-dev.fe53cec080",
100
+ "@lodestar/test-utils": "^1.51.0-rc.0",
98
101
  "@types/debug": "^4.1.7",
99
102
  "@types/inquirer": "^9.0.3",
100
103
  "@types/js-yaml": "^4.0.5",
@@ -108,5 +111,5 @@
108
111
  "web3": "^4.0.3",
109
112
  "web3-eth-accounts": "^4.0.3"
110
113
  },
111
- "gitHead": "77703db3932f38d2114fde35d2facc3152a6415c"
114
+ "gitHead": "b1c04f7191701d3950f992a1e31e498a4af72066"
112
115
  }
@@ -1,13 +1,26 @@
1
+ import fs from "node:fs";
1
2
  import path from "node:path";
2
3
  import {getClient} from "@lodestar/api";
3
- import {RegistryMetricCreator, collectNodeJSMetrics, getHttpMetricsServer} from "@lodestar/beacon-node";
4
- import {Builder, getMetrics} from "@lodestar/builder";
4
+ import {
5
+ RegistryMetricCreator,
6
+ collectNodeJSMetrics,
7
+ defaultExecutionEngineHttpOpts,
8
+ getHttpMetricsServer,
9
+ initializeExecutionEngine,
10
+ } from "@lodestar/beacon-node";
11
+ import {Builder, EnginePayloadResult, EnginePayloadSource, getMetrics} from "@lodestar/builder";
5
12
  import {getNodeLogger} from "@lodestar/logger/node";
6
13
  import {fromHex, toPrintableUrl} from "@lodestar/utils";
7
14
  import {getBeaconConfigFromArgs} from "../../config/beaconParams.js";
8
15
  import {GlobalArgs} from "../../options/index.js";
9
16
  import {getGlobalPaths} from "../../paths/global.js";
10
- import {cleanOldLogFiles, onGracefulShutdown, parseFeeRecipient, parseLoggerArgs} from "../../util/index.js";
17
+ import {
18
+ cleanOldLogFiles,
19
+ extractJwtHexSecret,
20
+ onGracefulShutdown,
21
+ parseFeeRecipient,
22
+ parseLoggerArgs,
23
+ } from "../../util/index.js";
11
24
  import {getVersionData} from "../../util/version.js";
12
25
  import {loadBuilderKeypair} from "./loadKeypair.js";
13
26
  import {IBuilderCliArgs, builderMetricsDefaultOptions} from "./options.js";
@@ -71,6 +84,47 @@ export async function builderHandler(args: IBuilderCliArgs & GlobalArgs): Promis
71
84
 
72
85
  logger.info("Beacon node", {beaconNode: toPrintableUrl(args.beaconNodeUrl), timeoutMs: args.requestTimeout});
73
86
 
87
+ // Payload ids are local to the execution client that issued them, fallback urls can't be used
88
+ if (args["execution.urls"].length !== 1) {
89
+ throw Error("Exactly one execution client url is required");
90
+ }
91
+ const executionUrl = args["execution.urls"][0];
92
+ const engine = initializeExecutionEngine(
93
+ {
94
+ mode: "http",
95
+ urls: [executionUrl],
96
+ timeout: args["execution.timeout"] ?? defaultExecutionEngineHttpOpts.timeout,
97
+ retries: args["execution.retries"],
98
+ retryDelay: args["execution.retryDelay"],
99
+ jwtSecretHex: args["execution.jwtSecret"]
100
+ ? extractJwtHexSecret(fs.readFileSync(args["execution.jwtSecret"], "utf-8").trim())
101
+ : undefined,
102
+ version,
103
+ commit,
104
+ },
105
+ {signal: abortController.signal, logger}
106
+ );
107
+ const payloadSource = new EnginePayloadSource(toPrintableUrl(executionUrl), {
108
+ notifyForkchoiceUpdate: async (fork, headBlockHash, safeBlockHash, finalizedBlockHash, payloadAttributes) => {
109
+ try {
110
+ return await engine.notifyForkchoiceUpdate(
111
+ fork,
112
+ headBlockHash,
113
+ safeBlockHash,
114
+ finalizedBlockHash,
115
+ payloadAttributes
116
+ );
117
+ } catch (e) {
118
+ // Only retry while the execution client is syncing, it has not imported the parent payload yet.
119
+ // The engine interface does not expose the fcU status, this matches the error thrown for the SYNCING status
120
+ // in ExecutionEngineHttp.notifyForkchoiceUpdate until a typed error is added to the beacon node
121
+ if (e instanceof Error && e.message === "Execution Layer Syncing") return null;
122
+ throw e;
123
+ }
124
+ },
125
+ getPayload: async (fork, payloadId) => (await engine.getPayload(fork, payloadId)) as EnginePayloadResult,
126
+ });
127
+
74
128
  const builder = await Builder.init({
75
129
  keypair,
76
130
  logger,
@@ -79,6 +133,17 @@ export async function builderHandler(args: IBuilderCliArgs & GlobalArgs): Promis
79
133
  api,
80
134
  executionFeeRecipient: fromHex(executionFeeRecipient),
81
135
  metrics,
136
+ payloadSource,
137
+ bidding: {
138
+ shareBps: args["bidding.shareBps"],
139
+ fixedCostGwei: args["bidding.fixedCostGwei"],
140
+ minValueGwei: args["bidding.minValueGwei"],
141
+ maxValueGwei: args["bidding.maxValueGwei"],
142
+ deadlineBps: args["bidding.deadlineBps"],
143
+ getPayloadTimeout: args["bidding.getPayloadTimeout"],
144
+ minOperatingBalanceGwei: args["bidding.minOperatingBalanceGwei"],
145
+ },
146
+ reveal: {cutoffBps: args["reveal.cutoffBps"]},
82
147
  });
83
148
 
84
149
  onGracefulShutdownCbs.push(() => builder.close());
@@ -1,3 +1,4 @@
1
+ import {defaultExecutionEngineHttpOpts} from "@lodestar/beacon-node";
1
2
  import {defaultOptions} from "@lodestar/builder";
2
3
  import {CliCommandOptions} from "@lodestar/utils";
3
4
  import {LogArgs, logOptions} from "../../options/logOptions.js";
@@ -16,6 +17,21 @@ export type IBuilderCliArgs = LogArgs & {
16
17
  executionFeeRecipient: string;
17
18
  requestTimeout: number;
18
19
 
20
+ "execution.urls": string[];
21
+ "execution.timeout"?: number;
22
+ "execution.retries": number;
23
+ "execution.retryDelay": number;
24
+ "execution.jwtSecret"?: string;
25
+
26
+ "bidding.shareBps": number;
27
+ "bidding.fixedCostGwei": number;
28
+ "bidding.minValueGwei": number;
29
+ "bidding.maxValueGwei"?: number;
30
+ "bidding.deadlineBps": number;
31
+ "bidding.getPayloadTimeout": number;
32
+ "bidding.minOperatingBalanceGwei": number;
33
+ "reveal.cutoffBps"?: number;
34
+
19
35
  metrics?: boolean;
20
36
  "metrics.port"?: number;
21
37
  "metrics.address"?: string;
@@ -25,7 +41,8 @@ export const builderOptions: CliCommandOptions<IBuilderCliArgs> = {
25
41
  ...logOptions,
26
42
 
27
43
  beaconNodeUrl: {
28
- description: "Url to a trusted beacon node",
44
+ description:
45
+ "URL of the beacon node. It must run with `--emitPayloadAttributes` to emit payload attributes for every slot",
29
46
  type: "string",
30
47
  default: defaultOptions.beaconNodeUrl,
31
48
  },
@@ -59,6 +76,106 @@ export const builderOptions: CliCommandOptions<IBuilderCliArgs> = {
59
76
  default: defaultOptions.requestTimeout,
60
77
  },
61
78
 
79
+ // Execution
80
+
81
+ "execution.urls": {
82
+ description:
83
+ "Url to the execution client engine API that builds the payloads. The execution client must be kept in sync by a beacon node",
84
+ default: defaultExecutionEngineHttpOpts.urls.join(","),
85
+ type: "array",
86
+ string: true,
87
+ coerce: (urls: string[]): string[] =>
88
+ // Parse ["url1,url2"] to ["url1", "url2"]
89
+ urls.flatMap((item) => item.split(",")),
90
+ group: "execution",
91
+ },
92
+
93
+ "execution.timeout": {
94
+ description: "Timeout in milliseconds for execution engine API HTTP client",
95
+ type: "number",
96
+ defaultDescription: String(defaultExecutionEngineHttpOpts.timeout),
97
+ group: "execution",
98
+ },
99
+
100
+ "execution.retries": {
101
+ description: "Number of retries when calling execution engine API",
102
+ type: "number",
103
+ default: defaultExecutionEngineHttpOpts.retries,
104
+ group: "execution",
105
+ },
106
+
107
+ "execution.retryDelay": {
108
+ description: "Delay time in milliseconds between retries when retrying calls to the execution engine API",
109
+ type: "number",
110
+ default: defaultExecutionEngineHttpOpts.retryDelay,
111
+ group: "execution",
112
+ },
113
+
114
+ "execution.jwtSecret": {
115
+ description:
116
+ "File path to a shared hex-encoded jwt secret which will be used to generate and bundle HS256 encoded jwt tokens for authentication with the EL client's rpc server hosting engine apis. Secret to be exactly same as the one used by the corresponding EL client.",
117
+ type: "string",
118
+ group: "execution",
119
+ },
120
+
121
+ // Bidding
122
+
123
+ "bidding.shareBps": {
124
+ description: "Share of the payload value offered to the proposer, in basis points",
125
+ type: "number",
126
+ default: defaultOptions.bidding.shareBps,
127
+ group: "bidding",
128
+ },
129
+
130
+ "bidding.fixedCostGwei": {
131
+ description: "Fixed amount in gwei deducted from the proposer share of every bid",
132
+ type: "number",
133
+ default: defaultOptions.bidding.fixedCostGwei,
134
+ group: "bidding",
135
+ },
136
+
137
+ "bidding.minValueGwei": {
138
+ description: "Never bid below this value in gwei",
139
+ type: "number",
140
+ default: defaultOptions.bidding.minValueGwei,
141
+ group: "bidding",
142
+ },
143
+
144
+ "bidding.maxValueGwei": {
145
+ description: "Never bid above this value in gwei",
146
+ type: "number",
147
+ group: "bidding",
148
+ },
149
+
150
+ "bidding.deadlineBps": {
151
+ description:
152
+ "Point within the slot before the proposal slot at which the payload is retrieved and the bid is published, in basis points",
153
+ type: "number",
154
+ default: defaultOptions.bidding.deadlineBps,
155
+ group: "bidding",
156
+ },
157
+
158
+ "bidding.getPayloadTimeout": {
159
+ description: "Timeout in milliseconds for retrieving the payload from the execution client at the bid deadline",
160
+ type: "number",
161
+ default: defaultOptions.bidding.getPayloadTimeout,
162
+ group: "bidding",
163
+ },
164
+
165
+ "bidding.minOperatingBalanceGwei": {
166
+ description: "Do not bid while the builder balance is below this value in gwei",
167
+ type: "number",
168
+ default: defaultOptions.bidding.minOperatingBalanceGwei,
169
+ group: "bidding",
170
+ },
171
+
172
+ "reveal.cutoffBps": {
173
+ description:
174
+ "Do not reveal the payload if the block committing to our bid arrives after this point within its slot, in basis points. Defaults to PAYLOAD_ATTESTATION_DUE_BPS of the network",
175
+ type: "number",
176
+ group: "reveal",
177
+ },
178
+
62
179
  // Metrics
63
180
 
64
181
  metrics: {
@@ -77,7 +77,16 @@ export async function validatorHandler(args: IValidatorCliArgs & GlobalArgs): Pr
77
77
 
78
78
  const onGracefulShutdownCbs: (() => Promise<void> | void)[] = [];
79
79
  onGracefulShutdown(async () => {
80
- for (const cb of onGracefulShutdownCbs) await cb();
80
+ let exitCode = 0;
81
+ try {
82
+ for (const cb of onGracefulShutdownCbs) await cb();
83
+ logger.debug("Validator client closed");
84
+ } catch (e) {
85
+ logger.warn("Error closing validator client", {}, e as Error);
86
+ exitCode = 1;
87
+ }
88
+ // Explicitly exit process due to potential active handles (e.g. EventSource / in-flight HTTP via DVT middleware)
89
+ process.exit(exitCode);
81
90
  }, logger.info.bind(logger));
82
91
 
83
92
  // Callback for validator to request forced exit, in case of doppelganger detection