@aztec/world-state 0.0.1-commit.03f7ef2 → 0.0.1-commit.04d373f

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/instrumentation/instrumentation.d.ts +1 -1
  2. package/dest/instrumentation/instrumentation.d.ts.map +1 -1
  3. package/dest/instrumentation/instrumentation.js +17 -41
  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 +50 -0
  8. package/dest/native/ipc_world_state_instance.d.ts.map +1 -0
  9. package/dest/native/ipc_world_state_instance.js +628 -0
  10. package/dest/native/merkle_trees_facade.d.ts +9 -6
  11. package/dest/native/merkle_trees_facade.d.ts.map +1 -1
  12. package/dest/native/merkle_trees_facade.js +47 -16
  13. package/dest/native/message.d.ts +13 -5
  14. package/dest/native/message.d.ts.map +1 -1
  15. package/dest/native/native_world_state.d.ts +34 -8
  16. package/dest/native/native_world_state.d.ts.map +1 -1
  17. package/dest/native/native_world_state.js +81 -27
  18. package/dest/native/native_world_state_instance.d.ts +6 -5
  19. package/dest/native/native_world_state_instance.d.ts.map +1 -1
  20. package/dest/native/native_world_state_instance.js +33 -26
  21. package/dest/native/world_state_ops_queue.js +5 -5
  22. package/dest/synchronizer/config.d.ts +3 -5
  23. package/dest/synchronizer/config.d.ts.map +1 -1
  24. package/dest/synchronizer/config.js +15 -18
  25. package/dest/synchronizer/factory.d.ts +6 -5
  26. package/dest/synchronizer/factory.d.ts.map +1 -1
  27. package/dest/synchronizer/factory.js +7 -6
  28. package/dest/synchronizer/server_world_state_synchronizer.d.ts +4 -5
  29. package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
  30. package/dest/synchronizer/server_world_state_synchronizer.js +139 -39
  31. package/dest/test/utils.d.ts +7 -7
  32. package/dest/test/utils.d.ts.map +1 -1
  33. package/dest/test/utils.js +5 -5
  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 +5 -14
  38. package/dest/world-state-db/merkle_tree_db.d.ts.map +1 -1
  39. package/package.json +13 -12
  40. package/src/instrumentation/instrumentation.ts +17 -41
  41. package/src/native/fork_checkpoint.ts +19 -3
  42. package/src/native/ipc_world_state_instance.ts +717 -0
  43. package/src/native/merkle_trees_facade.ts +51 -17
  44. package/src/native/message.ts +14 -4
  45. package/src/native/native_world_state.ts +108 -32
  46. package/src/native/native_world_state_instance.ts +44 -32
  47. package/src/native/world_state_ops_queue.ts +5 -5
  48. package/src/synchronizer/config.ts +16 -23
  49. package/src/synchronizer/factory.ts +19 -11
  50. package/src/synchronizer/server_world_state_synchronizer.ts +142 -53
  51. package/src/test/utils.ts +6 -6
  52. package/src/testing.ts +8 -9
  53. package/src/world-state-db/merkle_tree_db.ts +8 -14
@@ -21,4 +21,4 @@ export declare class WorldStateInstrumentation {
21
21
  recordRoundTrip(timeUs: number, request: WorldStateMessageType): void;
22
22
  incCriticalErrors(errorType: 'synch_pending_block' | 'finalize_block' | 'prune_pending_block' | 'prune_historical_block'): void;
23
23
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5zdHJ1bWVudGF0aW9uL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsS0FBSyxvQkFBb0IsRUFDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQWE5QixxQkFBYSx5QkFBeUI7YUFhbEIsU0FBUyxFQUFFLGVBQWU7SUFDMUMsT0FBTyxDQUFDLEdBQUc7SUFiYixPQUFPLENBQUMsU0FBUyxDQUFRO0lBQ3pCLE9BQU8sQ0FBQyxjQUFjLENBQVE7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVE7SUFDakMsT0FBTyxDQUFDLGVBQWUsQ0FBUTtJQUMvQixPQUFPLENBQUMsV0FBVyxDQUFRO0lBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQVE7SUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBUTtJQUMxQixPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLGNBQWMsQ0FBZ0I7SUFFdEMsWUFDa0IsU0FBUyxFQUFFLGVBQWUsRUFDbEMsR0FBRyxHQUFFLE1BQW9ELEVBcURsRTtJQUVELE9BQU8sQ0FBQyxlQUFlO0lBMkJ2QixPQUFPLENBQUMsaUJBQWlCO0lBV2xCLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixRQThCcEU7SUFFTSxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLFFBTXBFO0lBRU0saUJBQWlCLENBQ3RCLFNBQVMsRUFBRSxxQkFBcUIsR0FBRyxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyx3QkFBd0IsUUFLdkc7Q0FDRiJ9
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5zdHJ1bWVudGF0aW9uL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsS0FBSyxvQkFBb0IsRUFDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQWE5QixxQkFBYSx5QkFBeUI7YUFhbEIsU0FBUyxFQUFFLGVBQWU7SUFDMUMsT0FBTyxDQUFDLEdBQUc7SUFiYixPQUFPLENBQUMsU0FBUyxDQUFRO0lBQ3pCLE9BQU8sQ0FBQyxjQUFjLENBQVE7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVE7SUFDakMsT0FBTyxDQUFDLGVBQWUsQ0FBUTtJQUMvQixPQUFPLENBQUMsV0FBVyxDQUFRO0lBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQVE7SUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBUTtJQUMxQixPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLGNBQWMsQ0FBZ0I7SUFFdEMsWUFDa0IsU0FBUyxFQUFFLGVBQWUsRUFDbEMsR0FBRyxHQUFFLE1BQW9ELEVBNkJsRTtJQUVELE9BQU8sQ0FBQyxlQUFlO0lBMkJ2QixPQUFPLENBQUMsaUJBQWlCO0lBV2xCLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixRQThCcEU7SUFFTSxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLFFBTXBFO0lBRU0saUJBQWlCLENBQ3RCLFNBQVMsRUFBRSxxQkFBcUIsR0FBRyxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyx3QkFBd0IsUUFLdkc7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAIL,qBAAqB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAa9B,qBAAa,yBAAyB;aAalB,SAAS,EAAE,eAAe;IAC1C,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,cAAc,CAAgB;IAEtC,YACkB,SAAS,EAAE,eAAe,EAClC,GAAG,GAAE,MAAoD,EAqDlE;IAED,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,iBAAiB;IAWlB,uBAAuB,CAAC,gBAAgB,EAAE,oBAAoB,QA8BpE;IAEM,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,QAMpE;IAEM,iBAAiB,CACtB,SAAS,EAAE,qBAAqB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,wBAAwB,QAKvG;CACF"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAIL,qBAAqB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAa9B,qBAAa,yBAAyB;aAalB,SAAS,EAAE,eAAe;IAC1C,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,cAAc,CAAgB;IAEtC,YACkB,SAAS,EAAE,eAAe,EAClC,GAAG,GAAE,MAAoD,EA6BlE;IAED,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,iBAAiB;IAWlB,uBAAuB,CAAC,gBAAgB,EAAE,oBAAoB,QA8BpE;IAEM,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,QAMpE;IAEM,iBAAiB,CACtB,SAAS,EAAE,qBAAqB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,wBAAwB,QAKvG;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
2
  import { MerkleTreeId } from '@aztec/stdlib/trees';
3
- import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
3
+ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
4
4
  import { WorldStateMessageType } from '../native/message.js';
5
5
  const durationTrackDenylist = new Set([
6
6
  WorldStateMessageType.GET_INITIAL_STATE_REFERENCE,
@@ -26,46 +26,22 @@ export class WorldStateInstrumentation {
26
26
  this.telemetry = telemetry;
27
27
  this.log = log;
28
28
  const meter = telemetry.getMeter('World State');
29
- this.dbMapSize = meter.createGauge(Metrics.WORLD_STATE_DB_MAP_SIZE, {
30
- description: `The current configured map size for each merkle tree`,
31
- valueType: ValueType.INT
32
- });
33
- this.dbPhysicalSize = meter.createGauge(Metrics.WORLD_STATE_DB_PHYSICAL_SIZE, {
34
- description: `The current physical disk space used for each database`,
35
- valueType: ValueType.INT
36
- });
37
- this.treeSize = meter.createGauge(Metrics.WORLD_STATE_TREE_SIZE, {
38
- description: `The current number of leaves in each merkle tree`,
39
- valueType: ValueType.INT
40
- });
41
- this.unfinalizedHeight = meter.createGauge(Metrics.WORLD_STATE_UNFINALIZED_HEIGHT, {
42
- description: `The unfinalized block height of each merkle tree`,
43
- valueType: ValueType.INT
44
- });
45
- this.finalizedHeight = meter.createGauge(Metrics.WORLD_STATE_FINALIZED_HEIGHT, {
46
- description: `The finalized block height of each merkle tree`,
47
- valueType: ValueType.INT
48
- });
49
- this.oldestBlock = meter.createGauge(Metrics.WORLD_STATE_OLDEST_BLOCK, {
50
- description: `The oldest historical block of each merkle tree`,
51
- valueType: ValueType.INT
52
- });
53
- this.dbUsedSize = meter.createGauge(Metrics.WORLD_STATE_DB_USED_SIZE, {
54
- description: `The current used database size for each db of each merkle tree`,
55
- valueType: ValueType.INT
56
- });
57
- this.dbNumItems = meter.createGauge(Metrics.WORLD_STATE_DB_NUM_ITEMS, {
58
- description: `The current number of items in each database of each merkle tree`,
59
- valueType: ValueType.INT
60
- });
61
- this.requestHistogram = meter.createHistogram(Metrics.WORLD_STATE_REQUEST_TIME, {
62
- description: 'The round trip time of world state requests',
63
- unit: 'us',
64
- valueType: ValueType.INT
65
- });
66
- this.criticalErrors = meter.createUpDownCounter(Metrics.WORLD_STATE_CRITICAL_ERROR_COUNT, {
67
- description: 'The number of critical errors in the world state',
68
- valueType: ValueType.INT
29
+ this.dbMapSize = meter.createGauge(Metrics.WORLD_STATE_DB_MAP_SIZE);
30
+ this.dbPhysicalSize = meter.createGauge(Metrics.WORLD_STATE_DB_PHYSICAL_SIZE);
31
+ this.treeSize = meter.createGauge(Metrics.WORLD_STATE_TREE_SIZE);
32
+ this.unfinalizedHeight = meter.createGauge(Metrics.WORLD_STATE_UNFINALIZED_HEIGHT);
33
+ this.finalizedHeight = meter.createGauge(Metrics.WORLD_STATE_FINALIZED_HEIGHT);
34
+ this.oldestBlock = meter.createGauge(Metrics.WORLD_STATE_OLDEST_BLOCK);
35
+ this.dbUsedSize = meter.createGauge(Metrics.WORLD_STATE_DB_USED_SIZE);
36
+ this.dbNumItems = meter.createGauge(Metrics.WORLD_STATE_DB_NUM_ITEMS);
37
+ this.requestHistogram = meter.createHistogram(Metrics.WORLD_STATE_REQUEST_TIME);
38
+ this.criticalErrors = createUpDownCounterWithDefault(meter, Metrics.WORLD_STATE_CRITICAL_ERROR_COUNT, {
39
+ [Attributes.ERROR_TYPE]: [
40
+ 'synch_pending_block',
41
+ 'finalize_block',
42
+ 'prune_pending_block',
43
+ 'prune_historical_block'
44
+ ]
69
45
  });
70
46
  }
71
47
  updateTreeStats(treeDbStats, treeMeta, tree) {
@@ -1,10 +1,16 @@
1
1
  import type { MerkleTreeCheckpointOperations } from '@aztec/stdlib/interfaces/server';
2
2
  export declare class ForkCheckpoint {
3
3
  private readonly fork;
4
+ readonly depth: number;
4
5
  private completed;
5
6
  private constructor();
6
7
  static new(fork: MerkleTreeCheckpointOperations): Promise<ForkCheckpoint>;
7
8
  commit(): Promise<void>;
8
9
  revert(): Promise<void>;
10
+ /**
11
+ * Reverts this checkpoint and any nested checkpoints created on top of it,
12
+ * leaving the checkpoint depth at the level it was before this checkpoint was created.
13
+ */
14
+ revertToCheckpoint(): Promise<void>;
9
15
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ya19jaGVja3BvaW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL2ZvcmtfY2hlY2twb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRGLHFCQUFhLGNBQWM7SUFHTCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7SUFGekMsT0FBTyxDQUFDLFNBQVMsQ0FBUztJQUUxQixPQUFPLGVBQXNFO0lBRTdFLE9BQWEsR0FBRyxDQUFDLElBQUksRUFBRSw4QkFBOEIsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBRzlFO0lBRUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPNUI7SUFFSyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU81QjtDQUNGIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ya19jaGVja3BvaW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL2ZvcmtfY2hlY2twb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRGLHFCQUFhLGNBQWM7SUFJdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO2FBQ0wsS0FBSyxFQUFFLE1BQU07SUFKL0IsT0FBTyxDQUFDLFNBQVMsQ0FBUztJQUUxQixPQUFPLGVBR0g7SUFFSixPQUFhLEdBQUcsQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUc5RTtJQUVLLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBTzVCO0lBRUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPNUI7SUFFRDs7O09BR0c7SUFDRyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBT3hDO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"fork_checkpoint.d.ts","sourceRoot":"","sources":["../../src/native/fork_checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAEtF,qBAAa,cAAc;IAGL,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFzC,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,eAAsE;IAE7E,OAAa,GAAG,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,cAAc,CAAC,CAG9E;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5B;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5B;CACF"}
1
+ {"version":3,"file":"fork_checkpoint.d.ts","sourceRoot":"","sources":["../../src/native/fork_checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAEtF,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,IAAI;aACL,KAAK,EAAE,MAAM;IAJ/B,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,eAGH;IAEJ,OAAa,GAAG,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,cAAc,CAAC,CAG9E;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5B;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAO5B;IAED;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOxC;CACF"}
@@ -1,13 +1,15 @@
1
1
  export class ForkCheckpoint {
2
2
  fork;
3
+ depth;
3
4
  completed;
4
- constructor(fork){
5
+ constructor(fork, depth){
5
6
  this.fork = fork;
7
+ this.depth = depth;
6
8
  this.completed = false;
7
9
  }
8
10
  static async new(fork) {
9
- await fork.createCheckpoint();
10
- return new ForkCheckpoint(fork);
11
+ const depth = await fork.createCheckpoint();
12
+ return new ForkCheckpoint(fork, depth);
11
13
  }
12
14
  async commit() {
13
15
  if (this.completed) {
@@ -23,4 +25,14 @@ export class ForkCheckpoint {
23
25
  await this.fork.revertCheckpoint();
24
26
  this.completed = true;
25
27
  }
28
+ /**
29
+ * Reverts this checkpoint and any nested checkpoints created on top of it,
30
+ * leaving the checkpoint depth at the level it was before this checkpoint was created.
31
+ */ async revertToCheckpoint() {
32
+ if (this.completed) {
33
+ return;
34
+ }
35
+ await this.fork.revertAllCheckpointsTo(this.depth - 1);
36
+ this.completed = true;
37
+ }
26
38
  }
@@ -0,0 +1,50 @@
1
+ import { type Logger, type LoggerBindings } from '@aztec/foundation/log';
2
+ import type { WorldStateInstrumentation } from '../instrumentation/instrumentation.js';
3
+ import type { WorldStateTreeMapSizes } from '../synchronizer/factory.js';
4
+ import { WorldStateMessageType, type WorldStateRequest, type WorldStateRequestCategories, type WorldStateResponse } from './message.js';
5
+ import type { NativeWorldStateInstance } from './native_world_state_instance.js';
6
+ /** Backend interface matching WsdbBackend from bb.js. */
7
+ export interface WsdbIpcBackend {
8
+ call(inputBuffer: Uint8Array): Promise<Uint8Array>;
9
+ getSocketPath(): string;
10
+ destroy?(): Promise<void>;
11
+ }
12
+ /**
13
+ * IPC-backed world state instance.
14
+ * Uses WsdbBackend (spawns aztec-wsdb binary) and the generated AsyncApi
15
+ * to communicate via the NamedUnion IPC protocol.
16
+ */
17
+ export declare class IpcWorldState implements NativeWorldStateInstance {
18
+ private readonly wsdbBackend;
19
+ private readonly instrumentation;
20
+ private readonly log;
21
+ private open;
22
+ private queues;
23
+ private api;
24
+ /** Tracks checkpoint depth per fork (WSDB IPC doesn't return depth in response). */
25
+ private checkpointDepths;
26
+ constructor(wsdbBackend: WsdbIpcBackend, instrumentation: WorldStateInstrumentation, bindings?: LoggerBindings, log?: Logger);
27
+ /** Returns the socket path of the underlying wsdb server. */
28
+ getSocketPath(): string;
29
+ /**
30
+ * Required by `NativeWorldStateInstance` for compatibility with the in-process
31
+ * NAPI path. The IPC backend does not expose an in-process pointer; callers that
32
+ * need to reach the WSDB process must use {@link getSocketPath} instead.
33
+ */
34
+ getHandle(): any;
35
+ call<T extends WorldStateMessageType>(messageType: T, body: WorldStateRequest[T] & WorldStateRequestCategories, responseHandler?: (response: WorldStateResponse[T]) => WorldStateResponse[T], errorHandler?: (_: string) => void): Promise<WorldStateResponse[T]>;
36
+ close(): Promise<void>;
37
+ private _sendMessage;
38
+ private dispatch;
39
+ }
40
+ /**
41
+ * Helper to create WsdbOptions from standard world state config.
42
+ * Returns the options needed to construct a WsdbBackend.
43
+ */
44
+ export declare function getWsdbOptions(dataDir: string, wsTreeMapSizes: WorldStateTreeMapSizes): {
45
+ treeHeights: Record<number, number>;
46
+ treePrefill: Record<number, number>;
47
+ mapSizes: Record<number, number>;
48
+ initialHeaderGeneratorPoint: number;
49
+ };
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBjX3dvcmxkX3N0YXRlX2luc3RhbmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL2lwY193b3JsZF9zdGF0ZV9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBT3ZGLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBT0wscUJBQXFCLEVBRXJCLEtBQUssaUJBQWlCLEVBQ3RCLEtBQUssMkJBQTJCLEVBQ2hDLEtBQUssa0JBQWtCLEVBTXhCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFrS2pGLHlEQUF5RDtBQUN6RCxNQUFNLFdBQVcsY0FBYztJQUM3QixJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkQsYUFBYSxJQUFJLE1BQU0sQ0FBQztJQUN4QixPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDM0I7QUFFRDs7OztHQUlHO0FBQ0gscUJBQWEsYUFBYyxZQUFXLHdCQUF3QjtJQVExRCxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFDNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlO0lBRWhDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRztJQVZ0QixPQUFPLENBQUMsSUFBSSxDQUFRO0lBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQXlDO0lBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQVc7SUFDdEIsb0ZBQW9GO0lBQ3BGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBNkI7SUFFckQsWUFDbUIsV0FBVyxFQUFFLGNBQWMsRUFDM0IsZUFBZSxFQUFFLHlCQUF5QixFQUMzRCxRQUFRLENBQUMsRUFBRSxjQUFjLEVBQ1IsR0FBRyxHQUFFLE1BQTJELEVBS2xGO0lBRUQsNkRBQTZEO0lBQzdELGFBQWEsSUFBSSxNQUFNLENBRXRCO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsSUFBSSxHQUFHLENBRWY7SUFFSyxJQUFJLENBQUMsQ0FBQyxTQUFTLHFCQUFxQixFQUN4QyxXQUFXLEVBQUUsQ0FBQyxFQUNkLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRywyQkFBMkIsRUFDeEQsZUFBZSw2REFBdUUsRUFDdEYsWUFBWSxzQkFBb0IsR0FDL0IsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBaURoQztJQUVLLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBNEIzQjtZQUVhLFlBQVk7WUFpQlosUUFBUTtDQW1VdkI7QUFFRDs7O0dBR0c7QUFDSCx3QkFBZ0IsY0FBYyxDQUM1QixPQUFPLEVBQUUsTUFBTSxFQUNmLGNBQWMsRUFBRSxzQkFBc0IsR0FDckM7SUFDRCxXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqQywyQkFBMkIsRUFBRSxNQUFNLENBQUM7Q0FDckMsQ0FzQkEifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc_world_state_instance.d.ts","sourceRoot":"","sources":["../../src/native/ipc_world_state_instance.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAOvF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAOL,qBAAqB,EAErB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EAMxB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAkKjF,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,aAAa,IAAI,MAAM,CAAC;IACxB,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;GAIG;AACH,qBAAa,aAAc,YAAW,wBAAwB;IAQ1D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAVtB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,GAAG,CAAW;IACtB,oFAAoF;IACpF,OAAO,CAAC,gBAAgB,CAA6B;IAErD,YACmB,WAAW,EAAE,cAAc,EAC3B,eAAe,EAAE,yBAAyB,EAC3D,QAAQ,CAAC,EAAE,cAAc,EACR,GAAG,GAAE,MAA2D,EAKlF;IAED,6DAA6D;IAC7D,aAAa,IAAI,MAAM,CAEtB;IAED;;;;OAIG;IACH,SAAS,IAAI,GAAG,CAEf;IAEK,IAAI,CAAC,CAAC,SAAS,qBAAqB,EACxC,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,2BAA2B,EACxD,eAAe,6DAAuE,EACtF,YAAY,sBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAiDhC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B3B;YAEa,YAAY;YAiBZ,QAAQ;CAmUvB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,sBAAsB,GACrC;IACD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;CACrC,CAsBA"}