@lodestar/builder 1.48.0-dev.262a9c1d16 → 1.48.0-dev.293e560a59

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/lib/builder.d.ts CHANGED
@@ -6,14 +6,12 @@ import { Logger } from "@lodestar/utils";
6
6
  import { Metrics } from "./metrics.js";
7
7
  import { BuilderSigner, Keypair } from "./services/builderSigner.js";
8
8
  import { BuilderStatusTracker } from "./services/builderStatusTracker.js";
9
- import { PayloadStore } from "./services/payloadStore.js";
10
9
  export type BuilderModules = {
11
10
  opts: BuilderOptions;
12
11
  builderSigner: BuilderSigner;
13
12
  builderStatusTracker: BuilderStatusTracker;
14
13
  clock: IClock;
15
14
  index: BuilderIndex;
16
- store: PayloadStore;
17
15
  };
18
16
  export type BuilderOptions = {
19
17
  logger: Logger;
@@ -36,10 +34,8 @@ export declare class Builder {
36
34
  private readonly index;
37
35
  private readonly logger;
38
36
  private readonly executionFeeRecipient;
39
- private readonly store;
40
- constructor({ opts, builderSigner, builderStatusTracker, clock, index, store }: BuilderModules);
37
+ constructor({ opts, builderSigner, builderStatusTracker, clock, index }: BuilderModules);
41
38
  static init(opts: BuilderOptions): Promise<Builder>;
42
- private onSlot;
43
39
  close(): Promise<void>;
44
40
  }
45
41
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AACxC,OAAO,EAAC,eAAe,EAAwC,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAQ,YAAY,EAAE,MAAM,EAAC,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC,OAAO,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,eAAe,CAAC;IACjC,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,qBAAa,OAAO;IAClB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAmB;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,YAAY,EAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,EAAE,cAAc,EAmB3F;IAED,OAAa,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCxD;YAEa,MAAM;IAId,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CACF"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;AACxC,OAAO,EAAC,eAAe,EAAwC,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAQ,YAAY,EAAE,MAAM,EAAC,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC,OAAO,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,eAAe,CAAC;IACjC,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,qBAAa,OAAO;IAClB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAmB;IAEzD,YAAY,EAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAC,EAAE,cAAc,EAiBpF;IAED,OAAa,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BxD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CACF"}
package/lib/builder.js CHANGED
@@ -6,7 +6,6 @@ import { resolveBuilderIdentity } from "./identity.js";
6
6
  import { logNodeVersion, waitForNodeReady } from "./readiness.js";
7
7
  import { BuilderSigner } from "./services/builderSigner.js";
8
8
  import { BuilderStatusTracker } from "./services/builderStatusTracker.js";
9
- import { PayloadStore } from "./services/payloadStore.js";
10
9
  /**
11
10
  * Main class for the Builder client.
12
11
  */
@@ -18,17 +17,14 @@ export class Builder {
18
17
  index;
19
18
  logger;
20
19
  executionFeeRecipient;
21
- store;
22
- constructor({ opts, builderSigner, builderStatusTracker, clock, index, store }) {
20
+ constructor({ opts, builderSigner, builderStatusTracker, clock, index }) {
23
21
  this.builderSigner = builderSigner;
24
22
  this.builderStatusTracker = builderStatusTracker;
25
23
  this.clock = clock;
26
24
  this.controller = opts.abortController;
27
25
  this.logger = opts.logger;
28
26
  this.index = index;
29
- this.store = store;
30
27
  this.executionFeeRecipient = opts.executionFeeRecipient;
31
- this.clock.runEverySlot(async (slot) => this.onSlot(slot));
32
28
  this.clock.runEveryEpoch((epoch) => this.builderStatusTracker.poll(epoch));
33
29
  this.clock.start(this.controller.signal);
34
30
  this.logger.info("Builder client initialized", {
@@ -52,11 +48,7 @@ export class Builder {
52
48
  const clock = new Clock(config, logger, { genesisTime: Number(genesis.genesisTime), ...opts.clock });
53
49
  const index = await resolveBuilderIdentity(api, logger, builderSigner.getPubkeyHex(), opts.abortController.signal, clock, config);
54
50
  const builderStatusTracker = new BuilderStatusTracker(api, logger, index, opts.metrics);
55
- const store = new PayloadStore();
56
- return new Builder({ opts, builderSigner, builderStatusTracker, clock, index, store });
57
- }
58
- async onSlot(slot) {
59
- this.store.prune(slot);
51
+ return new Builder({ opts, builderSigner, builderStatusTracker, clock, index });
60
52
  }
61
53
  async close() {
62
54
  this.controller.abort();
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
package/lib/identity.d.ts CHANGED
@@ -3,6 +3,7 @@ import { ChainForkConfig } from "@lodestar/config";
3
3
  import { IClock } from "@lodestar/state-transition";
4
4
  import { BuilderIndex, BuilderStatus } from "@lodestar/types";
5
5
  import { Logger } from "@lodestar/utils";
6
+ export declare const WAITING_FOR_BUILDER_POLL_MS: number;
6
7
  export declare function resolveBuilderIdentity(api: ApiClient, logger: Logger, id: routes.beacon.BuilderId, signal: AbortSignal, clock: IClock, config: ChainForkConfig): Promise<BuilderIndex>;
7
8
  export declare function getBuilderStatus(api: ApiClient, logger: Logger, id: routes.beacon.BuilderId): Promise<{
8
9
  status: BuilderStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAA4B,MAAM,EAAC,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,MAAM,EAA0B,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAe,MAAM,EAA2C,MAAM,iBAAiB,CAAC;AAE/F,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAC3B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,GAC1B,OAAO,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAAC,CAe1D"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAA4B,MAAM,EAAC,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAe,MAAM,EAA2C,MAAM,iBAAiB,CAAC;AAE/F,eAAO,MAAM,2BAA2B,QAAY,CAAC;AAErD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAC3B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,GAC1B,OAAO,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAAC,CAe1D"}
package/lib/identity.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ApiError, HttpStatusCode } from "@lodestar/api";
2
2
  import { PAYLOAD_BUILDER_VERSION } from "@lodestar/params";
3
- import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
4
3
  import { ErrorAborted, TimeoutError, isFetchError, sleep, toHex } from "@lodestar/utils";
4
+ export const WAITING_FOR_BUILDER_POLL_MS = 10 * 1000;
5
5
  export async function resolveBuilderIdentity(api, logger, id, signal, clock, config) {
6
6
  const builderEntry = await waitForBuilder(api, logger, id, signal, clock, config);
7
7
  if (builderEntry.builder.version !== PAYLOAD_BUILDER_VERSION) {
@@ -44,7 +44,7 @@ async function waitForBuilder(api, logger, id, signal, clock, config) {
44
44
  currentEpoch,
45
45
  slot: clock.getCurrentSlot(),
46
46
  });
47
- await sleep(msToNextEpochPoll(clock), signal);
47
+ await sleep(WAITING_FOR_BUILDER_POLL_MS, signal);
48
48
  continue;
49
49
  }
50
50
  let builder = null;
@@ -60,7 +60,7 @@ async function waitForBuilder(api, logger, id, signal, clock, config) {
60
60
  currentEpoch,
61
61
  slot: clock.getCurrentSlot(),
62
62
  });
63
- await sleep(msToNextSlotPoll(clock), signal);
63
+ await sleep(WAITING_FOR_BUILDER_POLL_MS, signal);
64
64
  continue;
65
65
  }
66
66
  throw e;
@@ -73,12 +73,11 @@ async function waitForBuilder(api, logger, id, signal, clock, config) {
73
73
  }
74
74
  if (builder?.status === "pending") {
75
75
  logger.info("Waiting for builder deposit to be finalized", { id, slot: clock.getCurrentSlot() });
76
- await sleep(msToNextEpochPoll(clock), signal);
77
76
  }
78
77
  else {
79
78
  logger.info("Waiting for builder to be known to the beacon node", { id, slot: clock.getCurrentSlot() });
80
- await sleep(msToNextSlotPoll(clock), signal);
81
79
  }
80
+ await sleep(WAITING_FOR_BUILDER_POLL_MS, signal);
82
81
  }
83
82
  throw new ErrorAborted("waitForBuilder");
84
83
  }
@@ -111,10 +110,4 @@ async function fetchBuilder(api, logger, id) {
111
110
  throw e;
112
111
  }
113
112
  }
114
- function msToNextEpochPoll(clock) {
115
- return clock.msToSlot(computeStartSlotAtEpoch(clock.getCurrentEpoch() + 1));
116
- }
117
- function msToNextSlotPoll(clock) {
118
- return clock.msToSlot(clock.getCurrentSlot() + 1);
119
- }
120
113
  //# sourceMappingURL=identity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,cAAc,EAAS,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAC,YAAY,EAAU,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAE/F,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAc,EACd,MAAc,EACd,EAA2B,EAC3B,MAAmB,EACnB,KAAa,EACb,MAAuB;IAEvB,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAElF,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,KAAK,uBAAuB,EAAE,CAAC;QAC7D,MAAM,KAAK,CAAC,iCAAiC,YAAY,CAAC,OAAO,CAAC,OAAO,cAAc,uBAAuB,EAAE,CAAC,CAAC;IACpH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;QACvC,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;QACzC,gBAAgB,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC9D,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE;KAC7B,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,KAAK,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAc,EACd,MAAc,EACd,EAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO;gBACL,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;aACtC,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,GAAc,EACd,MAAc,EACd,EAA2B,EAC3B,MAAmB,EACnB,KAAa,EACb,MAAuB;IAEvB,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC/C,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;QAC7C,IAAI,YAAY,GAAG,cAAc,EAAE,CAAC;YAClC,uFAAuF;YACvF,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE;gBACtE,cAAc;gBACd,YAAY;gBACZ,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE;aAC7B,CAAC,CAAC;YACH,MAAM,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,GAAyC,IAAI,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,0FAA0F;YAC1F,sGAAsG;YACtG,IAAI,CAAC,YAAY,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,WAAW,EAAE,CAAC;gBACrE,MAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE;oBAC7D,cAAc;oBACd,YAAY;oBACZ,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE;iBAC7B,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;gBACjD,SAAS;YACX,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;QAED,IAAI,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,OAAO,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE,EAAC,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE,EAAC,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,IAAI,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,GAAc,EACd,MAAc,EACd,EAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACnD,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,CAAC,EAAE,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QAEpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,EAAE,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,KAAK,CAAC,uBAAuB,OAAO,CAAC,KAAK,aAAa,EAAE,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,CAAC,wBAAwB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodestar/builder",
3
- "version": "1.48.0-dev.262a9c1d16",
3
+ "version": "1.48.0-dev.293e560a59",
4
4
  "description": "A Typescript implementation of the builder client",
5
5
  "author": "ChainSafe Systems",
6
6
  "license": "Apache-2.0",
@@ -47,17 +47,17 @@
47
47
  ],
48
48
  "dependencies": {
49
49
  "@chainsafe/lodestar-z": "catalog:",
50
- "@chainsafe/ssz": "^1.7.0",
51
- "@lodestar/api": "^1.48.0-dev.262a9c1d16",
52
- "@lodestar/config": "^1.48.0-dev.262a9c1d16",
53
- "@lodestar/params": "^1.48.0-dev.262a9c1d16",
54
- "@lodestar/state-transition": "^1.48.0-dev.262a9c1d16",
55
- "@lodestar/types": "^1.48.0-dev.262a9c1d16",
56
- "@lodestar/utils": "^1.48.0-dev.262a9c1d16"
50
+ "@chainsafe/ssz": "^1.6.3",
51
+ "@lodestar/api": "^1.48.0-dev.293e560a59",
52
+ "@lodestar/config": "^1.48.0-dev.293e560a59",
53
+ "@lodestar/params": "^1.48.0-dev.293e560a59",
54
+ "@lodestar/state-transition": "^1.48.0-dev.293e560a59",
55
+ "@lodestar/types": "^1.48.0-dev.293e560a59",
56
+ "@lodestar/utils": "^1.48.0-dev.293e560a59"
57
57
  },
58
58
  "devDependencies": {
59
- "@lodestar/logger": "^1.48.0-dev.262a9c1d16",
60
- "@lodestar/test-utils": "^1.48.0-dev.262a9c1d16"
59
+ "@lodestar/logger": "^1.48.0-dev.293e560a59",
60
+ "@lodestar/test-utils": "^1.48.0-dev.293e560a59"
61
61
  },
62
- "gitHead": "4c6fa0c6fa0074f9bd060fee542bd01986f7cf78"
62
+ "gitHead": "43ee31218fa076e8aa40dbe479ef5a8ec88e270e"
63
63
  }
package/src/builder.ts CHANGED
@@ -9,7 +9,6 @@ import {Metrics} from "./metrics.js";
9
9
  import {logNodeVersion, waitForNodeReady} from "./readiness.js";
10
10
  import {BuilderSigner, Keypair} from "./services/builderSigner.js";
11
11
  import {BuilderStatusTracker} from "./services/builderStatusTracker.js";
12
- import {PayloadStore} from "./services/payloadStore.js";
13
12
 
14
13
  export type BuilderModules = {
15
14
  opts: BuilderOptions;
@@ -17,7 +16,6 @@ export type BuilderModules = {
17
16
  builderStatusTracker: BuilderStatusTracker;
18
17
  clock: IClock;
19
18
  index: BuilderIndex;
20
- store: PayloadStore;
21
19
  };
22
20
 
23
21
  export type BuilderOptions = {
@@ -42,20 +40,17 @@ export class Builder {
42
40
  private readonly index: BuilderIndex;
43
41
  private readonly logger: Logger;
44
42
  private readonly executionFeeRecipient: ExecutionAddress;
45
- private readonly store: PayloadStore;
46
43
 
47
- constructor({opts, builderSigner, builderStatusTracker, clock, index, store}: BuilderModules) {
44
+ constructor({opts, builderSigner, builderStatusTracker, clock, index}: BuilderModules) {
48
45
  this.builderSigner = builderSigner;
49
46
  this.builderStatusTracker = builderStatusTracker;
50
47
  this.clock = clock;
51
48
  this.controller = opts.abortController;
52
49
  this.logger = opts.logger;
53
50
  this.index = index;
54
- this.store = store;
55
51
 
56
52
  this.executionFeeRecipient = opts.executionFeeRecipient;
57
53
 
58
- this.clock.runEverySlot(async (slot) => this.onSlot(slot));
59
54
  this.clock.runEveryEpoch((epoch) => this.builderStatusTracker.poll(epoch));
60
55
  this.clock.start(this.controller.signal);
61
56
 
@@ -95,13 +90,7 @@ export class Builder {
95
90
 
96
91
  const builderStatusTracker = new BuilderStatusTracker(api, logger, index, opts.metrics);
97
92
 
98
- const store = new PayloadStore();
99
-
100
- return new Builder({opts, builderSigner, builderStatusTracker, clock, index, store});
101
- }
102
-
103
- private async onSlot(slot: number): Promise<void> {
104
- this.store.prune(slot);
93
+ return new Builder({opts, builderSigner, builderStatusTracker, clock, index});
105
94
  }
106
95
 
107
96
  async close(): Promise<void> {
package/src/identity.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import {ApiClient, ApiError, HttpStatusCode, routes} from "@lodestar/api";
2
2
  import {ChainForkConfig} from "@lodestar/config";
3
3
  import {PAYLOAD_BUILDER_VERSION} from "@lodestar/params";
4
- import {IClock, computeStartSlotAtEpoch} from "@lodestar/state-transition";
4
+ import {IClock} from "@lodestar/state-transition";
5
5
  import {BuilderIndex, BuilderStatus} from "@lodestar/types";
6
6
  import {ErrorAborted, Logger, TimeoutError, isFetchError, sleep, toHex} from "@lodestar/utils";
7
7
 
8
+ export const WAITING_FOR_BUILDER_POLL_MS = 10 * 1000;
9
+
8
10
  export async function resolveBuilderIdentity(
9
11
  api: ApiClient,
10
12
  logger: Logger,
@@ -69,7 +71,7 @@ async function waitForBuilder(
69
71
  currentEpoch,
70
72
  slot: clock.getCurrentSlot(),
71
73
  });
72
- await sleep(msToNextEpochPoll(clock), signal);
74
+ await sleep(WAITING_FOR_BUILDER_POLL_MS, signal);
73
75
  continue;
74
76
  }
75
77
 
@@ -85,7 +87,7 @@ async function waitForBuilder(
85
87
  currentEpoch,
86
88
  slot: clock.getCurrentSlot(),
87
89
  });
88
- await sleep(msToNextSlotPoll(clock), signal);
90
+ await sleep(WAITING_FOR_BUILDER_POLL_MS, signal);
89
91
  continue;
90
92
  }
91
93
  throw e;
@@ -99,11 +101,10 @@ async function waitForBuilder(
99
101
  }
100
102
  if (builder?.status === "pending") {
101
103
  logger.info("Waiting for builder deposit to be finalized", {id, slot: clock.getCurrentSlot()});
102
- await sleep(msToNextEpochPoll(clock), signal);
103
104
  } else {
104
105
  logger.info("Waiting for builder to be known to the beacon node", {id, slot: clock.getCurrentSlot()});
105
- await sleep(msToNextSlotPoll(clock), signal);
106
106
  }
107
+ await sleep(WAITING_FOR_BUILDER_POLL_MS, signal);
107
108
  }
108
109
  throw new ErrorAborted("waitForBuilder");
109
110
  }
@@ -144,11 +145,3 @@ async function fetchBuilder(
144
145
  throw e;
145
146
  }
146
147
  }
147
-
148
- function msToNextEpochPoll(clock: IClock): number {
149
- return clock.msToSlot(computeStartSlotAtEpoch(clock.getCurrentEpoch() + 1));
150
- }
151
-
152
- function msToNextSlotPoll(clock: IClock): number {
153
- return clock.msToSlot(clock.getCurrentSlot() + 1);
154
- }
@@ -1,30 +0,0 @@
1
- export type BidContext = {
2
- /** Value of the payload to the builder's fee recipient, as reported by the execution client */
3
- payloadValueGwei: number;
4
- /** Builder balance that can back a bid, excess over the minimum and unsettled payments */
5
- coverableGwei: number;
6
- };
7
- /** Decides how much to pay the proposer for a payload, null means do not bid */
8
- export interface BidPolicy {
9
- computeValue(ctx: BidContext): number | null;
10
- }
11
- export type ProportionalBidPolicyOpts = {
12
- /** Share of the payload value offered to the proposer, in basis points */
13
- shareBps: number;
14
- /** Fixed amount deducted from the share, e.g. to cover operating cost */
15
- fixedCostGwei: number;
16
- /** Never bid below this value */
17
- minValueGwei: number;
18
- /** Never bid above this value */
19
- maxValueGwei?: number;
20
- };
21
- /**
22
- * Offers a fixed share of the payload value, bounded by the configured limits and the
23
- * builder's coverable balance. Independent of competing bids.
24
- */
25
- export declare class ProportionalBidPolicy implements BidPolicy {
26
- private readonly opts;
27
- constructor(opts: ProportionalBidPolicyOpts);
28
- computeValue({ payloadValueGwei, coverableGwei }: BidContext): number | null;
29
- }
30
- //# sourceMappingURL=bidPolicy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bidPolicy.d.ts","sourceRoot":"","sources":["../../src/services/bidPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,+FAA+F;IAC/F,gBAAgB,EAAE,MAAM,CAAC;IACzB,0FAA0F;IAC1F,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,yBAAyB,EAqB3D;IAED,YAAY,CAAC,EAAC,gBAAgB,EAAE,aAAa,EAAC,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAYzE;CACF"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Offers a fixed share of the payload value, bounded by the configured limits and the
3
- * builder's coverable balance. Independent of competing bids.
4
- */
5
- export class ProportionalBidPolicy {
6
- opts;
7
- constructor(opts) {
8
- this.opts = opts;
9
- if (!Number.isSafeInteger(opts.shareBps) || opts.shareBps < 0 || opts.shareBps > 10_000) {
10
- throw Error(`Invalid shareBps=${opts.shareBps}, must be an integer within [0, 10000]`);
11
- }
12
- if (!Number.isSafeInteger(opts.fixedCostGwei) || opts.fixedCostGwei < 0) {
13
- throw Error(`Invalid fixedCostGwei=${opts.fixedCostGwei}, must be a non-negative safe integer`);
14
- }
15
- if (!Number.isSafeInteger(opts.minValueGwei) || opts.minValueGwei < 0) {
16
- throw Error(`Invalid minValueGwei=${opts.minValueGwei}, must be a non-negative safe integer`);
17
- }
18
- if (opts.maxValueGwei !== undefined &&
19
- (!Number.isSafeInteger(opts.maxValueGwei) || opts.maxValueGwei < opts.minValueGwei)) {
20
- throw Error(`Invalid maxValueGwei=${opts.maxValueGwei}, must be a safe integer greater than or equal to minValueGwei=${opts.minValueGwei}`);
21
- }
22
- }
23
- computeValue({ payloadValueGwei, coverableGwei }) {
24
- const proportionalValue = Number((BigInt(payloadValueGwei) * BigInt(this.opts.shareBps)) / 10000n);
25
- const share = proportionalValue - this.opts.fixedCostGwei;
26
- // This will override `fixedCostGwei` for the sake of fulfilling `minValueGwei`
27
- let value = Math.max(this.opts.minValueGwei, share);
28
- if (this.opts.maxValueGwei !== undefined) {
29
- value = Math.min(value, this.opts.maxValueGwei);
30
- }
31
- if (value > coverableGwei) {
32
- return null;
33
- }
34
- return value;
35
- }
36
- }
37
- //# sourceMappingURL=bidPolicy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bidPolicy.js","sourceRoot":"","sources":["../../src/services/bidPolicy.ts"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACH,IAAI;IAAjC,YAA6B,IAA+B;oBAA/B,IAAI;QAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC;YACxF,MAAM,KAAK,CAAC,oBAAoB,IAAI,CAAC,QAAQ,wCAAwC,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YACxE,MAAM,KAAK,CAAC,yBAAyB,IAAI,CAAC,aAAa,uCAAuC,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACtE,MAAM,KAAK,CAAC,wBAAwB,IAAI,CAAC,YAAY,uCAAuC,CAAC,CAAC;QAChG,CAAC;QAED,IACE,IAAI,CAAC,YAAY,KAAK,SAAS;YAC/B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,EACnF,CAAC;YACD,MAAM,KAAK,CACT,wBAAwB,IAAI,CAAC,YAAY,kEAAkE,IAAI,CAAC,YAAY,EAAE,CAC/H,CAAC;QACJ,CAAC;IACH,CAAC;IAED,YAAY,CAAC,EAAC,gBAAgB,EAAE,aAAa,EAAa;QACxD,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAO,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC1D,+EAA+E;QAC/E,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACzC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,KAAK,GAAG,aAAa,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -1,25 +0,0 @@
1
- import { ForkPostGloas } from "@lodestar/params";
2
- import { BlobsBundle, ExecutionPayload, Root, RootHex, Slot, gloas } from "@lodestar/types";
3
- export type BuiltPayload = {
4
- sourceId: string;
5
- executionPayload: ExecutionPayload<ForkPostGloas>;
6
- executionRequests: gloas.ExecutionRequests;
7
- blobsBundle: BlobsBundle<ForkPostGloas>;
8
- /** Value of the payload to the fee recipient in wei, as reported by the execution client */
9
- executionPayloadValue: bigint;
10
- };
11
- export type StoredPayload = {
12
- slot: Slot;
13
- parentBlockRoot: Root;
14
- blockHash: RootHex;
15
- payload: BuiltPayload;
16
- };
17
- export declare class PayloadStore {
18
- private readonly byBlockHash;
19
- add(payload: StoredPayload): void;
20
- get(blockHash: RootHex): StoredPayload | null;
21
- has(blockHash: RootHex): boolean;
22
- prune(currentSlot: Slot): void;
23
- get size(): number;
24
- }
25
- //# sourceMappingURL=payloadStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"payloadStore.d.ts","sourceRoot":"","sources":["../../src/services/payloadStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAI1F,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAClD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAC3C,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACxC,4FAA4F;IAC5F,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,eAAe,EAAE,IAAI,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAKF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IAEjE,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAEhC;IAED,GAAG,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAE5C;IAED,GAAG,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAE/B;IAED,KAAK,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAM7B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -1,25 +0,0 @@
1
- /** Keep payloads for this many slots after their target slot, late blocks may still commit to them */
2
- const KEEP_SLOTS = 2;
3
- export class PayloadStore {
4
- byBlockHash = new Map();
5
- add(payload) {
6
- this.byBlockHash.set(payload.blockHash, payload);
7
- }
8
- get(blockHash) {
9
- return this.byBlockHash.get(blockHash) ?? null;
10
- }
11
- has(blockHash) {
12
- return this.byBlockHash.has(blockHash);
13
- }
14
- prune(currentSlot) {
15
- for (const [blockHash, { slot }] of this.byBlockHash) {
16
- if (slot + KEEP_SLOTS < currentSlot) {
17
- this.byBlockHash.delete(blockHash);
18
- }
19
- }
20
- }
21
- get size() {
22
- return this.byBlockHash.size;
23
- }
24
- }
25
- //# sourceMappingURL=payloadStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"payloadStore.js","sourceRoot":"","sources":["../../src/services/payloadStore.ts"],"names":[],"mappings":"AAqBA,sGAAsG;AACtG,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAM,OAAO,YAAY;IACN,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEjE,GAAG,CAAC,OAAsB;QACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,SAAkB;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,SAAkB;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAiB;QACrB,KAAK,MAAM,CAAC,SAAS,EAAE,EAAC,IAAI,EAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,IAAI,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;CACF"}
@@ -1,65 +0,0 @@
1
- export type BidContext = {
2
- /** Value of the payload to the builder's fee recipient, as reported by the execution client */
3
- payloadValueGwei: number;
4
- /** Builder balance that can back a bid, excess over the minimum and unsettled payments */
5
- coverableGwei: number;
6
- };
7
-
8
- /** Decides how much to pay the proposer for a payload, null means do not bid */
9
- export interface BidPolicy {
10
- computeValue(ctx: BidContext): number | null;
11
- }
12
-
13
- export type ProportionalBidPolicyOpts = {
14
- /** Share of the payload value offered to the proposer, in basis points */
15
- shareBps: number;
16
- /** Fixed amount deducted from the share, e.g. to cover operating cost */
17
- fixedCostGwei: number;
18
- /** Never bid below this value */
19
- minValueGwei: number;
20
- /** Never bid above this value */
21
- maxValueGwei?: number;
22
- };
23
-
24
- /**
25
- * Offers a fixed share of the payload value, bounded by the configured limits and the
26
- * builder's coverable balance. Independent of competing bids.
27
- */
28
- export class ProportionalBidPolicy implements BidPolicy {
29
- constructor(private readonly opts: ProportionalBidPolicyOpts) {
30
- if (!Number.isSafeInteger(opts.shareBps) || opts.shareBps < 0 || opts.shareBps > 10_000) {
31
- throw Error(`Invalid shareBps=${opts.shareBps}, must be an integer within [0, 10000]`);
32
- }
33
-
34
- if (!Number.isSafeInteger(opts.fixedCostGwei) || opts.fixedCostGwei < 0) {
35
- throw Error(`Invalid fixedCostGwei=${opts.fixedCostGwei}, must be a non-negative safe integer`);
36
- }
37
-
38
- if (!Number.isSafeInteger(opts.minValueGwei) || opts.minValueGwei < 0) {
39
- throw Error(`Invalid minValueGwei=${opts.minValueGwei}, must be a non-negative safe integer`);
40
- }
41
-
42
- if (
43
- opts.maxValueGwei !== undefined &&
44
- (!Number.isSafeInteger(opts.maxValueGwei) || opts.maxValueGwei < opts.minValueGwei)
45
- ) {
46
- throw Error(
47
- `Invalid maxValueGwei=${opts.maxValueGwei}, must be a safe integer greater than or equal to minValueGwei=${opts.minValueGwei}`
48
- );
49
- }
50
- }
51
-
52
- computeValue({payloadValueGwei, coverableGwei}: BidContext): number | null {
53
- const proportionalValue = Number((BigInt(payloadValueGwei) * BigInt(this.opts.shareBps)) / 10_000n);
54
- const share = proportionalValue - this.opts.fixedCostGwei;
55
- // This will override `fixedCostGwei` for the sake of fulfilling `minValueGwei`
56
- let value = Math.max(this.opts.minValueGwei, share);
57
- if (this.opts.maxValueGwei !== undefined) {
58
- value = Math.min(value, this.opts.maxValueGwei);
59
- }
60
- if (value > coverableGwei) {
61
- return null;
62
- }
63
- return value;
64
- }
65
- }
@@ -1,51 +0,0 @@
1
- import {ForkPostGloas} from "@lodestar/params";
2
- import {BlobsBundle, ExecutionPayload, Root, RootHex, Slot, gloas} from "@lodestar/types";
3
-
4
- // NOTE: BuiltPayload will migrate to payloadSource.ts when the payload source lands; the store
5
- // holds it here for now.
6
- export type BuiltPayload = {
7
- sourceId: string;
8
- executionPayload: ExecutionPayload<ForkPostGloas>;
9
- executionRequests: gloas.ExecutionRequests;
10
- blobsBundle: BlobsBundle<ForkPostGloas>;
11
- /** Value of the payload to the fee recipient in wei, as reported by the execution client */
12
- executionPayloadValue: bigint;
13
- };
14
-
15
- export type StoredPayload = {
16
- slot: Slot;
17
- parentBlockRoot: Root;
18
- blockHash: RootHex;
19
- payload: BuiltPayload;
20
- };
21
-
22
- /** Keep payloads for this many slots after their target slot, late blocks may still commit to them */
23
- const KEEP_SLOTS = 2;
24
-
25
- export class PayloadStore {
26
- private readonly byBlockHash = new Map<RootHex, StoredPayload>();
27
-
28
- add(payload: StoredPayload): void {
29
- this.byBlockHash.set(payload.blockHash, payload);
30
- }
31
-
32
- get(blockHash: RootHex): StoredPayload | null {
33
- return this.byBlockHash.get(blockHash) ?? null;
34
- }
35
-
36
- has(blockHash: RootHex): boolean {
37
- return this.byBlockHash.has(blockHash);
38
- }
39
-
40
- prune(currentSlot: Slot): void {
41
- for (const [blockHash, {slot}] of this.byBlockHash) {
42
- if (slot + KEEP_SLOTS < currentSlot) {
43
- this.byBlockHash.delete(blockHash);
44
- }
45
- }
46
- }
47
-
48
- get size(): number {
49
- return this.byBlockHash.size;
50
- }
51
- }