@aztec/aztec-node 0.0.1-commit.0c875d939 → 0.0.1-commit.0ec55a70b

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.
@@ -1,9 +1,10 @@
1
1
  import type { EpochCache } from '@aztec/epoch-cache';
2
- import type { DataStoreConfig } from '@aztec/kv-store/config';
3
2
  import type { P2PClient } from '@aztec/p2p';
4
3
  import type { L2BlockSource } from '@aztec/stdlib/block';
4
+ import type { ChainConfig } from '@aztec/stdlib/config';
5
5
  import type { SlasherConfig } from '@aztec/stdlib/interfaces/server';
6
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
6
7
  import type { SentinelConfig } from './config.js';
7
8
  import { Sentinel } from './sentinel.js';
8
- export declare function createSentinel(epochCache: EpochCache, archiver: L2BlockSource, p2p: P2PClient, config: SentinelConfig & DataStoreConfig & SlasherConfig, logger?: import("@aztec/foundation/log").Logger): Promise<Sentinel | undefined>;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbnRpbmVsL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pDLHdCQUFzQixjQUFjLENBQ2xDLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLFFBQVEsRUFBRSxhQUFhLEVBQ3ZCLEdBQUcsRUFBRSxTQUFTLEVBQ2QsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEdBQUcsYUFBYSxFQUN4RCxNQUFNLHlDQUFnQyxHQUNyQyxPQUFPLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQVkvQiJ9
9
+ export declare function createSentinel(epochCache: EpochCache, archiver: L2BlockSource, p2p: P2PClient, config: SentinelConfig & DataStoreConfig & SlasherConfig & Pick<ChainConfig, 'l1ChainId' | 'l1Contracts'>, logger?: import("@aztec/foundation/log").Logger): Promise<Sentinel | undefined>;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbnRpbmVsL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHckQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pDLHdCQUFzQixjQUFjLENBQ2xDLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLFFBQVEsRUFBRSxhQUFhLEVBQ3ZCLEdBQUcsRUFBRSxTQUFTLEVBQ2QsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLGFBQWEsQ0FBQyxFQUN6RyxNQUFNLHlDQUFnQyxHQUNyQyxPQUFPLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQVkvQiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/sentinel/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,wBAAsB,cAAc,CAClC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,aAAa,EACxD,MAAM,yCAAgC,GACrC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAY/B"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/sentinel/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,wBAAsB,cAAc,CAClC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,EACzG,MAAM,yCAAgC,GACrC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAY/B"}
@@ -7,15 +7,17 @@ import type { P2PClient } from '@aztec/p2p';
7
7
  import { type Watcher, type WatcherEmitter } from '@aztec/slasher';
8
8
  import type { SlasherConfig } from '@aztec/slasher/config';
9
9
  import { type L2BlockSource, L2BlockStream, type L2BlockStreamEvent, type L2BlockStreamEventHandler } from '@aztec/stdlib/block';
10
+ import type { ChainConfig } from '@aztec/stdlib/config';
10
11
  import type { SingleValidatorStats, ValidatorStats, ValidatorStatusHistory, ValidatorStatusInSlot, ValidatorStatusType, ValidatorsEpochPerformance, ValidatorsStats } from '@aztec/stdlib/validators';
11
12
  import { SentinelStore } from './store.js';
13
+ export type SentinelRuntimeConfig = Pick<SlasherConfig, 'slashInactivityTargetPercentage' | 'slashInactivityPenalty' | 'slashInactivityConsecutiveEpochThreshold'> & Pick<ChainConfig, 'l1ChainId' | 'l1Contracts'>;
12
14
  declare const Sentinel_base: new () => WatcherEmitter;
13
15
  export declare class Sentinel extends Sentinel_base implements L2BlockStreamEventHandler, Watcher {
14
16
  protected epochCache: EpochCache;
15
17
  protected archiver: L2BlockSource;
16
18
  protected p2p: P2PClient;
17
19
  protected store: SentinelStore;
18
- protected config: Pick<SlasherConfig, 'slashInactivityTargetPercentage' | 'slashInactivityPenalty' | 'slashInactivityConsecutiveEpochThreshold'>;
20
+ protected config: SentinelRuntimeConfig;
19
21
  protected logger: import("@aztec/foundation/log").Logger;
20
22
  protected runningPromise: RunningPromise;
21
23
  protected blockStream: L2BlockStream;
@@ -27,7 +29,8 @@ export declare class Sentinel extends Sentinel_base implements L2BlockStreamEven
27
29
  archive: string;
28
30
  attestors: EthAddress[];
29
31
  }>;
30
- constructor(epochCache: EpochCache, archiver: L2BlockSource, p2p: P2PClient, store: SentinelStore, config: Pick<SlasherConfig, 'slashInactivityTargetPercentage' | 'slashInactivityPenalty' | 'slashInactivityConsecutiveEpochThreshold'>, logger?: import("@aztec/foundation/log").Logger);
32
+ constructor(epochCache: EpochCache, archiver: L2BlockSource, p2p: P2PClient, store: SentinelStore, config: SentinelRuntimeConfig, logger?: import("@aztec/foundation/log").Logger);
33
+ private getSignatureContext;
31
34
  updateConfig(config: Partial<SlasherConfig>): void;
32
35
  start(): Promise<void>;
33
36
  /** Loads initial slot and initializes blockstream. We will not process anything at or before the initial slot. */
@@ -90,4 +93,4 @@ export declare class Sentinel extends Sentinel_base implements L2BlockStreamEven
90
93
  } | undefined;
91
94
  }
92
95
  export {};
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudGluZWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZW50aW5lbC9zZW50aW5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQWUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFxQixLQUFLLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBSUwsS0FBSyxPQUFPLEVBQ1osS0FBSyxjQUFjLEVBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUNMLEtBQUssYUFBYSxFQUNsQixhQUFhLEVBQ2IsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyx5QkFBeUIsRUFFL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEtBQUssRUFDVixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixlQUFlLEVBQ2hCLE1BQU0sMEJBQTBCLENBQUM7QUFJbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFhM0MscUJBQWEsUUFBUyxTQUFRLGFBQTJDLFlBQVcseUJBQXlCLEVBQUUsT0FBTztJQWNsSCxTQUFTLENBQUMsVUFBVSxFQUFFLFVBQVU7SUFDaEMsU0FBUyxDQUFDLFFBQVEsRUFBRSxhQUFhO0lB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
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudGluZWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZW50aW5lbC9zZW50aW5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQWUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFxQixLQUFLLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBSUwsS0FBSyxPQUFPLEVBQ1osS0FBSyxjQUFjLEVBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUNMLEtBQUssYUFBYSxFQUNsQixhQUFhLEVBQ2IsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyx5QkFBeUIsRUFFL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RCxPQUFPLEtBQUssRUFDVixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixlQUFlLEVBQ2hCLE1BQU0sMEJBQTBCLENBQUM7QUFJbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUN0QyxhQUFhLEVBQ2IsaUNBQWlDLEdBQUcsd0JBQXdC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
@@ -1 +1 @@
1
- {"version":3,"file":"sentinel.d.ts","sourceRoot":"","sources":["../../src/sentinel/sentinel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sentinel.d.ts","sourceRoot":"","sources":["../../src/sentinel/sentinel.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,12 @@ export class Sentinel extends EventEmitter {
37
37
  const interval = epochCache.getL1Constants().ethereumSlotDuration * 1000 / 4;
38
38
  this.runningPromise = new RunningPromise(this.work.bind(this), logger, interval);
39
39
  }
40
+ getSignatureContext() {
41
+ return {
42
+ chainId: this.config.l1ChainId,
43
+ rollupAddress: this.config.l1Contracts.rollupAddress
44
+ };
45
+ }
40
46
  updateConfig(config) {
41
47
  this.config = {
42
48
  ...this.config,
@@ -48,7 +54,7 @@ export class Sentinel extends EventEmitter {
48
54
  this.runningPromise.start();
49
55
  }
50
56
  /** Loads initial slot and initializes blockstream. We will not process anything at or before the initial slot. */ async init() {
51
- this.initialSlot = this.epochCache.getEpochAndSlotNow().slot;
57
+ this.initialSlot = this.epochCache.getSlotNow();
52
58
  const startingBlock = BlockNumber(await this.archiver.getBlockNumber());
53
59
  this.logger.info(`Starting validator sentinel with initial slot ${this.initialSlot} and block ${startingBlock}`);
54
60
  this.blockStream = new L2BlockStream(this.archiver, this.l2TipsStore, this, this.logger, {
@@ -75,7 +81,7 @@ export class Sentinel extends EventEmitter {
75
81
  this.slotNumberToCheckpoint.set(checkpoint.checkpoint.header.slotNumber, {
76
82
  checkpointNumber: checkpoint.checkpoint.number,
77
83
  archive: checkpoint.checkpoint.archive.root.toString(),
78
- attestors: getAttestationInfoFromPublishedCheckpoint(checkpoint).filter((a)=>a.status === 'recovered-from-signature').map((a)=>a.address)
84
+ attestors: getAttestationInfoFromPublishedCheckpoint(checkpoint, this.getSignatureContext()).filter((a)=>a.status === 'recovered-from-signature').map((a)=>a.address)
79
85
  });
80
86
  // Prune the archive map to only keep at most N entries
81
87
  const historyLength = this.store.getHistoryLength();
@@ -91,16 +97,14 @@ export class Sentinel extends EventEmitter {
91
97
  return;
92
98
  }
93
99
  const blockNumber = event.block.number;
94
- const block = await this.archiver.getL2Block(blockNumber);
95
- if (!block) {
96
- this.logger.error(`Failed to get block ${blockNumber}`, {
97
- block
98
- });
100
+ const header = await this.archiver.getBlockHeader(blockNumber);
101
+ if (!header) {
102
+ this.logger.error(`Failed to get block header ${blockNumber}`);
99
103
  return;
100
104
  }
101
105
  // TODO(palla/slash): We should only be computing proven performance if this is
102
106
  // a full proof epoch and not a partial one, otherwise we'll end up with skewed stats.
103
- const epoch = getEpochAtSlot(block.header.getSlot(), this.epochCache.getL1Constants());
107
+ const epoch = getEpochAtSlot(header.getSlot(), this.epochCache.getL1Constants());
104
108
  this.logger.debug(`Computing proven performance for epoch ${epoch}`);
105
109
  const performance = await this.computeProvenPerformance(epoch);
106
110
  this.logger.info(`Computed proven performance for epoch ${epoch}`, performance);
@@ -109,7 +113,11 @@ export class Sentinel extends EventEmitter {
109
113
  }
110
114
  async computeProvenPerformance(epoch) {
111
115
  const [fromSlot, toSlot] = getSlotRangeForEpoch(epoch, this.epochCache.getL1Constants());
112
- const { committee } = await this.epochCache.getCommittee(fromSlot);
116
+ const { committee, isEscapeHatchOpen } = await this.epochCache.getCommittee(fromSlot);
117
+ if (isEscapeHatchOpen) {
118
+ this.logger.info(`Skipping proven performance for epoch ${epoch} - escape hatch is open`);
119
+ return {};
120
+ }
113
121
  if (!committee) {
114
122
  this.logger.trace(`No committee found for slot ${fromSlot}`);
115
123
  return {};
@@ -155,13 +163,13 @@ export class Sentinel extends EventEmitter {
155
163
  return false;
156
164
  }
157
165
  // Check that we have at least requiredConsecutiveEpochs and that all of them are above the inactivity threshold
158
- return pastEpochs.slice(0, requiredConsecutiveEpochs).every((p)=>p.missed / p.total >= this.config.slashInactivityTargetPercentage);
166
+ return pastEpochs.slice(0, requiredConsecutiveEpochs).every((p)=>p.total === 0 ? false : p.missed / p.total >= this.config.slashInactivityTargetPercentage);
159
167
  }
160
168
  async handleProvenPerformance(epoch, performance) {
161
169
  if (this.config.slashInactivityPenalty === 0n) {
162
170
  return;
163
171
  }
164
- const inactiveValidators = getEntries(performance).filter(([_, { missed, total }])=>missed / total >= this.config.slashInactivityTargetPercentage).map(([address])=>address);
172
+ const inactiveValidators = getEntries(performance).filter(([_, { missed, total }])=>total > 0 && missed / total >= this.config.slashInactivityTargetPercentage).map(([address])=>address);
165
173
  this.logger.debug(`Found ${inactiveValidators.length} inactive validators in epoch ${epoch}`, {
166
174
  inactiveValidators,
167
175
  epoch,
@@ -188,7 +196,7 @@ export class Sentinel extends EventEmitter {
188
196
  * Note that we do not process historical data, since we rely on p2p data for processing,
189
197
  * and we don't have that data if we were offline during the period.
190
198
  */ async work() {
191
- const { slot: currentSlot } = this.epochCache.getEpochAndSlotNow();
199
+ const currentSlot = this.epochCache.getSlotNow();
192
200
  try {
193
201
  // Manually sync the block stream to ensure we have the latest data.
194
202
  // Note we never `start` the blockstream, so it loops at the same pace as we do.
@@ -227,10 +235,10 @@ export class Sentinel extends EventEmitter {
227
235
  this.logger.trace(`Refusing to process slot ${targetSlot} given initial slot ${this.initialSlot}`);
228
236
  return false;
229
237
  }
230
- const archiverSlot = await this.archiver.getL2SlotNumber();
231
- if (archiverSlot === undefined || archiverSlot < targetSlot) {
238
+ const syncedSlot = await this.archiver.getSyncedL2SlotNumber();
239
+ if (syncedSlot === undefined || syncedSlot < targetSlot) {
232
240
  this.logger.debug(`Waiting for archiver to sync with L2 slot ${targetSlot}`, {
233
- archiverSlot,
241
+ syncedSlot,
234
242
  targetSlot
235
243
  });
236
244
  return false;
@@ -251,7 +259,12 @@ export class Sentinel extends EventEmitter {
251
259
  * Gathers committee and proposer data for a given slot, computes slot stats,
252
260
  * and updates overall stats.
253
261
  */ async processSlot(slot) {
254
- const { epoch, seed, committee } = await this.epochCache.getCommittee(slot);
262
+ const { epoch, seed, committee, isEscapeHatchOpen } = await this.epochCache.getCommittee(slot);
263
+ if (isEscapeHatchOpen) {
264
+ this.logger.info(`Skipping slot ${slot} at epoch ${epoch} - escape hatch is open`);
265
+ this.lastProcessedSlot = slot;
266
+ return;
267
+ }
255
268
  if (!committee || committee.length === 0) {
256
269
  this.logger.trace(`No committee found for slot ${slot} at epoch ${epoch}`);
257
270
  this.lastProcessedSlot = slot;
@@ -344,7 +357,7 @@ export class Sentinel extends EventEmitter {
344
357
  v.toString(),
345
358
  await this.store.getHistory(v)
346
359
  ]))) : await this.store.getHistories();
347
- const slotNow = this.epochCache.getEpochAndSlotNow().slot;
360
+ const slotNow = this.epochCache.getSlotNow();
348
361
  fromSlot ??= SlotNumber(Math.max((this.lastProcessedSlot ?? slotNow) - this.store.getHistoryLength(), 0));
349
362
  toSlot ??= this.lastProcessedSlot ?? slotNow;
350
363
  const stats = mapValues(histories, (history, address)=>this.computeStatsForValidator(address, history ?? [], fromSlot, toSlot));
@@ -360,7 +373,7 @@ export class Sentinel extends EventEmitter {
360
373
  if (!history || history.length === 0) {
361
374
  return undefined;
362
375
  }
363
- const slotNow = this.epochCache.getEpochAndSlotNow().slot;
376
+ const slotNow = this.epochCache.getSlotNow();
364
377
  const effectiveFromSlot = fromSlot ?? SlotNumber(Math.max((this.lastProcessedSlot ?? slotNow) - this.store.getHistoryLength(), 0));
365
378
  const effectiveToSlot = toSlot ?? this.lastProcessedSlot ?? slotNow;
366
379
  const historyLength = BigInt(this.store.getHistoryLength());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/aztec-node",
3
- "version": "0.0.1-commit.0c875d939",
3
+ "version": "0.0.1-commit.0ec55a70b",
4
4
  "main": "dest/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -65,30 +65,31 @@
65
65
  ]
66
66
  },
67
67
  "dependencies": {
68
- "@aztec/archiver": "0.0.1-commit.0c875d939",
69
- "@aztec/bb-prover": "0.0.1-commit.0c875d939",
70
- "@aztec/blob-client": "0.0.1-commit.0c875d939",
71
- "@aztec/constants": "0.0.1-commit.0c875d939",
72
- "@aztec/epoch-cache": "0.0.1-commit.0c875d939",
73
- "@aztec/ethereum": "0.0.1-commit.0c875d939",
74
- "@aztec/foundation": "0.0.1-commit.0c875d939",
75
- "@aztec/kv-store": "0.0.1-commit.0c875d939",
76
- "@aztec/l1-artifacts": "0.0.1-commit.0c875d939",
77
- "@aztec/merkle-tree": "0.0.1-commit.0c875d939",
78
- "@aztec/node-keystore": "0.0.1-commit.0c875d939",
79
- "@aztec/node-lib": "0.0.1-commit.0c875d939",
80
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.0c875d939",
81
- "@aztec/p2p": "0.0.1-commit.0c875d939",
82
- "@aztec/protocol-contracts": "0.0.1-commit.0c875d939",
83
- "@aztec/prover-client": "0.0.1-commit.0c875d939",
84
- "@aztec/sequencer-client": "0.0.1-commit.0c875d939",
85
- "@aztec/simulator": "0.0.1-commit.0c875d939",
86
- "@aztec/slasher": "0.0.1-commit.0c875d939",
87
- "@aztec/stdlib": "0.0.1-commit.0c875d939",
88
- "@aztec/telemetry-client": "0.0.1-commit.0c875d939",
89
- "@aztec/validator-client": "0.0.1-commit.0c875d939",
90
- "@aztec/validator-ha-signer": "0.0.1-commit.0c875d939",
91
- "@aztec/world-state": "0.0.1-commit.0c875d939",
68
+ "@aztec/archiver": "0.0.1-commit.0ec55a70b",
69
+ "@aztec/bb-prover": "0.0.1-commit.0ec55a70b",
70
+ "@aztec/blob-client": "0.0.1-commit.0ec55a70b",
71
+ "@aztec/blob-lib": "0.0.1-commit.0ec55a70b",
72
+ "@aztec/constants": "0.0.1-commit.0ec55a70b",
73
+ "@aztec/epoch-cache": "0.0.1-commit.0ec55a70b",
74
+ "@aztec/ethereum": "0.0.1-commit.0ec55a70b",
75
+ "@aztec/foundation": "0.0.1-commit.0ec55a70b",
76
+ "@aztec/kv-store": "0.0.1-commit.0ec55a70b",
77
+ "@aztec/l1-artifacts": "0.0.1-commit.0ec55a70b",
78
+ "@aztec/node-keystore": "0.0.1-commit.0ec55a70b",
79
+ "@aztec/node-lib": "0.0.1-commit.0ec55a70b",
80
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.0ec55a70b",
81
+ "@aztec/p2p": "0.0.1-commit.0ec55a70b",
82
+ "@aztec/protocol-contracts": "0.0.1-commit.0ec55a70b",
83
+ "@aztec/prover-client": "0.0.1-commit.0ec55a70b",
84
+ "@aztec/prover-node": "0.0.1-commit.0ec55a70b",
85
+ "@aztec/sequencer-client": "0.0.1-commit.0ec55a70b",
86
+ "@aztec/simulator": "0.0.1-commit.0ec55a70b",
87
+ "@aztec/slasher": "0.0.1-commit.0ec55a70b",
88
+ "@aztec/stdlib": "0.0.1-commit.0ec55a70b",
89
+ "@aztec/telemetry-client": "0.0.1-commit.0ec55a70b",
90
+ "@aztec/validator-client": "0.0.1-commit.0ec55a70b",
91
+ "@aztec/validator-ha-signer": "0.0.1-commit.0ec55a70b",
92
+ "@aztec/world-state": "0.0.1-commit.0ec55a70b",
92
93
  "koa": "^2.16.1",
93
94
  "koa-router": "^13.1.1",
94
95
  "tslib": "^2.4.0",
@@ -0,0 +1,131 @@
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import {
3
+ type BlockData,
4
+ type BlockDataWithCheckpointContext,
5
+ type CheckpointedL2Block,
6
+ type CommitteeAttestation,
7
+ L2Block,
8
+ } from '@aztec/stdlib/block';
9
+ import type { CheckpointData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
10
+ import {
11
+ type BlockIncludeOptions,
12
+ type BlockResponse,
13
+ type CheckpointIncludeOptions,
14
+ type CheckpointResponse,
15
+ l1PublishInfoFromL1PublishedData,
16
+ } from '@aztec/stdlib/interfaces/client';
17
+
18
+ /** Projects a full {@link L2Block} into a {@link BlockResponse}, attaching L1 / attestation context when provided. */
19
+ export async function blockResponseFromL2Block(
20
+ block: L2Block,
21
+ options: BlockIncludeOptions,
22
+ context?: { l1?: BlockDataWithCheckpointContext['l1']; attestations?: CommitteeAttestation[] },
23
+ ): Promise<BlockResponse> {
24
+ const response: BlockResponse = {
25
+ header: block.header,
26
+ archive: block.archive,
27
+ hash: await block.hash(),
28
+ checkpointNumber: block.checkpointNumber,
29
+ indexWithinCheckpoint: block.indexWithinCheckpoint,
30
+ number: block.number,
31
+ };
32
+ if (options.includeTransactions) {
33
+ (response as BlockResponse).body = block.body;
34
+ }
35
+ if (options.includeL1PublishInfo) {
36
+ (response as BlockResponse).l1 = l1PublishInfoFromL1PublishedData(context?.l1);
37
+ }
38
+ if (options.includeAttestations) {
39
+ (response as BlockResponse).attestations = context?.attestations ?? [];
40
+ }
41
+ return response;
42
+ }
43
+
44
+ /** Projects metadata-only {@link BlockData} into a {@link BlockResponse}. */
45
+ export function blockResponseFromBlockData(
46
+ data: BlockData,
47
+ blockNumber: BlockNumber,
48
+ options: BlockIncludeOptions,
49
+ context?: { l1?: BlockDataWithCheckpointContext['l1']; attestations?: CommitteeAttestation[] },
50
+ ): BlockResponse {
51
+ const response: BlockResponse = {
52
+ header: data.header,
53
+ archive: data.archive,
54
+ hash: data.blockHash,
55
+ checkpointNumber: data.checkpointNumber,
56
+ indexWithinCheckpoint: data.indexWithinCheckpoint,
57
+ number: blockNumber,
58
+ };
59
+ if (options.includeL1PublishInfo) {
60
+ (response as BlockResponse).l1 = l1PublishInfoFromL1PublishedData(context?.l1);
61
+ }
62
+ if (options.includeAttestations) {
63
+ (response as BlockResponse).attestations = context?.attestations ?? [];
64
+ }
65
+ return response;
66
+ }
67
+
68
+ /** Projects a {@link CheckpointedL2Block} into a {@link BlockResponse}. */
69
+ export function blockResponseFromCheckpointedL2Block(
70
+ cp: CheckpointedL2Block,
71
+ options: BlockIncludeOptions,
72
+ ): Promise<BlockResponse> {
73
+ return blockResponseFromL2Block(cp.block, options, { l1: cp.l1, attestations: cp.attestations });
74
+ }
75
+
76
+ /** Projects a {@link PublishedCheckpoint} into a {@link CheckpointResponse}. */
77
+ export async function checkpointResponseFromPublishedCheckpoint(
78
+ pc: PublishedCheckpoint,
79
+ options: CheckpointIncludeOptions,
80
+ ): Promise<CheckpointResponse> {
81
+ const response: CheckpointResponse = {
82
+ number: pc.checkpoint.number,
83
+ header: pc.checkpoint.header,
84
+ archive: pc.checkpoint.archive,
85
+ checkpointOutHash: pc.checkpoint.getCheckpointOutHash(),
86
+ startBlock: pc.checkpoint.blocks[0]?.number ?? BlockNumber.ZERO,
87
+ blockCount: pc.checkpoint.blocks.length,
88
+ feeAssetPriceModifier: pc.checkpoint.feeAssetPriceModifier,
89
+ };
90
+ if (options.includeBlocks) {
91
+ (response as CheckpointResponse).blocks = await Promise.all(
92
+ pc.checkpoint.blocks.map(block =>
93
+ blockResponseFromL2Block(block, {
94
+ includeTransactions: options.includeTransactions,
95
+ includeL1PublishInfo: false,
96
+ includeAttestations: false,
97
+ }),
98
+ ),
99
+ );
100
+ }
101
+ if (options.includeL1PublishInfo) {
102
+ (response as CheckpointResponse).l1 = l1PublishInfoFromL1PublishedData(pc.l1);
103
+ }
104
+ if (options.includeAttestations) {
105
+ (response as CheckpointResponse).attestations = pc.attestations;
106
+ }
107
+ return response;
108
+ }
109
+
110
+ /** Projects metadata-only {@link CheckpointData} into a {@link CheckpointResponse}. `includeBlocks` is ignored (no blocks loaded). */
111
+ export function checkpointResponseFromCheckpointData(
112
+ cd: CheckpointData,
113
+ options: CheckpointIncludeOptions,
114
+ ): CheckpointResponse {
115
+ const response: CheckpointResponse = {
116
+ number: cd.checkpointNumber,
117
+ header: cd.header,
118
+ archive: cd.archive,
119
+ checkpointOutHash: cd.checkpointOutHash,
120
+ startBlock: cd.startBlock,
121
+ blockCount: cd.blockCount,
122
+ feeAssetPriceModifier: cd.feeAssetPriceModifier,
123
+ };
124
+ if (options.includeL1PublishInfo) {
125
+ (response as CheckpointResponse).l1 = l1PublishInfoFromL1PublishedData(cd.l1);
126
+ }
127
+ if (options.includeAttestations) {
128
+ (response as CheckpointResponse).attestations = cd.attestations;
129
+ }
130
+ return response;
131
+ }
@@ -3,7 +3,6 @@ import { type GenesisStateConfig, genesisStateConfigMappings } from '@aztec/ethe
3
3
  import { type L1ContractAddresses, l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresses';
4
4
  import { type ConfigMappingsType, booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
5
5
  import { EthAddress } from '@aztec/foundation/eth-address';
6
- import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
7
6
  import {
8
7
  type KeyStore,
9
8
  type ValidatorKeyStore,
@@ -13,15 +12,21 @@ import {
13
12
  import { type SharedNodeConfig, sharedNodeConfigMappings } from '@aztec/node-lib/config';
14
13
  import { type P2PConfig, p2pConfigMappings } from '@aztec/p2p/config';
15
14
  import { type ProverClientUserConfig, proverClientConfigMappings } from '@aztec/prover-client/config';
15
+ import {
16
+ type ProverNodeConfig,
17
+ proverNodeConfigMappings,
18
+ specificProverNodeConfigMappings,
19
+ } from '@aztec/prover-node/config';
16
20
  import {
17
21
  type SequencerClientConfig,
18
- type TxSenderConfig,
22
+ type SequencerTxSenderConfig,
19
23
  sequencerClientConfigMappings,
20
24
  } from '@aztec/sequencer-client/config';
21
25
  import { slasherConfigMappings } from '@aztec/slasher';
22
26
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
23
27
  import { type NodeRPCConfig, nodeRpcConfigMappings } from '@aztec/stdlib/config';
24
28
  import type { SlasherConfig } from '@aztec/stdlib/interfaces/server';
29
+ import { type DataStoreConfig, dataConfigMappings } from '@aztec/stdlib/kv-store';
25
30
  import { type ValidatorClientConfig, validatorClientConfigMappings } from '@aztec/validator-client/config';
26
31
  import { type WorldStateConfig, worldStateConfigMappings } from '@aztec/world-state/config';
27
32
 
@@ -46,16 +51,18 @@ export type AztecNodeConfig = ArchiverConfig &
46
51
  SharedNodeConfig &
47
52
  GenesisStateConfig &
48
53
  NodeRPCConfig &
49
- SlasherConfig & {
54
+ SlasherConfig &
55
+ ProverNodeConfig & {
50
56
  /** L1 contracts addresses */
51
57
  l1Contracts: L1ContractAddresses;
52
58
  /** Whether the validator is disabled for this node */
53
59
  disableValidator: boolean;
54
60
  /** Whether to skip waiting for the archiver to be fully synced before starting other services */
55
61
  skipArchiverInitialSync: boolean;
56
-
57
62
  /** A flag to force verification of tx Chonk proofs. Only used for testnet */
58
63
  debugForceTxProofVerification: boolean;
64
+ /** Whether to enable the prover node as a subsystem. */
65
+ enableProverNode: boolean;
59
66
  };
60
67
 
61
68
  export const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig> = {
@@ -63,6 +70,7 @@ export const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig> = {
63
70
  ...keyStoreConfigMappings,
64
71
  ...archiverConfigMappings,
65
72
  ...sequencerClientConfigMappings,
73
+ ...proverNodeConfigMappings,
66
74
  ...validatorClientConfigMappings,
67
75
  ...proverClientConfigMappings,
68
76
  ...worldStateConfigMappings,
@@ -72,6 +80,7 @@ export const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig> = {
72
80
  ...genesisStateConfigMappings,
73
81
  ...nodeRpcConfigMappings,
74
82
  ...slasherConfigMappings,
83
+ ...specificProverNodeConfigMappings,
75
84
  l1Contracts: {
76
85
  description: 'The deployed L1 contract addresses',
77
86
  nested: l1ContractAddressesMapping,
@@ -91,6 +100,11 @@ export const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig> = {
91
100
  description: 'Whether to skip waiting for the archiver to be fully synced before starting other services.',
92
101
  ...booleanConfigHelper(false),
93
102
  },
103
+ enableProverNode: {
104
+ env: 'ENABLE_PROVER_NODE',
105
+ description: 'Whether to enable the prover node as a subsystem.',
106
+ ...booleanConfigHelper(false),
107
+ },
94
108
  };
95
109
 
96
110
  /**
@@ -101,7 +115,7 @@ export function getConfigEnvVars(): AztecNodeConfig {
101
115
  return getConfigFromMappings<AztecNodeConfig>(aztecNodeConfigMappings);
102
116
  }
103
117
 
104
- type ConfigRequiredToBuildKeyStore = TxSenderConfig & SequencerClientConfig & SharedNodeConfig & ValidatorClientConfig;
118
+ type ConfigRequiredToBuildKeyStore = SequencerClientConfig & SharedNodeConfig & ValidatorClientConfig;
105
119
 
106
120
  function createKeyStoreFromWeb3Signer(config: ConfigRequiredToBuildKeyStore): KeyStore | undefined {
107
121
  const validatorKeyStores: ValidatorKeyStore[] = [];
@@ -120,7 +134,7 @@ function createKeyStoreFromWeb3Signer(config: ConfigRequiredToBuildKeyStore): Ke
120
134
  feeRecipient: config.feeRecipient ?? AztecAddress.ZERO,
121
135
  coinbase: config.coinbase ?? config.validatorAddresses[0],
122
136
  remoteSigner: config.web3SignerUrl,
123
- publisher: config.publisherAddresses ?? [],
137
+ publisher: config.sequencerPublisherAddresses ?? [],
124
138
  });
125
139
 
126
140
  const keyStore: KeyStore = {
@@ -145,8 +159,10 @@ function createKeyStoreFromPrivateKeys(config: ConfigRequiredToBuildKeyStore): K
145
159
  const coinbase = config.coinbase ?? EthAddress.fromString(privateKeyToAddress(ethPrivateKeys[0]));
146
160
  const feeRecipient = config.feeRecipient ?? AztecAddress.ZERO;
147
161
 
148
- const publisherKeys = config.publisherPrivateKeys
149
- ? config.publisherPrivateKeys.map((k: { getValue: () => string }) => ethPrivateKeySchema.parse(k.getValue()))
162
+ const publisherKeys = config.sequencerPublisherPrivateKeys
163
+ ? config.sequencerPublisherPrivateKeys.map((k: { getValue: () => string }) =>
164
+ ethPrivateKeySchema.parse(k.getValue()),
165
+ )
150
166
  : [];
151
167
 
152
168
  validatorKeyStores.push({
@@ -168,7 +184,7 @@ function createKeyStoreFromPrivateKeys(config: ConfigRequiredToBuildKeyStore): K
168
184
  }
169
185
 
170
186
  export function createKeyStoreForValidator(
171
- config: TxSenderConfig & SequencerClientConfig & SharedNodeConfig,
187
+ config: SequencerTxSenderConfig & SequencerClientConfig & SharedNodeConfig,
172
188
  ): KeyStore | undefined {
173
189
  if (config.web3SignerUrl !== undefined && config.web3SignerUrl.length > 0) {
174
190
  return createKeyStoreFromWeb3Signer(config);