@aztec/pxe 0.84.0-nightly.20250410 → 0.84.0-nightly.20250412

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.
@@ -24,6 +24,8 @@ export interface KernelProverConfig {
24
24
  export interface PXEConfig {
25
25
  /** L2 block to start scanning from for new accounts */
26
26
  l2StartingBlock: number;
27
+ /** Maximum amount of blocks to pull from the stream in one request when synchronizing */
28
+ l2BlockBatchSize: number;
27
29
  }
28
30
  export type PXEServiceConfig = PXEConfig & KernelProverConfig & BBProverConfig & DataStoreConfig & ChainConfig;
29
31
  export type CliPXEOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AACD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,kBAAkB,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;AAE/G,MAAM,MAAM,aAAa,GAAG;IAC1B,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,gBAAgB,CA0BlE,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,CAclE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,GAAG,gBAAgB,CAWrF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,gBAAgB,CAQnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AACD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,kBAAkB,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;AAE/G,MAAM,MAAM,aAAa,GAAG;IAC1B,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,gBAAgB,CA+BlE,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,CAclE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,GAAG,gBAAgB,CAWrF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,gBAAgB,CAQnE"}
@@ -11,6 +11,11 @@ export const pxeConfigMappings = {
11
11
  ...numberConfigHelper(INITIAL_L2_BLOCK_NUM),
12
12
  description: 'L2 block to start scanning from for new accounts'
13
13
  },
14
+ l2BlockBatchSize: {
15
+ env: 'PXE_L2_BLOCK_BATCH_SIZE',
16
+ ...numberConfigHelper(200),
17
+ description: 'Maximum amount of blocks to pull from the stream in one request when synchronizing'
18
+ },
14
19
  bbBinaryPath: {
15
20
  env: 'BB_BINARY_PATH',
16
21
  description: 'Path to the BB binary'
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/bundle/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,kBAAoC,uBAiC9C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/bundle/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,kBAAoC,uBAkC9C"}
@@ -19,7 +19,8 @@ import { PXEService } from '../../../pxe_service/pxe_service.js';
19
19
  const l1Contracts = await aztecNode.getL1ContractAddresses();
20
20
  const configWithContracts = {
21
21
  ...config,
22
- l1Contracts
22
+ l1Contracts,
23
+ l2BlockBatchSize: 200
23
24
  };
24
25
  const store = await createStore('pxe_data', configWithContracts, options.loggers.store ?? createLogger('pxe:data:indexeddb'));
25
26
  const simulationProvider = new WASMSimulator();
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/lazy/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,kBAAoC,uBA6B9C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/client/lazy/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,kBAAoC,uBA8B9C"}
@@ -18,6 +18,7 @@ import { PXEService } from '../../../pxe_service/pxe_service.js';
18
18
  const l1Contracts = await aztecNode.getL1ContractAddresses();
19
19
  const configWithContracts = {
20
20
  ...config,
21
+ l2BlockBatchSize: 200,
21
22
  l1Contracts
22
23
  };
23
24
  const store = await createStore('pxe_data', configWithContracts, options.loggers.store ?? createLogger('pxe:data:indexeddb'));
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kBAAkB,EAAiB,MAAM,yBAAyB,CAAC;AAEjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAG9D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,YAAY,GAAE,MAAM,GAAG,OAAO,GAAG,SAAqB,uBAKvD;AAED;;;;;;;;GAQG;AACH,wBAAsB,sCAAsC,CAC1D,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,gBAAgB,EACxB,YAAY,GAAE,MAAM,GAAG,OAAO,GAAG,SAAqB,uBA8BvD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/server/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kBAAkB,EAAiB,MAAM,yBAAyB,CAAC;AAEjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAG9D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,YAAY,GAAE,MAAM,GAAG,OAAO,GAAG,SAAqB,uBAKvD;AAED;;;;;;;;GAQG;AACH,wBAAsB,sCAAsC,CAC1D,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,gBAAgB,EACxB,YAAY,GAAE,MAAM,GAAG,OAAO,GAAG,SAAqB,uBA+BvD"}
@@ -33,7 +33,8 @@ import { PXE_DATA_SCHEMA_VERSION } from '../../storage/index.js';
33
33
  const l1Contracts = await aztecNode.getL1ContractAddresses();
34
34
  const configWithContracts = {
35
35
  ...config,
36
- l1Contracts
36
+ l1Contracts,
37
+ l2BlockBatchSize: 200
37
38
  };
38
39
  const store = await createStore('pxe_data', PXE_DATA_SCHEMA_VERSION, configWithContracts, createLogger('pxe:data:lmdb'));
39
40
  const prover = await createProver(config, simulationProvider, logSuffix);
@@ -20,8 +20,8 @@ export declare class Synchronizer implements L2BlockStreamEventHandler {
20
20
  private log;
21
21
  private isSyncing;
22
22
  protected readonly blockStream: L2BlockStream;
23
- constructor(node: AztecNode, syncDataProvider: SyncDataProvider, noteDataProvider: NoteDataProvider, taggingDataProvider: TaggingDataProvider, l2TipsStore: L2TipsKVStore, config?: Partial<Pick<PXEConfig, 'l2StartingBlock'>>, loggerOrSuffix?: string | Logger);
24
- protected createBlockStream(config: Partial<Pick<PXEConfig, 'l2StartingBlock'>>): L2BlockStream;
23
+ constructor(node: AztecNode, syncDataProvider: SyncDataProvider, noteDataProvider: NoteDataProvider, taggingDataProvider: TaggingDataProvider, l2TipsStore: L2TipsKVStore, config?: Partial<Pick<PXEConfig, 'l2StartingBlock' | 'l2BlockBatchSize'>>, loggerOrSuffix?: string | Logger);
24
+ protected createBlockStream(config: Partial<Pick<PXEConfig, 'l2StartingBlock' | 'l2BlockBatchSize'>>): L2BlockStream;
25
25
  /** Handle events emitted by the block stream. */
26
26
  handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
27
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/synchronizer/synchronizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAErG;;;;GAIG;AACH,qBAAa,YAAa,YAAW,yBAAyB;IAM1D,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,WAAW;IATrB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;gBAGpC,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,aAAa,EAClC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAM,EACxD,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IASlC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAM/E,iDAAiD;IACpC,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7E;;;OAGG;IACU,IAAI;YAiBH,MAAM;IAeb,qBAAqB;CAG7B"}
1
+ {"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/synchronizer/synchronizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAErG;;;;GAIG;AACH,qBAAa,YAAa,YAAW,yBAAyB;IAM1D,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,WAAW;IATrB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;gBAGpC,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,aAAa,EAClC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,kBAAkB,CAAC,CAAM,EAC7E,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IASlC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,kBAAkB,CAAC,CAAC;IAUpG,iDAAiD;IACpC,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7E;;;OAGG;IACU,IAAI;YAiBH,MAAM;IAeb,qBAAqB;CAG7B"}
@@ -24,7 +24,11 @@ import { L2BlockStream } from '@aztec/stdlib/block';
24
24
  }
25
25
  createBlockStream(config) {
26
26
  return new L2BlockStream(this.node, this.l2TipsStore, this, createLogger('pxe:block_stream'), {
27
- startingBlock: config.l2StartingBlock
27
+ startingBlock: config.l2StartingBlock,
28
+ batchSize: config.l2BlockBatchSize,
29
+ // Skipping finalized blocks makes us sync much faster - we only need to download blocks other than the latest one
30
+ // in order to detect reorgs, and there can be no reorgs on finalized block, making this safe.
31
+ skipFinalized: true
28
32
  });
29
33
  }
30
34
  /** Handle events emitted by the block stream. */ async handleBlockStreamEvent(event) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/pxe",
3
- "version": "0.84.0-nightly.20250410",
3
+ "version": "0.84.0-nightly.20250412",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./server": "./dest/entrypoints/server/index.js",
@@ -59,21 +59,21 @@
59
59
  ]
60
60
  },
61
61
  "dependencies": {
62
- "@aztec/bb-prover": "0.84.0-nightly.20250410",
63
- "@aztec/bb.js": "0.84.0-nightly.20250410",
64
- "@aztec/builder": "0.84.0-nightly.20250410",
65
- "@aztec/constants": "0.84.0-nightly.20250410",
66
- "@aztec/ethereum": "0.84.0-nightly.20250410",
67
- "@aztec/foundation": "0.84.0-nightly.20250410",
68
- "@aztec/key-store": "0.84.0-nightly.20250410",
69
- "@aztec/kv-store": "0.84.0-nightly.20250410",
70
- "@aztec/noir-protocol-circuits-types": "0.84.0-nightly.20250410",
71
- "@aztec/noir-types": "0.84.0-nightly.20250410",
72
- "@aztec/protocol-contracts": "0.84.0-nightly.20250410",
73
- "@aztec/simulator": "0.84.0-nightly.20250410",
74
- "@aztec/stdlib": "0.84.0-nightly.20250410",
62
+ "@aztec/bb-prover": "0.84.0-nightly.20250412",
63
+ "@aztec/bb.js": "0.84.0-nightly.20250412",
64
+ "@aztec/builder": "0.84.0-nightly.20250412",
65
+ "@aztec/constants": "0.84.0-nightly.20250412",
66
+ "@aztec/ethereum": "0.84.0-nightly.20250412",
67
+ "@aztec/foundation": "0.84.0-nightly.20250412",
68
+ "@aztec/key-store": "0.84.0-nightly.20250412",
69
+ "@aztec/kv-store": "0.84.0-nightly.20250412",
70
+ "@aztec/noir-protocol-circuits-types": "0.84.0-nightly.20250412",
71
+ "@aztec/noir-types": "0.84.0-nightly.20250412",
72
+ "@aztec/protocol-contracts": "0.84.0-nightly.20250412",
73
+ "@aztec/simulator": "0.84.0-nightly.20250412",
74
+ "@aztec/stdlib": "0.84.0-nightly.20250412",
75
75
  "@msgpack/msgpack": "^3.0.0-beta2",
76
- "koa": "^2.14.2",
76
+ "koa": "^2.16.1",
77
77
  "koa-router": "^12.0.0",
78
78
  "lodash.omit": "^4.5.0",
79
79
  "sha3": "^2.1.4",
@@ -81,7 +81,7 @@
81
81
  "viem": "2.23.7"
82
82
  },
83
83
  "devDependencies": {
84
- "@aztec/noir-contracts.js": "0.84.0-nightly.20250410",
84
+ "@aztec/noir-contracts.js": "0.84.0-nightly.20250412",
85
85
  "@jest/globals": "^29.5.0",
86
86
  "@types/jest": "^29.5.0",
87
87
  "@types/lodash.omit": "^4.5.7",
@@ -34,6 +34,8 @@ export interface KernelProverConfig {
34
34
  export interface PXEConfig {
35
35
  /** L2 block to start scanning from for new accounts */
36
36
  l2StartingBlock: number;
37
+ /** Maximum amount of blocks to pull from the stream in one request when synchronizing */
38
+ l2BlockBatchSize: number;
37
39
  }
38
40
 
39
41
  export type PXEServiceConfig = PXEConfig & KernelProverConfig & BBProverConfig & DataStoreConfig & ChainConfig;
@@ -55,6 +57,11 @@ export const pxeConfigMappings: ConfigMappingsType<PXEServiceConfig> = {
55
57
  ...numberConfigHelper(INITIAL_L2_BLOCK_NUM),
56
58
  description: 'L2 block to start scanning from for new accounts',
57
59
  },
60
+ l2BlockBatchSize: {
61
+ env: 'PXE_L2_BLOCK_BATCH_SIZE',
62
+ ...numberConfigHelper(200),
63
+ description: 'Maximum amount of blocks to pull from the stream in one request when synchronizing',
64
+ },
58
65
  bbBinaryPath: {
59
66
  env: 'BB_BINARY_PATH',
60
67
  description: 'Path to the BB binary',
@@ -28,6 +28,7 @@ export async function createPXEService(
28
28
  const configWithContracts = {
29
29
  ...config,
30
30
  l1Contracts,
31
+ l2BlockBatchSize: 200,
31
32
  } as PXEServiceConfig;
32
33
 
33
34
  const store = await createStore(
@@ -26,6 +26,7 @@ export async function createPXEService(
26
26
  const l1Contracts = await aztecNode.getL1ContractAddresses();
27
27
  const configWithContracts = {
28
28
  ...config,
29
+ l2BlockBatchSize: 200,
29
30
  l1Contracts,
30
31
  } as PXEServiceConfig;
31
32
 
@@ -52,6 +52,7 @@ export async function createPXEServiceWithSimulationProvider(
52
52
  const configWithContracts = {
53
53
  ...config,
54
54
  l1Contracts,
55
+ l2BlockBatchSize: 200,
55
56
  } as PXEServiceConfig;
56
57
 
57
58
  const store = await createStore(
@@ -24,7 +24,7 @@ export class Synchronizer implements L2BlockStreamEventHandler {
24
24
  private noteDataProvider: NoteDataProvider,
25
25
  private taggingDataProvider: TaggingDataProvider,
26
26
  private l2TipsStore: L2TipsKVStore,
27
- config: Partial<Pick<PXEConfig, 'l2StartingBlock'>> = {},
27
+ config: Partial<Pick<PXEConfig, 'l2StartingBlock' | 'l2BlockBatchSize'>> = {},
28
28
  loggerOrSuffix?: string | Logger,
29
29
  ) {
30
30
  this.log =
@@ -34,9 +34,13 @@ export class Synchronizer implements L2BlockStreamEventHandler {
34
34
  this.blockStream = this.createBlockStream(config);
35
35
  }
36
36
 
37
- protected createBlockStream(config: Partial<Pick<PXEConfig, 'l2StartingBlock'>>) {
37
+ protected createBlockStream(config: Partial<Pick<PXEConfig, 'l2StartingBlock' | 'l2BlockBatchSize'>>) {
38
38
  return new L2BlockStream(this.node, this.l2TipsStore, this, createLogger('pxe:block_stream'), {
39
39
  startingBlock: config.l2StartingBlock,
40
+ batchSize: config.l2BlockBatchSize,
41
+ // Skipping finalized blocks makes us sync much faster - we only need to download blocks other than the latest one
42
+ // in order to detect reorgs, and there can be no reorgs on finalized block, making this safe.
43
+ skipFinalized: true,
40
44
  });
41
45
  }
42
46