@aztec/world-state 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2

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 (53) hide show
  1. package/dest/index.js +0 -1
  2. package/dest/instrumentation/instrumentation.js +29 -20
  3. package/dest/native/index.js +0 -1
  4. package/dest/native/merkle_trees_facade.js +69 -72
  5. package/dest/native/message.js +31 -17
  6. package/dest/native/native_world_state.js +78 -53
  7. package/dest/native/native_world_state_instance.js +37 -38
  8. package/dest/native/world_state_ops_queue.js +18 -29
  9. package/dest/native/world_state_version.js +7 -8
  10. package/dest/synchronizer/config.js +12 -14
  11. package/dest/synchronizer/factory.js +5 -5
  12. package/dest/synchronizer/index.js +0 -1
  13. package/dest/synchronizer/server_world_state_synchronizer.js +66 -61
  14. package/dest/test/index.js +0 -1
  15. package/dest/test/utils.js +14 -12
  16. package/dest/world-state-db/index.js +0 -1
  17. package/dest/world-state-db/merkle_tree_db.js +1 -3
  18. package/package.json +10 -10
  19. package/src/world-state-db/index.ts +1 -1
  20. package/dest/index.d.ts +0 -5
  21. package/dest/index.d.ts.map +0 -1
  22. package/dest/instrumentation/instrumentation.d.ts +0 -20
  23. package/dest/instrumentation/instrumentation.d.ts.map +0 -1
  24. package/dest/native/index.d.ts +0 -2
  25. package/dest/native/index.d.ts.map +0 -1
  26. package/dest/native/merkle_trees_facade.d.ts +0 -37
  27. package/dest/native/merkle_trees_facade.d.ts.map +0 -1
  28. package/dest/native/message.d.ts +0 -320
  29. package/dest/native/message.d.ts.map +0 -1
  30. package/dest/native/native_world_state.d.ts +0 -54
  31. package/dest/native/native_world_state.d.ts.map +0 -1
  32. package/dest/native/native_world_state_instance.d.ts +0 -32
  33. package/dest/native/native_world_state_instance.d.ts.map +0 -1
  34. package/dest/native/world_state_ops_queue.d.ts +0 -19
  35. package/dest/native/world_state_ops_queue.d.ts.map +0 -1
  36. package/dest/native/world_state_version.d.ts +0 -24
  37. package/dest/native/world_state_version.d.ts.map +0 -1
  38. package/dest/synchronizer/config.d.ts +0 -23
  39. package/dest/synchronizer/config.d.ts.map +0 -1
  40. package/dest/synchronizer/factory.d.ts +0 -10
  41. package/dest/synchronizer/factory.d.ts.map +0 -1
  42. package/dest/synchronizer/index.d.ts +0 -3
  43. package/dest/synchronizer/index.d.ts.map +0 -1
  44. package/dest/synchronizer/server_world_state_synchronizer.d.ts +0 -76
  45. package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +0 -1
  46. package/dest/test/index.d.ts +0 -2
  47. package/dest/test/index.d.ts.map +0 -1
  48. package/dest/test/utils.d.ts +0 -14
  49. package/dest/test/utils.d.ts.map +0 -1
  50. package/dest/world-state-db/index.d.ts +0 -3
  51. package/dest/world-state-db/index.d.ts.map +0 -1
  52. package/dest/world-state-db/merkle_tree_db.d.ts +0 -67
  53. package/dest/world-state-db/merkle_tree_db.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
- import { MerkleTreeId, } from '@aztec/circuit-types';
2
- import { BlockHeader, EthAddress, Fr, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeaf, PartialStateReference, PublicDataTreeLeaf, StateReference, } from '@aztec/circuits.js';
1
+ import { MerkleTreeId } from '@aztec/circuit-types';
2
+ import { BlockHeader, EthAddress, Fr, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NullifierLeaf, PartialStateReference, PublicDataTreeLeaf, StateReference } from '@aztec/circuits.js';
3
3
  import { padArrayEnd } from '@aztec/foundation/collection';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
5
  import { getTelemetryClient } from '@aztec/telemetry-client';
@@ -9,7 +9,7 @@ import { tmpdir } from 'os';
9
9
  import { join } from 'path';
10
10
  import { WorldStateInstrumentation } from '../instrumentation/instrumentation.js';
11
11
  import { MerkleTreesFacade, MerkleTreesForkFacade, serializeLeaf } from './merkle_trees_facade.js';
12
- import { WorldStateMessageType, blockStateReference, sanitiseFullStatus, sanitiseSummary, treeStateReferenceToSnapshot, worldStateRevision, } from './message.js';
12
+ import { WorldStateMessageType, blockStateReference, sanitiseFullStatus, sanitiseSummary, treeStateReferenceToSnapshot, worldStateRevision } from './message.js';
13
13
  import { NativeWorldState } from './native_world_state_instance.js';
14
14
  import { WorldStateVersion } from './world_state_version.js';
15
15
  export const WORLD_STATE_VERSION_FILE = 'version';
@@ -20,37 +20,52 @@ export const WORLD_STATE_VERSION_FILE = 'version';
20
20
  // the state if a change is detected
21
21
  export const WORLD_STATE_DB_VERSION = 1; // The initial version
22
22
  export class NativeWorldStateService {
23
- constructor(instance, worldStateInstrumentation, log = createLogger('world-state:database'), cleanup = () => Promise.resolve()) {
23
+ instance;
24
+ worldStateInstrumentation;
25
+ log;
26
+ cleanup;
27
+ initialHeader;
28
+ // This is read heavily and only changes when data is persisted, so we cache it
29
+ cachedStatusSummary;
30
+ constructor(instance, worldStateInstrumentation, log = createLogger('world-state:database'), cleanup = ()=>Promise.resolve()){
24
31
  this.instance = instance;
25
32
  this.worldStateInstrumentation = worldStateInstrumentation;
26
33
  this.log = log;
27
34
  this.cleanup = cleanup;
28
35
  }
29
- static async new(rollupAddress, dataDir, dbMapSizeKb, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), log = createLogger('world-state:database'), cleanup = () => Promise.resolve()) {
36
+ static async new(rollupAddress, dataDir, dbMapSizeKb, instrumentation = new WorldStateInstrumentation(getTelemetryClient()), log = createLogger('world-state:database'), cleanup = ()=>Promise.resolve()) {
30
37
  const worldStateDirectory = join(dataDir, 'world_state');
31
38
  const versionFile = join(worldStateDirectory, WORLD_STATE_VERSION_FILE);
32
39
  const storedWorldStateVersion = await WorldStateVersion.readVersion(versionFile);
33
40
  if (!storedWorldStateVersion) {
34
41
  log.warn('No world state version found, deleting world state directory');
35
- await rm(worldStateDirectory, { recursive: true, force: true });
36
- }
37
- else if (!rollupAddress.equals(storedWorldStateVersion.rollupAddress)) {
42
+ await rm(worldStateDirectory, {
43
+ recursive: true,
44
+ force: true
45
+ });
46
+ } else if (!rollupAddress.equals(storedWorldStateVersion.rollupAddress)) {
38
47
  log.warn('Rollup address changed, deleting world state directory');
39
- await rm(worldStateDirectory, { recursive: true, force: true });
40
- }
41
- else if (storedWorldStateVersion.version != WORLD_STATE_DB_VERSION) {
48
+ await rm(worldStateDirectory, {
49
+ recursive: true,
50
+ force: true
51
+ });
52
+ } else if (storedWorldStateVersion.version != WORLD_STATE_DB_VERSION) {
42
53
  log.warn('World state version change detected, deleting world state directory');
43
- await rm(worldStateDirectory, { recursive: true, force: true });
54
+ await rm(worldStateDirectory, {
55
+ recursive: true,
56
+ force: true
57
+ });
44
58
  }
45
59
  const newWorldStateVersion = new WorldStateVersion(WORLD_STATE_DB_VERSION, rollupAddress);
46
- await mkdir(worldStateDirectory, { recursive: true });
60
+ await mkdir(worldStateDirectory, {
61
+ recursive: true
62
+ });
47
63
  await newWorldStateVersion.writeVersionFile(versionFile);
48
64
  const instance = new NativeWorldState(worldStateDirectory, dbMapSizeKb, instrumentation);
49
65
  const worldState = new this(instance, instrumentation, log, cleanup);
50
66
  try {
51
67
  await worldState.init();
52
- }
53
- catch (e) {
68
+ } catch (e) {
54
69
  log.error(`Error initialising world state: ${e}`);
55
70
  throw e;
56
71
  }
@@ -62,12 +77,14 @@ export class NativeWorldStateService {
62
77
  const dbMapSizeKb = 10 * 1024 * 1024;
63
78
  log.debug(`Created temporary world state database at: ${dataDir} with size: ${dbMapSizeKb}`);
64
79
  // pass a cleanup callback because process.on('beforeExit', cleanup) does not work under Jest
65
- const cleanup = async () => {
80
+ const cleanup = async ()=>{
66
81
  if (cleanupTmpDir) {
67
- await rm(dataDir, { recursive: true, force: true });
82
+ await rm(dataDir, {
83
+ recursive: true,
84
+ force: true
85
+ });
68
86
  log.debug(`Deleted temporary world state database: ${dataDir}`);
69
- }
70
- else {
87
+ } else {
71
88
  log.debug(`Leaving temporary world state database: ${dataDir}`);
72
89
  }
73
90
  };
@@ -87,7 +104,9 @@ export class NativeWorldStateService {
87
104
  }
88
105
  // the initial header _must_ be the first element in the archive tree
89
106
  // if this assertion fails, check that the hashing done in Header in yarn-project matches the initial header hash done in world_state.cpp
90
- const indices = await committed.findLeafIndices(MerkleTreeId.ARCHIVE, [await this.initialHeader.hash()]);
107
+ const indices = await committed.findLeafIndices(MerkleTreeId.ARCHIVE, [
108
+ await this.initialHeader.hash()
109
+ ]);
91
110
  const initialHeaderIndex = indices[0];
92
111
  assert.strictEqual(initialHeaderIndex, 0n, 'Invalid initial archive state');
93
112
  }
@@ -101,7 +120,7 @@ export class NativeWorldStateService {
101
120
  const resp = await this.instance.call(WorldStateMessageType.CREATE_FORK, {
102
121
  latest: blockNumber === undefined,
103
122
  blockNumber: blockNumber ?? 0,
104
- canonical: true,
123
+ canonical: true
105
124
  });
106
125
  return new MerkleTreesForkFacade(this.instance, this.initialHeader, worldStateRevision(true, resp.forkId, 0));
107
126
  }
@@ -110,13 +129,11 @@ export class NativeWorldStateService {
110
129
  }
111
130
  async handleL2BlockAndMessages(l2Block, l1ToL2Messages) {
112
131
  // We have to pad both the values within tx effects because that's how the trees are built by circuits.
113
- const paddedNoteHashes = l2Block.body.txEffects.flatMap(txEffect => padArrayEnd(txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
132
+ const paddedNoteHashes = l2Block.body.txEffects.flatMap((txEffect)=>padArrayEnd(txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
114
133
  const paddedL1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
115
- const paddedNullifiers = l2Block.body.txEffects
116
- .flatMap(txEffect => padArrayEnd(txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX))
117
- .map(nullifier => new NullifierLeaf(nullifier));
118
- const publicDataWrites = l2Block.body.txEffects.flatMap(txEffect => {
119
- return txEffect.publicDataWrites.map(write => {
134
+ const paddedNullifiers = l2Block.body.txEffects.flatMap((txEffect)=>padArrayEnd(txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX)).map((nullifier)=>new NullifierLeaf(nullifier));
135
+ const publicDataWrites = l2Block.body.txEffects.flatMap((txEffect)=>{
136
+ return txEffect.publicDataWrites.map((write)=>{
120
137
  if (write.isEmpty()) {
121
138
  throw new Error('Public data write must not be empty when syncing');
122
139
  }
@@ -131,7 +148,7 @@ export class NativeWorldStateService {
131
148
  paddedNullifiers: paddedNullifiers.map(serializeLeaf),
132
149
  publicDataWrites: publicDataWrites.map(serializeLeaf),
133
150
  blockStateRef: blockStateReference(l2Block.header.state),
134
- canonical: true,
151
+ canonical: true
135
152
  }, this.sanitiseAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
136
153
  }
137
154
  async close() {
@@ -140,67 +157,75 @@ export class NativeWorldStateService {
140
157
  }
141
158
  async buildInitialHeader() {
142
159
  const state = await this.getInitialStateReference();
143
- return BlockHeader.empty({ state });
160
+ return BlockHeader.empty({
161
+ state
162
+ });
144
163
  }
145
164
  sanitiseAndCacheSummaryFromFull(response) {
146
165
  const sanitised = sanitiseFullStatus(response);
147
- this.cachedStatusSummary = { ...sanitised.summary };
166
+ this.cachedStatusSummary = {
167
+ ...sanitised.summary
168
+ };
148
169
  return sanitised;
149
170
  }
150
171
  sanitiseAndCacheSummary(response) {
151
172
  const sanitised = sanitiseSummary(response);
152
- this.cachedStatusSummary = { ...sanitised };
173
+ this.cachedStatusSummary = {
174
+ ...sanitised
175
+ };
153
176
  return sanitised;
154
177
  }
155
178
  deleteCachedSummary(_) {
156
179
  this.cachedStatusSummary = undefined;
157
180
  }
158
181
  /**
159
- * Advances the finalised block number to be the number provided
160
- * @param toBlockNumber The block number that is now the tip of the finalised chain
161
- * @returns The new WorldStateStatus
162
- */
163
- async setFinalised(toBlockNumber) {
182
+ * Advances the finalised block number to be the number provided
183
+ * @param toBlockNumber The block number that is now the tip of the finalised chain
184
+ * @returns The new WorldStateStatus
185
+ */ async setFinalised(toBlockNumber) {
164
186
  await this.instance.call(WorldStateMessageType.FINALISE_BLOCKS, {
165
187
  toBlockNumber,
166
- canonical: true,
188
+ canonical: true
167
189
  }, this.sanitiseAndCacheSummary.bind(this), this.deleteCachedSummary.bind(this));
168
190
  return this.getStatusSummary();
169
191
  }
170
192
  /**
171
- * Removes all historical snapshots up to but not including the given block number
172
- * @param toBlockNumber The block number of the new oldest historical block
173
- * @returns The new WorldStateStatus
174
- */
175
- async removeHistoricalBlocks(toBlockNumber) {
193
+ * Removes all historical snapshots up to but not including the given block number
194
+ * @param toBlockNumber The block number of the new oldest historical block
195
+ * @returns The new WorldStateStatus
196
+ */ async removeHistoricalBlocks(toBlockNumber) {
176
197
  return await this.instance.call(WorldStateMessageType.REMOVE_HISTORICAL_BLOCKS, {
177
198
  toBlockNumber,
178
- canonical: true,
199
+ canonical: true
179
200
  }, this.sanitiseAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
180
201
  }
181
202
  /**
182
- * Removes all pending blocks down to but not including the given block number
183
- * @param toBlockNumber The block number of the new tip of the pending chain,
184
- * @returns The new WorldStateStatus
185
- */
186
- async unwindBlocks(toBlockNumber) {
203
+ * Removes all pending blocks down to but not including the given block number
204
+ * @param toBlockNumber The block number of the new tip of the pending chain,
205
+ * @returns The new WorldStateStatus
206
+ */ async unwindBlocks(toBlockNumber) {
187
207
  return await this.instance.call(WorldStateMessageType.UNWIND_BLOCKS, {
188
208
  toBlockNumber,
189
- canonical: true,
209
+ canonical: true
190
210
  }, this.sanitiseAndCacheSummaryFromFull.bind(this), this.deleteCachedSummary.bind(this));
191
211
  }
192
212
  async getStatusSummary() {
193
213
  if (this.cachedStatusSummary !== undefined) {
194
- return { ...this.cachedStatusSummary };
214
+ return {
215
+ ...this.cachedStatusSummary
216
+ };
195
217
  }
196
- return await this.instance.call(WorldStateMessageType.GET_STATUS, { canonical: true }, this.sanitiseAndCacheSummary.bind(this));
218
+ return await this.instance.call(WorldStateMessageType.GET_STATUS, {
219
+ canonical: true
220
+ }, this.sanitiseAndCacheSummary.bind(this));
197
221
  }
198
222
  updateLeaf(_treeId, _leaf, _index) {
199
223
  return Promise.reject(new Error('Method not implemented'));
200
224
  }
201
225
  async getInitialStateReference() {
202
- const resp = await this.instance.call(WorldStateMessageType.GET_INITIAL_STATE_REFERENCE, { canonical: true });
226
+ const resp = await this.instance.call(WorldStateMessageType.GET_INITIAL_STATE_REFERENCE, {
227
+ canonical: true
228
+ });
203
229
  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])));
204
230
  }
205
231
  }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlX3dvcmxkX3N0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9uYXRpdmVfd29ybGRfc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFlBQVksR0FHYixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsVUFBVSxFQUNWLEVBQUUsRUFDRixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLG1DQUFtQyxFQUNuQyxhQUFhLEVBRWIscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixjQUFjLEdBQ2YsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztBQUM1QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRyxPQUFPLEVBQ0wscUJBQXFCLEVBR3JCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLDRCQUE0QixFQUM1QixrQkFBa0IsR0FDbkIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUs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
@@ -1,22 +1,25 @@
1
1
  import { MerkleTreeId } from '@aztec/circuit-types';
2
- import { ARCHIVE_HEIGHT, GeneratorIndex, L1_TO_L2_MSG_TREE_HEIGHT, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_TREE_HEIGHT, NULLIFIER_TREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT, } from '@aztec/circuits.js';
2
+ import { ARCHIVE_HEIGHT, GeneratorIndex, L1_TO_L2_MSG_TREE_HEIGHT, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_TREE_HEIGHT, NULLIFIER_TREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT } from '@aztec/circuits.js';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { NativeWorldState as BaseNativeWorldState, MsgpackChannel } from '@aztec/native';
5
5
  import assert from 'assert';
6
6
  import { cpus } from 'os';
7
- import { WorldStateMessageType, isWithCanonical, isWithForkId, isWithRevision, } from './message.js';
7
+ import { WorldStateMessageType, isWithCanonical, isWithForkId, isWithRevision } from './message.js';
8
8
  import { WorldStateOpsQueue } from './world_state_ops_queue.js';
9
9
  const MAX_WORLD_STATE_THREADS = +(process.env.HARDWARE_CONCURRENCY || '16');
10
10
  /**
11
11
  * Strongly-typed interface to access the WorldState class in the native world_state_napi module.
12
- */
13
- export class NativeWorldState {
14
- /** Creates a new native WorldState instance */
15
- constructor(dataDir, dbMapSizeKb, instrumentation, log = createLogger('world-state:database')) {
12
+ */ export class NativeWorldState {
13
+ instrumentation;
14
+ log;
15
+ open;
16
+ // We maintain a map of queue to fork
17
+ queues;
18
+ instance;
19
+ /** Creates a new native WorldState instance */ constructor(dataDir, dbMapSizeKb, instrumentation, log = createLogger('world-state:database')){
16
20
  this.instrumentation = instrumentation;
17
21
  this.log = log;
18
22
  this.open = true;
19
- // We maintain a map of queue to fork
20
23
  this.queues = new Map();
21
24
  const threads = Math.min(cpus().length, MAX_WORLD_STATE_THREADS);
22
25
  log.info(`Creating world state data store at directory ${dataDir} with map size ${dbMapSizeKb} KB and ${threads} threads.`);
@@ -25,26 +28,24 @@ export class NativeWorldState {
25
28
  [MerkleTreeId.NOTE_HASH_TREE]: NOTE_HASH_TREE_HEIGHT,
26
29
  [MerkleTreeId.PUBLIC_DATA_TREE]: PUBLIC_DATA_TREE_HEIGHT,
27
30
  [MerkleTreeId.L1_TO_L2_MESSAGE_TREE]: L1_TO_L2_MSG_TREE_HEIGHT,
28
- [MerkleTreeId.ARCHIVE]: ARCHIVE_HEIGHT,
31
+ [MerkleTreeId.ARCHIVE]: ARCHIVE_HEIGHT
29
32
  }, {
30
33
  [MerkleTreeId.NULLIFIER_TREE]: 2 * MAX_NULLIFIERS_PER_TX,
31
- [MerkleTreeId.PUBLIC_DATA_TREE]: 2 * MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
34
+ [MerkleTreeId.PUBLIC_DATA_TREE]: 2 * MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
32
35
  }, GeneratorIndex.BLOCK_HASH, dbMapSizeKb, threads);
33
36
  this.instance = new MsgpackChannel(ws);
34
37
  // Manually create the queue for the canonical fork
35
38
  this.queues.set(0, new WorldStateOpsQueue());
36
39
  }
37
40
  /**
38
- * Sends a message to the native instance and returns the response.
39
- * @param messageType - The type of message to send
40
- * @param body - The message body
41
- * @param responseHandler - A callback accepting the response, executed on the job queue
42
- * @param errorHandler - A callback called on request error, executed on the job queue
43
- * @returns The response to the message
44
- */
45
- async call(messageType, body,
46
- // allows for the pre-processing of responses on the job queue before being passed back
47
- responseHandler = (response) => response, errorHandler = (_) => { }) {
41
+ * Sends a message to the native instance and returns the response.
42
+ * @param messageType - The type of message to send
43
+ * @param body - The message body
44
+ * @param responseHandler - A callback accepting the response, executed on the job queue
45
+ * @param errorHandler - A callback called on request error, executed on the job queue
46
+ * @returns The response to the message
47
+ */ async call(messageType, body, // allows for the pre-processing of responses on the job queue before being passed back
48
+ responseHandler = (response)=>response, errorHandler = (_)=>{}) {
48
49
  // Here we determine which fork the request is being executed against and whether it requires uncommitted data
49
50
  // We use the fork Id to select the appropriate request queue and the uncommitted data flag to pass to the queue
50
51
  let forkId = -1;
@@ -55,15 +56,12 @@ export class NativeWorldState {
55
56
  // These requests don't contain a fork ID
56
57
  if (isWithCanonical(body)) {
57
58
  forkId = 0;
58
- }
59
- else if (isWithForkId(body)) {
59
+ } else if (isWithForkId(body)) {
60
60
  forkId = body.forkId;
61
- }
62
- else if (isWithRevision(body)) {
61
+ } else if (isWithRevision(body)) {
63
62
  forkId = body.revision.forkId;
64
63
  committedOnly = body.revision.includeUncommitted === false;
65
- }
66
- else {
64
+ } else {
67
65
  const _ = body;
68
66
  throw new Error(`Unable to determine forkId for message=${WorldStateMessageType[messageType]}`);
69
67
  }
@@ -74,14 +72,13 @@ export class NativeWorldState {
74
72
  this.queues.set(forkId, requestQueue);
75
73
  }
76
74
  // Enqueue the request and wait for the response
77
- const response = await requestQueue.execute(async () => {
75
+ const response = await requestQueue.execute(async ()=>{
78
76
  assert.notEqual(messageType, WorldStateMessageType.CLOSE, 'Use close() to close the native instance');
79
77
  assert.equal(this.open, true, 'Native instance is closed');
80
78
  let response;
81
79
  try {
82
80
  response = await this._sendMessage(messageType, body);
83
- }
84
- catch (error) {
81
+ } catch (error) {
85
82
  errorHandler(error.message);
86
83
  throw error;
87
84
  }
@@ -95,16 +92,17 @@ export class NativeWorldState {
95
92
  return response;
96
93
  }
97
94
  /**
98
- * Stops the native instance.
99
- */
100
- async close() {
95
+ * Stops the native instance.
96
+ */ async close() {
101
97
  if (!this.open) {
102
98
  return;
103
99
  }
104
100
  this.open = false;
105
101
  const queue = this.queues.get(0);
106
- await queue.execute(async () => {
107
- await this._sendMessage(WorldStateMessageType.CLOSE, { canonical: true });
102
+ await queue.execute(async ()=>{
103
+ await this._sendMessage(WorldStateMessageType.CLOSE, {
104
+ canonical: true
105
+ });
108
106
  }, WorldStateMessageType.CLOSE, false);
109
107
  await queue.stop();
110
108
  }
@@ -115,7 +113,10 @@ export class NativeWorldState {
115
113
  logMetadata['treeId'] = MerkleTreeId[body.treeId];
116
114
  }
117
115
  if ('revision' in body) {
118
- logMetadata = { ...logMetadata, ...body.revision };
116
+ logMetadata = {
117
+ ...logMetadata,
118
+ ...body.revision
119
+ };
119
120
  }
120
121
  if ('forkId' in body) {
121
122
  logMetadata['forkId'] = body.forkId;
@@ -147,15 +148,13 @@ export class NativeWorldState {
147
148
  const { duration, response } = await this.instance.sendMessage(messageType, body);
148
149
  this.log.trace(`Call ${WorldStateMessageType[messageType]} took (ms)`, {
149
150
  duration,
150
- ...logMetadata,
151
+ ...logMetadata
151
152
  });
152
153
  this.instrumentation.recordRoundTrip(duration.totalUs, messageType);
153
154
  return response;
154
- }
155
- catch (error) {
155
+ } catch (error) {
156
156
  this.log.error(`Call ${WorldStateMessageType[messageType]} failed: ${error}`, error, logMetadata);
157
157
  throw error;
158
158
  }
159
159
  }
160
160
  }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlX3dvcmxkX3N0YXRlX2luc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9uYXRpdmVfd29ybGRfc3RhdGVfaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDckIsNENBQTRDLEVBQzVDLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekYsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFHMUIsT0FBTyxFQUNMLHFCQUFxQixFQUlyQixlQUFlLEVBQ2YsWUFBWSxFQUNaLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxDQUFDO0FBUzVFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVEzQiwrQ0FBK0M7SUFDL0MsWUFDRSxPQUFlLEVBQ2YsV0FBbUIsRUFDWCxlQUEwQyxFQUMxQyxNQUFNLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQztRQUQxQyxvQkFBZSxHQUFmLGVBQWUsQ0FBMkI7UUFDMUMsUUFBRyxHQUFILEdBQUcsQ0FBdUM7UUFaNUMsU0FBSSxHQUFHLElBQUks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
@@ -14,17 +14,17 @@ export const MUTATING_MSG_TYPES = new Set([
14
14
  WorldStateMessageType.DELETE_FORK,
15
15
  WorldStateMessageType.FINALISE_BLOCKS,
16
16
  WorldStateMessageType.UNWIND_BLOCKS,
17
- WorldStateMessageType.REMOVE_HISTORICAL_BLOCKS,
17
+ WorldStateMessageType.REMOVE_HISTORICAL_BLOCKS
18
18
  ]);
19
19
  // This class implements the per-fork operation queue
20
20
  export class WorldStateOpsQueue {
21
- constructor() {
22
- this.requests = [];
23
- this.inFlightMutatingCount = 0;
24
- this.inFlightCount = 0;
25
- this.requestId = 0;
26
- this.ops = new Map();
27
- }
21
+ requests = [];
22
+ inFlightMutatingCount = 0;
23
+ inFlightCount = 0;
24
+ stopPromise;
25
+ stopResolve;
26
+ requestId = 0;
27
+ ops = new Map();
28
28
  // The primary public api, this is where an operation is queued
29
29
  // We return a promise that will ultimately be resolved/rejected with the response/error generated by the 'request' argument
30
30
  execute(request, messageType, committedOnly) {
@@ -35,17 +35,15 @@ export class WorldStateOpsQueue {
35
35
  requestId: this.requestId++,
36
36
  mutating: MUTATING_MSG_TYPES.has(messageType),
37
37
  request,
38
- promise: promiseWithResolvers(),
38
+ promise: promiseWithResolvers()
39
39
  };
40
40
  this.ops.set(op.requestId, op);
41
41
  // Perform the appropriate action based upon the queueing rules
42
42
  if (op.mutating) {
43
43
  this.executeMutating(op);
44
- }
45
- else if (committedOnly === false) {
44
+ } else if (committedOnly === false) {
46
45
  this.executeNonMutatingUncommitted(op);
47
- }
48
- else {
46
+ } else {
49
47
  this.executeNonMutatingCommitted(op);
50
48
  }
51
49
  return op.promise.promise;
@@ -56,8 +54,7 @@ export class WorldStateOpsQueue {
56
54
  // Otherwise add to the queue
57
55
  if (this.inFlightCount === 0) {
58
56
  this.sendEnqueuedRequest(op);
59
- }
60
- else {
57
+ } else {
61
58
  this.requests.push(op);
62
59
  }
63
60
  }
@@ -69,17 +66,14 @@ export class WorldStateOpsQueue {
69
66
  // If a mutating request is not in flight but something is queued then it must be a mutating request
70
67
  if (this.inFlightMutatingCount == 0 && this.requests.length == 0) {
71
68
  this.sendEnqueuedRequest(op);
72
- }
73
- else {
69
+ } else {
74
70
  this.requests.push(op);
75
71
  }
76
72
  }
77
73
  executeNonMutatingCommitted(op) {
78
74
  // This is a non-mutating request for committed data
79
75
  // It can always be sent
80
- op.request()
81
- .then(op.promise.resolve, op.promise.reject)
82
- .finally(() => {
76
+ op.request().then(op.promise.resolve, op.promise.reject).finally(()=>{
83
77
  this.ops.delete(op.requestId);
84
78
  });
85
79
  }
@@ -99,7 +93,7 @@ export class WorldStateOpsQueue {
99
93
  // 1 mutating request if it is next in the queue
100
94
  // As many non-mutating requests as we encounter until
101
95
  // we exhaust the queue or we reach a mutating request
102
- while (this.requests.length > 0) {
96
+ while(this.requests.length > 0){
103
97
  const next = this.requests[0];
104
98
  if (next.mutating) {
105
99
  if (this.inFlightCount == 0) {
@@ -107,10 +101,8 @@ export class WorldStateOpsQueue {
107
101
  this.requests.shift();
108
102
  this.sendEnqueuedRequest(next);
109
103
  }
110
- // this request is mutating, we need to stop here
111
104
  break;
112
- }
113
- else {
105
+ } else {
114
106
  // not mutating, send and go round again
115
107
  this.requests.shift();
116
108
  this.sendEnqueuedRequest(next);
@@ -128,9 +120,7 @@ export class WorldStateOpsQueue {
128
120
  ++this.inFlightMutatingCount;
129
121
  }
130
122
  // Make the request and pass the response/error through to the stored promise
131
- op.request()
132
- .then(op.promise.resolve, op.promise.reject)
133
- .finally(() => {
123
+ op.request().then(op.promise.resolve, op.promise.reject).finally(()=>{
134
124
  this.checkAndEnqueue(op);
135
125
  this.ops.delete(op.requestId);
136
126
  });
@@ -141,7 +131,7 @@ export class WorldStateOpsQueue {
141
131
  return this.stopPromise;
142
132
  }
143
133
  // Otherwise create a new one and capture the resolve method
144
- this.stopPromise = new Promise(resolve => {
134
+ this.stopPromise = new Promise((resolve)=>{
145
135
  this.stopResolve = resolve;
146
136
  });
147
137
  // If no outstanding requests then immediately resolve the promise
@@ -151,4 +141,3 @@ export class WorldStateOpsQueue {
151
141
  return this.stopPromise;
152
142
  }
153
143
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGRfc3RhdGVfb3BzX3F1ZXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS93b3JsZF9zdGF0ZV9vcHNfcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBdUJyRCx3RUFBd0U7QUFDeEUsd0VBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3hDLHFCQUFxQixDQUFDLGFBQWE7SUFDbkMscUJBQXFCLENBQUMsWUFBWTtJQUNsQyxxQkFBcUIsQ0FBQyxpQkFBaUI7SUFDdkMscUJBQXFCLENBQUMsY0FBYztJQUNwQyxxQkFBcUIsQ0FBQyxNQUFNO0lBQzVCLHFCQUFxQixDQUFDLFFBQVE7SUFDOUIscUJBQXFCLENBQUMsVUFBVTtJQUNoQyxxQkFBcUIsQ0FBQyxXQUFXO0lBQ2pDLHFCQUFxQixDQUFDLFdBQVc7SUFDakMscUJBQXFCLENBQUMsZUFBZTtJQUNyQyxxQkFBcUIsQ0FBQyxhQUFhO0lBQ25DLHFCQUFxQixDQUFDLHdCQUF3QjtDQUMvQyxDQUFDLENBQUM7QUFFSCxxREFBcUQ7QUFDckQsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNVLGFBQVEsR0FBbUIsRUFBRSxDQUFDO1FBQzlCLDBCQUFxQixHQUFHLENBQUMsQ0FBQztRQUMxQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUdsQixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsUUFBRyxHQUE4QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBd0lyRCxDQUFDO0lBdElDLCtEQUErRDtJQUMvRCw0SEFBNEg7SUFDckgsT0FBTyxDQUFDLE9BQTJCLEVBQUUsV0FBa0MsRUFBRSxhQUFzQjtRQUNwRyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FB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
@@ -3,12 +3,14 @@ import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
3
3
  import { readFile, writeFile } from 'fs/promises';
4
4
  import { z } from 'zod';
5
5
  export class WorldStateVersion {
6
- constructor(version, rollupAddress) {
6
+ version;
7
+ rollupAddress;
8
+ constructor(version, rollupAddress){
7
9
  this.version = version;
8
10
  this.rollupAddress = rollupAddress;
9
11
  }
10
12
  static async readVersion(filename) {
11
- const versionData = await readFile(filename, 'utf-8').catch(() => undefined);
13
+ const versionData = await readFile(filename, 'utf-8').catch(()=>undefined);
12
14
  return versionData === undefined ? undefined : await jsonParseWithSchema(versionData, WorldStateVersion.schema);
13
15
  }
14
16
  async writeVersionFile(filename) {
@@ -16,15 +18,12 @@ export class WorldStateVersion {
16
18
  await writeFile(filename, data, 'utf-8');
17
19
  }
18
20
  static get schema() {
19
- return z
20
- .object({
21
+ return z.object({
21
22
  version: z.number(),
22
- rollupAddress: EthAddress.schema,
23
- })
24
- .transform(({ version, rollupAddress }) => new WorldStateVersion(version, rollupAddress));
23
+ rollupAddress: EthAddress.schema
24
+ }).transform(({ version, rollupAddress })=>new WorldStateVersion(version, rollupAddress));
25
25
  }
26
26
  static empty() {
27
27
  return new WorldStateVersion(0, EthAddress.ZERO);
28
28
  }
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGRfc3RhdGVfdmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uYXRpdmUvd29ybGRfc3RhdGVfdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhGLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUE0QixPQUFlLEVBQWtCLGFBQXlCO1FBQTFELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFBa0Isa0JBQWEsR0FBYixhQUFhLENBQVk7SUFBRyxDQUFDO0lBRTFGLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0UsT0FBTyxXQUFXLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sbUJBQW1CLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDNUMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sS0FBSyxNQUFNO1FBQ2YsT0FBTyxDQUFDO2FBQ0wsTUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDbkIsYUFBYSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1NBQ2pDLENBQUM7YUFDRCxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDVixPQUFPLElBQUksaUJBQWlCLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0YifQ==