@aztec/aztec-node 2.0.0-nightly.20250821 → 2.0.0-nightly.20250823

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.
@@ -9,7 +9,7 @@ import { DateProvider } from '@aztec/foundation/timer';
9
9
  import { MembershipWitness, SiblingPath } from '@aztec/foundation/trees';
10
10
  import { type P2P, type P2PClientDeps } from '@aztec/p2p';
11
11
  import { SequencerClient, type SequencerPublisher } from '@aztec/sequencer-client';
12
- import { EpochPruneWatcher, SlasherClient } from '@aztec/slasher';
12
+ import { EpochPruneWatcher, type SlasherClientInterface } from '@aztec/slasher';
13
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
14
14
  import { type InBlock, type L2Block, type L2BlockNumber, type L2BlockSource, type PublishedL2Block } from '@aztec/stdlib/block';
15
15
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress, NodeInfo, ProtocolContractAddresses } from '@aztec/stdlib/contract';
@@ -19,7 +19,7 @@ import { type ClientProtocolCircuitVerifier, type L2LogsSource, type Service, ty
19
19
  import type { LogFilter, PrivateLog, TxScopedL2Log } from '@aztec/stdlib/logs';
20
20
  import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
21
21
  import { P2PClientType } from '@aztec/stdlib/p2p';
22
- import type { MonitoredSlashPayload } from '@aztec/stdlib/slashing';
22
+ import type { Offense, SlashPayloadRound } from '@aztec/stdlib/slashing';
23
23
  import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
24
24
  import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
25
25
  import { type BlockHeader, type GlobalVariableBuilder as GlobalVariableBuilderInterface, type IndexedTxEffect, PublicSimulationOutput, Tx, type TxHash, TxReceipt, type TxValidationResult } from '@aztec/stdlib/tx';
@@ -40,14 +40,14 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
40
40
  protected readonly l1ToL2MessageSource: L1ToL2MessageSource;
41
41
  protected readonly worldStateSynchronizer: WorldStateSynchronizer;
42
42
  protected readonly sequencer: SequencerClient | undefined;
43
- protected readonly slasherClient: SlasherClient | undefined;
43
+ protected readonly slasherClient: SlasherClientInterface | undefined;
44
44
  protected readonly validatorsSentinel: Sentinel | undefined;
45
45
  protected readonly epochPruneWatcher: EpochPruneWatcher | undefined;
46
46
  protected readonly l1ChainId: number;
47
47
  protected readonly version: number;
48
48
  protected readonly globalVariableBuilder: GlobalVariableBuilderInterface;
49
- private readonly epochCache;
50
- private readonly packageVersion;
49
+ protected readonly epochCache: EpochCacheInterface;
50
+ protected readonly packageVersion: string;
51
51
  private proofVerifier;
52
52
  private telemetry;
53
53
  private log;
@@ -55,7 +55,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
55
55
  private isUploadingSnapshot;
56
56
  private txQueue;
57
57
  readonly tracer: Tracer;
58
- 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, epochCache: EpochCacheInterface, packageVersion: string, proofVerifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, log?: Logger);
58
+ constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, slasherClient: SlasherClientInterface | undefined, validatorsSentinel: Sentinel | undefined, epochPruneWatcher: EpochPruneWatcher | undefined, l1ChainId: number, version: number, globalVariableBuilder: GlobalVariableBuilderInterface, epochCache: EpochCacheInterface, packageVersion: string, proofVerifier: ClientProtocolCircuitVerifier, telemetry?: TelemetryClient, log?: Logger);
59
59
  getWorldStateSyncStatus(): Promise<WorldStateSyncStatus>;
60
60
  getL2Tips(): Promise<import("@aztec/stdlib/block").L2Tips>;
61
61
  /**
@@ -183,13 +183,13 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
183
183
  getPendingTxs(limit?: number, after?: TxHash): Promise<Tx[]>;
184
184
  getPendingTxCount(): Promise<number>;
185
185
  /**
186
- * Method to retrieve a single tx from the mempool or unfinalised chain.
186
+ * Method to retrieve a single tx from the mempool or unfinalized chain.
187
187
  * @param txHash - The transaction hash to return.
188
188
  * @returns - The tx if it exists.
189
189
  */
190
190
  getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
191
191
  /**
192
- * Method to retrieve txs from the mempool or unfinalised chain.
192
+ * Method to retrieve txs from the mempool or unfinalized chain.
193
193
  * @param txHash - The transaction hash to return.
194
194
  * @returns - The txs if it exists.
195
195
  */
@@ -311,6 +311,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
311
311
  rollbackTo(targetBlock: number, force?: boolean): Promise<void>;
312
312
  pauseSync(): Promise<void>;
313
313
  resumeSync(): Promise<void>;
314
- getSlasherMonitoredPayloads(): Promise<MonitoredSlashPayload[]>;
314
+ getSlashPayloads(): Promise<SlashPayloadRound[]>;
315
+ getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
315
316
  }
316
317
  //# sourceMappingURL=server.d.ts.map
@@ -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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"}
@@ -9,7 +9,7 @@ import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@azte
9
9
  import { createBlobSinkClient } from '@aztec/blob-sink/client';
10
10
  import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
11
11
  import { EpochCache } from '@aztec/epoch-cache';
12
- import { L1TxUtils, NULL_KEY, RegistryContract, RollupContract, createEthereumChain, createExtendedL1Client, getPublicClient, isExtendedClient } from '@aztec/ethereum';
12
+ import { NULL_KEY, RegistryContract, RollupContract, createEthereumChain, createExtendedL1Client, getPublicClient } from '@aztec/ethereum';
13
13
  import { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
14
14
  import { compactArray, pick } from '@aztec/foundation/collection';
15
15
  import { EthAddress } from '@aztec/foundation/eth-address';
@@ -25,7 +25,7 @@ import { createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
25
25
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
26
26
  import { BlockBuilder, GlobalVariableBuilder, SequencerClient, createValidatorForAcceptingTxs } from '@aztec/sequencer-client';
27
27
  import { PublicProcessorFactory } from '@aztec/simulator/server';
28
- import { AttestationsBlockWatcher, EpochPruneWatcher, SlasherClient } from '@aztec/slasher';
28
+ import { AttestationsBlockWatcher, EpochPruneWatcher, createSlasher } from '@aztec/slasher';
29
29
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
30
30
  import { L2BlockHash } from '@aztec/stdlib/block';
31
31
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
@@ -188,7 +188,7 @@ import { NodeMetrics } from './node_metrics.js';
188
188
  }
189
189
  let epochPruneWatcher;
190
190
  if (config.slashPruneEnabled) {
191
- epochPruneWatcher = new EpochPruneWatcher(archiver, archiver, epochCache, p2pClient.getTxProvider(), blockBuilder, config.slashPrunePenalty, config.slashPruneMaxPenalty);
191
+ epochPruneWatcher = new EpochPruneWatcher(archiver, archiver, epochCache, p2pClient.getTxProvider(), blockBuilder, config.slashPrunePenalty);
192
192
  await epochPruneWatcher.start();
193
193
  watchers.push(epochPruneWatcher);
194
194
  }
@@ -212,21 +212,20 @@ import { NodeMetrics } from './node_metrics.js';
212
212
  watchers.push(validatorClient);
213
213
  }
214
214
  log.verbose(`All Aztec Node subsystems synced`);
215
- const { slasherPrivateKey, l1RpcUrls } = config;
216
- const slasherPrivateKeyString = slasherPrivateKey.getValue();
217
- const slasherL1Client = slasherPrivateKeyString && slasherPrivateKeyString !== NULL_KEY ? createExtendedL1Client(l1RpcUrls, slasherPrivateKeyString, ethereumChain.chainInfo) : getPublicClient(config);
218
- const slasherL1TxUtils = isExtendedClient(slasherL1Client) ? new L1TxUtils(slasherL1Client, log, dateProvider, config) : undefined;
219
- const slasherClient = await SlasherClient.new(config, config.l1Contracts, slasherL1TxUtils, slasherL1Client, watchers, dateProvider);
220
- await slasherClient.start();
221
215
  // Validator enabled, create/start relevant service
222
216
  let sequencer;
217
+ let slasherClient;
223
218
  if (!config.disableValidator) {
224
219
  // This shouldn't happen, validators need a publisher private key.
225
220
  const { publisherPrivateKey } = config;
226
221
  if (!publisherPrivateKey?.getValue() || publisherPrivateKey?.getValue() === NULL_KEY) {
227
222
  throw new Error('A publisher private key is required to run a validator');
228
223
  }
229
- const l1Client = createExtendedL1Client(l1RpcUrls, publisherPrivateKey.getValue(), ethereumChain.chainInfo);
224
+ // We create a slasher only if we have a sequencer, since all slashing actions go through the sequencer publisher
225
+ // as they are executed when the node is selected as proposer.
226
+ slasherClient = await createSlasher(config, config.l1Contracts, getPublicClient(config), watchers, dateProvider, epochCache);
227
+ await slasherClient.start();
228
+ const l1Client = createExtendedL1Client(config.l1RpcUrls, publisherPrivateKey.getValue(), ethereumChain.chainInfo);
230
229
  const l1TxUtils = new L1TxUtilsWithBlobs(l1Client, log, dateProvider, config);
231
230
  sequencer = await SequencerClient.new(config, {
232
231
  // if deps were provided, they should override the defaults,
@@ -458,14 +457,14 @@ import { NodeMetrics } from './node_metrics.js';
458
457
  return this.p2pClient.getPendingTxCount();
459
458
  }
460
459
  /**
461
- * Method to retrieve a single tx from the mempool or unfinalised chain.
460
+ * Method to retrieve a single tx from the mempool or unfinalized chain.
462
461
  * @param txHash - The transaction hash to return.
463
462
  * @returns - The tx if it exists.
464
463
  */ getTxByHash(txHash) {
465
464
  return Promise.resolve(this.p2pClient.getTxByHashFromPool(txHash));
466
465
  }
467
466
  /**
468
- * Method to retrieve txs from the mempool or unfinalised chain.
467
+ * Method to retrieve txs from the mempool or unfinalized chain.
469
468
  * @param txHash - The transaction hash to return.
470
469
  * @returns - The txs if it exists.
471
470
  */ async getTxsByHash(txHashes) {
@@ -869,11 +868,21 @@ import { NodeMetrics } from './node_metrics.js';
869
868
  this.blockSource.resume();
870
869
  return Promise.resolve();
871
870
  }
872
- getSlasherMonitoredPayloads() {
871
+ getSlashPayloads() {
873
872
  if (!this.slasherClient) {
874
- throw new Error('Slasher client is not initialized.');
873
+ throw new Error(`Slasher client not enabled`);
874
+ }
875
+ return this.slasherClient.getSlashPayloads();
876
+ }
877
+ getSlashOffenses(round) {
878
+ if (!this.slasherClient) {
879
+ throw new Error(`Slasher client not enabled`);
880
+ }
881
+ if (round === 'all') {
882
+ return this.slasherClient.getPendingOffenses();
883
+ } else {
884
+ return this.slasherClient.gatherOffensesForRound(round === 'current' ? undefined : BigInt(round));
875
885
  }
876
- return Promise.resolve(this.slasherClient.getMonitoredPayloads());
877
886
  }
878
887
  /**
879
888
  * Returns an instance of MerkleTreeOperations having first ensured the world state is fully synched
@@ -3,7 +3,8 @@ import { EthAddress } from '@aztec/foundation/eth-address';
3
3
  import { RunningPromise } from '@aztec/foundation/running-promise';
4
4
  import { type L2TipsStore } from '@aztec/kv-store/stores';
5
5
  import type { P2PClient } from '@aztec/p2p';
6
- import type { SlasherConfig, WantToSlashArgs, Watcher, WatcherEmitter } from '@aztec/slasher/config';
6
+ import { type WantToSlashArgs, type Watcher, type WatcherEmitter } from '@aztec/slasher';
7
+ import type { SlasherConfig } from '@aztec/slasher/config';
7
8
  import { type L2BlockSource, L2BlockStream, type L2BlockStreamEvent, type L2BlockStreamEventHandler } from '@aztec/stdlib/block';
8
9
  import type { SingleValidatorStats, ValidatorStats, ValidatorStatusHistory, ValidatorStatusInSlot, ValidatorStatusType, ValidatorsEpochPerformance, ValidatorsStats } from '@aztec/stdlib/validators';
9
10
  import { SentinelStore } from './store.js';
@@ -35,7 +36,7 @@ export declare class Sentinel extends Sentinel_base implements L2BlockStreamEven
35
36
  protected handleChainProven(event: L2BlockStreamEvent): Promise<void>;
36
37
  protected computeProvenPerformance(epoch: bigint): Promise<ValidatorsEpochPerformance>;
37
38
  protected updateProvenPerformance(epoch: bigint, performance: ValidatorsEpochPerformance): Promise<void>;
38
- protected handleProvenPerformance(performance: ValidatorsEpochPerformance): void;
39
+ protected handleProvenPerformance(epoch: bigint, performance: ValidatorsEpochPerformance): void;
39
40
  shouldSlash({ validator, amount }: WantToSlashArgs): Promise<boolean>;
40
41
  /**
41
42
  * Process data for two L2 slots ago.
@@ -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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"}
@@ -3,8 +3,8 @@ import { EthAddress } from '@aztec/foundation/eth-address';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { RunningPromise } from '@aztec/foundation/running-promise';
5
5
  import { L2TipsMemoryStore } from '@aztec/kv-store/stores';
6
- import { Offense } from '@aztec/slasher';
7
- import { WANT_TO_SLASH_EVENT } from '@aztec/slasher/config';
6
+ import { OffenseType } from '@aztec/slasher';
7
+ import { WANT_TO_SLASH_EVENT } from '@aztec/slasher';
8
8
  import { L2BlockStream, getAttestationsFromPublishedL2Block } from '@aztec/stdlib/block';
9
9
  import { getEpochAtSlot, getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
10
10
  import EventEmitter from 'node:events';
@@ -88,7 +88,7 @@ export class Sentinel extends EventEmitter {
88
88
  const performance = await this.computeProvenPerformance(epoch);
89
89
  this.logger.info(`Proven performance for epoch ${epoch}`, performance);
90
90
  await this.updateProvenPerformance(epoch, performance);
91
- this.handleProvenPerformance(performance);
91
+ this.handleProvenPerformance(epoch, performance);
92
92
  }
93
93
  async computeProvenPerformance(epoch) {
94
94
  const headers = await this.archiver.getBlockHeadersForEpoch(epoch);
@@ -133,14 +133,15 @@ export class Sentinel extends EventEmitter {
133
133
  updateProvenPerformance(epoch, performance) {
134
134
  return this.store.updateProvenPerformance(epoch, performance);
135
135
  }
136
- handleProvenPerformance(performance) {
136
+ handleProvenPerformance(epoch, performance) {
137
137
  const criminals = Object.entries(performance).filter(([_, { missed, total }])=>{
138
138
  return missed / total >= this.config.slashInactivityCreateTargetPercentage;
139
139
  }).map(([address])=>address);
140
140
  const args = criminals.map((address)=>({
141
141
  validator: EthAddress.fromString(address),
142
142
  amount: this.config.slashInactivityCreatePenalty,
143
- offense: Offense.INACTIVITY
143
+ offenseType: OffenseType.INACTIVITY,
144
+ epochOrSlot: epoch
144
145
  }));
145
146
  this.logger.info(`Criminals: ${criminals.length}`, {
146
147
  args
@@ -0,0 +1,31 @@
1
+ import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
+ import type { P2P } from '@aztec/p2p';
3
+ import { SequencerClient } from '@aztec/sequencer-client';
4
+ import { EpochPruneWatcher, type SlasherClientInterface } from '@aztec/slasher';
5
+ import type { L2BlockSource } from '@aztec/stdlib/block';
6
+ import type { ContractDataSource } from '@aztec/stdlib/contract';
7
+ import type { L2LogsSource, Service, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
8
+ import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
9
+ import type { GlobalVariableBuilder as GlobalVariableBuilderInterface } from '@aztec/stdlib/tx';
10
+ import type { AztecNodeConfig } from '../aztec-node/config.js';
11
+ import { AztecNodeService } from '../aztec-node/server.js';
12
+ import { Sentinel } from '../sentinel/sentinel.js';
13
+ export declare class TestAztecNodeService extends AztecNodeService {
14
+ config: AztecNodeConfig;
15
+ p2pClient: P2P;
16
+ blockSource: L2BlockSource & Partial<Service>;
17
+ logsSource: L2LogsSource;
18
+ contractDataSource: ContractDataSource;
19
+ l1ToL2MessageSource: L1ToL2MessageSource;
20
+ worldStateSynchronizer: WorldStateSynchronizer;
21
+ sequencer: SequencerClient | undefined;
22
+ slasherClient: SlasherClientInterface | undefined;
23
+ validatorsSentinel: Sentinel | undefined;
24
+ epochPruneWatcher: EpochPruneWatcher | undefined;
25
+ l1ChainId: number;
26
+ version: number;
27
+ globalVariableBuilder: GlobalVariableBuilderInterface;
28
+ epochCache: EpochCacheInterface;
29
+ packageVersion: string;
30
+ }
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACrG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,IAAI,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAEhG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,gBAAgB;IACjD,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,UAAU,EAAE,YAAY,CAAC;IACzB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,aAAa,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAClD,kBAAkB,EAAE,QAAQ,GAAG,SAAS,CAAC;IACzC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,8BAA8B,CAAC;IACtD,UAAU,EAAE,mBAAmB,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;CACvC"}
@@ -0,0 +1 @@
1
+ import { AztecNodeService } from '../aztec-node/server.js';
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@aztec/aztec-node",
3
- "version": "2.0.0-nightly.20250821",
3
+ "version": "2.0.0-nightly.20250823",
4
4
  "main": "dest/index.js",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": "./dest/index.js",
8
8
  "./config": "./dest/aztec-node/config.js",
9
- "./sentinel": "./dest/aztec-node/sentinel.js"
9
+ "./sentinel": "./dest/aztec-node/sentinel.js",
10
+ "./test": "./dest/test/index.js"
10
11
  },
11
12
  "bin": "./dest/bin/index.js",
12
13
  "typedocOptions": {
@@ -65,28 +66,28 @@
65
66
  ]
66
67
  },
67
68
  "dependencies": {
68
- "@aztec/archiver": "2.0.0-nightly.20250821",
69
- "@aztec/bb-prover": "2.0.0-nightly.20250821",
70
- "@aztec/blob-sink": "2.0.0-nightly.20250821",
71
- "@aztec/constants": "2.0.0-nightly.20250821",
72
- "@aztec/epoch-cache": "2.0.0-nightly.20250821",
73
- "@aztec/ethereum": "2.0.0-nightly.20250821",
74
- "@aztec/foundation": "2.0.0-nightly.20250821",
75
- "@aztec/kv-store": "2.0.0-nightly.20250821",
76
- "@aztec/l1-artifacts": "2.0.0-nightly.20250821",
77
- "@aztec/merkle-tree": "2.0.0-nightly.20250821",
78
- "@aztec/node-lib": "2.0.0-nightly.20250821",
79
- "@aztec/noir-protocol-circuits-types": "2.0.0-nightly.20250821",
80
- "@aztec/p2p": "2.0.0-nightly.20250821",
81
- "@aztec/protocol-contracts": "2.0.0-nightly.20250821",
82
- "@aztec/prover-client": "2.0.0-nightly.20250821",
83
- "@aztec/sequencer-client": "2.0.0-nightly.20250821",
84
- "@aztec/simulator": "2.0.0-nightly.20250821",
85
- "@aztec/slasher": "2.0.0-nightly.20250821",
86
- "@aztec/stdlib": "2.0.0-nightly.20250821",
87
- "@aztec/telemetry-client": "2.0.0-nightly.20250821",
88
- "@aztec/validator-client": "2.0.0-nightly.20250821",
89
- "@aztec/world-state": "2.0.0-nightly.20250821",
69
+ "@aztec/archiver": "2.0.0-nightly.20250823",
70
+ "@aztec/bb-prover": "2.0.0-nightly.20250823",
71
+ "@aztec/blob-sink": "2.0.0-nightly.20250823",
72
+ "@aztec/constants": "2.0.0-nightly.20250823",
73
+ "@aztec/epoch-cache": "2.0.0-nightly.20250823",
74
+ "@aztec/ethereum": "2.0.0-nightly.20250823",
75
+ "@aztec/foundation": "2.0.0-nightly.20250823",
76
+ "@aztec/kv-store": "2.0.0-nightly.20250823",
77
+ "@aztec/l1-artifacts": "2.0.0-nightly.20250823",
78
+ "@aztec/merkle-tree": "2.0.0-nightly.20250823",
79
+ "@aztec/node-lib": "2.0.0-nightly.20250823",
80
+ "@aztec/noir-protocol-circuits-types": "2.0.0-nightly.20250823",
81
+ "@aztec/p2p": "2.0.0-nightly.20250823",
82
+ "@aztec/protocol-contracts": "2.0.0-nightly.20250823",
83
+ "@aztec/prover-client": "2.0.0-nightly.20250823",
84
+ "@aztec/sequencer-client": "2.0.0-nightly.20250823",
85
+ "@aztec/simulator": "2.0.0-nightly.20250823",
86
+ "@aztec/slasher": "2.0.0-nightly.20250823",
87
+ "@aztec/stdlib": "2.0.0-nightly.20250823",
88
+ "@aztec/telemetry-client": "2.0.0-nightly.20250823",
89
+ "@aztec/validator-client": "2.0.0-nightly.20250823",
90
+ "@aztec/world-state": "2.0.0-nightly.20250823",
90
91
  "koa": "^2.16.1",
91
92
  "koa-router": "^12.0.0",
92
93
  "tslib": "^2.4.0",
@@ -12,14 +12,12 @@ import {
12
12
  import { EpochCache, type EpochCacheInterface } from '@aztec/epoch-cache';
13
13
  import {
14
14
  type L1ContractAddresses,
15
- L1TxUtils,
16
15
  NULL_KEY,
17
16
  RegistryContract,
18
17
  RollupContract,
19
18
  createEthereumChain,
20
19
  createExtendedL1Client,
21
20
  getPublicClient,
22
- isExtendedClient,
23
21
  } from '@aztec/ethereum';
24
22
  import { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs';
25
23
  import { compactArray, pick } from '@aztec/foundation/collection';
@@ -42,7 +40,13 @@ import {
42
40
  createValidatorForAcceptingTxs,
43
41
  } from '@aztec/sequencer-client';
44
42
  import { PublicProcessorFactory } from '@aztec/simulator/server';
45
- import { AttestationsBlockWatcher, EpochPruneWatcher, SlasherClient, type Watcher } from '@aztec/slasher';
43
+ import {
44
+ AttestationsBlockWatcher,
45
+ EpochPruneWatcher,
46
+ type SlasherClientInterface,
47
+ type Watcher,
48
+ createSlasher,
49
+ } from '@aztec/slasher';
46
50
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
47
51
  import {
48
52
  type InBlock,
@@ -80,7 +84,7 @@ import {
80
84
  import type { LogFilter, PrivateLog, TxScopedL2Log } from '@aztec/stdlib/logs';
81
85
  import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
82
86
  import { P2PClientType } from '@aztec/stdlib/p2p';
83
- import type { MonitoredSlashPayload } from '@aztec/stdlib/slashing';
87
+ import type { Offense, SlashPayloadRound } from '@aztec/stdlib/slashing';
84
88
  import type { NullifierLeafPreimage, PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
85
89
  import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
86
90
  import {
@@ -137,14 +141,14 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
137
141
  protected readonly l1ToL2MessageSource: L1ToL2MessageSource,
138
142
  protected readonly worldStateSynchronizer: WorldStateSynchronizer,
139
143
  protected readonly sequencer: SequencerClient | undefined,
140
- protected readonly slasherClient: SlasherClient | undefined,
144
+ protected readonly slasherClient: SlasherClientInterface | undefined,
141
145
  protected readonly validatorsSentinel: Sentinel | undefined,
142
146
  protected readonly epochPruneWatcher: EpochPruneWatcher | undefined,
143
147
  protected readonly l1ChainId: number,
144
148
  protected readonly version: number,
145
149
  protected readonly globalVariableBuilder: GlobalVariableBuilderInterface,
146
- private readonly epochCache: EpochCacheInterface,
147
- private readonly packageVersion: string,
150
+ protected readonly epochCache: EpochCacheInterface,
151
+ protected readonly packageVersion: string,
148
152
  private proofVerifier: ClientProtocolCircuitVerifier,
149
153
  private telemetry: TelemetryClient = getTelemetryClient(),
150
154
  private log = createLogger('node'),
@@ -306,7 +310,6 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
306
310
  p2pClient.getTxProvider(),
307
311
  blockBuilder,
308
312
  config.slashPrunePenalty,
309
- config.slashPruneMaxPenalty,
310
313
  );
311
314
  await epochPruneWatcher.start();
312
315
  watchers.push(epochPruneWatcher);
@@ -336,28 +339,10 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
336
339
 
337
340
  log.verbose(`All Aztec Node subsystems synced`);
338
341
 
339
- const { slasherPrivateKey, l1RpcUrls } = config;
340
- const slasherPrivateKeyString = slasherPrivateKey.getValue();
341
- const slasherL1Client =
342
- slasherPrivateKeyString && slasherPrivateKeyString !== NULL_KEY
343
- ? createExtendedL1Client(l1RpcUrls, slasherPrivateKeyString, ethereumChain.chainInfo)
344
- : getPublicClient(config);
345
- const slasherL1TxUtils = isExtendedClient(slasherL1Client)
346
- ? new L1TxUtils(slasherL1Client, log, dateProvider, config)
347
- : undefined;
348
-
349
- const slasherClient = await SlasherClient.new(
350
- config,
351
- config.l1Contracts,
352
- slasherL1TxUtils,
353
- slasherL1Client,
354
- watchers,
355
- dateProvider,
356
- );
357
- await slasherClient.start();
358
-
359
342
  // Validator enabled, create/start relevant service
360
343
  let sequencer: SequencerClient | undefined;
344
+ let slasherClient: SlasherClientInterface | undefined;
345
+
361
346
  if (!config.disableValidator) {
362
347
  // This shouldn't happen, validators need a publisher private key.
363
348
  const { publisherPrivateKey } = config;
@@ -365,7 +350,23 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
365
350
  throw new Error('A publisher private key is required to run a validator');
366
351
  }
367
352
 
368
- const l1Client = createExtendedL1Client(l1RpcUrls, publisherPrivateKey.getValue(), ethereumChain.chainInfo);
353
+ // We create a slasher only if we have a sequencer, since all slashing actions go through the sequencer publisher
354
+ // as they are executed when the node is selected as proposer.
355
+ slasherClient = await createSlasher(
356
+ config,
357
+ config.l1Contracts,
358
+ getPublicClient(config),
359
+ watchers,
360
+ dateProvider,
361
+ epochCache,
362
+ );
363
+ await slasherClient.start();
364
+
365
+ const l1Client = createExtendedL1Client(
366
+ config.l1RpcUrls,
367
+ publisherPrivateKey.getValue(),
368
+ ethereumChain.chainInfo,
369
+ );
369
370
  const l1TxUtils = new L1TxUtilsWithBlobs(l1Client, log, dateProvider, config);
370
371
 
371
372
  sequencer = await SequencerClient.new(config, {
@@ -671,7 +672,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
671
672
  }
672
673
 
673
674
  /**
674
- * Method to retrieve a single tx from the mempool or unfinalised chain.
675
+ * Method to retrieve a single tx from the mempool or unfinalized chain.
675
676
  * @param txHash - The transaction hash to return.
676
677
  * @returns - The tx if it exists.
677
678
  */
@@ -680,7 +681,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
680
681
  }
681
682
 
682
683
  /**
683
- * Method to retrieve txs from the mempool or unfinalised chain.
684
+ * Method to retrieve txs from the mempool or unfinalized chain.
684
685
  * @param txHash - The transaction hash to return.
685
686
  * @returns - The txs if it exists.
686
687
  */
@@ -1220,11 +1221,22 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1220
1221
  return Promise.resolve();
1221
1222
  }
1222
1223
 
1223
- public getSlasherMonitoredPayloads(): Promise<MonitoredSlashPayload[]> {
1224
+ public getSlashPayloads(): Promise<SlashPayloadRound[]> {
1225
+ if (!this.slasherClient) {
1226
+ throw new Error(`Slasher client not enabled`);
1227
+ }
1228
+ return this.slasherClient.getSlashPayloads();
1229
+ }
1230
+
1231
+ public getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]> {
1224
1232
  if (!this.slasherClient) {
1225
- throw new Error('Slasher client is not initialized.');
1233
+ throw new Error(`Slasher client not enabled`);
1234
+ }
1235
+ if (round === 'all') {
1236
+ return this.slasherClient.getPendingOffenses();
1237
+ } else {
1238
+ return this.slasherClient.gatherOffensesForRound(round === 'current' ? undefined : BigInt(round));
1226
1239
  }
1227
- return Promise.resolve(this.slasherClient.getMonitoredPayloads());
1228
1240
  }
1229
1241
 
1230
1242
  /**
@@ -5,9 +5,9 @@ import { createLogger } from '@aztec/foundation/log';
5
5
  import { RunningPromise } from '@aztec/foundation/running-promise';
6
6
  import { L2TipsMemoryStore, type L2TipsStore } from '@aztec/kv-store/stores';
7
7
  import type { P2PClient } from '@aztec/p2p';
8
- import { Offense } from '@aztec/slasher';
9
- import type { SlasherConfig, WantToSlashArgs, Watcher, WatcherEmitter } from '@aztec/slasher/config';
10
- import { WANT_TO_SLASH_EVENT } from '@aztec/slasher/config';
8
+ import { OffenseType } from '@aztec/slasher';
9
+ import { WANT_TO_SLASH_EVENT, type WantToSlashArgs, type Watcher, type WatcherEmitter } from '@aztec/slasher';
10
+ import type { SlasherConfig } from '@aztec/slasher/config';
11
11
  import {
12
12
  type L2BlockSource,
13
13
  L2BlockStream,
@@ -126,7 +126,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
126
126
  this.logger.info(`Proven performance for epoch ${epoch}`, performance);
127
127
 
128
128
  await this.updateProvenPerformance(epoch, performance);
129
- this.handleProvenPerformance(performance);
129
+ this.handleProvenPerformance(epoch, performance);
130
130
  }
131
131
 
132
132
  protected async computeProvenPerformance(epoch: bigint) {
@@ -169,7 +169,7 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
169
169
  return this.store.updateProvenPerformance(epoch, performance);
170
170
  }
171
171
 
172
- protected handleProvenPerformance(performance: ValidatorsEpochPerformance) {
172
+ protected handleProvenPerformance(epoch: bigint, performance: ValidatorsEpochPerformance) {
173
173
  const criminals = Object.entries(performance)
174
174
  .filter(([_, { missed, total }]) => {
175
175
  return missed / total >= this.config.slashInactivityCreateTargetPercentage;
@@ -179,7 +179,8 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
179
179
  const args = criminals.map(address => ({
180
180
  validator: EthAddress.fromString(address),
181
181
  amount: this.config.slashInactivityCreatePenalty,
182
- offense: Offense.INACTIVITY,
182
+ offenseType: OffenseType.INACTIVITY,
183
+ epochOrSlot: epoch,
183
184
  }));
184
185
 
185
186
  this.logger.info(`Criminals: ${criminals.length}`, { args });
@@ -0,0 +1,32 @@
1
+ import type { EpochCacheInterface } from '@aztec/epoch-cache';
2
+ import type { P2P } from '@aztec/p2p';
3
+ import { SequencerClient } from '@aztec/sequencer-client';
4
+ import { EpochPruneWatcher, type SlasherClientInterface } from '@aztec/slasher';
5
+ import type { L2BlockSource } from '@aztec/stdlib/block';
6
+ import type { ContractDataSource } from '@aztec/stdlib/contract';
7
+ import type { L2LogsSource, Service, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
8
+ import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
9
+ import type { GlobalVariableBuilder as GlobalVariableBuilderInterface } from '@aztec/stdlib/tx';
10
+
11
+ import type { AztecNodeConfig } from '../aztec-node/config.js';
12
+ import { AztecNodeService } from '../aztec-node/server.js';
13
+ import { Sentinel } from '../sentinel/sentinel.js';
14
+
15
+ export declare class TestAztecNodeService extends AztecNodeService {
16
+ declare public config: AztecNodeConfig;
17
+ declare public p2pClient: P2P;
18
+ declare public blockSource: L2BlockSource & Partial<Service>;
19
+ declare public logsSource: L2LogsSource;
20
+ declare public contractDataSource: ContractDataSource;
21
+ declare public l1ToL2MessageSource: L1ToL2MessageSource;
22
+ declare public worldStateSynchronizer: WorldStateSynchronizer;
23
+ declare public sequencer: SequencerClient | undefined;
24
+ declare public slasherClient: SlasherClientInterface | undefined;
25
+ declare public validatorsSentinel: Sentinel | undefined;
26
+ declare public epochPruneWatcher: EpochPruneWatcher | undefined;
27
+ declare public l1ChainId: number;
28
+ declare public version: number;
29
+ declare public globalVariableBuilder: GlobalVariableBuilderInterface;
30
+ declare public epochCache: EpochCacheInterface;
31
+ declare public packageVersion: string;
32
+ }