@aztec/world-state 0.0.1-commit.b33fc05d0 → 0.0.1-commit.b3d3157a

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 (56) 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 +4 -9
  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 +87 -0
  8. package/dest/native/ipc_world_state_instance.d.ts.map +1 -0
  9. package/dest/native/ipc_world_state_instance.js +660 -0
  10. package/dest/native/merkle_trees_facade.d.ts +11 -7
  11. package/dest/native/merkle_trees_facade.d.ts.map +1 -1
  12. package/dest/native/merkle_trees_facade.js +62 -114
  13. package/dest/native/message.d.ts +14 -222
  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 +19 -7
  17. package/dest/native/native_world_state.d.ts.map +1 -1
  18. package/dest/native/native_world_state.js +108 -57
  19. package/dest/native/native_world_state_instance.d.ts +58 -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 +1 -1
  26. package/dest/synchronizer/config.d.ts.map +1 -1
  27. package/dest/synchronizer/config.js +9 -10
  28. package/dest/synchronizer/factory.d.ts +4 -4
  29. package/dest/synchronizer/factory.d.ts.map +1 -1
  30. package/dest/synchronizer/factory.js +7 -6
  31. package/dest/synchronizer/server_world_state_synchronizer.d.ts +4 -4
  32. package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
  33. package/dest/synchronizer/server_world_state_synchronizer.js +67 -15
  34. package/dest/testing.d.ts +4 -3
  35. package/dest/testing.d.ts.map +1 -1
  36. package/dest/testing.js +10 -6
  37. package/dest/world-state-db/merkle_tree_db.d.ts +1 -10
  38. package/dest/world-state-db/merkle_tree_db.d.ts.map +1 -1
  39. package/package.json +14 -11
  40. package/src/instrumentation/instrumentation.ts +6 -18
  41. package/src/native/fork_checkpoint.ts +19 -3
  42. package/src/native/ipc_world_state_instance.ts +830 -0
  43. package/src/native/merkle_trees_facade.ts +88 -108
  44. package/src/native/message.ts +13 -287
  45. package/src/native/native_world_state.ts +124 -96
  46. package/src/native/native_world_state_instance.ts +96 -280
  47. package/src/native/world_state_operation.ts +33 -0
  48. package/src/synchronizer/config.ts +14 -10
  49. package/src/synchronizer/factory.ts +11 -10
  50. package/src/synchronizer/server_world_state_synchronizer.ts +70 -20
  51. package/src/testing.ts +8 -9
  52. package/src/world-state-db/merkle_tree_db.ts +0 -10
  53. package/dest/native/world_state_ops_queue.d.ts +0 -19
  54. package/dest/native/world_state_ops_queue.d.ts.map +0 -1
  55. package/dest/native/world_state_ops_queue.js +0 -146
  56. package/src/native/world_state_ops_queue.ts +0 -190
@@ -1,55 +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
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, 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()), bindings, 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
+ }
40
49
  const log = createLogger('world-state:database', bindings);
41
50
  const worldStateDirectory = join(dataDir, WORLD_STATE_DIR);
42
- // Create a version manager to handle versioning
43
51
  const versionManager = new DatabaseVersionManager({
44
52
  schemaVersion: WORLD_STATE_DB_VERSION,
45
53
  rollupAddress,
46
54
  dataDirectory: worldStateDirectory,
47
- onOpen: (dir)=>{
48
- return Promise.resolve(new NativeWorldState(dir, wsTreeMapSizes, prefilledPublicData, instrumentation, bindings));
49
- }
55
+ onOpen: (dir)=>IpcWorldState.spawn(dir, wsTreeMapSizes, genesis, instrumentation, bindings)
50
56
  });
51
57
  const [instance] = await versionManager.open();
52
- 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);
53
70
  try {
54
71
  await worldState.init();
55
72
  } catch (e) {
@@ -58,7 +75,7 @@ export class NativeWorldStateService {
58
75
  }
59
76
  return worldState;
60
77
  }
61
- static async tmp(rollupAddress = EthAddress.ZERO, cleanupTmpDir = true, prefilledPublicData = [], instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings) {
78
+ static async tmp(cleanupTmpDir = true, genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings) {
62
79
  const log = createLogger('world-state:database', bindings);
63
80
  const dataDir = await mkdtemp(join(tmpdir(), 'aztec-world-state-'));
64
81
  const dbMapSizeKb = 10 * 1024 * 1024;
@@ -70,7 +87,7 @@ export class NativeWorldStateService {
70
87
  publicDataTreeMapSizeKb: dbMapSizeKb
71
88
  };
72
89
  log.debug(`Created temporary world state database at: ${dataDir} with tree map size: ${dbMapSizeKb}`);
73
- // pass a cleanup callback because process.on('beforeExit', cleanup) does not work under Jest
90
+ const instance = await IpcWorldState.spawn(dataDir, worldStateTreeMapSizes, genesis, instrumentation, bindings);
74
91
  const cleanup = async ()=>{
75
92
  if (cleanupTmpDir) {
76
93
  await rm(dataDir, {
@@ -83,7 +100,35 @@ export class NativeWorldStateService {
83
100
  log.debug(`Leaving temporary world state database: ${dataDir}`);
84
101
  }
85
102
  };
86
- return this.new(rollupAddress, dataDir, worldStateTreeMapSizes, prefilledPublicData, instrumentation, bindings, cleanup);
103
+ const recreateInstance = async ()=>{
104
+ await rm(dataDir, {
105
+ recursive: true,
106
+ force: true,
107
+ maxRetries: 3
108
+ });
109
+ await mkdir(dataDir, {
110
+ recursive: true
111
+ });
112
+ return IpcWorldState.spawn(dataDir, worldStateTreeMapSizes, genesis, instrumentation, bindings);
113
+ };
114
+ const worldState = new this(instance, instrumentation, log, genesis, cleanup, recreateInstance);
115
+ try {
116
+ await worldState.init();
117
+ } catch (e) {
118
+ log.error(`Error initializing tmp world state: ${e}`);
119
+ throw e;
120
+ }
121
+ return worldState;
122
+ }
123
+ static ephemeral(genesis = EMPTY_GENESIS_DATA, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings) {
124
+ return this.tmp(/*cleanupTmpDir=*/ true, genesis, instrumentation, bindings);
125
+ }
126
+ static async fromIpc(wsdbBackend, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), bindings, genesis = EMPTY_GENESIS_DATA, cleanup = ()=>Promise.resolve(), recreateInstance) {
127
+ const log = createLogger('world-state:database', bindings);
128
+ const instance = new IpcWorldState(wsdbBackend, instrumentation, bindings);
129
+ const worldState = new this(instance, instrumentation, log, genesis, cleanup, recreateInstance);
130
+ await worldState.init();
131
+ return worldState;
87
132
  }
88
133
  async init() {
89
134
  const status = await this.getStatusSummary();
@@ -100,16 +145,27 @@ export class NativeWorldStateService {
100
145
  // the initial header _must_ be the first element in the archive tree
101
146
  // if this assertion fails, check that the hashing done in Header in yarn-project matches the initial header hash done in world_state.cpp
102
147
  const indices = await committed.findLeafIndices(MerkleTreeId.ARCHIVE, [
103
- (await this.initialHeader.hash()).toFr()
148
+ await this.initialHeader.hash()
104
149
  ]);
105
150
  const initialHeaderIndex = indices[0];
106
151
  assert.strictEqual(initialHeaderIndex, 0n, 'Invalid initial archive state');
107
152
  }
108
153
  async clear() {
154
+ if (!this.recreateInstance) {
155
+ throw new Error('clear() is not available for externally-managed IPC backends');
156
+ }
157
+ this.log.warn('Clearing world state: shutting down WSDB, deleting data, and recreating');
109
158
  await this.instance.close();
110
159
  this.cachedStatusSummary = undefined;
111
- await tryRmDir(this.instance.getDataDir(), this.log);
112
- this.instance = this.instance.clone();
160
+ this.instance = await this.recreateInstance();
161
+ await this.init();
162
+ this.log.info('World state cleared and reinitialized from genesis');
163
+ }
164
+ /** Returns the IPC path of the underlying IPC backend, if available. */ getIpcPath() {
165
+ if (this.instance instanceof IpcWorldState) {
166
+ return this.instance.getIpcPath();
167
+ }
168
+ throw new Error('getIpcPath() is only available with IPC world state');
113
169
  }
114
170
  getCommitted() {
115
171
  return new MerkleTreesFacade(this.instance, this.initialHeader, WorldStateRevision.empty());
@@ -118,12 +174,11 @@ export class NativeWorldStateService {
118
174
  return new MerkleTreesFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ 0, /* blockNumber=*/ blockNumber, /* includeUncommitted=*/ false));
119
175
  }
120
176
  async fork(blockNumber, opts = {}) {
121
- const resp = await this.instance.call(WorldStateMessageType.CREATE_FORK, {
177
+ const forkId = await this.instance.createFork({
122
178
  latest: blockNumber === undefined,
123
- blockNumber: blockNumber ?? BlockNumber.ZERO,
124
- canonical: true
179
+ blockNumber: blockNumber ?? BlockNumber.ZERO
125
180
  });
126
- return new MerkleTreesForkFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ resp.forkId, /* blockNumber=*/ BlockNumber.ZERO, /* includeUncommitted=*/ true), opts);
181
+ return new MerkleTreesForkFacade(this.instance, this.initialHeader, new WorldStateRevision(/*forkId=*/ forkId, /* blockNumber=*/ WorldStateRevision.LATEST, /* includeUncommitted=*/ true), opts);
127
182
  }
128
183
  getInitialHeader() {
129
184
  return this.initialHeader;
@@ -147,29 +202,39 @@ export class NativeWorldStateService {
147
202
  });
148
203
  });
149
204
  try {
150
- return await this.instance.call(WorldStateMessageType.SYNC_BLOCK, {
205
+ const status = await this.instance.syncBlock({
151
206
  blockNumber: l2Block.number,
152
- blockHeaderHash: await l2Block.hash(),
207
+ blockHeaderHash: (await l2Block.hash()).toBuffer(),
153
208
  paddedL1ToL2Messages: paddedL1ToL2Messages.map(serializeLeaf),
154
209
  paddedNoteHashes: paddedNoteHashes.map(serializeLeaf),
155
210
  paddedNullifiers: paddedNullifiers.map(serializeLeaf),
156
211
  publicDataWrites: publicDataWrites.map(serializeLeaf),
157
- blockStateRef: blockStateReference(l2Block.header.state),
158
- canonical: true
159
- }, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
212
+ blockStateRef: blockStateReference(l2Block.header.state)
213
+ });
214
+ return this.sanitizeAndCacheSummaryFromFull(status);
160
215
  } catch (err) {
216
+ this.deleteCachedSummary();
161
217
  this.worldStateInstrumentation.incCriticalErrors('synch_pending_block');
162
218
  throw err;
163
219
  }
164
220
  }
165
221
  async close() {
166
- await this.instance.close();
167
- await this.cleanup();
222
+ try {
223
+ await this.instance.close();
224
+ } finally{
225
+ await this.cleanup();
226
+ }
227
+ }
228
+ async [_computedKey]() {
229
+ await this.close();
168
230
  }
169
231
  async buildInitialHeader() {
170
232
  const state = await this.getInitialStateReference();
171
233
  return BlockHeader.empty({
172
- state
234
+ state,
235
+ globalVariables: GlobalVariables.empty({
236
+ timestamp: this.genesis.genesisTimestamp
237
+ })
173
238
  });
174
239
  }
175
240
  sanitizeAndCacheSummaryFromFull(response) {
@@ -186,7 +251,7 @@ export class NativeWorldStateService {
186
251
  };
187
252
  return sanitized;
188
253
  }
189
- deleteCachedSummary(_) {
254
+ deleteCachedSummary() {
190
255
  this.cachedStatusSummary = undefined;
191
256
  }
192
257
  /**
@@ -195,11 +260,9 @@ export class NativeWorldStateService {
195
260
  * @returns The new WorldStateStatus
196
261
  */ async setFinalized(toBlockNumber) {
197
262
  try {
198
- await this.instance.call(WorldStateMessageType.FINALIZE_BLOCKS, {
199
- toBlockNumber,
200
- canonical: true
201
- }, this.sanitizeAndCacheSummary.bind(this), this.deleteCachedSummary.bind(this));
263
+ this.sanitizeAndCacheSummary(await this.instance.finalizeBlocks(toBlockNumber));
202
264
  } catch (err) {
265
+ this.deleteCachedSummary();
203
266
  this.worldStateInstrumentation.incCriticalErrors('finalize_block');
204
267
  throw err;
205
268
  }
@@ -211,11 +274,9 @@ export class NativeWorldStateService {
211
274
  * @returns The new WorldStateStatus
212
275
  */ async removeHistoricalBlocks(toBlockNumber) {
213
276
  try {
214
- return await this.instance.call(WorldStateMessageType.REMOVE_HISTORICAL_BLOCKS, {
215
- toBlockNumber,
216
- canonical: true
217
- }, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
277
+ return this.sanitizeAndCacheSummaryFromFull(await this.instance.removeHistoricalBlocks(toBlockNumber));
218
278
  } catch (err) {
279
+ this.deleteCachedSummary();
219
280
  this.worldStateInstrumentation.incCriticalErrors('prune_historical_block');
220
281
  throw err;
221
282
  }
@@ -226,11 +287,9 @@ export class NativeWorldStateService {
226
287
  * @returns The new WorldStateStatus
227
288
  */ async unwindBlocks(toBlockNumber) {
228
289
  try {
229
- return await this.instance.call(WorldStateMessageType.UNWIND_BLOCKS, {
230
- toBlockNumber,
231
- canonical: true
232
- }, this.sanitizeAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
290
+ return this.sanitizeAndCacheSummaryFromFull(await this.instance.unwindBlocks(toBlockNumber));
233
291
  } catch (err) {
292
+ this.deleteCachedSummary();
234
293
  this.worldStateInstrumentation.incCriticalErrors('prune_pending_block');
235
294
  throw err;
236
295
  }
@@ -241,25 +300,17 @@ export class NativeWorldStateService {
241
300
  ...this.cachedStatusSummary
242
301
  };
243
302
  }
244
- return await this.instance.call(WorldStateMessageType.GET_STATUS, {
245
- canonical: true
246
- }, this.sanitizeAndCacheSummary.bind(this));
303
+ return this.sanitizeAndCacheSummary(await this.instance.getStatus());
247
304
  }
248
305
  updateLeaf(_treeId, _leaf, _index) {
249
306
  return Promise.reject(new Error('Method not implemented'));
250
307
  }
251
308
  async getInitialStateReference() {
252
- const resp = await this.instance.call(WorldStateMessageType.GET_INITIAL_STATE_REFERENCE, {
253
- canonical: true
254
- });
255
- 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])));
309
+ const state = await this.instance.getInitialStateReference();
310
+ 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])));
256
311
  }
257
312
  async backupTo(dstPath, compact = true) {
258
- await this.instance.call(WorldStateMessageType.COPY_STORES, {
259
- dstPath,
260
- compact,
261
- canonical: true
262
- });
313
+ await this.instance.copyStores(dstPath, compact);
263
314
  return fromEntries(NATIVE_WORLD_STATE_DBS.map(([name, dir])=>[
264
315
  name,
265
316
  join(dstPath, dir, 'data.mdb')
@@ -1,49 +1,66 @@
1
- import { type Logger, type LoggerBindings } 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, bindings?: LoggerBindings, 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
+ paddedNoteHashes: readonly SerializedLeafValue[];
36
+ paddedL1ToL2Messages: readonly SerializedLeafValue[];
37
+ paddedNullifiers: readonly SerializedLeafValue[];
38
+ publicDataWrites: readonly SerializedLeafValue[];
39
+ }): Promise<WorldStateStatusFull>;
40
+ createFork(input: {
41
+ latest: boolean;
42
+ blockNumber: BlockNumber;
43
+ }): Promise<number>;
44
+ deleteFork(forkId: number): Promise<void>;
45
+ finalizeBlocks(toBlockNumber: BlockNumber): Promise<WorldStateStatusSummary>;
46
+ unwindBlocks(toBlockNumber: BlockNumber): Promise<WorldStateStatusFull>;
47
+ removeHistoricalBlocks(toBlockNumber: BlockNumber): Promise<WorldStateStatusFull>;
48
+ getStatus(): Promise<WorldStateStatusSummary>;
49
+ createCheckpoint(forkId: number): Promise<number>;
50
+ commitCheckpoint(forkId: number): Promise<void>;
51
+ revertCheckpoint(forkId: number): Promise<void>;
52
+ commitAllCheckpoints(forkId: number, depth: number): Promise<void>;
53
+ revertAllCheckpoints(forkId: number, depth: number): Promise<void>;
54
+ copyStores(dstPath: string, compact: boolean): Promise<void>;
34
55
  /**
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
56
+ * IPC path the underlying aztec-wsdb process listens on. The C++ AVM uses this to attach to the
57
+ * same world state instance the TS layer is using.
41
58
  */
42
- call<T extends WorldStateMessageType>(messageType: T, body: WorldStateRequest[T] & WorldStateRequestCategories, responseHandler?: (response: WorldStateResponse[T]) => WorldStateResponse[T], errorHandler?: (_: string) => void): Promise<WorldStateResponse[T]>;
59
+ getIpcPath(): string;
43
60
  /**
44
- * Stops the native instance.
61
+ * Shut down the world state instance. Cancels any in-flight queues, closes the IPC channel, and
62
+ * terminates the underlying aztec-wsdb process. Idempotent.
45
63
  */
46
64
  close(): Promise<void>;
47
- private _sendMessage;
48
65
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlX3dvcmxkX3N0YXRlX2luc3RhbmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL25hdGl2ZV93b3JsZF9zdGF0ZV9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHdkYsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUs5RCxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixLQUFLLGlCQUFpQixFQUN0QixLQUFLLDJCQUEyQixFQUNoQyxLQUFLLGtCQUFrQixFQUl4QixNQUFNLGNBQWMsQ0FBQztBQUt0QixNQUFNLFdBQVcsd0JBQXdCO0lBQ3ZDLElBQUksQ0FBQyxDQUFDLFNBQVMscUJBQXFCLEVBQ2xDLFdBQVcsRUFBRSxDQUFDLEVBQ2QsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLDJCQUEyQixHQUN2RCxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsQyxTQUFTLElBQUksR0FBRyxDQUFDO0NBQ2xCO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxnQkFBaUIsWUFBVyx3QkFBd0I7SUFVN0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYztJQUMvQixPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtJQUNwQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWU7SUFFaEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO0lBZHRCLE9BQU8sQ0FBQyxJQUFJLENBQVE7SUFHcEIsT0FBTyxDQUFDLE1BQU0sQ0FBeUM7SUFFdkQsT0FBTyxDQUFDLFFBQVEsQ0FBK0U7SUFFL0YsK0NBQStDO0lBQy9DLFlBQ21CLE9BQU8sRUFBRSxNQUFNLEVBQ2YsY0FBYyxFQUFFLHNCQUFzQixFQUN0QyxtQkFBbUIsa0NBQTJCLEVBQzlDLGVBQWUsRUFBRSx5QkFBeUIsRUFDM0QsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUNSLEdBQUcsR0FBRSxNQUF1RCxFQW9DOUU7SUFFTSxVQUFVLFdBRWhCO0lBRU0sS0FBSyxxQkFTWDtJQUVEOzs7Ozs7T0FNRztJQUNJLFNBQVMsSUFBSSxHQUFHLENBaUJ0QjtJQUVEOzs7Ozs7O09BT0c7SUFDVSxJQUFJLENBQUMsQ0FBQyxTQUFTLHFCQUFxQixFQUMvQyxXQUFXLEVBQUUsQ0FBQyxFQUNkLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRywyQkFBMkIsRUFFeEQsZUFBZSw2REFBdUUsRUFDdEYsWUFBWSxzQkFBb0IsR0FDL0IsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBcURoQztJQUVEOztPQUVHO0lBQ1UsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FlbEM7WUFFYSxZQUFZO0NBOEQzQiJ9
66
+ //# 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,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,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;IAEhC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAdtB,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,EAC3D,QAAQ,CAAC,EAAE,cAAc,EACR,GAAG,GAAE,MAAuD,EAoC9E;IAEM,UAAU,WAEhB;IAEM,KAAK,qBASX;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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"}