@aztec/world-state 0.0.1-commit.3469e52 → 0.0.1-commit.350e0a4d

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.
Files changed (68) hide show
  1. package/dest/instrumentation/instrumentation.d.ts +4 -3
  2. package/dest/instrumentation/instrumentation.d.ts.map +1 -1
  3. package/dest/instrumentation/instrumentation.js +13 -11
  4. package/dest/native/fork_checkpoint.d.ts +7 -1
  5. package/dest/native/fork_checkpoint.d.ts.map +1 -1
  6. package/dest/native/fork_checkpoint.js +15 -3
  7. package/dest/native/ipc_world_state_instance.d.ts +89 -0
  8. package/dest/native/ipc_world_state_instance.d.ts.map +1 -0
  9. package/dest/native/ipc_world_state_instance.js +662 -0
  10. package/dest/native/merkle_trees_facade.d.ts +12 -8
  11. package/dest/native/merkle_trees_facade.d.ts.map +1 -1
  12. package/dest/native/merkle_trees_facade.js +63 -115
  13. package/dest/native/message.d.ts +14 -221
  14. package/dest/native/message.d.ts.map +1 -1
  15. package/dest/native/message.js +0 -42
  16. package/dest/native/native_world_state.d.ts +22 -10
  17. package/dest/native/native_world_state.d.ts.map +1 -1
  18. package/dest/native/native_world_state.js +118 -59
  19. package/dest/native/native_world_state_instance.d.ts +60 -41
  20. package/dest/native/native_world_state_instance.d.ts.map +1 -1
  21. package/dest/native/native_world_state_instance.js +5 -202
  22. package/dest/native/world_state_operation.d.ts +7 -0
  23. package/dest/native/world_state_operation.d.ts.map +1 -0
  24. package/dest/native/world_state_operation.js +5 -0
  25. package/dest/synchronizer/config.d.ts +3 -5
  26. package/dest/synchronizer/config.d.ts.map +1 -1
  27. package/dest/synchronizer/config.js +15 -18
  28. package/dest/synchronizer/errors.d.ts +8 -1
  29. package/dest/synchronizer/errors.d.ts.map +1 -1
  30. package/dest/synchronizer/errors.js +8 -1
  31. package/dest/synchronizer/factory.d.ts +6 -5
  32. package/dest/synchronizer/factory.d.ts.map +1 -1
  33. package/dest/synchronizer/factory.js +7 -6
  34. package/dest/synchronizer/index.d.ts +2 -1
  35. package/dest/synchronizer/index.d.ts.map +1 -1
  36. package/dest/synchronizer/index.js +1 -0
  37. package/dest/synchronizer/server_world_state_synchronizer.d.ts +13 -8
  38. package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
  39. package/dest/synchronizer/server_world_state_synchronizer.js +134 -49
  40. package/dest/test/utils.d.ts +6 -6
  41. package/dest/test/utils.d.ts.map +1 -1
  42. package/dest/test/utils.js +9 -4
  43. package/dest/testing.d.ts +4 -3
  44. package/dest/testing.d.ts.map +1 -1
  45. package/dest/testing.js +14 -7
  46. package/dest/world-state-db/merkle_tree_db.d.ts +3 -12
  47. package/dest/world-state-db/merkle_tree_db.d.ts.map +1 -1
  48. package/package.json +14 -11
  49. package/src/instrumentation/instrumentation.ts +15 -19
  50. package/src/native/fork_checkpoint.ts +19 -3
  51. package/src/native/ipc_world_state_instance.ts +834 -0
  52. package/src/native/merkle_trees_facade.ts +89 -109
  53. package/src/native/message.ts +13 -286
  54. package/src/native/native_world_state.ts +140 -93
  55. package/src/native/native_world_state_instance.ts +98 -278
  56. package/src/native/world_state_operation.ts +33 -0
  57. package/src/synchronizer/config.ts +16 -23
  58. package/src/synchronizer/errors.ts +8 -0
  59. package/src/synchronizer/factory.ts +18 -11
  60. package/src/synchronizer/index.ts +1 -0
  61. package/src/synchronizer/server_world_state_synchronizer.ts +156 -51
  62. package/src/test/utils.ts +14 -5
  63. package/src/testing.ts +12 -10
  64. package/src/world-state-db/merkle_tree_db.ts +2 -12
  65. package/dest/native/world_state_ops_queue.d.ts +0 -19
  66. package/dest/native/world_state_ops_queue.d.ts.map +0 -1
  67. package/dest/native/world_state_ops_queue.js +0 -146
  68. package/src/native/world_state_ops_queue.ts +0 -190
@@ -1,54 +1,72 @@
1
+ var _computedKey;
1
2
  import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
2
3
  import { BlockNumber } from '@aztec/foundation/branded-types';
3
4
  import { fromEntries, padArrayEnd } from '@aztec/foundation/collection';
4
5
  import { Fr } from '@aztec/foundation/curves/bn254';
5
- import { EthAddress } from '@aztec/foundation/eth-address';
6
- import { tryRmDir } from '@aztec/foundation/fs';
7
6
  import { createLogger } from '@aztec/foundation/log';
8
- import { DatabaseVersionManager } from '@aztec/stdlib/database-version';
7
+ import { DatabaseVersionManager } from '@aztec/stdlib/database-version/manager';
9
8
  import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
10
- import { BlockHeader, PartialStateReference, StateReference } from '@aztec/stdlib/tx';
11
- import { WorldStateRevision } from '@aztec/stdlib/world-state';
9
+ import { BlockHeader, GlobalVariables, PartialStateReference, StateReference } from '@aztec/stdlib/tx';
10
+ import { EMPTY_GENESIS_DATA, WorldStateRevision } from '@aztec/stdlib/world-state';
12
11
  import { getTelemetryClient } from '@aztec/telemetry-client';
13
12
  import assert from 'assert/strict';
14
- import { mkdtemp, rm } from 'fs/promises';
13
+ import { mkdir, mkdtemp, rm } from 'fs/promises';
15
14
  import { tmpdir } from 'os';
16
15
  import { join } from 'path';
17
16
  import { WorldStateInstrumentation } from '../instrumentation/instrumentation.js';
17
+ import { IpcWorldState } from './ipc_world_state_instance.js';
18
18
  import { MerkleTreesFacade, MerkleTreesForkFacade, serializeLeaf } from './merkle_trees_facade.js';
19
- import { WorldStateMessageType, blockStateReference, sanitizeFullStatus, sanitizeSummary, treeStateReferenceToSnapshot } from './message.js';
20
- import { NativeWorldState } from './native_world_state_instance.js';
19
+ import { blockStateReference, sanitizeFullStatus, sanitizeSummary, treeStateReferenceToSnapshot } from './message.js';
21
20
  // The current version of the world state database schema
22
21
  // Increment this when making incompatible changes to the database schema
23
22
  export const WORLD_STATE_DB_VERSION = 2; // The initial version
24
23
  export const WORLD_STATE_DIR = 'world_state';
24
+ _computedKey = Symbol.asyncDispose;
25
25
  export class NativeWorldStateService {
26
26
  instance;
27
27
  worldStateInstrumentation;
28
28
  log;
29
+ genesis;
29
30
  cleanup;
31
+ recreateInstance;
30
32
  initialHeader;
31
33
  // This is read heavily and only changes when data is persisted, so we cache it
32
34
  cachedStatusSummary;
33
- constructor(instance, worldStateInstrumentation, log = createLogger('world-state:database'), cleanup = ()=>Promise.resolve()){
35
+ constructor(instance, worldStateInstrumentation, log, genesis = EMPTY_GENESIS_DATA, cleanup = ()=>Promise.resolve(), /** Factory to recreate a fresh IpcWorldState after clear(). */ recreateInstance){
34
36
  this.instance = instance;
35
37
  this.worldStateInstrumentation = worldStateInstrumentation;
36
38
  this.log = log;
39
+ this.genesis = genesis;
37
40
  this.cleanup = cleanup;
41
+ this.recreateInstance = recreateInstance;
38
42
  }
39
- static async new(rollupAddress, dataDir, wsTreeMapSizes, prefilledPublicData = [], instrumentation = new WorldStateInstrumentation(getTelemetryClient()), log = createLogger('world-state:database'), cleanup = ()=>Promise.resolve()) {
43
+ static async new(rollupAddress, dataDir, wsTreeMapSizes, genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings, cleanup = ()=>Promise.resolve()) {
44
+ for (const [key, value] of Object.entries(wsTreeMapSizes)){
45
+ if (value <= 0) {
46
+ throw new Error(`Map size must be a positive number, got ${value} for ${key}`);
47
+ }
48
+ }
49
+ const log = createLogger('world-state:database', bindings);
40
50
  const worldStateDirectory = join(dataDir, WORLD_STATE_DIR);
41
- // Create a version manager to handle versioning
42
51
  const versionManager = new DatabaseVersionManager({
43
52
  schemaVersion: WORLD_STATE_DB_VERSION,
44
53
  rollupAddress,
45
54
  dataDirectory: worldStateDirectory,
46
- onOpen: (dir)=>{
47
- return Promise.resolve(new NativeWorldState(dir, wsTreeMapSizes, prefilledPublicData, instrumentation));
48
- }
55
+ onOpen: (dir)=>IpcWorldState.spawn(dir, wsTreeMapSizes, genesis, instrumentation, bindings)
49
56
  });
50
57
  const [instance] = await versionManager.open();
51
- const worldState = new this(instance, instrumentation, log, cleanup);
58
+ const recreateInstance = async ()=>{
59
+ await rm(worldStateDirectory, {
60
+ recursive: true,
61
+ force: true,
62
+ maxRetries: 3
63
+ });
64
+ await mkdir(worldStateDirectory, {
65
+ recursive: true
66
+ });
67
+ return IpcWorldState.spawn(worldStateDirectory, wsTreeMapSizes, genesis, instrumentation, bindings);
68
+ };
69
+ const worldState = new this(instance, instrumentation, log, genesis, cleanup, recreateInstance);
52
70
  try {
53
71
  await worldState.init();
54
72
  } catch (e) {
@@ -57,10 +75,14 @@ export class NativeWorldStateService {
57
75
  }
58
76
  return worldState;
59
77
  }
60
- static async tmp(rollupAddress = EthAddress.ZERO, cleanupTmpDir = true, prefilledPublicData = [], instrumentation = new WorldStateInstrumentation(getTelemetryClient())) {
61
- const log = createLogger('world-state:database');
78
+ static async tmp(cleanupTmpDir = true, genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings) {
79
+ const log = createLogger('world-state:database', bindings);
62
80
  const dataDir = await mkdtemp(join(tmpdir(), 'aztec-world-state-'));
63
- const dbMapSizeKb = 10 * 1024 * 1024;
81
+ // Temporary (test/dev) world states are small and short-lived. Keep the LMDB
82
+ // map sizes in the MB range: with the IPC backend each tmp() spawns a separate
83
+ // aztec-wsdb that maps these per tree, and oversized maps add real cold-start
84
+ // I/O under parallel CI load. 256 MB/tree is ample for tests.
85
+ const dbMapSizeKb = 256 * 1024;
64
86
  const worldStateTreeMapSizes = {
65
87
  archiveTreeMapSizeKb: dbMapSizeKb,
66
88
  nullifierTreeMapSizeKb: dbMapSizeKb,
@@ -69,7 +91,7 @@ export class NativeWorldStateService {
69
91
  publicDataTreeMapSizeKb: dbMapSizeKb
70
92
  };
71
93
  log.debug(`Created temporary world state database at: ${dataDir} with tree map size: ${dbMapSizeKb}`);
72
- // pass a cleanup callback because process.on('beforeExit', cleanup) does not work under Jest
94
+ const instance = await IpcWorldState.spawn(dataDir, worldStateTreeMapSizes, genesis, instrumentation, bindings);
73
95
  const cleanup = async ()=>{
74
96
  if (cleanupTmpDir) {
75
97
  await rm(dataDir, {
@@ -82,7 +104,35 @@ export class NativeWorldStateService {
82
104
  log.debug(`Leaving temporary world state database: ${dataDir}`);
83
105
  }
84
106
  };
85
- return this.new(rollupAddress, dataDir, worldStateTreeMapSizes, prefilledPublicData, instrumentation, log, cleanup);
107
+ const recreateInstance = async ()=>{
108
+ await rm(dataDir, {
109
+ recursive: true,
110
+ force: true,
111
+ maxRetries: 3
112
+ });
113
+ await mkdir(dataDir, {
114
+ recursive: true
115
+ });
116
+ return IpcWorldState.spawn(dataDir, worldStateTreeMapSizes, genesis, instrumentation, bindings);
117
+ };
118
+ const worldState = new this(instance, instrumentation, log, genesis, cleanup, recreateInstance);
119
+ try {
120
+ await worldState.init();
121
+ } catch (e) {
122
+ log.error(`Error initializing tmp world state: ${e}`);
123
+ throw e;
124
+ }
125
+ return worldState;
126
+ }
127
+ static ephemeral(genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings) {
128
+ return this.tmp(/*cleanupTmpDir=*/ true, genesis, instrumentation, bindings);
129
+ }
130
+ static async fromIpc(wsdbBackend, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings, genesis = EMPTY_GENESIS_DATA, cleanup = ()=>Promise.resolve(), recreateInstance) {
131
+ const log = createLogger('world-state:database', bindings);
132
+ const instance = new IpcWorldState(wsdbBackend, instrumentation, bindings);
133
+ const worldState = new this(instance, instrumentation, log, genesis, cleanup, recreateInstance);
134
+ await worldState.init();
135
+ return worldState;
86
136
  }
87
137
  async init() {
88
138
  const status = await this.getStatusSummary();
@@ -105,10 +155,21 @@ export class NativeWorldStateService {
105
155
  assert.strictEqual(initialHeaderIndex, 0n, 'Invalid initial archive state');
106
156
  }
107
157
  async clear() {
158
+ if (!this.recreateInstance) {
159
+ throw new Error('clear() is not available for externally-managed IPC backends');
160
+ }
161
+ this.log.warn('Clearing world state: shutting down WSDB, deleting data, and recreating');
108
162
  await this.instance.close();
109
163
  this.cachedStatusSummary = undefined;
110
- await tryRmDir(this.instance.getDataDir(), this.log);
111
- this.instance = this.instance.clone();
164
+ this.instance = await this.recreateInstance();
165
+ await this.init();
166
+ this.log.info('World state cleared and reinitialized from genesis');
167
+ }
168
+ /** Returns the IPC path of the underlying IPC backend, if available. */ getIpcPath() {
169
+ if (this.instance instanceof IpcWorldState) {
170
+ return this.instance.getIpcPath();
171
+ }
172
+ throw new Error('getIpcPath() is only available with IPC world state');
112
173
  }
113
174
  getCommitted() {
114
175
  return new MerkleTreesFacade(this.instance, this.initialHeader, WorldStateRevision.empty());
@@ -117,12 +178,11 @@ export class NativeWorldStateService {
117
178
  return new MerkleTreesFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ 0, /* blockNumber=*/ blockNumber, /* includeUncommitted=*/ false));
118
179
  }
119
180
  async fork(blockNumber, opts = {}) {
120
- const resp = await this.instance.call(WorldStateMessageType.CREATE_FORK, {
181
+ const forkId = await this.instance.createFork({
121
182
  latest: blockNumber === undefined,
122
- blockNumber: blockNumber ?? BlockNumber.ZERO,
123
- canonical: true
183
+ blockNumber: blockNumber ?? BlockNumber.ZERO
124
184
  });
125
- return new MerkleTreesForkFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ resp.forkId, /* blockNumber=*/ BlockNumber.ZERO, /* includeUncommitted=*/ true), opts);
185
+ return new MerkleTreesForkFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ forkId, /* blockNumber=*/ WorldStateRevision.LATEST, /* includeUncommitted=*/ true), opts);
126
186
  }
127
187
  getInitialHeader() {
128
188
  return this.initialHeader;
@@ -146,29 +206,42 @@ export class NativeWorldStateService {
146
206
  });
147
207
  });
148
208
  try {
149
- return await this.instance.call(WorldStateMessageType.SYNC_BLOCK, {
209
+ const status = await this.instance.syncBlock({
150
210
  blockNumber: l2Block.number,
151
- blockHeaderHash: await l2Block.hash(),
211
+ blockHeaderHash: (await l2Block.hash()).toBuffer(),
212
+ // Forwarded so the native sync verifies the archive root against canonical and rejects a divergent tree.
213
+ expectedArchiveRoot: l2Block.archive.root.toBuffer(),
214
+ expectedPreviousArchiveRoot: l2Block.header.lastArchive.root.toBuffer(),
152
215
  paddedL1ToL2Messages: paddedL1ToL2Messages.map(serializeLeaf),
153
216
  paddedNoteHashes: paddedNoteHashes.map(serializeLeaf),
154
217
  paddedNullifiers: paddedNullifiers.map(serializeLeaf),
155
218
  publicDataWrites: publicDataWrites.map(serializeLeaf),
156
- blockStateRef: blockStateReference(l2Block.header.state),
157
- canonical: true
158
- }, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
219
+ blockStateRef: blockStateReference(l2Block.header.state)
220
+ });
221
+ return this.sanitizeAndCacheSummaryFromFull(status);
159
222
  } catch (err) {
223
+ this.deleteCachedSummary();
160
224
  this.worldStateInstrumentation.incCriticalErrors('synch_pending_block');
161
225
  throw err;
162
226
  }
163
227
  }
164
228
  async close() {
165
- await this.instance.close();
166
- await this.cleanup();
229
+ try {
230
+ await this.instance.close();
231
+ } finally{
232
+ await this.cleanup();
233
+ }
234
+ }
235
+ async [_computedKey]() {
236
+ await this.close();
167
237
  }
168
238
  async buildInitialHeader() {
169
239
  const state = await this.getInitialStateReference();
170
240
  return BlockHeader.empty({
171
- state
241
+ state,
242
+ globalVariables: GlobalVariables.empty({
243
+ timestamp: this.genesis.genesisTimestamp
244
+ })
172
245
  });
173
246
  }
174
247
  sanitizeAndCacheSummaryFromFull(response) {
@@ -185,7 +258,7 @@ export class NativeWorldStateService {
185
258
  };
186
259
  return sanitized;
187
260
  }
188
- deleteCachedSummary(_) {
261
+ deleteCachedSummary() {
189
262
  this.cachedStatusSummary = undefined;
190
263
  }
191
264
  /**
@@ -194,11 +267,9 @@ export class NativeWorldStateService {
194
267
  * @returns The new WorldStateStatus
195
268
  */ async setFinalized(toBlockNumber) {
196
269
  try {
197
- await this.instance.call(WorldStateMessageType.FINALIZE_BLOCKS, {
198
- toBlockNumber,
199
- canonical: true
200
- }, this.sanitizeAndCacheSummary.bind(this), this.deleteCachedSummary.bind(this));
270
+ this.sanitizeAndCacheSummary(await this.instance.finalizeBlocks(toBlockNumber));
201
271
  } catch (err) {
272
+ this.deleteCachedSummary();
202
273
  this.worldStateInstrumentation.incCriticalErrors('finalize_block');
203
274
  throw err;
204
275
  }
@@ -210,11 +281,9 @@ export class NativeWorldStateService {
210
281
  * @returns The new WorldStateStatus
211
282
  */ async removeHistoricalBlocks(toBlockNumber) {
212
283
  try {
213
- return await this.instance.call(WorldStateMessageType.REMOVE_HISTORICAL_BLOCKS, {
214
- toBlockNumber,
215
- canonical: true
216
- }, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
284
+ return this.sanitizeAndCacheSummaryFromFull(await this.instance.removeHistoricalBlocks(toBlockNumber));
217
285
  } catch (err) {
286
+ this.deleteCachedSummary();
218
287
  this.worldStateInstrumentation.incCriticalErrors('prune_historical_block');
219
288
  throw err;
220
289
  }
@@ -225,11 +294,9 @@ export class NativeWorldStateService {
225
294
  * @returns The new WorldStateStatus
226
295
  */ async unwindBlocks(toBlockNumber) {
227
296
  try {
228
- return await this.instance.call(WorldStateMessageType.UNWIND_BLOCKS, {
229
- toBlockNumber,
230
- canonical: true
231
- }, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
297
+ return this.sanitizeAndCacheSummaryFromFull(await this.instance.unwindBlocks(toBlockNumber));
232
298
  } catch (err) {
299
+ this.deleteCachedSummary();
233
300
  this.worldStateInstrumentation.incCriticalErrors('prune_pending_block');
234
301
  throw err;
235
302
  }
@@ -240,25 +307,17 @@ export class NativeWorldStateService {
240
307
  ...this.cachedStatusSummary
241
308
  };
242
309
  }
243
- return await this.instance.call(WorldStateMessageType.GET_STATUS, {
244
- canonical: true
245
- }, this.sanitizeAndCacheSummary.bind(this));
310
+ return this.sanitizeAndCacheSummary(await this.instance.getStatus());
246
311
  }
247
312
  updateLeaf(_treeId, _leaf, _index) {
248
313
  return Promise.reject(new Error('Method not implemented'));
249
314
  }
250
315
  async getInitialStateReference() {
251
- const resp = await this.instance.call(WorldStateMessageType.GET_INITIAL_STATE_REFERENCE, {
252
- canonical: true
253
- });
254
- return new StateReference(treeStateReferenceToSnapshot(resp.state[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]), new PartialStateReference(treeStateReferenceToSnapshot(resp.state[MerkleTreeId.NOTE_HASH_TREE]), treeStateReferenceToSnapshot(resp.state[MerkleTreeId.NULLIFIER_TREE]), treeStateReferenceToSnapshot(resp.state[MerkleTreeId.PUBLIC_DATA_TREE])));
316
+ const state = await this.instance.getInitialStateReference();
317
+ return new StateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]), new PartialStateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.NOTE_HASH_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.NULLIFIER_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.PUBLIC_DATA_TREE])));
255
318
  }
256
319
  async backupTo(dstPath, compact = true) {
257
- await this.instance.call(WorldStateMessageType.COPY_STORES, {
258
- dstPath,
259
- compact,
260
- canonical: true
261
- });
320
+ await this.instance.copyStores(dstPath, compact);
262
321
  return fromEntries(NATIVE_WORLD_STATE_DBS.map(([name, dir])=>[
263
322
  name,
264
323
  join(dstPath, dir, 'data.mdb')
@@ -1,49 +1,68 @@
1
- import { type Logger } from '@aztec/foundation/log';
2
- import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
3
- import type { WorldStateInstrumentation } from '../instrumentation/instrumentation.js';
4
- import type { WorldStateTreeMapSizes } from '../synchronizer/factory.js';
5
- import { WorldStateMessageType, type WorldStateRequest, type WorldStateRequestCategories, type WorldStateResponse } from './message.js';
6
- export interface NativeWorldStateInstance {
7
- call<T extends WorldStateMessageType>(messageType: T, body: WorldStateRequest[T] & WorldStateRequestCategories): Promise<WorldStateResponse[T]>;
8
- getHandle(): any;
9
- }
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
+ import type { IndexedTreeId, TreeInfo } from '@aztec/stdlib/interfaces/server';
4
+ import type { MerkleTreeId } from '@aztec/stdlib/trees';
5
+ import type { WorldStateRevision } from '@aztec/stdlib/world-state';
6
+ import type { BlockStateReference, SerializedBatchInsertionResult, SerializedIndexedLeaf, SerializedLeafValue, SerializedSequentialInsertionResult, SerializedSiblingPathAndIndex, TreeStateReference, WorldStateStatusFull, WorldStateStatusSummary } from './message.js';
10
7
  /**
11
- * Strongly-typed interface to access the WorldState class in the native world_state_napi module.
8
+ * Backend-agnostic handle to a running aztec-wsdb world state, accessed by the TS layer.
9
+ *
10
+ * The legacy in-process NAPI implementation has been removed; the C++ AVM (NAPI) now connects to
11
+ * the same aztec-wsdb process using the IPC path returned by {@link getIpcPath}.
12
12
  */
13
- export declare class NativeWorldState implements NativeWorldStateInstance {
14
- private readonly dataDir;
15
- private readonly wsTreeMapSizes;
16
- private readonly prefilledPublicData;
17
- private readonly instrumentation;
18
- private readonly log;
19
- private open;
20
- private queues;
21
- private instance;
22
- /** Creates a new native WorldState instance */
23
- constructor(dataDir: string, wsTreeMapSizes: WorldStateTreeMapSizes, prefilledPublicData: PublicDataTreeLeaf[] | undefined, instrumentation: WorldStateInstrumentation, log?: Logger);
24
- getDataDir(): string;
25
- clone(): NativeWorldState;
26
- /**
27
- * Gets the native WorldState handle from the underlying native instance.
28
- * We call the getHandle() method on the native WorldState to get a NAPI External
29
- * that wraps the underlying C++ WorldState pointer.
30
- * @returns The NAPI External handle to the native WorldState instance,since
31
- * the NAPI external type is opaque, we return any (we could also use an opaque symbol type)
32
- */
33
- getHandle(): any;
13
+ export interface NativeWorldStateInstance {
14
+ getTreeInfo(treeId: MerkleTreeId, revision: WorldStateRevision): Promise<TreeInfo>;
15
+ getStateReference(revision: WorldStateRevision): Promise<Record<number, TreeStateReference>>;
16
+ getInitialStateReference(): Promise<Record<number, TreeStateReference>>;
17
+ getLeafValue(treeId: MerkleTreeId, revision: WorldStateRevision, leafIndex: bigint): Promise<SerializedLeafValue | undefined>;
18
+ getLeafPreimage(treeId: IndexedTreeId, revision: WorldStateRevision, leafIndex: bigint): Promise<SerializedIndexedLeaf | undefined>;
19
+ getSiblingPath(treeId: MerkleTreeId, revision: WorldStateRevision, leafIndex: bigint): Promise<Buffer[]>;
20
+ getBlockNumbersForLeafIndices(treeId: MerkleTreeId, revision: WorldStateRevision, leafIndices: bigint[]): Promise<(bigint | undefined)[]>;
21
+ findLeafIndices(treeId: MerkleTreeId, revision: WorldStateRevision, leaves: SerializedLeafValue[], startIndex: bigint): Promise<(bigint | undefined)[]>;
22
+ findLowLeaf(treeId: IndexedTreeId, revision: WorldStateRevision, key: Fr): Promise<{
23
+ index: bigint;
24
+ alreadyPresent: boolean;
25
+ }>;
26
+ findSiblingPaths(treeId: MerkleTreeId, revision: WorldStateRevision, leaves: SerializedLeafValue[]): Promise<(SerializedSiblingPathAndIndex | undefined)[]>;
27
+ updateArchive(forkId: number, blockStateRef: BlockStateReference, blockHeaderHash: Buffer): Promise<void>;
28
+ appendLeaves(treeId: MerkleTreeId, forkId: number, leaves: SerializedLeafValue[]): Promise<void>;
29
+ batchInsert(treeId: IndexedTreeId, forkId: number, leaves: SerializedLeafValue[], subtreeDepth: number): Promise<SerializedBatchInsertionResult>;
30
+ sequentialInsert(treeId: IndexedTreeId, forkId: number, leaves: SerializedLeafValue[]): Promise<SerializedSequentialInsertionResult>;
31
+ syncBlock(input: {
32
+ blockNumber: BlockNumber;
33
+ blockStateRef: BlockStateReference;
34
+ blockHeaderHash: Buffer;
35
+ expectedArchiveRoot: Buffer;
36
+ expectedPreviousArchiveRoot: Buffer;
37
+ paddedNoteHashes: readonly SerializedLeafValue[];
38
+ paddedL1ToL2Messages: readonly SerializedLeafValue[];
39
+ paddedNullifiers: readonly SerializedLeafValue[];
40
+ publicDataWrites: readonly SerializedLeafValue[];
41
+ }): Promise<WorldStateStatusFull>;
42
+ createFork(input: {
43
+ latest: boolean;
44
+ blockNumber: BlockNumber;
45
+ }): Promise<number>;
46
+ deleteFork(forkId: number): Promise<void>;
47
+ finalizeBlocks(toBlockNumber: BlockNumber): Promise<WorldStateStatusSummary>;
48
+ unwindBlocks(toBlockNumber: BlockNumber): Promise<WorldStateStatusFull>;
49
+ removeHistoricalBlocks(toBlockNumber: BlockNumber): Promise<WorldStateStatusFull>;
50
+ getStatus(): Promise<WorldStateStatusSummary>;
51
+ createCheckpoint(forkId: number): Promise<number>;
52
+ commitCheckpoint(forkId: number): Promise<void>;
53
+ revertCheckpoint(forkId: number): Promise<void>;
54
+ commitAllCheckpoints(forkId: number, depth: number): Promise<void>;
55
+ revertAllCheckpoints(forkId: number, depth: number): Promise<void>;
56
+ copyStores(dstPath: string, compact: boolean): Promise<void>;
34
57
  /**
35
- * Sends a message to the native instance and returns the response.
36
- * @param messageType - The type of message to send
37
- * @param body - The message body
38
- * @param responseHandler - A callback accepting the response, executed on the job queue
39
- * @param errorHandler - A callback called on request error, executed on the job queue
40
- * @returns The response to the message
58
+ * IPC path the underlying aztec-wsdb process listens on. The C++ AVM uses this to attach to the
59
+ * same world state instance the TS layer is using.
41
60
  */
42
- call<T extends WorldStateMessageType>(messageType: T, body: WorldStateRequest[T] & WorldStateRequestCategories, responseHandler?: (response: WorldStateResponse[T]) => WorldStateResponse[T], errorHandler?: (_: string) => void): Promise<WorldStateResponse[T]>;
61
+ getIpcPath(): string;
43
62
  /**
44
- * Stops the native instance.
63
+ * Shut down the world state instance. Cancels any in-flight queues, closes the IPC channel, and
64
+ * terminates the underlying aztec-wsdb process. Idempotent.
45
65
  */
46
66
  close(): Promise<void>;
47
- private _sendMessage;
48
67
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlX3dvcmxkX3N0YXRlX2luc3RhbmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL25hdGl2ZV93b3JsZF9zdGF0ZV9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUs5RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixLQUFLLGlCQUFpQixFQUN0QixLQUFLLDJCQUEyQixFQUNoQyxLQUFLLGtCQUFrQixFQUl4QixNQUFNLGNBQWMsQ0FBQztBQUt0QixNQUFNLFdBQVcsd0JBQXdCO0lBQ3ZDLElBQUksQ0FBQyxDQUFDLFNBQVMscUJBQXFCLEVBQ2xDLFdBQVcsRUFBRSxDQUFDLEVBQ2QsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLDJCQUEyQixHQUN2RCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQyxTQUFTLElBQUksR0FBRyxDQUFDO0NBQ2xCO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxnQkFBaUIsWUFBVyx3QkFBd0I7SUFVN0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYztJQUMvQixPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtJQUNwQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWU7SUFDaEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBYnRCLE9BQU8sQ0FBQyxJQUFJLENBQVE7SUFHcEIsT0FBTyxDQUFDLE1BQU0sQ0FBeUM7SUFFdkQsT0FBTyxDQUFDLFFBQVEsQ0FBK0U7SUFFL0YsK0NBQStDO0lBQy9DLFlBQ21CLE9BQU8sRUFBRSxNQUFNLEVBQ2YsY0FBYyxFQUFFLHNCQUFzQixFQUN0QyxtQkFBbUIsa0NBQTJCLEVBQzlDLGVBQWUsRUFBRSx5QkFBeUIsRUFDMUMsR0FBRyxHQUFFLE1BQTZDLEVBb0NwRTtJQUVNLFVBQVUsV0FFaEI7SUFFTSxLQUFLLHFCQVFYO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksU0FBUyxJQUFJLEdBQUcsQ0FpQnRCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNVLElBQUksQ0FBQyxDQUFDLFNBQVMscUJBQXFCLEVBQy9DLFdBQVcsRUFBRSxDQUFDLEVBQ2QsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLDJCQUEyQixFQUV4RCxlQUFlLDZEQUF1RSxFQUN0RixZQUFZLHNCQUFvQixHQUMvQixPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FxRGhDO0lBRUQ7O09BRUc7SUFDVSxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQWVsQztZQUVhLFlBQVk7Q0E4RDNCIn0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlX3dvcmxkX3N0YXRlX2luc3RhbmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL25hdGl2ZV93b3JsZF9zdGF0ZV9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0UsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRSxPQUFPLEtBQUssRUFDVixtQkFBbUIsRUFDbkIsOEJBQThCLEVBQzlCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsbUNBQW1DLEVBQ25DLDZCQUE2QixFQUM3QixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN4QixNQUFNLGNBQWMsQ0FBQztBQUV0Qjs7Ozs7R0FLRztBQUNILE1BQU0sV0FBVyx3QkFBd0I7SUFDdkMsV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRixpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQzdGLHdCQUF3QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUN4RSxZQUFZLENBQ1YsTUFBTSxFQUFFLFlBQVksRUFDcEIsUUFBUSxFQUFFLGtCQUFrQixFQUM1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
@@ -1 +1 @@
1
- {"version":3,"file":"native_world_state_instance.d.ts","sourceRoot":"","sources":["../../src/native/native_world_state_instance.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAK9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EACL,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EAIxB,MAAM,cAAc,CAAC;AAKtB,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,CAAC,SAAS,qBAAqB,EAClC,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,2BAA2B,GACvD,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAElC,SAAS,IAAI,GAAG,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,wBAAwB;IAU7D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAbtB,OAAO,CAAC,IAAI,CAAQ;IAGpB,OAAO,CAAC,MAAM,CAAyC;IAEvD,OAAO,CAAC,QAAQ,CAA+E;IAE/F,+CAA+C;IAC/C,YACmB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,sBAAsB,EACtC,mBAAmB,kCAA2B,EAC9C,eAAe,EAAE,yBAAyB,EAC1C,GAAG,GAAE,MAA6C,EAoCpE;IAEM,UAAU,WAEhB;IAEM,KAAK,qBAQX;IAED;;;;;;OAMG;IACI,SAAS,IAAI,GAAG,CAiBtB;IAED;;;;;;;OAOG;IACU,IAAI,CAAC,CAAC,SAAS,qBAAqB,EAC/C,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,2BAA2B,EAExD,eAAe,6DAAuE,EACtF,YAAY,sBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAqDhC;IAED;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAelC;YAEa,YAAY;CA8D3B"}
1
+ {"version":3,"file":"native_world_state_instance.d.ts","sourceRoot":"","sources":["../../src/native/native_world_state_instance.ts"],"names":[],"mappings":"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"}