@lodestar/builder 1.50.0-dev.1f38fe79fb → 1.50.0-dev.20062ed60e

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 (42) hide show
  1. package/README.md +1 -1
  2. package/lib/builder.d.ts +7 -0
  3. package/lib/builder.d.ts.map +1 -1
  4. package/lib/builder.js +79 -4
  5. package/lib/builder.js.map +1 -1
  6. package/lib/services/bidLedger.d.ts +1 -0
  7. package/lib/services/bidLedger.d.ts.map +1 -1
  8. package/lib/services/bidLedger.js +4 -0
  9. package/lib/services/bidLedger.js.map +1 -1
  10. package/lib/services/bidSelector.d.ts +67 -0
  11. package/lib/services/bidSelector.d.ts.map +1 -0
  12. package/lib/services/bidSelector.js +59 -0
  13. package/lib/services/bidSelector.js.map +1 -0
  14. package/lib/services/blockObserver.d.ts +1 -2
  15. package/lib/services/blockObserver.d.ts.map +1 -1
  16. package/lib/services/blockObserver.js +3 -35
  17. package/lib/services/blockObserver.js.map +1 -1
  18. package/lib/services/envelopePublisher.d.ts +44 -0
  19. package/lib/services/envelopePublisher.d.ts.map +1 -0
  20. package/lib/services/envelopePublisher.js +96 -0
  21. package/lib/services/envelopePublisher.js.map +1 -0
  22. package/lib/services/executionPayloadEnvelope.d.ts +55 -0
  23. package/lib/services/executionPayloadEnvelope.d.ts.map +1 -0
  24. package/lib/services/executionPayloadEnvelope.js +79 -0
  25. package/lib/services/executionPayloadEnvelope.js.map +1 -0
  26. package/lib/services/payloadOrchestrator.d.ts +42 -0
  27. package/lib/services/payloadOrchestrator.d.ts.map +1 -0
  28. package/lib/services/payloadOrchestrator.js +60 -0
  29. package/lib/services/payloadOrchestrator.js.map +1 -0
  30. package/lib/services/proposerPreferencesTracker.d.ts +0 -6
  31. package/lib/services/proposerPreferencesTracker.d.ts.map +1 -1
  32. package/lib/services/proposerPreferencesTracker.js +0 -38
  33. package/lib/services/proposerPreferencesTracker.js.map +1 -1
  34. package/package.json +11 -11
  35. package/src/builder.ts +91 -5
  36. package/src/services/bidLedger.ts +5 -0
  37. package/src/services/bidSelector.ts +138 -0
  38. package/src/services/blockObserver.ts +3 -41
  39. package/src/services/envelopePublisher.ts +154 -0
  40. package/src/services/executionPayloadEnvelope.ts +156 -0
  41. package/src/services/payloadOrchestrator.ts +107 -0
  42. package/src/services/proposerPreferencesTracker.ts +1 -36
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Lodestar Builder
2
2
 
3
3
  [![Discord](https://img.shields.io/discord/593655374469660673.svg?label=Discord&logo=discord)](https://discord.gg/aMxzVcr)
4
- [![Eth Consensus Spec v1.7.0-beta.2](https://img.shields.io/badge/ETH%20consensus--spec-1.7.0_beta.2-blue)](https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-beta.2)
4
+ [![Eth Consensus Spec v1.7.0-beta.4](https://img.shields.io/badge/ETH%20consensus--spec-1.7.0_beta.4-blue)](https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-beta.4)
5
5
  ![ES Version](https://img.shields.io/badge/ES-2021-yellow)
6
6
  ![Node Version](https://img.shields.io/badge/node-24.x-green)
7
7
 
package/lib/builder.d.ts CHANGED
@@ -46,6 +46,13 @@ export declare class Builder {
46
46
  constructor({ opts, builderSigner, blockObserver, builderStatusTracker, proposerPreferencesTracker, clock, index, payloadStore, }: BuilderModules);
47
47
  static init(opts: BuilderOptions): Promise<Builder>;
48
48
  private onSlot;
49
+ private subscribeToEvents;
50
+ /**
51
+ * Proposer preferences are only broadcast once per proposal slot, fetch the ones the beacon node
52
+ * already knows to cover those missed while not connected, e.g. after a restart
53
+ */
54
+ private fetchProposerPreferences;
55
+ private onEvent;
49
56
  close(): Promise<void>;
50
57
  }
51
58
  //# 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,EAAC,MAAM,6BAA6B,CAAC;AAC1D,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;AACxD,OAAO,EAAC,0BAA0B,EAAC,MAAM,0CAA0C,CAAC;AAEpF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;CAC5B,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,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,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,YAAY,CAAe;IAE5C,YAAY,EACV,IAAI,EACJ,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,EACL,KAAK,EACL,YAAY,GACb,EAAE,cAAc,EAuBhB;IAED,OAAa,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA4CxD;YAEa,MAAM;IAKd,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,EAAS,MAAM,eAAe,CAAC;AAChD,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,EAAmC,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC1D,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;AACxD,OAAO,EAAC,0BAA0B,EAAC,MAAM,0CAA0C,CAAC;AAEpF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;CAC5B,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,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,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,YAAY,CAAe;IAE5C,YAAY,EACV,IAAI,EACJ,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,EACL,KAAK,EACL,YAAY,GACb,EAAE,cAAc,EAsBhB;IAED,OAAa,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA4CxD;YAEa,MAAM;IAKpB,OAAO,CAAC,iBAAiB;IAsCzB;;;OAGG;YACW,wBAAwB;YAqBxB,OAAO;IAwBf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CACF"}
package/lib/builder.js CHANGED
@@ -1,6 +1,7 @@
1
+ import { routes } from "@lodestar/api";
1
2
  import { assertEqualParams, createBeaconConfig } from "@lodestar/config";
2
3
  import { Clock } from "@lodestar/state-transition";
3
- import { toHex, toRootHex } from "@lodestar/utils";
4
+ import { isErrorAborted, toHex, toRootHex } from "@lodestar/utils";
4
5
  import { waitForGenesis } from "./genesis.js";
5
6
  import { resolveBuilderIdentity } from "./identity.js";
6
7
  import { logNodeVersion, waitForNodeReady } from "./readiness.js";
@@ -37,8 +38,7 @@ export class Builder {
37
38
  this.clock.runEverySlot(async (slot) => this.onSlot(slot));
38
39
  this.clock.runEveryEpoch((epoch) => this.builderStatusTracker.poll(epoch));
39
40
  this.clock.start(this.controller.signal);
40
- this.blockObserver.start(this.controller.signal);
41
- this.proposerPreferencesTracker.start(this.controller.signal);
41
+ this.subscribeToEvents(opts.api);
42
42
  this.logger.info("Builder client initialized", {
43
43
  index: this.index,
44
44
  executionFeeRecipient: toHex(this.executionFeeRecipient),
@@ -61,7 +61,7 @@ export class Builder {
61
61
  const index = await resolveBuilderIdentity(api, logger, builderSigner.getPubkeyHex(), opts.abortController.signal, clock, config);
62
62
  const builderStatusTracker = new BuilderStatusTracker(api, logger, index, opts.metrics);
63
63
  const blockObserver = new BlockObserver(config, logger, api);
64
- const proposerPreferencesTracker = new ProposerPreferencesTracker(api, logger);
64
+ const proposerPreferencesTracker = new ProposerPreferencesTracker();
65
65
  const payloadStore = new PayloadStore();
66
66
  return new Builder({
67
67
  opts,
@@ -78,6 +78,81 @@ export class Builder {
78
78
  this.payloadStore.prune(slot);
79
79
  this.proposerPreferencesTracker.prune(slot);
80
80
  }
81
+ subscribeToEvents(api) {
82
+ const signal = this.controller.signal;
83
+ if (signal.aborted)
84
+ return;
85
+ const topics = [routes.events.EventType.block, routes.events.EventType.proposerPreferences];
86
+ this.logger.verbose("Subscribing to builder events", { topics: topics.join(",") });
87
+ api.events
88
+ .eventstream({
89
+ topics,
90
+ signal,
91
+ onEvent: (event) => {
92
+ void this.onEvent(event);
93
+ },
94
+ onOpen: () => {
95
+ void this.fetchProposerPreferences(api);
96
+ },
97
+ onError: (error) => {
98
+ if (!signal.aborted)
99
+ this.logger.error("Failed to receive builder event", { topics: topics.join(",") }, error);
100
+ },
101
+ onClose: () => {
102
+ if (signal.aborted) {
103
+ this.logger.verbose("Closed builder event stream", { topics: topics.join(",") });
104
+ }
105
+ else {
106
+ this.logger.error("Builder event stream closed unexpectedly", { topics: topics.join(",") });
107
+ }
108
+ },
109
+ })
110
+ .catch((error) => {
111
+ if (!signal.aborted && !isErrorAborted(error)) {
112
+ this.logger.error("Failed to subscribe to builder events", { topics: topics.join(",") }, error instanceof Error ? error : Error(String(error)));
113
+ }
114
+ });
115
+ }
116
+ /**
117
+ * Proposer preferences are only broadcast once per proposal slot, fetch the ones the beacon node
118
+ * already knows to cover those missed while not connected, e.g. after a restart
119
+ */
120
+ async fetchProposerPreferences(api) {
121
+ const signal = this.controller.signal;
122
+ try {
123
+ const preferences = (await api.beacon.getProposerPreferences({}, { signal })).value();
124
+ for (const signedProposerPreferences of preferences) {
125
+ // Does not replace preferences already received from the event stream
126
+ this.proposerPreferencesTracker.onProposerPreferences(signedProposerPreferences);
127
+ }
128
+ this.logger.verbose("Fetched proposer preferences", { count: preferences.length });
129
+ }
130
+ catch (error) {
131
+ if (!signal.aborted && !isErrorAborted(error)) {
132
+ this.logger.warn("Failed to fetch proposer preferences", {}, error instanceof Error ? error : Error(String(error)));
133
+ }
134
+ }
135
+ }
136
+ async onEvent(event) {
137
+ const signal = this.controller.signal;
138
+ if (signal.aborted)
139
+ return;
140
+ try {
141
+ switch (event.type) {
142
+ case routes.events.EventType.block:
143
+ await this.blockObserver.processBlockEvent(event.message, signal);
144
+ break;
145
+ case routes.events.EventType.proposerPreferences:
146
+ this.proposerPreferencesTracker.onProposerPreferences(event.message.data);
147
+ break;
148
+ }
149
+ }
150
+ catch (error) {
151
+ if (!signal.aborted && !isErrorAborted(error)) {
152
+ this.logger.warn("Failed to process builder event", { eventType: event.type }, error instanceof Error ? error : Error(String(error)));
153
+ }
154
+ }
155
+ }
81
156
  async close() {
82
157
  this.controller.abort();
83
158
  }
@@ -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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"}
@@ -53,6 +53,7 @@ export declare class BidLedger {
53
53
  assertCanRecordBid({ slot, parentBlockHash, parentBlockRoot, }: Pick<SubmittedBid, "slot" | "parentBlockHash" | "parentBlockRoot">): void;
54
54
  recordBid(bid: SubmittedBid): BidLedgerRecord;
55
55
  recordWin(identity: BidIdentity & Pick<SubmittedBid, "signedBidRoot">, blockRoot: RootHex): BidLedgerRecord | null;
56
+ hasWon(identity: BidIdentity, blockRoot: RootHex): boolean;
56
57
  /** Release a winning bid liability only after its payment is known to be reflected in Builder balance. */
57
58
  recordPaymentSettled(identity: BidIdentity): BidLedgerRecord | null;
58
59
  canReveal(blockRoot: RootHex, blockHash: RootHex, envelopeRoot: RootHex): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"bidLedger.d.ts","sourceRoot":"","sources":["../../src/services/bidLedger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bidLedger.d.ts","sourceRoot":"","sources":["../../src/services/bidLedger.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,10 @@ export class BidLedger {
51
51
  record.wonBlockRoots.add(blockRoot);
52
52
  return toRecord(record);
53
53
  }
54
+ hasWon(identity, blockRoot) {
55
+ const record = this.getBid(identity.slot, identity.parentBlockHash, identity.parentBlockRoot);
56
+ return record !== null && record.blockHash === identity.blockHash && record.wonBlockRoots.has(blockRoot);
57
+ }
54
58
  /** Release a winning bid liability only after its payment is known to be reflected in Builder balance. */
55
59
  recordPaymentSettled(identity) {
56
60
  const record = this.getBid(identity.slot, identity.parentBlockHash, identity.parentBlockRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"bidLedger.js","sourceRoot":"","sources":["../../src/services/bidLedger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bidLedger.js","sourceRoot":"","sources":["../../src/services/bidLedger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AA6B9C,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,8EAAwD,CAAA;IACxD,sEAAgD,CAAA;IAChD,kEAA4C,CAAA;IAC5C,0EAAoD,CAAA;IACpD,4FAAsE,CAAA;AACxE,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AA+BD,MAAM,OAAO,cAAe,SAAQ,aAAiC;CAAG;AAExE,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,UAAU,GAAG,uBAAuB,GAAG,eAAe,CAAC;AAE7D,sGAAsG;AACtG,MAAM,OAAO,SAAS;IACH,UAAU,GAAG,IAAI,GAAG,EAA6C,CAAC;IAClE,0BAA0B,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC1E,eAAe,GAAG,CAAC,CAAC;IAE5B,YAAY,CAAC,IAAU,EAAE,eAAwB,EAAE,eAAwB;QACzE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,IAAI,KAAK,CAAC;IAC7F,CAAC;IAED,kBAAkB,CAAC,EACjB,IAAI,EACJ,eAAe,EACf,eAAe,GACoD;QACnE,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAChC,MAAM,IAAI,cAAc,CAAC,EAAC,IAAI,EAAE,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAC,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,cAAc,CACtB,EAAC,IAAI,EAAE,kBAAkB,CAAC,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAC,EAChF,6BAA6B,IAAI,oBAAoB,eAAe,oBAAoB,eAAe,EAAE,CAC1G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAiB;QACzB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,cAAc,CACtB,EAAC,IAAI,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAC,EACtE,+BAA+B,GAAG,CAAC,SAAS,EAAE,CAC/C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,EAAC,GAAG,GAAG,EAAE,aAAa,EAAE,IAAI,GAAG,EAAW,EAAE,cAAc,EAAE,KAAK,EAAC,CAAC;QAClF,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,QAA2D,EAAE,SAAkB;QACvF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC9F,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,QAAqB,EAAE,SAAkB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC9F,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3G,CAAC;IAED,0GAA0G;IAC1G,oBAAoB,CAAC,QAAqB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC9F,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAClG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,SAAkB,EAAE,SAAkB,EAAE,YAAqB;QACrE,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,CACL,eAAe,KAAK,SAAS;YAC7B,CAAC,eAAe,CAAC,SAAS,KAAK,SAAS,IAAI,eAAe,CAAC,YAAY,KAAK,YAAY,CAAC,CAC3F,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,SAAkB;QAC5B,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,kBAAkB,CAAC,SAAkB;QACnC,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,IAAI,KAAK,CAAC;IAC5E,CAAC;IAED,YAAY,CAAC,IAAU,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAqB;QACpF,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,eAAe,CAAC,SAAS,KAAK,SAAS,IAAI,eAAe,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;gBAC7F,MAAM,IAAI,cAAc,CACtB;oBACE,IAAI,EAAE,kBAAkB,CAAC,eAAe;oBACxC,SAAS;oBACT,SAAS;oBACT,iBAAiB,EAAE,eAAe,CAAC,SAAS;oBAC5C,YAAY;oBACZ,oBAAoB,EAAE,eAAe,CAAC,YAAY;iBACnD,EACD,iDAAiD,SAAS,iBAAiB,eAAe,CAAC,YAAY,EAAE,CAC1G,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;IACpG,CAAC;IAED,qBAAqB,CAAC,IAAU,EAAE,SAAkB,EAAE,SAAkB,EAAE,YAAqB;QAC7F,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,YAAmB;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;oBAC7D,SAAS;gBACX,CAAC;gBAED,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,cAAc,CACtB,EAAC,IAAI,EAAE,kBAAkB,CAAC,wBAAwB,EAAE,YAAY,EAAC,EACjE,mEAAmE,YAAY,EAAE,CAClF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,cAAc,CAAC,IAAU;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,WAAiB;QACrB,yEAAyE;QACzE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;QAChF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClD,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YAED,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBACxC,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;oBAC7D,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACxB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YACD,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAC3E,IAAI,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAChD,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,IAAU,EAAE,eAAwB,EAAE,eAAwB;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5F,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,eAAwB,EAAE,eAAwB;IAClE,OAAO,GAAG,eAAe,IAAI,eAAe,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,MAA8B;IAC9C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;KAChD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { ChainForkConfig } from "@lodestar/config";
2
+ import type { ForkPostGloas } from "@lodestar/params";
3
+ import type { BuilderIndex, RootHex, SignedBeaconBlock, Slot } from "@lodestar/types";
4
+ import { LodestarError } from "@lodestar/utils";
5
+ import type { BidLedger, BidLedgerRecord } from "./bidLedger.js";
6
+ export type ObservedPostGloasBlock = {
7
+ blockRoot: RootHex;
8
+ slot: Slot;
9
+ version: ForkPostGloas;
10
+ block: SignedBeaconBlock<ForkPostGloas>;
11
+ };
12
+ export type BidSelectorModules = {
13
+ config: ChainForkConfig;
14
+ ledger: BidLedger;
15
+ builderIndex: BuilderIndex;
16
+ };
17
+ export declare enum BidSelectionIgnoreReason {
18
+ FOREIGN_BUILDER = "foreign_builder"
19
+ }
20
+ export type BidSelectionResult = {
21
+ status: "selected";
22
+ blockRoot: RootHex;
23
+ bid: BidLedgerRecord;
24
+ } | {
25
+ status: "ignored";
26
+ reason: BidSelectionIgnoreReason;
27
+ };
28
+ export declare enum BidSelectorErrorCode {
29
+ BLOCK_ROOT_MISMATCH = "BID_SELECTOR_ERROR_BLOCK_ROOT_MISMATCH",
30
+ BLOCK_SLOT_MISMATCH = "BID_SELECTOR_ERROR_BLOCK_SLOT_MISMATCH",
31
+ BLOCK_FORK_MISMATCH = "BID_SELECTOR_ERROR_BLOCK_FORK_MISMATCH",
32
+ BID_SLOT_MISMATCH = "BID_SELECTOR_ERROR_BID_SLOT_MISMATCH",
33
+ UNKNOWN_BID = "BID_SELECTOR_ERROR_UNKNOWN_BID"
34
+ }
35
+ export type BidSelectorErrorType = {
36
+ code: BidSelectorErrorCode.BLOCK_ROOT_MISMATCH;
37
+ blockRoot: RootHex;
38
+ computedBlockRoot: RootHex;
39
+ } | {
40
+ code: BidSelectorErrorCode.BLOCK_SLOT_MISMATCH;
41
+ slot: Slot;
42
+ blockSlot: Slot;
43
+ } | {
44
+ code: BidSelectorErrorCode.BLOCK_FORK_MISMATCH;
45
+ version: ForkPostGloas;
46
+ blockFork: string;
47
+ } | {
48
+ code: BidSelectorErrorCode.BID_SLOT_MISMATCH;
49
+ slot: Slot;
50
+ bidSlot: Slot;
51
+ } | {
52
+ code: BidSelectorErrorCode.UNKNOWN_BID;
53
+ slot: Slot;
54
+ parentBlockHash: RootHex;
55
+ parentBlockRoot: RootHex;
56
+ blockHash: RootHex;
57
+ signedBidRoot: RootHex;
58
+ };
59
+ export declare class BidSelectorError extends LodestarError<BidSelectorErrorType> {
60
+ }
61
+ /** Matches an imported post-Gloas block to an exact local bid and records the win. */
62
+ export declare class BidSelector {
63
+ private readonly modules;
64
+ constructor(modules: BidSelectorModules);
65
+ match(observed: ObservedPostGloasBlock): BidSelectionResult;
66
+ }
67
+ //# sourceMappingURL=bidSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bidSelector.d.ts","sourceRoot":"","sources":["../../src/services/bidSelector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAC,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAEpF,OAAO,EAAC,aAAa,EAAY,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAc,SAAS,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE5E,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,oBAAY,wBAAwB;IAClC,eAAe,oBAAoB;CACpC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,eAAe,CAAC;CACtB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,wBAAwB,CAAC;CAClC,CAAC;AAEN,oBAAY,oBAAoB;IAC9B,mBAAmB,2CAA2C;IAC9D,mBAAmB,2CAA2C;IAC9D,mBAAmB,2CAA2C;IAC9D,iBAAiB,yCAAyC;IAC1D,WAAW,mCAAmC;CAC/C;AAED,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,oBAAoB,CAAC,mBAAmB,CAAC;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC,mBAAmB,CAAC;IAC/C,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;CACjB,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC,mBAAmB,CAAC;IAC/C,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC,iBAAiB,CAAC;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,IAAI,CAAC;CACf,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC,WAAW,CAAC;IACvC,IAAI,EAAE,IAAI,CAAC;IACX,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEN,qBAAa,gBAAiB,SAAQ,aAAa,CAAC,oBAAoB,CAAC;CAAG;AAE5E,sFAAsF;AACtF,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,EAAE,kBAAkB,EAAI;IAE5D,KAAK,CAAC,QAAQ,EAAE,sBAAsB,GAAG,kBAAkB,CAyD1D;CACF"}
@@ -0,0 +1,59 @@
1
+ import { sszTypesFor } from "@lodestar/types";
2
+ import { LodestarError, toRootHex } from "@lodestar/utils";
3
+ export var BidSelectionIgnoreReason;
4
+ (function (BidSelectionIgnoreReason) {
5
+ BidSelectionIgnoreReason["FOREIGN_BUILDER"] = "foreign_builder";
6
+ })(BidSelectionIgnoreReason || (BidSelectionIgnoreReason = {}));
7
+ export var BidSelectorErrorCode;
8
+ (function (BidSelectorErrorCode) {
9
+ BidSelectorErrorCode["BLOCK_ROOT_MISMATCH"] = "BID_SELECTOR_ERROR_BLOCK_ROOT_MISMATCH";
10
+ BidSelectorErrorCode["BLOCK_SLOT_MISMATCH"] = "BID_SELECTOR_ERROR_BLOCK_SLOT_MISMATCH";
11
+ BidSelectorErrorCode["BLOCK_FORK_MISMATCH"] = "BID_SELECTOR_ERROR_BLOCK_FORK_MISMATCH";
12
+ BidSelectorErrorCode["BID_SLOT_MISMATCH"] = "BID_SELECTOR_ERROR_BID_SLOT_MISMATCH";
13
+ BidSelectorErrorCode["UNKNOWN_BID"] = "BID_SELECTOR_ERROR_UNKNOWN_BID";
14
+ })(BidSelectorErrorCode || (BidSelectorErrorCode = {}));
15
+ export class BidSelectorError extends LodestarError {
16
+ }
17
+ /** Matches an imported post-Gloas block to an exact local bid and records the win. */
18
+ export class BidSelector {
19
+ modules;
20
+ constructor(modules) {
21
+ this.modules = modules;
22
+ }
23
+ match(observed) {
24
+ const { block, blockRoot, slot, version } = observed;
25
+ const { builderIndex, config, ledger } = this.modules;
26
+ const blockSlot = block.message.slot;
27
+ if (blockSlot !== slot) {
28
+ throw new BidSelectorError({ code: BidSelectorErrorCode.BLOCK_SLOT_MISMATCH, slot, blockSlot }, `Observed block slot does not match fetched block slot=${slot} blockSlot=${blockSlot}`);
29
+ }
30
+ const blockFork = config.getForkName(slot);
31
+ if (blockFork !== version) {
32
+ throw new BidSelectorError({ code: BidSelectorErrorCode.BLOCK_FORK_MISMATCH, version, blockFork }, `Observed block fork does not match configured fork version=${version} blockFork=${blockFork}`);
33
+ }
34
+ const computedBlockRoot = toRootHex(config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message));
35
+ if (computedBlockRoot !== blockRoot) {
36
+ throw new BidSelectorError({ code: BidSelectorErrorCode.BLOCK_ROOT_MISMATCH, blockRoot, computedBlockRoot }, `Observed block root does not match fetched block blockRoot=${blockRoot} computedBlockRoot=${computedBlockRoot}`);
37
+ }
38
+ const bid = block.message.body.signedExecutionPayloadBid.message;
39
+ if (bid.slot !== slot) {
40
+ throw new BidSelectorError({ code: BidSelectorErrorCode.BID_SLOT_MISMATCH, slot, bidSlot: bid.slot }, `Selected bid slot does not match block slot=${slot} bidSlot=${bid.slot}`);
41
+ }
42
+ if (bid.builderIndex !== builderIndex) {
43
+ return { status: "ignored", reason: BidSelectionIgnoreReason.FOREIGN_BUILDER };
44
+ }
45
+ const identity = {
46
+ slot,
47
+ parentBlockHash: toRootHex(bid.parentBlockHash),
48
+ parentBlockRoot: toRootHex(bid.parentBlockRoot),
49
+ blockHash: toRootHex(bid.blockHash),
50
+ };
51
+ const signedBidRoot = toRootHex(sszTypesFor(version, "SignedExecutionPayloadBid").hashTreeRoot(block.message.body.signedExecutionPayloadBid));
52
+ const localBid = ledger.recordWin({ ...identity, signedBidRoot }, blockRoot);
53
+ if (localBid === null) {
54
+ throw new BidSelectorError({ code: BidSelectorErrorCode.UNKNOWN_BID, ...identity, signedBidRoot }, `Selected bid is not in the local ledger slot=${slot} blockHash=${identity.blockHash} signedBidRoot=${signedBidRoot}`);
55
+ }
56
+ return { status: "selected", blockRoot, bid: localBid };
57
+ }
58
+ }
59
+ //# sourceMappingURL=bidSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bidSelector.js","sourceRoot":"","sources":["../../src/services/bidSelector.ts"],"names":[],"mappings":"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"}
@@ -36,11 +36,10 @@ export declare class BlockObserver {
36
36
  private readonly maxSeenBlockRoots;
37
37
  constructor(config: ChainForkConfig, logger: Logger, api: ApiClient, { retries, retryDelay, maxSeenBlockRoots }?: BlockObserverOptions);
38
38
  /**
39
- * Register a block consumer. Consumers that require complete observation must register before {@link start}, because
39
+ * Register a block consumer. Consumers that require complete observation must register before event delivery, because
40
40
  * roots observed before registration remain consumed until normal FIFO eviction.
41
41
  */
42
42
  runOnBlock(fn: RunOnBlockFn): void;
43
- start(signal: AbortSignal): void;
44
43
  processBlockEvent(event: BlockEvent, signal: AbortSignal): Promise<void>;
45
44
  }
46
45
  export declare function isRetryableBlockRetrievalError(error: Error): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"blockObserver.d.ts","sourceRoot":"","sources":["../../src/services/blockObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAY,MAAM,EAAC,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAkB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAC,MAAM,EAA8E,MAAM,iBAAiB,CAAC;AAEpH,QAAA,MAAO,SAAS,gCAAiB,CAAC;AAElC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAElE,KAAK,oBAAoB,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxC,SAAS,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;CAC7F,CAAC;AAEF,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IATtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAE3C,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,SAAS,EAC/B,EAAC,OAAW,EAAE,UAAgB,EAAE,iBAAuB,EAAC,GAAE,oBAAyB,EAKpF;IAED;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAEjC;IAED,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAqC/B;IAEK,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2H7E;CACF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAMpE"}
1
+ {"version":3,"file":"blockObserver.d.ts","sourceRoot":"","sources":["../../src/services/blockObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAY,MAAM,EAAC,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAkB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAC,MAAM,EAA8E,MAAM,iBAAiB,CAAC;AAEpH,QAAA,MAAO,SAAS,gCAAiB,CAAC;AAElC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAElE,KAAK,oBAAoB,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxC,SAAS,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;CAC7F,CAAC;AAEF,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IATtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAE3C,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,SAAS,EAC/B,EAAC,OAAW,EAAE,UAAgB,EAAE,iBAAuB,EAAC,GAAE,oBAAyB,EAMpF;IAED;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAEjC;IAEK,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2H7E;CACF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAMpE"}
@@ -25,47 +25,15 @@ export class BlockObserver {
25
25
  this.retries = retries;
26
26
  this.retryDelay = retryDelay;
27
27
  this.maxSeenBlockRoots = maxSeenBlockRoots;
28
+ this.logger.info("Block observer initialized", { retries, retryDelay, maxSeenBlockRoots });
28
29
  }
29
30
  /**
30
- * Register a block consumer. Consumers that require complete observation must register before {@link start}, because
31
+ * Register a block consumer. Consumers that require complete observation must register before event delivery, because
31
32
  * roots observed before registration remain consumed until normal FIFO eviction.
32
33
  */
33
34
  runOnBlock(fn) {
34
35
  this.fns.push(fn);
35
36
  }
36
- start(signal) {
37
- this.logger.info("Subscribing to block events", {
38
- retries: this.retries,
39
- retryDelay: this.retryDelay,
40
- maxSeenBlockRoots: this.maxSeenBlockRoots,
41
- });
42
- this.api.events
43
- .eventstream({
44
- topics: [EventType.block],
45
- signal,
46
- onEvent: (event) => {
47
- if (event.type !== EventType.block) {
48
- this.logger.debug("Ignoring unexpected beacon event", { eventType: event.type });
49
- return;
50
- }
51
- void this.processBlockEvent(event.message, signal);
52
- },
53
- onError: (error) => {
54
- this.logger.error("Failed to receive block event", {}, error);
55
- },
56
- onClose: () => {
57
- if (signal.aborted) {
58
- this.logger.debug("Closed stream for block events");
59
- }
60
- else {
61
- this.logger.error("Block event stream closed unexpectedly", {});
62
- }
63
- },
64
- })
65
- .catch((error) => {
66
- this.logger.error("Failed to subscribe to block events", {}, error instanceof Error ? error : Error(String(error)));
67
- });
68
- }
69
37
  async processBlockEvent(event, signal) {
70
38
  try {
71
39
  const { slot, block: blockRoot, executionOptimistic } = event;
@@ -103,7 +71,7 @@ export class BlockObserver {
103
71
  }
104
72
  return null;
105
73
  });
106
- if (response === null) {
74
+ if (response === null || signal.aborted) {
107
75
  return;
108
76
  }
109
77
  const { version } = response.meta();
@@ -1 +1 @@
1
- {"version":3,"file":"blockObserver.js","sourceRoot":"","sources":["../../src/services/blockObserver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blockObserver.js","sourceRoot":"","sources":["../../src/services/blockObserver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { type ApiClient } from "@lodestar/api";
2
+ import { type BuilderIndex, type RootHex, type gloas } from "@lodestar/types";
3
+ import { LodestarError } from "@lodestar/utils";
4
+ import type { BidIdentity, BidLedger } from "./bidLedger.js";
5
+ import type { BuilderSigner } from "./builderSigner.js";
6
+ import type { ExecutionPayloadEnvelopeContents } from "./executionPayloadEnvelope.js";
7
+ export type EnvelopeSelectionIdentity = BidIdentity & {
8
+ blockRoot: RootHex;
9
+ };
10
+ export type EnvelopePublisherModules = {
11
+ api: ApiClient;
12
+ signer: BuilderSigner;
13
+ ledger: BidLedger;
14
+ builderIndex: BuilderIndex;
15
+ };
16
+ export declare enum EnvelopePublisherErrorCode {
17
+ BUILDER_INDEX_MISMATCH = "ENVELOPE_PUBLISHER_ERROR_BUILDER_INDEX_MISMATCH",
18
+ SELECTION_NOT_RECORDED = "ENVELOPE_PUBLISHER_ERROR_SELECTION_NOT_RECORDED"
19
+ }
20
+ export type EnvelopePublisherErrorType = {
21
+ code: EnvelopePublisherErrorCode.BUILDER_INDEX_MISMATCH;
22
+ builderIndex: BuilderIndex;
23
+ envelopeBuilderIndex: BuilderIndex;
24
+ } | ({
25
+ code: EnvelopePublisherErrorCode.SELECTION_NOT_RECORDED;
26
+ } & EnvelopeSelectionIdentity);
27
+ export declare class EnvelopePublisherError extends LodestarError<EnvelopePublisherErrorType> {
28
+ }
29
+ export type EnvelopePublicationResult = {
30
+ status: "published";
31
+ signedEnvelope: gloas.SignedExecutionPayloadEnvelope;
32
+ } | {
33
+ status: "duplicate";
34
+ };
35
+ /** Signs and submits an envelope for a recorded local selection. */
36
+ export declare class EnvelopePublisher {
37
+ private readonly modules;
38
+ private readonly activePublications;
39
+ constructor(modules: EnvelopePublisherModules);
40
+ publish(contents: ExecutionPayloadEnvelopeContents, signal: AbortSignal): Promise<EnvelopePublicationResult>;
41
+ private waitForPublication;
42
+ private publishEnvelope;
43
+ }
44
+ //# sourceMappingURL=envelopePublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelopePublisher.d.ts","sourceRoot":"","sources":["../../src/services/envelopePublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,SAAS,EAAS,MAAM,eAAe,CAAC;AACrD,OAAO,EAAC,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAM,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAC,aAAa,EAAmB,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAC,gCAAgC,EAAC,MAAM,+BAA+B,CAAC;AAEpF,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG;IAAC,SAAS,EAAE,OAAO,CAAA;CAAC,CAAC;AAE3E,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,oBAAY,0BAA0B;IACpC,sBAAsB,oDAAoD;IAC1E,sBAAsB,oDAAoD;CAC3E;AAED,MAAM,MAAM,0BAA0B,GAClC;IACE,IAAI,EAAE,0BAA0B,CAAC,sBAAsB,CAAC;IACxD,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,YAAY,CAAC;CACpC,GACD,CAAC;IAAC,IAAI,EAAE,0BAA0B,CAAC,sBAAsB,CAAA;CAAC,GAAG,yBAAyB,CAAC,CAAC;AAE5F,qBAAa,sBAAuB,SAAQ,aAAa,CAAC,0BAA0B,CAAC;CAAG;AAExF,MAAM,MAAM,yBAAyB,GACjC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,cAAc,EAAE,KAAK,CAAC,8BAA8B,CAAA;CAAC,GAC3E;IAAC,MAAM,EAAE,WAAW,CAAA;CAAC,CAAC;AAQ1B,oEAAoE;AACpE,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyC;IAE5E,YAA6B,OAAO,EAAE,wBAAwB,EAAI;IAE5D,OAAO,CAAC,QAAQ,EAAE,gCAAgC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAqDjH;YAEa,kBAAkB;YAyBlB,eAAe;CA0B9B"}