@aztec/aztec-node 0.0.1-commit.cf93bcc56 → 0.0.1-commit.d0fcfb7f

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.
@@ -20,9 +20,8 @@ import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddre
20
20
  import { GasFees } from '@aztec/stdlib/gas';
21
21
  import { type AztecNode, type AztecNodeAdmin, type AztecNodeAdminConfig, type GetContractClassLogsResponse, type GetPublicLogsResponse } from '@aztec/stdlib/interfaces/client';
22
22
  import { type AllowedElement, type ClientProtocolCircuitVerifier, type L2LogsSource, type Service, type WorldStateSyncStatus, type WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
23
- import type { LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
23
+ import type { DebugLogStore, LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
24
24
  import { type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
25
- import { P2PClientType } from '@aztec/stdlib/p2p';
26
25
  import type { Offense, SlashPayloadRound } from '@aztec/stdlib/slashing';
27
26
  import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
28
27
  import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
@@ -60,11 +59,12 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
60
59
  private blobClient?;
61
60
  private validatorClient?;
62
61
  private keyStoreManager?;
62
+ private debugLogStore;
63
63
  private metrics;
64
64
  private initialHeaderHashPromise;
65
65
  private isUploadingSnapshot;
66
66
  readonly tracer: Tracer;
67
- constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, proverNode: ProverNode | 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, blobClient?: BlobClientInterface | undefined, validatorClient?: ValidatorClient | undefined, keyStoreManager?: KeystoreManager | undefined);
67
+ constructor(config: AztecNodeConfig, p2pClient: P2P, blockSource: L2BlockSource & Partial<Service>, logsSource: L2LogsSource, contractDataSource: ContractDataSource, l1ToL2MessageSource: L1ToL2MessageSource, worldStateSynchronizer: WorldStateSynchronizer, sequencer: SequencerClient | undefined, proverNode: ProverNode | 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, blobClient?: BlobClientInterface | undefined, validatorClient?: ValidatorClient | undefined, keyStoreManager?: KeystoreManager | undefined, debugLogStore?: DebugLogStore);
68
68
  getWorldStateSyncStatus(): Promise<WorldStateSyncStatus>;
69
69
  getL2Tips(): Promise<import("@aztec/stdlib/block").L2Tips>;
70
70
  /**
@@ -77,7 +77,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
77
77
  logger?: Logger;
78
78
  publisher?: SequencerPublisher;
79
79
  dateProvider?: DateProvider;
80
- p2pClientDeps?: P2PClientDeps<P2PClientType.Full>;
80
+ p2pClientDeps?: P2PClientDeps;
81
81
  proverNodeDeps?: Partial<ProverNodeDeps>;
82
82
  }, options?: {
83
83
  prefilledPublicData?: PublicDataTreeLeaf[];
@@ -135,6 +135,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
135
135
  getBlocks(from: BlockNumber, limit: number): Promise<L2Block[]>;
136
136
  getCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
137
137
  getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<import("@aztec/stdlib/block").CheckpointedL2Block[]>;
138
+ getCheckpointsDataForEpoch(epochNumber: EpochNumber): Promise<import("@aztec/stdlib/checkpoint").CheckpointData[]>;
138
139
  /**
139
140
  * Method to fetch the current min L2 fees.
140
141
  * @returns The current min L2 fees.
@@ -148,6 +149,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
148
149
  getBlockNumber(): Promise<BlockNumber>;
149
150
  getProvenBlockNumber(): Promise<BlockNumber>;
150
151
  getCheckpointedBlockNumber(): Promise<BlockNumber>;
152
+ getCheckpointNumber(): Promise<CheckpointNumber>;
151
153
  /**
152
154
  * Method to fetch the version of the package.
153
155
  * @returns The node package version
@@ -219,7 +221,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
219
221
  getBlockHashMembershipWitness(referenceBlock: BlockParameter, blockHash: BlockHash): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined>;
220
222
  getNoteHashMembershipWitness(referenceBlock: BlockParameter, noteHash: Fr): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined>;
221
223
  getL1ToL2MessageMembershipWitness(referenceBlock: BlockParameter, l1ToL2Message: Fr): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>] | undefined>;
222
- getL1ToL2MessageBlock(l1ToL2Message: Fr): Promise<BlockNumber | undefined>;
224
+ getL1ToL2MessageCheckpoint(l1ToL2Message: Fr): Promise<CheckpointNumber | undefined>;
223
225
  /**
224
226
  * Returns whether an L1 to L2 message is synced by archiver and if it's ready to be included in a block.
225
227
  * @param l1ToL2Message - The L1 to L2 message to check.
@@ -282,5 +284,7 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
282
284
  getSlashPayloads(): Promise<SlashPayloadRound[]>;
283
285
  getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
284
286
  reloadKeystore(): Promise<void>;
287
+ /** Resolves a block parameter to a block number. */
288
+ protected resolveBlockNumber(block: BlockParameter): Promise<BlockNumber>;
285
289
  }
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQWtDLE1BQU0sMkJBQTJCLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLHdCQUF3QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQWMsS0FBSyxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQWlCLGVBQWUsRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdyRyxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQUUsS0FBSyxhQUFhLEVBQW9ELE1BQU0sWUFBWSxDQUFDO0FBRTVHLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLGNBQWMsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQXlCLGVBQWUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUcsT0FBTyxFQUVM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
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp0ZWMtbm9kZS9zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQWtDLE1BQU0sMkJBQTJCLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLHdCQUF3QixFQUFFLEtBQUsscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RyxPQUFPLEVBQWMsS0FBSyxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFFLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQWlCLGVBQWUsRUFBaUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdyRyxPQUFPLEVBQ0wsS0FBSyxHQUFHLEVBQ1IsS0FBSyxhQUFhLEVBSW5CLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxLQUFLLGNBQWMsRUFBb0IsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQXlCLGVBQWUsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUcsT0FBTyxFQUVM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
@@ -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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"}
@@ -391,7 +391,7 @@ import { MembershipWitness } from '@aztec/foundation/trees';
391
391
  import { KeystoreManager, loadKeystores, mergeKeystores } from '@aztec/node-keystore';
392
392
  import { trySnapshotSync, uploadSnapshot } from '@aztec/node-lib/actions';
393
393
  import { createForwarderL1TxUtilsFromSigners, createL1TxUtilsFromSigners } from '@aztec/node-lib/factories';
394
- import { createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
394
+ import { createP2PClient, createTxValidatorForAcceptingTxsOverRPC, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
395
395
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
396
396
  import { createProverNode } from '@aztec/prover-node';
397
397
  import { createKeyStoreForProver } from '@aztec/prover-node/config';
@@ -405,13 +405,13 @@ import { GasFees } from '@aztec/stdlib/gas';
405
405
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
406
406
  import { AztecNodeAdminConfigSchema } from '@aztec/stdlib/interfaces/client';
407
407
  import { tryStop } from '@aztec/stdlib/interfaces/server';
408
+ import { InMemoryDebugLogStore, NullDebugLogStore } from '@aztec/stdlib/logs';
408
409
  import { InboxLeaf } from '@aztec/stdlib/messaging';
409
- import { P2PClientType } from '@aztec/stdlib/p2p';
410
410
  import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
411
411
  import { PublicSimulationOutput, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
412
412
  import { getPackageVersion } from '@aztec/stdlib/update-checker';
413
413
  import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
414
- import { FullNodeCheckpointsBuilder as CheckpointsBuilder, FullNodeCheckpointsBuilder, NodeKeystoreAdapter, ValidatorClient, createBlockProposalHandler, createValidatorClient, createValidatorForAcceptingTxs } from '@aztec/validator-client';
414
+ import { FullNodeCheckpointsBuilder as CheckpointsBuilder, FullNodeCheckpointsBuilder, NodeKeystoreAdapter, ValidatorClient, createBlockProposalHandler, createValidatorClient } from '@aztec/validator-client';
415
415
  import { createWorldStateSynchronizer } from '@aztec/world-state';
416
416
  import { createPublicClient, fallback, http } from 'viem';
417
417
  import { createSentinel } from '../sentinel/factory.js';
@@ -446,6 +446,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
446
446
  blobClient;
447
447
  validatorClient;
448
448
  keyStoreManager;
449
+ debugLogStore;
449
450
  static{
450
451
  ({ e: [_initProto] } = _apply_decs_2203_r(this, [
451
452
  [
@@ -460,7 +461,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
460
461
  // Prevent two snapshot operations to happen simultaneously
461
462
  isUploadingSnapshot;
462
463
  tracer;
463
- constructor(config, p2pClient, blockSource, logsSource, contractDataSource, l1ToL2MessageSource, worldStateSynchronizer, sequencer, proverNode, slasherClient, validatorsSentinel, epochPruneWatcher, l1ChainId, version, globalVariableBuilder, epochCache, packageVersion, proofVerifier, telemetry = getTelemetryClient(), log = createLogger('node'), blobClient, validatorClient, keyStoreManager){
464
+ constructor(config, p2pClient, blockSource, logsSource, contractDataSource, l1ToL2MessageSource, worldStateSynchronizer, sequencer, proverNode, slasherClient, validatorsSentinel, epochPruneWatcher, l1ChainId, version, globalVariableBuilder, epochCache, packageVersion, proofVerifier, telemetry = getTelemetryClient(), log = createLogger('node'), blobClient, validatorClient, keyStoreManager, debugLogStore = new NullDebugLogStore()){
464
465
  this.config = config;
465
466
  this.p2pClient = p2pClient;
466
467
  this.blockSource = blockSource;
@@ -484,12 +485,19 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
484
485
  this.blobClient = blobClient;
485
486
  this.validatorClient = validatorClient;
486
487
  this.keyStoreManager = keyStoreManager;
488
+ this.debugLogStore = debugLogStore;
487
489
  this.initialHeaderHashPromise = (_initProto(this), undefined);
488
490
  this.isUploadingSnapshot = false;
489
491
  this.metrics = new NodeMetrics(telemetry, 'AztecNodeService');
490
492
  this.tracer = telemetry.getTracer('AztecNodeService');
491
493
  this.log.info(`Aztec Node version: ${this.packageVersion}`);
492
494
  this.log.info(`Aztec Node started on chain 0x${l1ChainId.toString(16)}`, config.l1Contracts);
495
+ // A defensive check that protects us against introducing a bug in the complex `createAndSync` function. We must
496
+ // never have debugLogStore enabled when not in test mode because then we would be accumulating debug logs in
497
+ // memory which could be a DoS vector on the sequencer (since no fees are paid for debug logs).
498
+ if (debugLogStore.isEnabled && config.realProofs) {
499
+ throw new Error('debugLogStore should never be enabled when realProofs are set');
500
+ }
493
501
  }
494
502
  async getWorldStateSyncStatus() {
495
503
  const status = await this.worldStateSynchronizer.status();
@@ -563,10 +571,11 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
563
571
  ...l1ContractsAddresses
564
572
  };
565
573
  const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
566
- const [l1GenesisTime, slotDuration, rollupVersionFromRollup] = await Promise.all([
574
+ const [l1GenesisTime, slotDuration, rollupVersionFromRollup, rollupManaLimit] = await Promise.all([
567
575
  rollupContract.getL1GenesisTime(),
568
576
  rollupContract.getSlotDuration(),
569
- rollupContract.getVersion()
577
+ rollupContract.getVersion(),
578
+ rollupContract.getManaLimit().then(Number)
570
579
  ]);
571
580
  config.rollupVersion ??= Number(rollupVersionFromRollup);
572
581
  if (config.rollupVersion !== Number(rollupVersionFromRollup)) {
@@ -589,48 +598,63 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
589
598
  // now create the merkle trees and the world state synchronizer
590
599
  const worldStateSynchronizer = await createWorldStateSynchronizer(config, archiver, options.prefilledPublicData, telemetry);
591
600
  const circuitVerifier = config.realProofs || config.debugForceTxProofVerification ? await BBCircuitVerifier.new(config) : new TestCircuitVerifier(config.proverTestVerificationDelayMs);
601
+ let debugLogStore;
592
602
  if (!config.realProofs) {
593
603
  log.warn(`Aztec node is accepting fake proofs`);
604
+ debugLogStore = new InMemoryDebugLogStore();
605
+ log.info('Aztec node started in test mode (realProofs set to false) hence debug logs from public functions will be collected and served');
606
+ } else {
607
+ debugLogStore = new NullDebugLogStore();
594
608
  }
595
609
  const proofVerifier = new QueuedIVCVerifier(config, circuitVerifier);
610
+ const proverOnly = config.enableProverNode && config.disableValidator;
611
+ if (proverOnly) {
612
+ log.info('Starting in prover-only mode: skipping validator, sequencer, sentinel, and slasher subsystems');
613
+ }
596
614
  // create the tx pool and the p2p client, which will need the l2 block source
597
- const p2pClient = await createP2PClient(P2PClientType.Full, config, archiver, proofVerifier, worldStateSynchronizer, epochCache, packageVersion, dateProvider, telemetry, deps.p2pClientDeps);
598
- // We should really not be modifying the config object
599
- config.txPublicSetupAllowList = config.txPublicSetupAllowList ?? await getDefaultAllowedSetupFunctions();
600
- // Create FullNodeCheckpointsBuilder for validator and non-validator block proposal handling
615
+ const p2pClient = await createP2PClient(config, archiver, proofVerifier, worldStateSynchronizer, epochCache, packageVersion, dateProvider, telemetry, deps.p2pClientDeps);
616
+ // We'll accumulate sentinel watchers here
617
+ const watchers = [];
618
+ // Create FullNodeCheckpointsBuilder for block proposal handling and tx validation.
619
+ // Override maxTxsPerCheckpoint with the validator-specific limit if set.
601
620
  const validatorCheckpointsBuilder = new FullNodeCheckpointsBuilder({
602
621
  ...config,
603
622
  l1GenesisTime,
604
- slotDuration: Number(slotDuration)
623
+ slotDuration: Number(slotDuration),
624
+ rollupManaLimit,
625
+ maxTxsPerCheckpoint: config.validateMaxTxsPerCheckpoint
605
626
  }, worldStateSynchronizer, archiver, dateProvider, telemetry);
606
- // We'll accumulate sentinel watchers here
607
- const watchers = [];
608
- // Create validator client if required
609
- const validatorClient = await createValidatorClient(config, {
610
- checkpointsBuilder: validatorCheckpointsBuilder,
611
- worldState: worldStateSynchronizer,
612
- p2pClient,
613
- telemetry,
614
- dateProvider,
615
- epochCache,
616
- blockSource: archiver,
617
- l1ToL2MessageSource: archiver,
618
- keyStoreManager,
619
- blobClient
620
- });
621
- // If we have a validator client, register it as a source of offenses for the slasher,
622
- // and have it register callbacks on the p2p client *before* we start it, otherwise messages
623
- // like attestations or auths will fail.
624
- if (validatorClient) {
625
- watchers.push(validatorClient);
626
- if (!options.dontStartSequencer) {
627
- await validatorClient.registerHandlers();
627
+ let validatorClient;
628
+ if (!proverOnly) {
629
+ // Create validator client if required
630
+ validatorClient = await createValidatorClient(config, {
631
+ checkpointsBuilder: validatorCheckpointsBuilder,
632
+ worldState: worldStateSynchronizer,
633
+ p2pClient,
634
+ telemetry,
635
+ dateProvider,
636
+ epochCache,
637
+ blockSource: archiver,
638
+ l1ToL2MessageSource: archiver,
639
+ keyStoreManager,
640
+ blobClient
641
+ });
642
+ // If we have a validator client, register it as a source of offenses for the slasher,
643
+ // and have it register callbacks on the p2p client *before* we start it, otherwise messages
644
+ // like attestations or auths will fail.
645
+ if (validatorClient) {
646
+ watchers.push(validatorClient);
647
+ if (!options.dontStartSequencer) {
648
+ await validatorClient.registerHandlers();
649
+ }
628
650
  }
629
651
  }
630
- // If there's no validator client but alwaysReexecuteBlockProposals is enabled,
631
- // create a BlockProposalHandler to reexecute block proposals for monitoring
632
- if (!validatorClient && config.alwaysReexecuteBlockProposals) {
633
- log.info('Setting up block proposal reexecution for monitoring');
652
+ // If there's no validator client, create a BlockProposalHandler to handle block proposals
653
+ // for monitoring or reexecution. Reexecution (default) allows us to follow the pending chain,
654
+ // while non-reexecution is used for validating the proposals and collecting their txs.
655
+ if (!validatorClient) {
656
+ const reexecute = !!config.alwaysReexecuteBlockProposals;
657
+ log.info(`Setting up block proposal handler` + (reexecute ? ' with reexecution of proposals' : ''));
634
658
  createBlockProposalHandler(config, {
635
659
  checkpointsBuilder: validatorCheckpointsBuilder,
636
660
  worldState: worldStateSynchronizer,
@@ -640,26 +664,29 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
640
664
  p2pClient,
641
665
  dateProvider,
642
666
  telemetry
643
- }).registerForReexecution(p2pClient);
667
+ }).register(p2pClient, reexecute);
644
668
  }
645
669
  // Start world state and wait for it to sync to the archiver.
646
670
  await worldStateSynchronizer.start();
647
671
  // Start p2p. Note that it depends on world state to be running.
648
672
  await p2pClient.start();
649
- const validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
650
- if (validatorsSentinel && config.slashInactivityPenalty > 0n) {
651
- watchers.push(validatorsSentinel);
652
- }
673
+ let validatorsSentinel;
653
674
  let epochPruneWatcher;
654
- if (config.slashPrunePenalty > 0n || config.slashDataWithholdingPenalty > 0n) {
655
- epochPruneWatcher = new EpochPruneWatcher(archiver, archiver, epochCache, p2pClient.getTxProvider(), validatorCheckpointsBuilder, config);
656
- watchers.push(epochPruneWatcher);
657
- }
658
- // We assume we want to slash for invalid attestations unless all max penalties are set to 0
659
675
  let attestationsBlockWatcher;
660
- if (config.slashProposeInvalidAttestationsPenalty > 0n || config.slashAttestDescendantOfInvalidPenalty > 0n) {
661
- attestationsBlockWatcher = new AttestationsBlockWatcher(archiver, epochCache, config);
662
- watchers.push(attestationsBlockWatcher);
676
+ if (!proverOnly) {
677
+ validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
678
+ if (validatorsSentinel && config.slashInactivityPenalty > 0n) {
679
+ watchers.push(validatorsSentinel);
680
+ }
681
+ if (config.slashPrunePenalty > 0n || config.slashDataWithholdingPenalty > 0n) {
682
+ epochPruneWatcher = new EpochPruneWatcher(archiver, archiver, epochCache, p2pClient.getTxProvider(), validatorCheckpointsBuilder, config);
683
+ watchers.push(epochPruneWatcher);
684
+ }
685
+ // We assume we want to slash for invalid attestations unless all max penalties are set to 0
686
+ if (config.slashProposeInvalidAttestationsPenalty > 0n || config.slashAttestDescendantOfInvalidPenalty > 0n) {
687
+ attestationsBlockWatcher = new AttestationsBlockWatcher(archiver, epochCache, config);
688
+ watchers.push(attestationsBlockWatcher);
689
+ }
663
690
  }
664
691
  // Start p2p-related services once the archiver has completed sync
665
692
  void archiver.waitForInitialSync().then(async ()=>{
@@ -699,8 +726,9 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
699
726
  const checkpointsBuilder = new CheckpointsBuilder({
700
727
  ...config,
701
728
  l1GenesisTime,
702
- slotDuration: Number(slotDuration)
703
- }, worldStateSynchronizer, archiver, dateProvider, telemetry);
729
+ slotDuration: Number(slotDuration),
730
+ rollupManaLimit
731
+ }, worldStateSynchronizer, archiver, dateProvider, telemetry, debugLogStore);
704
732
  sequencer = await SequencerClient.new(config, {
705
733
  ...deps,
706
734
  epochCache,
@@ -751,7 +779,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
751
779
  l1GenesisTime,
752
780
  slotDuration: Number(slotDuration)
753
781
  });
754
- const node = new AztecNodeService(config, p2pClient, archiver, archiver, archiver, archiver, worldStateSynchronizer, sequencer, proverNode, slasherClient, validatorsSentinel, epochPruneWatcher, ethereumChain.chainInfo.id, config.rollupVersion, globalVariableBuilder, epochCache, packageVersion, proofVerifier, telemetry, log, blobClient, validatorClient, keyStoreManager);
782
+ const node = new AztecNodeService(config, p2pClient, archiver, archiver, archiver, archiver, worldStateSynchronizer, sequencer, proverNode, slasherClient, validatorsSentinel, epochPruneWatcher, ethereumChain.chainInfo.id, config.rollupVersion, globalVariableBuilder, epochCache, packageVersion, proofVerifier, telemetry, log, blobClient, validatorClient, keyStoreManager, debugLogStore);
755
783
  return node;
756
784
  }
757
785
  /**
@@ -782,7 +810,10 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
782
810
  return Promise.resolve(this.p2pClient.getEnr()?.encodeTxt());
783
811
  }
784
812
  async getAllowedPublicSetup() {
785
- return this.config.txPublicSetupAllowList ?? await getDefaultAllowedSetupFunctions();
813
+ return [
814
+ ...await getDefaultAllowedSetupFunctions(),
815
+ ...this.config.txPublicSetupAllowListExtend ?? []
816
+ ];
786
817
  }
787
818
  /**
788
819
  * Method to determine if the node is ready to accept transactions.
@@ -860,6 +891,9 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
860
891
  async getCheckpointedBlocks(from, limit) {
861
892
  return await this.blockSource.getCheckpointedBlocks(from, limit) ?? [];
862
893
  }
894
+ getCheckpointsDataForEpoch(epochNumber) {
895
+ return this.blockSource.getCheckpointsDataForEpoch(epochNumber);
896
+ }
863
897
  /**
864
898
  * Method to fetch the current min L2 fees.
865
899
  * @returns The current min L2 fees.
@@ -887,6 +921,9 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
887
921
  async getCheckpointedBlockNumber() {
888
922
  return await this.blockSource.getCheckpointedL2BlockNumber();
889
923
  }
924
+ getCheckpointNumber() {
925
+ return this.blockSource.getCheckpointNumber();
926
+ }
890
927
  /**
891
928
  * Method to fetch the version of the package.
892
929
  * @returns The node package version
@@ -968,8 +1005,9 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
968
1005
  throw new Error(`Invalid tx: ${reason}`);
969
1006
  }
970
1007
  await this.p2pClient.sendTx(tx);
971
- this.metrics.receivedTx(timer.ms(), true);
972
- this.log.info(`Received tx ${txHash}`, {
1008
+ const duration = timer.ms();
1009
+ this.metrics.receivedTx(duration, true);
1010
+ this.log.info(`Received tx ${txHash} in ${duration}ms`, {
973
1011
  txHash
974
1012
  });
975
1013
  }
@@ -980,18 +1018,20 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
980
1018
  const isKnownToPool = txPoolStatus === 'pending' || txPoolStatus === 'mined';
981
1019
  // Then get the actual tx from the archiver, which tracks every tx in a mined block.
982
1020
  const settledTxReceipt = await this.blockSource.getSettledTxReceipt(txHash);
1021
+ let receipt;
983
1022
  if (settledTxReceipt) {
984
- // If the archiver has the receipt then return it.
985
- return settledTxReceipt;
1023
+ receipt = settledTxReceipt;
986
1024
  } else if (isKnownToPool) {
987
1025
  // If the tx is in the pool but not in the archiver, it's pending.
988
1026
  // This handles race conditions between archiver and p2p, where the archiver
989
1027
  // has pruned the block in which a tx was mined, but p2p has not caught up yet.
990
- return new TxReceipt(txHash, TxStatus.PENDING, undefined, undefined);
1028
+ receipt = new TxReceipt(txHash, TxStatus.PENDING, undefined, undefined);
991
1029
  } else {
992
1030
  // Otherwise, if we don't know the tx, we consider it dropped.
993
- return new TxReceipt(txHash, TxStatus.DROPPED, undefined, 'Tx dropped by P2P node');
1031
+ receipt = new TxReceipt(txHash, TxStatus.DROPPED, undefined, 'Tx dropped by P2P node');
994
1032
  }
1033
+ this.debugLogStore.decorateReceiptWithLogs(txHash.toString(), receipt);
1034
+ return receipt;
995
1035
  }
996
1036
  getTxEffect(txHash) {
997
1037
  return this.blockSource.getTxEffect(txHash);
@@ -1047,54 +1087,62 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1047
1087
  async findLeavesIndexes(referenceBlock, treeId, leafValues) {
1048
1088
  const committedDb = await this.#getWorldState(referenceBlock);
1049
1089
  const maybeIndices = await committedDb.findLeafIndices(treeId, leafValues.map((x)=>x.toBuffer()));
1050
- // We filter out undefined values
1051
- const indices = maybeIndices.filter((x)=>x !== undefined);
1052
- // Now we find the block numbers for the indices
1053
- const blockNumbers = await committedDb.getBlockNumbersForLeafIndices(treeId, indices);
1054
- // If any of the block numbers are undefined, we throw an error.
1055
- for(let i = 0; i < indices.length; i++){
1056
- if (blockNumbers[i] === undefined) {
1057
- throw new Error(`Block number is undefined for leaf index ${indices[i]} in tree ${MerkleTreeId[treeId]}`);
1090
+ // Filter out undefined values to query block numbers only for found leaves
1091
+ const definedIndices = maybeIndices.filter((x)=>x !== undefined);
1092
+ // Now we find the block numbers for the defined indices
1093
+ const blockNumbers = await committedDb.getBlockNumbersForLeafIndices(treeId, definedIndices);
1094
+ // Build a map from leaf index to block number
1095
+ const indexToBlockNumber = new Map();
1096
+ for(let i = 0; i < definedIndices.length; i++){
1097
+ const blockNumber = blockNumbers[i];
1098
+ if (blockNumber === undefined) {
1099
+ throw new Error(`Block number is undefined for leaf index ${definedIndices[i]} in tree ${MerkleTreeId[treeId]}`);
1058
1100
  }
1101
+ indexToBlockNumber.set(definedIndices[i], blockNumber);
1059
1102
  }
1060
1103
  // Get unique block numbers in order to optimize num calls to getLeafValue function.
1061
1104
  const uniqueBlockNumbers = [
1062
- ...new Set(blockNumbers.filter((x)=>x !== undefined))
1105
+ ...new Set(indexToBlockNumber.values())
1063
1106
  ];
1064
- // Now we obtain the block hashes from the archive tree by calling await `committedDb.getLeafValue(treeId, index)`
1065
- // (note that block number corresponds to the leaf index in the archive tree).
1107
+ // Now we obtain the block hashes from the archive tree (block number = leaf index in archive tree).
1066
1108
  const blockHashes = await Promise.all(uniqueBlockNumbers.map((blockNumber)=>{
1067
1109
  return committedDb.getLeafValue(MerkleTreeId.ARCHIVE, BigInt(blockNumber));
1068
1110
  }));
1069
- // If any of the block hashes are undefined, we throw an error.
1111
+ // Build a map from block number to block hash
1112
+ const blockNumberToHash = new Map();
1070
1113
  for(let i = 0; i < uniqueBlockNumbers.length; i++){
1071
- if (blockHashes[i] === undefined) {
1114
+ const blockHash = blockHashes[i];
1115
+ if (blockHash === undefined) {
1072
1116
  throw new Error(`Block hash is undefined for block number ${uniqueBlockNumbers[i]}`);
1073
1117
  }
1118
+ blockNumberToHash.set(uniqueBlockNumbers[i], blockHash);
1074
1119
  }
1075
1120
  // Create DataInBlock objects by combining indices, blockNumbers and blockHashes and return them.
1076
- return maybeIndices.map((index, i)=>{
1121
+ return maybeIndices.map((index)=>{
1077
1122
  if (index === undefined) {
1078
1123
  return undefined;
1079
1124
  }
1080
- const blockNumber = blockNumbers[i];
1125
+ const blockNumber = indexToBlockNumber.get(index);
1081
1126
  if (blockNumber === undefined) {
1082
- return undefined;
1127
+ throw new Error(`Block number not found for leaf index ${index} in tree ${MerkleTreeId[treeId]}`);
1083
1128
  }
1084
- const blockHashIndex = uniqueBlockNumbers.indexOf(blockNumber);
1085
- const blockHash = blockHashes[blockHashIndex];
1086
- if (!blockHash) {
1087
- return undefined;
1129
+ const blockHash = blockNumberToHash.get(blockNumber);
1130
+ if (blockHash === undefined) {
1131
+ throw new Error(`Block hash not found for block number ${blockNumber}`);
1088
1132
  }
1089
1133
  return {
1090
- l2BlockNumber: BlockNumber(Number(blockNumber)),
1134
+ l2BlockNumber: blockNumber,
1091
1135
  l2BlockHash: new BlockHash(blockHash),
1092
1136
  data: index
1093
1137
  };
1094
1138
  });
1095
1139
  }
1096
1140
  async getBlockHashMembershipWitness(referenceBlock, blockHash) {
1097
- const committedDb = await this.#getWorldState(referenceBlock);
1141
+ // The Noir circuit checks the archive membership proof against `anchor_block_header.last_archive.root`,
1142
+ // which is the archive tree root BEFORE the anchor block was added (i.e. the state after block N-1).
1143
+ // So we need the world state at block N-1, not block N, to produce a sibling path matching that root.
1144
+ const referenceBlockNumber = await this.resolveBlockNumber(referenceBlock);
1145
+ const committedDb = await this.#getWorldState(BlockNumber(referenceBlockNumber - 1));
1098
1146
  const [pathAndIndex] = await committedDb.findSiblingPaths(MerkleTreeId.ARCHIVE, [
1099
1147
  blockHash
1100
1148
  ]);
@@ -1121,9 +1169,9 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1121
1169
  witness.path
1122
1170
  ];
1123
1171
  }
1124
- async getL1ToL2MessageBlock(l1ToL2Message) {
1172
+ async getL1ToL2MessageCheckpoint(l1ToL2Message) {
1125
1173
  const messageIndex = await this.l1ToL2MessageSource.getL1ToL2MessageIndex(l1ToL2Message);
1126
- return messageIndex ? BlockNumber.fromCheckpointNumber(InboxLeaf.checkpointNumberFromIndex(messageIndex)) : undefined;
1174
+ return messageIndex ? InboxLeaf.checkpointNumberFromIndex(messageIndex) : undefined;
1127
1175
  }
1128
1176
  /**
1129
1177
  * Returns whether an L1 to L2 message is synced by archiver and if it's ready to be included in a block.
@@ -1289,7 +1337,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1289
1337
  });
1290
1338
  const processor = publicProcessorFactory.create(merkleTreeFork, newGlobalVariables, config);
1291
1339
  // REFACTOR: Consider merging ProcessReturnValues into ProcessedTx
1292
- const [processedTxs, failedTxs, _usedTxs, returns] = await processor.process([
1340
+ const [processedTxs, failedTxs, _usedTxs, returns, debugLogs] = await processor.process([
1293
1341
  tx
1294
1342
  ]);
1295
1343
  // REFACTOR: Consider returning the error rather than throwing
@@ -1300,7 +1348,7 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1300
1348
  throw failedTxs[0].error;
1301
1349
  }
1302
1350
  const [processedTx] = processedTxs;
1303
- return new PublicSimulationOutput(processedTx.revertReason, processedTx.globalVariables, processedTx.txEffect, returns, processedTx.gasUsed);
1351
+ return new PublicSimulationOutput(processedTx.revertReason, processedTx.globalVariables, processedTx.txEffect, returns, processedTx.gasUsed, debugLogs);
1304
1352
  } finally{
1305
1353
  await merkleTreeFork.close();
1306
1354
  }
@@ -1311,15 +1359,22 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1311
1359
  // We accept transactions if they are not expired by the next slot (checked based on the ExpirationTimestamp field)
1312
1360
  const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
1313
1361
  const blockNumber = BlockNumber(await this.blockSource.getBlockNumber() + 1);
1314
- const validator = createValidatorForAcceptingTxs(db, this.contractDataSource, verifier, {
1362
+ const l1Constants = await this.blockSource.getL1Constants();
1363
+ const validator = createTxValidatorForAcceptingTxsOverRPC(db, this.contractDataSource, verifier, {
1315
1364
  timestamp: nextSlotTimestamp,
1316
1365
  blockNumber,
1317
1366
  l1ChainId: this.l1ChainId,
1318
1367
  rollupVersion: this.version,
1319
- setupAllowList: this.config.txPublicSetupAllowList ?? await getDefaultAllowedSetupFunctions(),
1368
+ setupAllowList: [
1369
+ ...await getDefaultAllowedSetupFunctions(),
1370
+ ...this.config.txPublicSetupAllowListExtend ?? []
1371
+ ],
1320
1372
  gasFees: await this.getCurrentMinFees(),
1321
1373
  skipFeeEnforcement,
1322
- txsPermitted: !this.config.disableTransactions
1374
+ txsPermitted: !this.config.disableTransactions,
1375
+ rollupManaLimit: l1Constants.rollupManaLimit,
1376
+ maxBlockL2Gas: this.config.validateMaxL2BlockGas,
1377
+ maxBlockDAGas: this.config.validateMaxDABlockGas
1323
1378
  }, this.log.getBindings());
1324
1379
  return await validator.validateTx(tx);
1325
1380
  }
@@ -1575,6 +1630,23 @@ _dec = trackSpan('AztecNodeService.simulatePublicCalls', (tx)=>({
1575
1630
  return this.worldStateSynchronizer.getSnapshot(blockNumber);
1576
1631
  }
1577
1632
  }
1633
+ /** Resolves a block parameter to a block number. */ async resolveBlockNumber(block) {
1634
+ if (block === 'latest') {
1635
+ return BlockNumber(await this.blockSource.getBlockNumber());
1636
+ }
1637
+ if (BlockHash.isBlockHash(block)) {
1638
+ const initialBlockHash = await this.#getInitialHeaderHash();
1639
+ if (block.equals(initialBlockHash)) {
1640
+ return BlockNumber.ZERO;
1641
+ }
1642
+ const header = await this.blockSource.getBlockHeaderByHash(block);
1643
+ if (!header) {
1644
+ throw new Error(`Block hash ${block.toString()} not found.`);
1645
+ }
1646
+ return header.getBlockNumber();
1647
+ }
1648
+ return block;
1649
+ }
1578
1650
  /**
1579
1651
  * Ensure we fully sync the world state
1580
1652
  * @returns A promise that fulfils once the world state is synced
@@ -229,10 +229,10 @@ export class Sentinel extends EventEmitter {
229
229
  this.logger.trace(`Refusing to process slot ${targetSlot} given initial slot ${this.initialSlot}`);
230
230
  return false;
231
231
  }
232
- const archiverSlot = await this.archiver.getL2SlotNumber();
233
- if (archiverSlot === undefined || archiverSlot < targetSlot) {
232
+ const syncedSlot = await this.archiver.getSyncedL2SlotNumber();
233
+ if (syncedSlot === undefined || syncedSlot < targetSlot) {
234
234
  this.logger.debug(`Waiting for archiver to sync with L2 slot ${targetSlot}`, {
235
- archiverSlot,
235
+ syncedSlot,
236
236
  targetSlot
237
237
  });
238
238
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/aztec-node",
3
- "version": "0.0.1-commit.cf93bcc56",
3
+ "version": "0.0.1-commit.d0fcfb7f",
4
4
  "main": "dest/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -65,32 +65,32 @@
65
65
  ]
66
66
  },
67
67
  "dependencies": {
68
- "@aztec/archiver": "0.0.1-commit.cf93bcc56",
69
- "@aztec/bb-prover": "0.0.1-commit.cf93bcc56",
70
- "@aztec/blob-client": "0.0.1-commit.cf93bcc56",
71
- "@aztec/blob-lib": "0.0.1-commit.cf93bcc56",
72
- "@aztec/constants": "0.0.1-commit.cf93bcc56",
73
- "@aztec/epoch-cache": "0.0.1-commit.cf93bcc56",
74
- "@aztec/ethereum": "0.0.1-commit.cf93bcc56",
75
- "@aztec/foundation": "0.0.1-commit.cf93bcc56",
76
- "@aztec/kv-store": "0.0.1-commit.cf93bcc56",
77
- "@aztec/l1-artifacts": "0.0.1-commit.cf93bcc56",
78
- "@aztec/merkle-tree": "0.0.1-commit.cf93bcc56",
79
- "@aztec/node-keystore": "0.0.1-commit.cf93bcc56",
80
- "@aztec/node-lib": "0.0.1-commit.cf93bcc56",
81
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.cf93bcc56",
82
- "@aztec/p2p": "0.0.1-commit.cf93bcc56",
83
- "@aztec/protocol-contracts": "0.0.1-commit.cf93bcc56",
84
- "@aztec/prover-client": "0.0.1-commit.cf93bcc56",
85
- "@aztec/prover-node": "0.0.1-commit.cf93bcc56",
86
- "@aztec/sequencer-client": "0.0.1-commit.cf93bcc56",
87
- "@aztec/simulator": "0.0.1-commit.cf93bcc56",
88
- "@aztec/slasher": "0.0.1-commit.cf93bcc56",
89
- "@aztec/stdlib": "0.0.1-commit.cf93bcc56",
90
- "@aztec/telemetry-client": "0.0.1-commit.cf93bcc56",
91
- "@aztec/validator-client": "0.0.1-commit.cf93bcc56",
92
- "@aztec/validator-ha-signer": "0.0.1-commit.cf93bcc56",
93
- "@aztec/world-state": "0.0.1-commit.cf93bcc56",
68
+ "@aztec/archiver": "0.0.1-commit.d0fcfb7f",
69
+ "@aztec/bb-prover": "0.0.1-commit.d0fcfb7f",
70
+ "@aztec/blob-client": "0.0.1-commit.d0fcfb7f",
71
+ "@aztec/blob-lib": "0.0.1-commit.d0fcfb7f",
72
+ "@aztec/constants": "0.0.1-commit.d0fcfb7f",
73
+ "@aztec/epoch-cache": "0.0.1-commit.d0fcfb7f",
74
+ "@aztec/ethereum": "0.0.1-commit.d0fcfb7f",
75
+ "@aztec/foundation": "0.0.1-commit.d0fcfb7f",
76
+ "@aztec/kv-store": "0.0.1-commit.d0fcfb7f",
77
+ "@aztec/l1-artifacts": "0.0.1-commit.d0fcfb7f",
78
+ "@aztec/merkle-tree": "0.0.1-commit.d0fcfb7f",
79
+ "@aztec/node-keystore": "0.0.1-commit.d0fcfb7f",
80
+ "@aztec/node-lib": "0.0.1-commit.d0fcfb7f",
81
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.d0fcfb7f",
82
+ "@aztec/p2p": "0.0.1-commit.d0fcfb7f",
83
+ "@aztec/protocol-contracts": "0.0.1-commit.d0fcfb7f",
84
+ "@aztec/prover-client": "0.0.1-commit.d0fcfb7f",
85
+ "@aztec/prover-node": "0.0.1-commit.d0fcfb7f",
86
+ "@aztec/sequencer-client": "0.0.1-commit.d0fcfb7f",
87
+ "@aztec/simulator": "0.0.1-commit.d0fcfb7f",
88
+ "@aztec/slasher": "0.0.1-commit.d0fcfb7f",
89
+ "@aztec/stdlib": "0.0.1-commit.d0fcfb7f",
90
+ "@aztec/telemetry-client": "0.0.1-commit.d0fcfb7f",
91
+ "@aztec/validator-client": "0.0.1-commit.d0fcfb7f",
92
+ "@aztec/validator-ha-signer": "0.0.1-commit.d0fcfb7f",
93
+ "@aztec/world-state": "0.0.1-commit.d0fcfb7f",
94
94
  "koa": "^2.16.1",
95
95
  "koa-router": "^13.1.1",
96
96
  "tslib": "^2.4.0",
@@ -20,7 +20,13 @@ import { MembershipWitness, SiblingPath } from '@aztec/foundation/trees';
20
20
  import { type KeyStore, KeystoreManager, loadKeystores, mergeKeystores } from '@aztec/node-keystore';
21
21
  import { trySnapshotSync, uploadSnapshot } from '@aztec/node-lib/actions';
22
22
  import { createForwarderL1TxUtilsFromSigners, createL1TxUtilsFromSigners } from '@aztec/node-lib/factories';
23
- import { type P2P, type P2PClientDeps, createP2PClient, getDefaultAllowedSetupFunctions } from '@aztec/p2p';
23
+ import {
24
+ type P2P,
25
+ type P2PClientDeps,
26
+ createP2PClient,
27
+ createTxValidatorForAcceptingTxsOverRPC,
28
+ getDefaultAllowedSetupFunctions,
29
+ } from '@aztec/p2p';
24
30
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
25
31
  import { type ProverNode, type ProverNodeDeps, createProverNode } from '@aztec/prover-node';
26
32
  import { createKeyStoreForProver } from '@aztec/prover-node/config';
@@ -70,9 +76,9 @@ import {
70
76
  type WorldStateSynchronizer,
71
77
  tryStop,
72
78
  } from '@aztec/stdlib/interfaces/server';
73
- import type { LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
79
+ import type { DebugLogStore, LogFilter, SiloedTag, Tag, TxScopedL2Log } from '@aztec/stdlib/logs';
80
+ import { InMemoryDebugLogStore, NullDebugLogStore } from '@aztec/stdlib/logs';
74
81
  import { InboxLeaf, type L1ToL2MessageSource } from '@aztec/stdlib/messaging';
75
- import { P2PClientType } from '@aztec/stdlib/p2p';
76
82
  import type { Offense, SlashPayloadRound } from '@aztec/stdlib/slashing';
77
83
  import type { NullifierLeafPreimage, PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
78
84
  import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
@@ -104,7 +110,6 @@ import {
104
110
  ValidatorClient,
105
111
  createBlockProposalHandler,
106
112
  createValidatorClient,
107
- createValidatorForAcceptingTxs,
108
113
  } from '@aztec/validator-client';
109
114
  import { createWorldStateSynchronizer } from '@aztec/world-state';
110
115
 
@@ -151,12 +156,20 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
151
156
  private blobClient?: BlobClientInterface,
152
157
  private validatorClient?: ValidatorClient,
153
158
  private keyStoreManager?: KeystoreManager,
159
+ private debugLogStore: DebugLogStore = new NullDebugLogStore(),
154
160
  ) {
155
161
  this.metrics = new NodeMetrics(telemetry, 'AztecNodeService');
156
162
  this.tracer = telemetry.getTracer('AztecNodeService');
157
163
 
158
164
  this.log.info(`Aztec Node version: ${this.packageVersion}`);
159
165
  this.log.info(`Aztec Node started on chain 0x${l1ChainId.toString(16)}`, config.l1Contracts);
166
+
167
+ // A defensive check that protects us against introducing a bug in the complex `createAndSync` function. We must
168
+ // never have debugLogStore enabled when not in test mode because then we would be accumulating debug logs in
169
+ // memory which could be a DoS vector on the sequencer (since no fees are paid for debug logs).
170
+ if (debugLogStore.isEnabled && config.realProofs) {
171
+ throw new Error('debugLogStore should never be enabled when realProofs are set');
172
+ }
160
173
  }
161
174
 
162
175
  public async getWorldStateSyncStatus(): Promise<WorldStateSyncStatus> {
@@ -180,7 +193,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
180
193
  logger?: Logger;
181
194
  publisher?: SequencerPublisher;
182
195
  dateProvider?: DateProvider;
183
- p2pClientDeps?: P2PClientDeps<P2PClientType.Full>;
196
+ p2pClientDeps?: P2PClientDeps;
184
197
  proverNodeDeps?: Partial<ProverNodeDeps>;
185
198
  } = {},
186
199
  options: {
@@ -258,10 +271,11 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
258
271
  config.l1Contracts = { ...config.l1Contracts, ...l1ContractsAddresses };
259
272
 
260
273
  const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
261
- const [l1GenesisTime, slotDuration, rollupVersionFromRollup] = await Promise.all([
274
+ const [l1GenesisTime, slotDuration, rollupVersionFromRollup, rollupManaLimit] = await Promise.all([
262
275
  rollupContract.getL1GenesisTime(),
263
276
  rollupContract.getSlotDuration(),
264
277
  rollupContract.getVersion(),
278
+ rollupContract.getManaLimit().then(Number),
265
279
  ] as const);
266
280
 
267
281
  config.rollupVersion ??= Number(rollupVersionFromRollup);
@@ -296,14 +310,28 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
296
310
  config.realProofs || config.debugForceTxProofVerification
297
311
  ? await BBCircuitVerifier.new(config)
298
312
  : new TestCircuitVerifier(config.proverTestVerificationDelayMs);
313
+
314
+ let debugLogStore: DebugLogStore;
299
315
  if (!config.realProofs) {
300
316
  log.warn(`Aztec node is accepting fake proofs`);
317
+
318
+ debugLogStore = new InMemoryDebugLogStore();
319
+ log.info(
320
+ 'Aztec node started in test mode (realProofs set to false) hence debug logs from public functions will be collected and served',
321
+ );
322
+ } else {
323
+ debugLogStore = new NullDebugLogStore();
301
324
  }
325
+
302
326
  const proofVerifier = new QueuedIVCVerifier(config, circuitVerifier);
303
327
 
328
+ const proverOnly = config.enableProverNode && config.disableValidator;
329
+ if (proverOnly) {
330
+ log.info('Starting in prover-only mode: skipping validator, sequencer, sentinel, and slasher subsystems');
331
+ }
332
+
304
333
  // create the tx pool and the p2p client, which will need the l2 block source
305
334
  const p2pClient = await createP2PClient(
306
- P2PClientType.Full,
307
335
  config,
308
336
  archiver,
309
337
  proofVerifier,
@@ -315,49 +343,59 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
315
343
  deps.p2pClientDeps,
316
344
  );
317
345
 
318
- // We should really not be modifying the config object
319
- config.txPublicSetupAllowList = config.txPublicSetupAllowList ?? (await getDefaultAllowedSetupFunctions());
346
+ // We'll accumulate sentinel watchers here
347
+ const watchers: Watcher[] = [];
320
348
 
321
- // Create FullNodeCheckpointsBuilder for validator and non-validator block proposal handling
349
+ // Create FullNodeCheckpointsBuilder for block proposal handling and tx validation.
350
+ // Override maxTxsPerCheckpoint with the validator-specific limit if set.
322
351
  const validatorCheckpointsBuilder = new FullNodeCheckpointsBuilder(
323
- { ...config, l1GenesisTime, slotDuration: Number(slotDuration) },
352
+ {
353
+ ...config,
354
+ l1GenesisTime,
355
+ slotDuration: Number(slotDuration),
356
+ rollupManaLimit,
357
+ maxTxsPerCheckpoint: config.validateMaxTxsPerCheckpoint,
358
+ },
324
359
  worldStateSynchronizer,
325
360
  archiver,
326
361
  dateProvider,
327
362
  telemetry,
328
363
  );
329
364
 
330
- // We'll accumulate sentinel watchers here
331
- const watchers: Watcher[] = [];
365
+ let validatorClient: ValidatorClient | undefined;
332
366
 
333
- // Create validator client if required
334
- const validatorClient = await createValidatorClient(config, {
335
- checkpointsBuilder: validatorCheckpointsBuilder,
336
- worldState: worldStateSynchronizer,
337
- p2pClient,
338
- telemetry,
339
- dateProvider,
340
- epochCache,
341
- blockSource: archiver,
342
- l1ToL2MessageSource: archiver,
343
- keyStoreManager,
344
- blobClient,
345
- });
367
+ if (!proverOnly) {
368
+ // Create validator client if required
369
+ validatorClient = await createValidatorClient(config, {
370
+ checkpointsBuilder: validatorCheckpointsBuilder,
371
+ worldState: worldStateSynchronizer,
372
+ p2pClient,
373
+ telemetry,
374
+ dateProvider,
375
+ epochCache,
376
+ blockSource: archiver,
377
+ l1ToL2MessageSource: archiver,
378
+ keyStoreManager,
379
+ blobClient,
380
+ });
346
381
 
347
- // If we have a validator client, register it as a source of offenses for the slasher,
348
- // and have it register callbacks on the p2p client *before* we start it, otherwise messages
349
- // like attestations or auths will fail.
350
- if (validatorClient) {
351
- watchers.push(validatorClient);
352
- if (!options.dontStartSequencer) {
353
- await validatorClient.registerHandlers();
382
+ // If we have a validator client, register it as a source of offenses for the slasher,
383
+ // and have it register callbacks on the p2p client *before* we start it, otherwise messages
384
+ // like attestations or auths will fail.
385
+ if (validatorClient) {
386
+ watchers.push(validatorClient);
387
+ if (!options.dontStartSequencer) {
388
+ await validatorClient.registerHandlers();
389
+ }
354
390
  }
355
391
  }
356
392
 
357
- // If there's no validator client but alwaysReexecuteBlockProposals is enabled,
358
- // create a BlockProposalHandler to reexecute block proposals for monitoring
359
- if (!validatorClient && config.alwaysReexecuteBlockProposals) {
360
- log.info('Setting up block proposal reexecution for monitoring');
393
+ // If there's no validator client, create a BlockProposalHandler to handle block proposals
394
+ // for monitoring or reexecution. Reexecution (default) allows us to follow the pending chain,
395
+ // while non-reexecution is used for validating the proposals and collecting their txs.
396
+ if (!validatorClient) {
397
+ const reexecute = !!config.alwaysReexecuteBlockProposals;
398
+ log.info(`Setting up block proposal handler` + (reexecute ? ' with reexecution of proposals' : ''));
361
399
  createBlockProposalHandler(config, {
362
400
  checkpointsBuilder: validatorCheckpointsBuilder,
363
401
  worldState: worldStateSynchronizer,
@@ -367,7 +405,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
367
405
  p2pClient,
368
406
  dateProvider,
369
407
  telemetry,
370
- }).registerForReexecution(p2pClient);
408
+ }).register(p2pClient, reexecute);
371
409
  }
372
410
 
373
411
  // Start world state and wait for it to sync to the archiver.
@@ -376,29 +414,33 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
376
414
  // Start p2p. Note that it depends on world state to be running.
377
415
  await p2pClient.start();
378
416
 
379
- const validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
380
- if (validatorsSentinel && config.slashInactivityPenalty > 0n) {
381
- watchers.push(validatorsSentinel);
382
- }
383
-
417
+ let validatorsSentinel: Awaited<ReturnType<typeof createSentinel>> | undefined;
384
418
  let epochPruneWatcher: EpochPruneWatcher | undefined;
385
- if (config.slashPrunePenalty > 0n || config.slashDataWithholdingPenalty > 0n) {
386
- epochPruneWatcher = new EpochPruneWatcher(
387
- archiver,
388
- archiver,
389
- epochCache,
390
- p2pClient.getTxProvider(),
391
- validatorCheckpointsBuilder,
392
- config,
393
- );
394
- watchers.push(epochPruneWatcher);
395
- }
396
-
397
- // We assume we want to slash for invalid attestations unless all max penalties are set to 0
398
419
  let attestationsBlockWatcher: AttestationsBlockWatcher | undefined;
399
- if (config.slashProposeInvalidAttestationsPenalty > 0n || config.slashAttestDescendantOfInvalidPenalty > 0n) {
400
- attestationsBlockWatcher = new AttestationsBlockWatcher(archiver, epochCache, config);
401
- watchers.push(attestationsBlockWatcher);
420
+
421
+ if (!proverOnly) {
422
+ validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
423
+ if (validatorsSentinel && config.slashInactivityPenalty > 0n) {
424
+ watchers.push(validatorsSentinel);
425
+ }
426
+
427
+ if (config.slashPrunePenalty > 0n || config.slashDataWithholdingPenalty > 0n) {
428
+ epochPruneWatcher = new EpochPruneWatcher(
429
+ archiver,
430
+ archiver,
431
+ epochCache,
432
+ p2pClient.getTxProvider(),
433
+ validatorCheckpointsBuilder,
434
+ config,
435
+ );
436
+ watchers.push(epochPruneWatcher);
437
+ }
438
+
439
+ // We assume we want to slash for invalid attestations unless all max penalties are set to 0
440
+ if (config.slashProposeInvalidAttestationsPenalty > 0n || config.slashAttestDescendantOfInvalidPenalty > 0n) {
441
+ attestationsBlockWatcher = new AttestationsBlockWatcher(archiver, epochCache, config);
442
+ watchers.push(attestationsBlockWatcher);
443
+ }
402
444
  }
403
445
 
404
446
  // Start p2p-related services once the archiver has completed sync
@@ -452,11 +494,12 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
452
494
 
453
495
  // Create and start the sequencer client
454
496
  const checkpointsBuilder = new CheckpointsBuilder(
455
- { ...config, l1GenesisTime, slotDuration: Number(slotDuration) },
497
+ { ...config, l1GenesisTime, slotDuration: Number(slotDuration), rollupManaLimit },
456
498
  worldStateSynchronizer,
457
499
  archiver,
458
500
  dateProvider,
459
501
  telemetry,
502
+ debugLogStore,
460
503
  );
461
504
 
462
505
  sequencer = await SequencerClient.new(config, {
@@ -538,6 +581,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
538
581
  blobClient,
539
582
  validatorClient,
540
583
  keyStoreManager,
584
+ debugLogStore,
541
585
  );
542
586
 
543
587
  return node;
@@ -581,7 +625,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
581
625
  }
582
626
 
583
627
  public async getAllowedPublicSetup(): Promise<AllowedElement[]> {
584
- return this.config.txPublicSetupAllowList ?? (await getDefaultAllowedSetupFunctions());
628
+ return [...(await getDefaultAllowedSetupFunctions()), ...(this.config.txPublicSetupAllowListExtend ?? [])];
585
629
  }
586
630
 
587
631
  /**
@@ -676,6 +720,10 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
676
720
  return (await this.blockSource.getCheckpointedBlocks(from, limit)) ?? [];
677
721
  }
678
722
 
723
+ public getCheckpointsDataForEpoch(epochNumber: EpochNumber) {
724
+ return this.blockSource.getCheckpointsDataForEpoch(epochNumber);
725
+ }
726
+
679
727
  /**
680
728
  * Method to fetch the current min L2 fees.
681
729
  * @returns The current min L2 fees.
@@ -708,6 +756,10 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
708
756
  return await this.blockSource.getCheckpointedL2BlockNumber();
709
757
  }
710
758
 
759
+ public getCheckpointNumber(): Promise<CheckpointNumber> {
760
+ return this.blockSource.getCheckpointNumber();
761
+ }
762
+
711
763
  /**
712
764
  * Method to fetch the version of the package.
713
765
  * @returns The node package version
@@ -818,8 +870,9 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
818
870
  }
819
871
 
820
872
  await this.p2pClient!.sendTx(tx);
821
- this.metrics.receivedTx(timer.ms(), true);
822
- this.log.info(`Received tx ${txHash}`, { txHash });
873
+ const duration = timer.ms();
874
+ this.metrics.receivedTx(duration, true);
875
+ this.log.info(`Received tx ${txHash} in ${duration}ms`, { txHash });
823
876
  }
824
877
 
825
878
  public async getTxReceipt(txHash: TxHash): Promise<TxReceipt> {
@@ -831,18 +884,22 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
831
884
  // Then get the actual tx from the archiver, which tracks every tx in a mined block.
832
885
  const settledTxReceipt = await this.blockSource.getSettledTxReceipt(txHash);
833
886
 
887
+ let receipt: TxReceipt;
834
888
  if (settledTxReceipt) {
835
- // If the archiver has the receipt then return it.
836
- return settledTxReceipt;
889
+ receipt = settledTxReceipt;
837
890
  } else if (isKnownToPool) {
838
891
  // If the tx is in the pool but not in the archiver, it's pending.
839
892
  // This handles race conditions between archiver and p2p, where the archiver
840
893
  // has pruned the block in which a tx was mined, but p2p has not caught up yet.
841
- return new TxReceipt(txHash, TxStatus.PENDING, undefined, undefined);
894
+ receipt = new TxReceipt(txHash, TxStatus.PENDING, undefined, undefined);
842
895
  } else {
843
896
  // Otherwise, if we don't know the tx, we consider it dropped.
844
- return new TxReceipt(txHash, TxStatus.DROPPED, undefined, 'Tx dropped by P2P node');
897
+ receipt = new TxReceipt(txHash, TxStatus.DROPPED, undefined, 'Tx dropped by P2P node');
845
898
  }
899
+
900
+ this.debugLogStore.decorateReceiptWithLogs(txHash.toString(), receipt);
901
+
902
+ return receipt;
846
903
  }
847
904
 
848
905
  public getTxEffect(txHash: TxHash): Promise<IndexedTxEffect | undefined> {
@@ -918,53 +975,59 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
918
975
  treeId,
919
976
  leafValues.map(x => x.toBuffer()),
920
977
  );
921
- // We filter out undefined values
922
- const indices = maybeIndices.filter(x => x !== undefined) as bigint[];
978
+ // Filter out undefined values to query block numbers only for found leaves
979
+ const definedIndices = maybeIndices.filter(x => x !== undefined);
923
980
 
924
- // Now we find the block numbers for the indices
925
- const blockNumbers = await committedDb.getBlockNumbersForLeafIndices(treeId, indices);
981
+ // Now we find the block numbers for the defined indices
982
+ const blockNumbers = await committedDb.getBlockNumbersForLeafIndices(treeId, definedIndices);
926
983
 
927
- // If any of the block numbers are undefined, we throw an error.
928
- for (let i = 0; i < indices.length; i++) {
929
- if (blockNumbers[i] === undefined) {
930
- throw new Error(`Block number is undefined for leaf index ${indices[i]} in tree ${MerkleTreeId[treeId]}`);
984
+ // Build a map from leaf index to block number
985
+ const indexToBlockNumber = new Map<bigint, BlockNumber>();
986
+ for (let i = 0; i < definedIndices.length; i++) {
987
+ const blockNumber = blockNumbers[i];
988
+ if (blockNumber === undefined) {
989
+ throw new Error(
990
+ `Block number is undefined for leaf index ${definedIndices[i]} in tree ${MerkleTreeId[treeId]}`,
991
+ );
931
992
  }
993
+ indexToBlockNumber.set(definedIndices[i], blockNumber);
932
994
  }
933
995
 
934
996
  // Get unique block numbers in order to optimize num calls to getLeafValue function.
935
- const uniqueBlockNumbers = [...new Set(blockNumbers.filter(x => x !== undefined))];
997
+ const uniqueBlockNumbers = [...new Set(indexToBlockNumber.values())];
936
998
 
937
- // Now we obtain the block hashes from the archive tree by calling await `committedDb.getLeafValue(treeId, index)`
938
- // (note that block number corresponds to the leaf index in the archive tree).
999
+ // Now we obtain the block hashes from the archive tree (block number = leaf index in archive tree).
939
1000
  const blockHashes = await Promise.all(
940
1001
  uniqueBlockNumbers.map(blockNumber => {
941
1002
  return committedDb.getLeafValue(MerkleTreeId.ARCHIVE, BigInt(blockNumber));
942
1003
  }),
943
1004
  );
944
1005
 
945
- // If any of the block hashes are undefined, we throw an error.
1006
+ // Build a map from block number to block hash
1007
+ const blockNumberToHash = new Map<BlockNumber, Fr>();
946
1008
  for (let i = 0; i < uniqueBlockNumbers.length; i++) {
947
- if (blockHashes[i] === undefined) {
1009
+ const blockHash = blockHashes[i];
1010
+ if (blockHash === undefined) {
948
1011
  throw new Error(`Block hash is undefined for block number ${uniqueBlockNumbers[i]}`);
949
1012
  }
1013
+ blockNumberToHash.set(uniqueBlockNumbers[i], blockHash);
950
1014
  }
951
1015
 
952
1016
  // Create DataInBlock objects by combining indices, blockNumbers and blockHashes and return them.
953
- return maybeIndices.map((index, i) => {
1017
+ return maybeIndices.map(index => {
954
1018
  if (index === undefined) {
955
1019
  return undefined;
956
1020
  }
957
- const blockNumber = blockNumbers[i];
1021
+ const blockNumber = indexToBlockNumber.get(index);
958
1022
  if (blockNumber === undefined) {
959
- return undefined;
1023
+ throw new Error(`Block number not found for leaf index ${index} in tree ${MerkleTreeId[treeId]}`);
960
1024
  }
961
- const blockHashIndex = uniqueBlockNumbers.indexOf(blockNumber);
962
- const blockHash = blockHashes[blockHashIndex];
963
- if (!blockHash) {
964
- return undefined;
1025
+ const blockHash = blockNumberToHash.get(blockNumber);
1026
+ if (blockHash === undefined) {
1027
+ throw new Error(`Block hash not found for block number ${blockNumber}`);
965
1028
  }
966
1029
  return {
967
- l2BlockNumber: BlockNumber(Number(blockNumber)),
1030
+ l2BlockNumber: blockNumber,
968
1031
  l2BlockHash: new BlockHash(blockHash),
969
1032
  data: index,
970
1033
  };
@@ -975,7 +1038,11 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
975
1038
  referenceBlock: BlockParameter,
976
1039
  blockHash: BlockHash,
977
1040
  ): Promise<MembershipWitness<typeof ARCHIVE_HEIGHT> | undefined> {
978
- const committedDb = await this.#getWorldState(referenceBlock);
1041
+ // The Noir circuit checks the archive membership proof against `anchor_block_header.last_archive.root`,
1042
+ // which is the archive tree root BEFORE the anchor block was added (i.e. the state after block N-1).
1043
+ // So we need the world state at block N-1, not block N, to produce a sibling path matching that root.
1044
+ const referenceBlockNumber = await this.resolveBlockNumber(referenceBlock);
1045
+ const committedDb = await this.#getWorldState(BlockNumber(referenceBlockNumber - 1));
979
1046
  const [pathAndIndex] = await committedDb.findSiblingPaths<MerkleTreeId.ARCHIVE>(MerkleTreeId.ARCHIVE, [blockHash]);
980
1047
  return pathAndIndex === undefined
981
1048
  ? undefined
@@ -1010,11 +1077,9 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1010
1077
  return [witness.index, witness.path];
1011
1078
  }
1012
1079
 
1013
- public async getL1ToL2MessageBlock(l1ToL2Message: Fr): Promise<BlockNumber | undefined> {
1080
+ public async getL1ToL2MessageCheckpoint(l1ToL2Message: Fr): Promise<CheckpointNumber | undefined> {
1014
1081
  const messageIndex = await this.l1ToL2MessageSource.getL1ToL2MessageIndex(l1ToL2Message);
1015
- return messageIndex
1016
- ? BlockNumber.fromCheckpointNumber(InboxLeaf.checkpointNumberFromIndex(messageIndex))
1017
- : undefined;
1082
+ return messageIndex ? InboxLeaf.checkpointNumberFromIndex(messageIndex) : undefined;
1018
1083
  }
1019
1084
 
1020
1085
  /**
@@ -1236,7 +1301,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1236
1301
  const processor = publicProcessorFactory.create(merkleTreeFork, newGlobalVariables, config);
1237
1302
 
1238
1303
  // REFACTOR: Consider merging ProcessReturnValues into ProcessedTx
1239
- const [processedTxs, failedTxs, _usedTxs, returns] = await processor.process([tx]);
1304
+ const [processedTxs, failedTxs, _usedTxs, returns, debugLogs] = await processor.process([tx]);
1240
1305
  // REFACTOR: Consider returning the error rather than throwing
1241
1306
  if (failedTxs.length) {
1242
1307
  this.log.warn(`Simulated tx ${txHash} fails: ${failedTxs[0].error}`, { txHash });
@@ -1250,6 +1315,7 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1250
1315
  processedTx.txEffect,
1251
1316
  returns,
1252
1317
  processedTx.gasUsed,
1318
+ debugLogs,
1253
1319
  );
1254
1320
  } finally {
1255
1321
  await merkleTreeFork.close();
@@ -1266,7 +1332,8 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1266
1332
  // We accept transactions if they are not expired by the next slot (checked based on the ExpirationTimestamp field)
1267
1333
  const { ts: nextSlotTimestamp } = this.epochCache.getEpochAndSlotInNextL1Slot();
1268
1334
  const blockNumber = BlockNumber((await this.blockSource.getBlockNumber()) + 1);
1269
- const validator = createValidatorForAcceptingTxs(
1335
+ const l1Constants = await this.blockSource.getL1Constants();
1336
+ const validator = createTxValidatorForAcceptingTxsOverRPC(
1270
1337
  db,
1271
1338
  this.contractDataSource,
1272
1339
  verifier,
@@ -1275,10 +1342,16 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1275
1342
  blockNumber,
1276
1343
  l1ChainId: this.l1ChainId,
1277
1344
  rollupVersion: this.version,
1278
- setupAllowList: this.config.txPublicSetupAllowList ?? (await getDefaultAllowedSetupFunctions()),
1345
+ setupAllowList: [
1346
+ ...(await getDefaultAllowedSetupFunctions()),
1347
+ ...(this.config.txPublicSetupAllowListExtend ?? []),
1348
+ ],
1279
1349
  gasFees: await this.getCurrentMinFees(),
1280
1350
  skipFeeEnforcement,
1281
1351
  txsPermitted: !this.config.disableTransactions,
1352
+ rollupManaLimit: l1Constants.rollupManaLimit,
1353
+ maxBlockL2Gas: this.config.validateMaxL2BlockGas,
1354
+ maxBlockDAGas: this.config.validateMaxDABlockGas,
1282
1355
  },
1283
1356
  this.log.getBindings(),
1284
1357
  );
@@ -1590,6 +1663,25 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
1590
1663
  }
1591
1664
  }
1592
1665
 
1666
+ /** Resolves a block parameter to a block number. */
1667
+ protected async resolveBlockNumber(block: BlockParameter): Promise<BlockNumber> {
1668
+ if (block === 'latest') {
1669
+ return BlockNumber(await this.blockSource.getBlockNumber());
1670
+ }
1671
+ if (BlockHash.isBlockHash(block)) {
1672
+ const initialBlockHash = await this.#getInitialHeaderHash();
1673
+ if (block.equals(initialBlockHash)) {
1674
+ return BlockNumber.ZERO;
1675
+ }
1676
+ const header = await this.blockSource.getBlockHeaderByHash(block);
1677
+ if (!header) {
1678
+ throw new Error(`Block hash ${block.toString()} not found.`);
1679
+ }
1680
+ return header.getBlockNumber();
1681
+ }
1682
+ return block as BlockNumber;
1683
+ }
1684
+
1593
1685
  /**
1594
1686
  * Ensure we fully sync the world state
1595
1687
  * @returns A promise that fulfils once the world state is synced
@@ -309,9 +309,9 @@ export class Sentinel extends (EventEmitter as new () => WatcherEmitter) impleme
309
309
  return false;
310
310
  }
311
311
 
312
- const archiverSlot = await this.archiver.getL2SlotNumber();
313
- if (archiverSlot === undefined || archiverSlot < targetSlot) {
314
- this.logger.debug(`Waiting for archiver to sync with L2 slot ${targetSlot}`, { archiverSlot, targetSlot });
312
+ const syncedSlot = await this.archiver.getSyncedL2SlotNumber();
313
+ if (syncedSlot === undefined || syncedSlot < targetSlot) {
314
+ this.logger.debug(`Waiting for archiver to sync with L2 slot ${targetSlot}`, { syncedSlot, targetSlot });
315
315
  return false;
316
316
  }
317
317