@aztec/aztec-node 1.0.0-nightly.20250608 → 1.0.0-nightly.20250611

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.
@@ -7,6 +7,7 @@ import { DateProvider } from '@aztec/foundation/timer';
7
7
  import { SiblingPath } from '@aztec/foundation/trees';
8
8
  import { type P2P } from '@aztec/p2p';
9
9
  import { SequencerClient, type SequencerPublisher } from '@aztec/sequencer-client';
10
+ import { EpochPruneWatcher, SlasherClient } from '@aztec/slasher';
10
11
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
11
12
  import type { InBlock, L2Block, L2BlockNumber, L2BlockSource, PublishedL2Block } from '@aztec/stdlib/block';
12
13
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress, NodeInfo, ProtocolContractAddresses } from '@aztec/stdlib/contract';
@@ -35,7 +36,9 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
35
36
  protected readonly l1ToL2MessageSource: L1ToL2MessageSource;
36
37
  protected readonly worldStateSynchronizer: WorldStateSynchronizer;
37
38
  protected readonly sequencer: SequencerClient | undefined;
39
+ protected readonly slasherClient: SlasherClient | undefined;
38
40
  protected readonly validatorsSentinel: Sentinel | undefined;
41
+ protected readonly epochPruneWatcher: EpochPruneWatcher | undefined;
39
42
  protected readonly l1ChainId: number;
40
43
  protected readonly version: number;
41
44
  protected readonly globalVariableBuilder: GlobalVariableBuilderInterface;
@@ -47,7 +50,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
47
50
  private isUploadingSnapshot;
48
51
  private txQueue;
49
52
  readonly tracer: Tracer;
50
- constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, validatorsSentinel: Sentinel | undefined, l1ChainId: number, version: number, globalVariableBuilder: GlobalVariableBuilderInterface, packageVersion: string, proofVerifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, log?: Logger);
53
+ constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, slasherClient: SlasherClient | undefined, validatorsSentinel: Sentinel | undefined, epochPruneWatcher: EpochPruneWatcher | undefined, l1ChainId: number, version: number, globalVariableBuilder: GlobalVariableBuilderInterface, packageVersion: string, proofVerifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, log?: Logger);
51
54
  getWorldStateSyncStatus(): Promise<WorldStateSyncStatus>;
52
55
  getL2Tips(): Promise<import("@aztec/stdlib/block").L2Tips>;
53
56
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ import { SerialQueue } from '@aztec/foundation/queue';
20
20
  import { count } from '@aztec/foundation/string';
21
21
  import { DateProvider, Timer } from '@aztec/foundation/timer';
22
22
  import { trySnapshotSync, uploadSnapshot } from '@aztec/node-lib/actions';
23
- import { createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
23
+ import { TxCollector, createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
24
24
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
25
25
  import { BlockBuilder, GlobalVariableBuilder, SequencerClient, createValidatorForAcceptingTxs } from '@aztec/sequencer-client';
26
26
  import { PublicProcessorFactory } from '@aztec/simulator/server';
@@ -49,7 +49,9 @@ import { NodeMetrics } from './node_metrics.js';
49
49
  l1ToL2MessageSource;
50
50
  worldStateSynchronizer;
51
51
  sequencer;
52
+ slasherClient;
52
53
  validatorsSentinel;
54
+ epochPruneWatcher;
53
55
  l1ChainId;
54
56
  version;
55
57
  globalVariableBuilder;
@@ -63,7 +65,7 @@ import { NodeMetrics } from './node_metrics.js';
63
65
  // Serial queue to ensure that we only send one tx at a time
64
66
  txQueue;
65
67
  tracer;
66
- constructor(config, p2pClient, blockSource, logsSource, contractDataSource, l1ToL2MessageSource, worldStateSynchronizer, sequencer, validatorsSentinel, l1ChainId, version, globalVariableBuilder, packageVersion, proofVerifier, telemetry = getTelemetryClient(), log = createLogger('node')){
68
+ constructor(config, p2pClient, blockSource, logsSource, contractDataSource, l1ToL2MessageSource, worldStateSynchronizer, sequencer, slasherClient, validatorsSentinel, epochPruneWatcher, l1ChainId, version, globalVariableBuilder, packageVersion, proofVerifier, telemetry = getTelemetryClient(), log = createLogger('node')){
67
69
  this.config = config;
68
70
  this.p2pClient = p2pClient;
69
71
  this.blockSource = blockSource;
@@ -72,7 +74,9 @@ import { NodeMetrics } from './node_metrics.js';
72
74
  this.l1ToL2MessageSource = l1ToL2MessageSource;
73
75
  this.worldStateSynchronizer = worldStateSynchronizer;
74
76
  this.sequencer = sequencer;
77
+ this.slasherClient = slasherClient;
75
78
  this.validatorsSentinel = validatorsSentinel;
79
+ this.epochPruneWatcher = epochPruneWatcher;
76
80
  this.l1ChainId = l1ChainId;
77
81
  this.version = version;
78
82
  this.globalVariableBuilder = globalVariableBuilder;
@@ -123,9 +127,7 @@ import { NodeMetrics } from './node_metrics.js';
123
127
  ...config.l1Contracts,
124
128
  ...l1ContractsAddresses
125
129
  };
126
- const l1Client = createExtendedL1Client(config.l1RpcUrls, config.publisherPrivateKey, ethereumChain.chainInfo);
127
- const l1TxUtils = new L1TxUtilsWithBlobs(l1Client, log, config);
128
- const rollupContract = new RollupContract(l1Client, config.l1Contracts.rollupAddress.toString());
130
+ const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
129
131
  const [l1GenesisTime, slotDuration, rollupVersionFromRollup] = await Promise.all([
130
132
  rollupContract.getL1GenesisTime(),
131
133
  rollupContract.getSlotDuration(),
@@ -156,23 +158,26 @@ import { NodeMetrics } from './node_metrics.js';
156
158
  await worldStateSynchronizer.start();
157
159
  // Start p2p. Note that it depends on world state to be running.
158
160
  await p2pClient.start();
161
+ config.txPublicSetupAllowList = config.txPublicSetupAllowList ?? await getDefaultAllowedSetupFunctions();
162
+ const blockBuilder = new BlockBuilder({
163
+ l1GenesisTime,
164
+ slotDuration: Number(slotDuration),
165
+ rollupVersion: config.rollupVersion,
166
+ l1ChainId: config.l1ChainId,
167
+ txPublicSetupAllowList: config.txPublicSetupAllowList
168
+ }, archiver, worldStateSynchronizer, archiver, dateProvider, telemetry);
159
169
  const watchers = [];
160
170
  const validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
161
171
  if (validatorsSentinel && config.slashInactivityEnabled) {
162
172
  watchers.push(validatorsSentinel);
163
173
  }
174
+ let epochPruneWatcher;
164
175
  if (config.slashPruneEnabled) {
165
- const epochPruneWatcher = new EpochPruneWatcher(archiver, epochCache, config.slashPrunePenalty, config.slashPruneMaxPenalty);
176
+ const txCollector = new TxCollector(p2pClient);
177
+ epochPruneWatcher = new EpochPruneWatcher(archiver, epochCache, txCollector, blockBuilder, config.slashPrunePenalty, config.slashPruneMaxPenalty);
178
+ await epochPruneWatcher.start();
166
179
  watchers.push(epochPruneWatcher);
167
180
  }
168
- const slasherClient = await SlasherClient.new(config, config.l1Contracts, l1TxUtils, watchers, dateProvider);
169
- await slasherClient.start();
170
- const blockBuilder = new BlockBuilder({
171
- l1GenesisTime,
172
- slotDuration: Number(slotDuration),
173
- rollupVersion: config.rollupVersion,
174
- l1ChainId: config.l1ChainId
175
- }, archiver, worldStateSynchronizer, archiver, dateProvider, telemetry);
176
181
  const validatorClient = createValidatorClient(config, {
177
182
  p2pClient,
178
183
  telemetry,
@@ -181,26 +186,46 @@ import { NodeMetrics } from './node_metrics.js';
181
186
  blockBuilder,
182
187
  blockSource: archiver
183
188
  });
189
+ if (validatorClient) {
190
+ watchers.push(validatorClient);
191
+ }
184
192
  log.verbose(`All Aztec Node subsystems synced`);
185
- // now create the sequencer
186
- const sequencer = config.disableValidator ? undefined : await SequencerClient.new(config, {
187
- // if deps were provided, they should override the defaults,
188
- // or things that we created in this function
189
- ...deps,
190
- epochCache,
191
- l1TxUtils,
192
- validatorClient,
193
- p2pClient,
194
- worldStateSynchronizer,
195
- slasherClient,
196
- blockBuilder,
197
- l2BlockSource: archiver,
198
- l1ToL2MessageSource: archiver,
199
- telemetry,
200
- dateProvider,
201
- blobSinkClient
202
- });
203
- return new AztecNodeService(config, p2pClient, archiver, archiver, archiver, archiver, worldStateSynchronizer, sequencer, validatorsSentinel, ethereumChain.chainInfo.id, config.rollupVersion, new GlobalVariableBuilder(config), packageVersion, proofVerifier, telemetry, log);
193
+ let sequencer;
194
+ let slasherClient;
195
+ let l1TxUtils;
196
+ let l1Client;
197
+ if (config.publisherPrivateKey) {
198
+ // we can still run a slasher client if a private key is provided
199
+ l1Client = createExtendedL1Client(config.l1RpcUrls, config.publisherPrivateKey, ethereumChain.chainInfo);
200
+ l1TxUtils = new L1TxUtilsWithBlobs(l1Client, log, config);
201
+ slasherClient = await SlasherClient.new(config, config.l1Contracts, l1TxUtils, watchers, dateProvider);
202
+ slasherClient.start();
203
+ }
204
+ // Validator enabled, create/start relevant service
205
+ if (!config.disableValidator) {
206
+ // This shouldn't happen, validators need a publisher private key.
207
+ if (!config.publisherPrivateKey) {
208
+ throw new Error('A publisher private key is required to run a validator');
209
+ }
210
+ sequencer = await SequencerClient.new(config, {
211
+ // if deps were provided, they should override the defaults,
212
+ // or things that we created in this function
213
+ ...deps,
214
+ epochCache,
215
+ l1TxUtils,
216
+ validatorClient,
217
+ p2pClient,
218
+ worldStateSynchronizer,
219
+ slasherClient: slasherClient,
220
+ blockBuilder,
221
+ l2BlockSource: archiver,
222
+ l1ToL2MessageSource: archiver,
223
+ telemetry,
224
+ dateProvider,
225
+ blobSinkClient
226
+ });
227
+ }
228
+ return new AztecNodeService(config, p2pClient, archiver, archiver, archiver, archiver, worldStateSynchronizer, sequencer, slasherClient, validatorsSentinel, epochPruneWatcher, ethereumChain.chainInfo.id, config.rollupVersion, new GlobalVariableBuilder(config), packageVersion, proofVerifier, telemetry, log);
204
229
  }
205
230
  /**
206
231
  * Returns the sequencer client instance.
@@ -385,6 +410,8 @@ import { NodeMetrics } from './node_metrics.js';
385
410
  this.log.info(`Stopping Aztec Node`);
386
411
  await this.txQueue.end();
387
412
  await tryStop(this.validatorsSentinel);
413
+ await tryStop(this.epochPruneWatcher);
414
+ await tryStop(this.slasherClient);
388
415
  await tryStop(this.proofVerifier);
389
416
  await tryStop(this.sequencer);
390
417
  await tryStop(this.p2pClient);
@@ -666,7 +693,7 @@ import { NodeMetrics } from './node_metrics.js';
666
693
  throw failedTxs[0].error;
667
694
  }
668
695
  const [processedTx] = processedTxs;
669
- return new PublicSimulationOutput(processedTx.revertReason, processedTx.constants, processedTx.txEffect, returns, processedTx.gasUsed);
696
+ return new PublicSimulationOutput(processedTx.revertReason, processedTx.globalVariables, processedTx.txEffect, returns, processedTx.gasUsed);
670
697
  } finally{
671
698
  await merkleTreeFork.close();
672
699
  }
@@ -690,7 +717,8 @@ import { NodeMetrics } from './node_metrics.js';
690
717
  ...this.config,
691
718
  ...config
692
719
  };
693
- await this.sequencer?.updateSequencerConfig(config);
720
+ this.sequencer?.updateSequencerConfig(config);
721
+ // this.blockBuilder.updateConfig(config); // TODO: Spyros has a PR to add the builder to `this`, so we can do this
694
722
  await this.p2pClient.updateP2PConfig(config);
695
723
  if (newConfig.realProofs !== this.config.realProofs) {
696
724
  this.proofVerifier = config.realProofs ? await BBCircuitVerifier.new(newConfig) : new TestCircuitVerifier();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/aztec-node",
3
- "version": "1.0.0-nightly.20250608",
3
+ "version": "1.0.0-nightly.20250611",
4
4
  "main": "dest/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -58,31 +58,32 @@
58
58
  "testTimeout": 120000,
59
59
  "setupFiles": [
60
60
  "../../foundation/src/jest/setup.mjs"
61
- ]
61
+ ],
62
+ "testEnvironment": "../../foundation/src/jest/env.mjs"
62
63
  },
63
64
  "dependencies": {
64
- "@aztec/archiver": "1.0.0-nightly.20250608",
65
- "@aztec/bb-prover": "1.0.0-nightly.20250608",
66
- "@aztec/blob-sink": "1.0.0-nightly.20250608",
67
- "@aztec/constants": "1.0.0-nightly.20250608",
68
- "@aztec/epoch-cache": "1.0.0-nightly.20250608",
69
- "@aztec/ethereum": "1.0.0-nightly.20250608",
70
- "@aztec/foundation": "1.0.0-nightly.20250608",
71
- "@aztec/kv-store": "1.0.0-nightly.20250608",
72
- "@aztec/l1-artifacts": "1.0.0-nightly.20250608",
73
- "@aztec/merkle-tree": "1.0.0-nightly.20250608",
74
- "@aztec/node-lib": "1.0.0-nightly.20250608",
75
- "@aztec/noir-protocol-circuits-types": "1.0.0-nightly.20250608",
76
- "@aztec/p2p": "1.0.0-nightly.20250608",
77
- "@aztec/protocol-contracts": "1.0.0-nightly.20250608",
78
- "@aztec/prover-client": "1.0.0-nightly.20250608",
79
- "@aztec/sequencer-client": "1.0.0-nightly.20250608",
80
- "@aztec/simulator": "1.0.0-nightly.20250608",
81
- "@aztec/slasher": "1.0.0-nightly.20250608",
82
- "@aztec/stdlib": "1.0.0-nightly.20250608",
83
- "@aztec/telemetry-client": "1.0.0-nightly.20250608",
84
- "@aztec/validator-client": "1.0.0-nightly.20250608",
85
- "@aztec/world-state": "1.0.0-nightly.20250608",
65
+ "@aztec/archiver": "1.0.0-nightly.20250611",
66
+ "@aztec/bb-prover": "1.0.0-nightly.20250611",
67
+ "@aztec/blob-sink": "1.0.0-nightly.20250611",
68
+ "@aztec/constants": "1.0.0-nightly.20250611",
69
+ "@aztec/epoch-cache": "1.0.0-nightly.20250611",
70
+ "@aztec/ethereum": "1.0.0-nightly.20250611",
71
+ "@aztec/foundation": "1.0.0-nightly.20250611",
72
+ "@aztec/kv-store": "1.0.0-nightly.20250611",
73
+ "@aztec/l1-artifacts": "1.0.0-nightly.20250611",
74
+ "@aztec/merkle-tree": "1.0.0-nightly.20250611",
75
+ "@aztec/node-lib": "1.0.0-nightly.20250611",
76
+ "@aztec/noir-protocol-circuits-types": "1.0.0-nightly.20250611",
77
+ "@aztec/p2p": "1.0.0-nightly.20250611",
78
+ "@aztec/protocol-contracts": "1.0.0-nightly.20250611",
79
+ "@aztec/prover-client": "1.0.0-nightly.20250611",
80
+ "@aztec/sequencer-client": "1.0.0-nightly.20250611",
81
+ "@aztec/simulator": "1.0.0-nightly.20250611",
82
+ "@aztec/slasher": "1.0.0-nightly.20250611",
83
+ "@aztec/stdlib": "1.0.0-nightly.20250611",
84
+ "@aztec/telemetry-client": "1.0.0-nightly.20250611",
85
+ "@aztec/validator-client": "1.0.0-nightly.20250611",
86
+ "@aztec/world-state": "1.0.0-nightly.20250611",
86
87
  "koa": "^2.16.1",
87
88
  "koa-router": "^12.0.0",
88
89
  "tslib": "^2.4.0",
@@ -11,6 +11,7 @@ import {
11
11
  } from '@aztec/constants';
12
12
  import { EpochCache } from '@aztec/epoch-cache';
13
13
  import {
14
+ type ExtendedViemWalletClient,
14
15
  type L1ContractAddresses,
15
16
  RegistryContract,
16
17
  RollupContract,
@@ -28,7 +29,7 @@ import { count } from '@aztec/foundation/string';
28
29
  import { DateProvider, Timer } from '@aztec/foundation/timer';
29
30
  import { SiblingPath } from '@aztec/foundation/trees';
30
31
  import { trySnapshotSync, uploadSnapshot } from '@aztec/node-lib/actions';
31
- import { type P2P, createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
32
+ import { type P2P, TxCollector, createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
32
33
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
33
34
  import {
34
35
  BlockBuilder,
@@ -125,7 +126,9 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
125
126
  protected readonly l1ToL2MessageSource: L1ToL2MessageSource,
126
127
  protected readonly worldStateSynchronizer: WorldStateSynchronizer,
127
128
  protected readonly sequencer: SequencerClient | undefined,
129
+ protected readonly slasherClient: SlasherClient | undefined,
128
130
  protected readonly validatorsSentinel: Sentinel | undefined,
131
+ protected readonly epochPruneWatcher: EpochPruneWatcher | undefined,
129
132
  protected readonly l1ChainId: number,
130
133
  protected readonly version: number,
131
134
  protected readonly globalVariableBuilder: GlobalVariableBuilderInterface,
@@ -199,10 +202,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
199
202
  // Overwrite the passed in vars.
200
203
  config.l1Contracts = { ...config.l1Contracts, ...l1ContractsAddresses };
201
204
 
202
- const l1Client = createExtendedL1Client(config.l1RpcUrls, config.publisherPrivateKey, ethereumChain.chainInfo);
203
- const l1TxUtils = new L1TxUtilsWithBlobs(l1Client, log, config);
204
-
205
- const rollupContract = new RollupContract(l1Client, config.l1Contracts.rollupAddress.toString());
205
+ const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
206
206
  const [l1GenesisTime, slotDuration, rollupVersionFromRollup] = await Promise.all([
207
207
  rollupContract.getL1GenesisTime(),
208
208
  rollupContract.getSlotDuration(),
@@ -255,24 +255,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
255
255
  // Start p2p. Note that it depends on world state to be running.
256
256
  await p2pClient.start();
257
257
 
258
- const watchers: Watcher[] = [];
259
-
260
- const validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
261
- if (validatorsSentinel && config.slashInactivityEnabled) {
262
- watchers.push(validatorsSentinel);
263
- }
264
- if (config.slashPruneEnabled) {
265
- const epochPruneWatcher = new EpochPruneWatcher(
266
- archiver,
267
- epochCache,
268
- config.slashPrunePenalty,
269
- config.slashPruneMaxPenalty,
270
- );
271
- watchers.push(epochPruneWatcher);
272
- }
273
-
274
- const slasherClient = await SlasherClient.new(config, config.l1Contracts, l1TxUtils, watchers, dateProvider);
275
- await slasherClient.start();
258
+ config.txPublicSetupAllowList = config.txPublicSetupAllowList ?? (await getDefaultAllowedSetupFunctions());
276
259
 
277
260
  const blockBuilder = new BlockBuilder(
278
261
  {
@@ -280,6 +263,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
280
263
  slotDuration: Number(slotDuration),
281
264
  rollupVersion: config.rollupVersion,
282
265
  l1ChainId: config.l1ChainId,
266
+ txPublicSetupAllowList: config.txPublicSetupAllowList,
283
267
  },
284
268
  archiver,
285
269
  worldStateSynchronizer,
@@ -288,6 +272,27 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
288
272
  telemetry,
289
273
  );
290
274
 
275
+ const watchers: Watcher[] = [];
276
+
277
+ const validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
278
+ if (validatorsSentinel && config.slashInactivityEnabled) {
279
+ watchers.push(validatorsSentinel);
280
+ }
281
+
282
+ let epochPruneWatcher: EpochPruneWatcher | undefined;
283
+ if (config.slashPruneEnabled) {
284
+ const txCollector = new TxCollector(p2pClient);
285
+ epochPruneWatcher = new EpochPruneWatcher(
286
+ archiver,
287
+ epochCache,
288
+ txCollector,
289
+ blockBuilder,
290
+ config.slashPrunePenalty,
291
+ config.slashPruneMaxPenalty,
292
+ );
293
+ await epochPruneWatcher.start();
294
+ watchers.push(epochPruneWatcher);
295
+ }
291
296
  const validatorClient = createValidatorClient(config, {
292
297
  p2pClient,
293
298
  telemetry,
@@ -296,28 +301,51 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
296
301
  blockBuilder,
297
302
  blockSource: archiver,
298
303
  });
304
+
305
+ if (validatorClient) {
306
+ watchers.push(validatorClient);
307
+ }
308
+
299
309
  log.verbose(`All Aztec Node subsystems synced`);
300
310
 
301
- // now create the sequencer
302
- const sequencer = config.disableValidator
303
- ? undefined
304
- : await SequencerClient.new(config, {
305
- // if deps were provided, they should override the defaults,
306
- // or things that we created in this function
307
- ...deps,
308
- epochCache,
309
- l1TxUtils,
310
- validatorClient,
311
- p2pClient,
312
- worldStateSynchronizer,
313
- slasherClient,
314
- blockBuilder,
315
- l2BlockSource: archiver,
316
- l1ToL2MessageSource: archiver,
317
- telemetry,
318
- dateProvider,
319
- blobSinkClient,
320
- });
311
+ let sequencer: SequencerClient | undefined;
312
+ let slasherClient: SlasherClient | undefined;
313
+ let l1TxUtils: L1TxUtilsWithBlobs | undefined;
314
+ let l1Client: ExtendedViemWalletClient | undefined;
315
+
316
+ if (config.publisherPrivateKey) {
317
+ // we can still run a slasher client if a private key is provided
318
+ l1Client = createExtendedL1Client(config.l1RpcUrls, config.publisherPrivateKey, ethereumChain.chainInfo);
319
+ l1TxUtils = new L1TxUtilsWithBlobs(l1Client, log, config);
320
+ slasherClient = await SlasherClient.new(config, config.l1Contracts, l1TxUtils, watchers, dateProvider);
321
+ slasherClient.start();
322
+ }
323
+
324
+ // Validator enabled, create/start relevant service
325
+ if (!config.disableValidator) {
326
+ // This shouldn't happen, validators need a publisher private key.
327
+ if (!config.publisherPrivateKey) {
328
+ throw new Error('A publisher private key is required to run a validator');
329
+ }
330
+
331
+ sequencer = await SequencerClient.new(config, {
332
+ // if deps were provided, they should override the defaults,
333
+ // or things that we created in this function
334
+ ...deps,
335
+ epochCache,
336
+ l1TxUtils,
337
+ validatorClient,
338
+ p2pClient,
339
+ worldStateSynchronizer,
340
+ slasherClient: slasherClient!,
341
+ blockBuilder,
342
+ l2BlockSource: archiver,
343
+ l1ToL2MessageSource: archiver,
344
+ telemetry,
345
+ dateProvider,
346
+ blobSinkClient,
347
+ });
348
+ }
321
349
 
322
350
  return new AztecNodeService(
323
351
  config,
@@ -328,7 +356,9 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
328
356
  archiver,
329
357
  worldStateSynchronizer,
330
358
  sequencer,
359
+ slasherClient,
331
360
  validatorsSentinel,
361
+ epochPruneWatcher,
332
362
  ethereumChain.chainInfo.id,
333
363
  config.rollupVersion,
334
364
  new GlobalVariableBuilder(config),
@@ -568,6 +598,8 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
568
598
  this.log.info(`Stopping Aztec Node`);
569
599
  await this.txQueue.end();
570
600
  await tryStop(this.validatorsSentinel);
601
+ await tryStop(this.epochPruneWatcher);
602
+ await tryStop(this.slasherClient);
571
603
  await tryStop(this.proofVerifier);
572
604
  await tryStop(this.sequencer);
573
605
  await tryStop(this.p2pClient);
@@ -962,7 +994,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
962
994
  const [processedTx] = processedTxs;
963
995
  return new PublicSimulationOutput(
964
996
  processedTx.revertReason,
965
- processedTx.constants,
997
+ processedTx.globalVariables,
966
998
  processedTx.txEffect,
967
999
  returns,
968
1000
  processedTx.gasUsed,
@@ -993,7 +1025,8 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
993
1025
 
994
1026
  public async setConfig(config: Partial<SequencerConfig & ProverConfig>): Promise<void> {
995
1027
  const newConfig = { ...this.config, ...config };
996
- await this.sequencer?.updateSequencerConfig(config);
1028
+ this.sequencer?.updateSequencerConfig(config);
1029
+ // this.blockBuilder.updateConfig(config); // TODO: Spyros has a PR to add the builder to `this`, so we can do this
997
1030
  await this.p2pClient.updateP2PConfig(config);
998
1031
 
999
1032
  if (newConfig.realProofs !== this.config.realProofs) {