@aztec/world-state 0.0.0-test.1 → 0.0.1-commit.017a351

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 (69) hide show
  1. package/dest/index.d.ts +1 -1
  2. package/dest/instrumentation/instrumentation.d.ts +6 -4
  3. package/dest/instrumentation/instrumentation.d.ts.map +1 -1
  4. package/dest/instrumentation/instrumentation.js +25 -41
  5. package/dest/native/bench_metrics.d.ts +23 -0
  6. package/dest/native/bench_metrics.d.ts.map +1 -0
  7. package/dest/native/bench_metrics.js +81 -0
  8. package/dest/native/fork_checkpoint.d.ts +7 -1
  9. package/dest/native/fork_checkpoint.d.ts.map +1 -1
  10. package/dest/native/fork_checkpoint.js +15 -3
  11. package/dest/native/index.d.ts +1 -1
  12. package/dest/native/ipc_world_state_instance.d.ts +45 -0
  13. package/dest/native/ipc_world_state_instance.d.ts.map +1 -0
  14. package/dest/native/ipc_world_state_instance.js +750 -0
  15. package/dest/native/merkle_trees_facade.d.ts +25 -9
  16. package/dest/native/merkle_trees_facade.d.ts.map +1 -1
  17. package/dest/native/merkle_trees_facade.js +109 -25
  18. package/dest/native/message.d.ts +87 -58
  19. package/dest/native/message.d.ts.map +1 -1
  20. package/dest/native/message.js +61 -61
  21. package/dest/native/native_world_state.d.ts +41 -21
  22. package/dest/native/native_world_state.d.ts.map +1 -1
  23. package/dest/native/native_world_state.js +177 -50
  24. package/dest/native/native_world_state_instance.d.ts +23 -25
  25. package/dest/native/native_world_state_instance.d.ts.map +1 -1
  26. package/dest/native/native_world_state_instance.js +8 -163
  27. package/dest/native/world_state_ops_queue.d.ts +1 -1
  28. package/dest/native/world_state_ops_queue.d.ts.map +1 -1
  29. package/dest/native/world_state_ops_queue.js +6 -6
  30. package/dest/synchronizer/config.d.ts +14 -6
  31. package/dest/synchronizer/config.d.ts.map +1 -1
  32. package/dest/synchronizer/config.js +36 -14
  33. package/dest/synchronizer/errors.d.ts +4 -0
  34. package/dest/synchronizer/errors.d.ts.map +1 -0
  35. package/dest/synchronizer/errors.js +5 -0
  36. package/dest/synchronizer/factory.d.ts +13 -5
  37. package/dest/synchronizer/factory.d.ts.map +1 -1
  38. package/dest/synchronizer/factory.js +15 -9
  39. package/dest/synchronizer/index.d.ts +1 -1
  40. package/dest/synchronizer/server_world_state_synchronizer.d.ts +21 -31
  41. package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
  42. package/dest/synchronizer/server_world_state_synchronizer.js +220 -96
  43. package/dest/test/index.d.ts +1 -1
  44. package/dest/test/utils.d.ts +12 -5
  45. package/dest/test/utils.d.ts.map +1 -1
  46. package/dest/test/utils.js +54 -47
  47. package/dest/testing.d.ts +6 -5
  48. package/dest/testing.d.ts.map +1 -1
  49. package/dest/testing.js +15 -15
  50. package/dest/world-state-db/index.d.ts +1 -1
  51. package/dest/world-state-db/merkle_tree_db.d.ts +12 -18
  52. package/dest/world-state-db/merkle_tree_db.d.ts.map +1 -1
  53. package/package.json +27 -25
  54. package/src/instrumentation/instrumentation.ts +31 -43
  55. package/src/native/bench_metrics.ts +91 -0
  56. package/src/native/fork_checkpoint.ts +19 -3
  57. package/src/native/ipc_world_state_instance.ts +863 -0
  58. package/src/native/merkle_trees_facade.ts +127 -33
  59. package/src/native/message.ts +109 -80
  60. package/src/native/native_world_state.ts +207 -64
  61. package/src/native/native_world_state_instance.ts +28 -223
  62. package/src/native/world_state_ops_queue.ts +6 -6
  63. package/src/synchronizer/config.ts +58 -20
  64. package/src/synchronizer/errors.ts +5 -0
  65. package/src/synchronizer/factory.ts +48 -18
  66. package/src/synchronizer/server_world_state_synchronizer.ts +249 -121
  67. package/src/test/utils.ts +92 -82
  68. package/src/testing.ts +11 -16
  69. package/src/world-state-db/merkle_tree_db.ts +16 -18
package/dest/index.d.ts CHANGED
@@ -2,4 +2,4 @@ export * from './synchronizer/index.js';
2
2
  export * from './world-state-db/index.js';
3
3
  export * from './synchronizer/config.js';
4
4
  export * from './native/index.js';
5
- //# sourceMappingURL=index.d.ts.map
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDIn0=
@@ -1,22 +1,24 @@
1
+ import { type Logger } from '@aztec/foundation/log';
1
2
  import { type TelemetryClient } from '@aztec/telemetry-client';
2
3
  import { WorldStateMessageType, type WorldStateStatusFull } from '../native/message.js';
3
4
  export declare class WorldStateInstrumentation {
4
5
  readonly telemetry: TelemetryClient;
5
6
  private log;
6
7
  private dbMapSize;
8
+ private dbPhysicalSize;
7
9
  private treeSize;
8
- private unfinalisedHeight;
9
- private finalisedHeight;
10
+ private unfinalizedHeight;
11
+ private finalizedHeight;
10
12
  private oldestBlock;
11
13
  private dbNumItems;
12
14
  private dbUsedSize;
13
15
  private requestHistogram;
14
16
  private criticalErrors;
15
- constructor(telemetry: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
17
+ constructor(telemetry: TelemetryClient, log?: Logger);
16
18
  private updateTreeStats;
17
19
  private updateTreeDBStats;
18
20
  updateWorldStateMetrics(worldStateStatus: WorldStateStatusFull): void;
19
21
  recordRoundTrip(timeUs: number, request: WorldStateMessageType): void;
20
22
  incCriticalErrors(errorType: 'synch_pending_block' | 'finalize_block' | 'prune_pending_block' | 'prune_historical_block'): void;
21
23
  }
22
- //# sourceMappingURL=instrumentation.d.ts.map
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5zdHJ1bWVudGF0aW9uL2luc3RydW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFJTCxxQkFBcUIsRUFDckIsS0FBSyxvQkFBb0IsRUFDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQWE5QixxQkFBYSx5QkFBeUI7YUFhbEIsU0FBUyxFQUFFLGVBQWU7SUFDMUMsT0FBTyxDQUFDLEdBQUc7SUFiYixPQUFPLENBQUMsU0FBUyxDQUFRO0lBQ3pCLE9BQU8sQ0FBQyxjQUFjLENBQVE7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVE7SUFDakMsT0FBTyxDQUFDLGVBQWUsQ0FBUTtJQUMvQixPQUFPLENBQUMsV0FBVyxDQUFRO0lBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQVE7SUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBUTtJQUMxQixPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLGNBQWMsQ0FBZ0I7SUFFdEMsWUFDa0IsU0FBUyxFQUFFLGVBQWUsRUFDbEMsR0FBRyxHQUFFLE1BQW9ELEVBNkJsRTtJQUVELE9BQU8sQ0FBQyxlQUFlO0lBMkJ2QixPQUFPLENBQUMsaUJBQWlCO0lBV2xCLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixRQThCcEU7SUFFTSxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLFFBTXBFO0lBRU0saUJBQWlCLENBQ3RCLFNBQVMsRUFBRSxxQkFBcUIsR0FBRyxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyx3QkFBd0IsUUFLdkc7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation/instrumentation.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAIL,qBAAqB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAa9B,qBAAa,yBAAyB;aAWR,SAAS,EAAE,eAAe;IAAE,OAAO,CAAC,GAAG;IAVnE,OAAO,CAAC,SAAS,CAAQ;IACzB,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;gBAEV,SAAS,EAAE,eAAe,EAAU,GAAG,yCAA8C;IAiDjH,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,iBAAiB;IAWlB,uBAAuB,CAAC,gBAAgB,EAAE,oBAAoB;IAgC9D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB;IAQ9D,iBAAiB,CACtB,SAAS,EAAE,qBAAqB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,wBAAwB;CAMzG"}
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,
@@ -13,9 +13,10 @@ export class WorldStateInstrumentation {
13
13
  telemetry;
14
14
  log;
15
15
  dbMapSize;
16
+ dbPhysicalSize;
16
17
  treeSize;
17
- unfinalisedHeight;
18
- finalisedHeight;
18
+ unfinalizedHeight;
19
+ finalizedHeight;
19
20
  oldestBlock;
20
21
  dbNumItems;
21
22
  dbUsedSize;
@@ -25,55 +26,38 @@ export class WorldStateInstrumentation {
25
26
  this.telemetry = telemetry;
26
27
  this.log = log;
27
28
  const meter = telemetry.getMeter('World State');
28
- this.dbMapSize = meter.createGauge(Metrics.WORLD_STATE_DB_MAP_SIZE, {
29
- description: `The current configured map size for each merkle tree`,
30
- valueType: ValueType.INT
31
- });
32
- this.treeSize = meter.createGauge(Metrics.WORLD_STATE_TREE_SIZE, {
33
- description: `The current number of leaves in each merkle tree`,
34
- valueType: ValueType.INT
35
- });
36
- this.unfinalisedHeight = meter.createGauge(Metrics.WORLD_STATE_UNFINALISED_HEIGHT, {
37
- description: `The unfinalised block height of each merkle tree`,
38
- valueType: ValueType.INT
39
- });
40
- this.finalisedHeight = meter.createGauge(Metrics.WORLD_STATE_FINALISED_HEIGHT, {
41
- description: `The finalised block height of each merkle tree`,
42
- valueType: ValueType.INT
43
- });
44
- this.oldestBlock = meter.createGauge(Metrics.WORLD_STATE_OLDEST_BLOCK, {
45
- description: `The oldest historical block of each merkle tree`,
46
- valueType: ValueType.INT
47
- });
48
- this.dbUsedSize = meter.createGauge(Metrics.WORLD_STATE_DB_USED_SIZE, {
49
- description: `The current used database size for each db of each merkle tree`,
50
- valueType: ValueType.INT
51
- });
52
- this.dbNumItems = meter.createGauge(Metrics.WORLD_STATE_DB_NUM_ITEMS, {
53
- description: `The current number of items in each database of each merkle tree`,
54
- valueType: ValueType.INT
55
- });
56
- this.requestHistogram = meter.createHistogram(Metrics.WORLD_STATE_REQUEST_TIME, {
57
- description: 'The round trip time of world state requests',
58
- unit: 'us',
59
- valueType: ValueType.INT
60
- });
61
- this.criticalErrors = meter.createUpDownCounter(Metrics.WORLD_STATE_CRITICAL_ERROR_COUNT, {
62
- description: 'The number of critical errors in the world state',
63
- 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
+ ]
64
45
  });
65
46
  }
66
47
  updateTreeStats(treeDbStats, treeMeta, tree) {
67
48
  this.dbMapSize.record(Number(treeDbStats.mapSize), {
68
49
  [Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
69
50
  });
51
+ this.dbPhysicalSize.record(Number(treeDbStats.physicalFileSize), {
52
+ [Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
53
+ });
70
54
  this.treeSize.record(Number(treeMeta.size), {
71
55
  [Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
72
56
  });
73
- this.unfinalisedHeight.record(Number(treeMeta.unfinalisedBlockHeight), {
57
+ this.unfinalizedHeight.record(Number(treeMeta.unfinalizedBlockHeight), {
74
58
  [Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
75
59
  });
76
- this.finalisedHeight.record(Number(treeMeta.finalisedBlockHeight), {
60
+ this.finalizedHeight.record(Number(treeMeta.finalizedBlockHeight), {
77
61
  [Attributes.MERKLE_TREE_NAME]: MerkleTreeId[tree]
78
62
  });
79
63
  this.oldestBlock.record(Number(treeMeta.oldestHistoricBlock), {
@@ -0,0 +1,23 @@
1
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
2
+ export declare enum InsertionType {
3
+ BATCH = 0,
4
+ SEQUENTIAL = 1
5
+ }
6
+ export declare enum DataRetrievalType {
7
+ SIBLING_PATH = 0,
8
+ LEAF_PREIMAGE = 1,
9
+ LEAF_VALUE = 2,
10
+ LEAF_INDICES = 3,
11
+ LOW_LEAF = 4
12
+ }
13
+ export declare class NativeBenchMetics {
14
+ private blockSyncMetrics;
15
+ private insertionMetrics;
16
+ private dataRetrievalMetrics;
17
+ toPrettyString(): string;
18
+ addBlockSyncMetric(numTxs: number, numLeaves: number, value: number): void;
19
+ addInsertionMetric(treeId: MerkleTreeId, insertionType: InsertionType, numLeaves: number, value: number): void;
20
+ addDataRetrievalMetric(retrievalType: DataRetrievalType, value: number): void;
21
+ toGithubActionBenchmarkJSON(indent?: number): string;
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2hfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9iZW5jaF9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFuRCxvQkFBWSxhQUFhO0lBQ3ZCLEtBQUssSUFBQTtJQUNMLFVBQVUsSUFBQTtDQUNYO0FBU0Qsb0JBQVksaUJBQWlCO0lBQzNCLFlBQVksSUFBQTtJQUNaLGFBQWEsSUFBQTtJQUNiLFVBQVUsSUFBQTtJQUNWLFlBQVksSUFBQTtJQUNaLFFBQVEsSUFBQTtDQUNUO0FBT0QscUJBQWEsaUJBQWlCO0lBQzVCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBMEI7SUFDbEQsT0FBTyxDQUFDLGdCQUFnQixDQUEwQjtJQUNsRCxPQUFPLENBQUMsb0JBQW9CLENBQThCO0lBRW5ELGNBQWMsV0FlcEI7SUFFTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFFekU7SUFDTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUU3RztJQUNNLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUU1RTtJQUVNLDJCQUEyQixDQUFDLE1BQU0sU0FBSSxVQXdCNUM7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bench_metrics.d.ts","sourceRoot":"","sources":["../../src/native/bench_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD,oBAAY,aAAa;IACvB,KAAK,IAAA;IACL,UAAU,IAAA;CACX;AASD,oBAAY,iBAAiB;IAC3B,YAAY,IAAA;IACZ,aAAa,IAAA;IACb,UAAU,IAAA;IACV,YAAY,IAAA;IACZ,QAAQ,IAAA;CACT;AAOD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,oBAAoB,CAA8B;IAEnD,cAAc,WAepB;IAEM,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAEzE;IACM,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAE7G;IACM,sBAAsB,CAAC,aAAa,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,QAE5E;IAEM,2BAA2B,CAAC,MAAM,SAAI,UAwB5C;CACF"}
@@ -0,0 +1,81 @@
1
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
2
+ export var InsertionType = /*#__PURE__*/ function(InsertionType) {
3
+ InsertionType[InsertionType["BATCH"] = 0] = "BATCH";
4
+ InsertionType[InsertionType["SEQUENTIAL"] = 1] = "SEQUENTIAL";
5
+ return InsertionType;
6
+ }({});
7
+ export var DataRetrievalType = /*#__PURE__*/ function(DataRetrievalType) {
8
+ DataRetrievalType[DataRetrievalType["SIBLING_PATH"] = 0] = "SIBLING_PATH";
9
+ DataRetrievalType[DataRetrievalType["LEAF_PREIMAGE"] = 1] = "LEAF_PREIMAGE";
10
+ DataRetrievalType[DataRetrievalType["LEAF_VALUE"] = 2] = "LEAF_VALUE";
11
+ DataRetrievalType[DataRetrievalType["LEAF_INDICES"] = 3] = "LEAF_INDICES";
12
+ DataRetrievalType[DataRetrievalType["LOW_LEAF"] = 4] = "LOW_LEAF";
13
+ return DataRetrievalType;
14
+ }({});
15
+ export class NativeBenchMetics {
16
+ blockSyncMetrics = [];
17
+ insertionMetrics = [];
18
+ dataRetrievalMetrics = [];
19
+ toPrettyString() {
20
+ let pretty = '';
21
+ pretty += `Block sync metrics:\n`;
22
+ for (const metric of this.blockSyncMetrics){
23
+ pretty += ` ${metric.numTxs} txs, ${metric.numLeaves} leaves: ${metric.value} ms\n`;
24
+ }
25
+ pretty += `Insertion metrics:\n`;
26
+ for (const metric of this.insertionMetrics){
27
+ pretty += ` ${MerkleTreeId[metric.treeType]}: ${InsertionType[metric.insertionType]} (${metric.numLeaves} leaves): ${metric.value} ms\n`;
28
+ }
29
+ pretty += `Data retrieval metrics:\n`;
30
+ for (const metric of this.dataRetrievalMetrics){
31
+ pretty += ` ${DataRetrievalType[metric.retrievalType]}: ${metric.value} us\n`;
32
+ }
33
+ return pretty;
34
+ }
35
+ addBlockSyncMetric(numTxs, numLeaves, value) {
36
+ this.blockSyncMetrics.push({
37
+ numTxs,
38
+ numLeaves,
39
+ value
40
+ });
41
+ }
42
+ addInsertionMetric(treeId, insertionType, numLeaves, value) {
43
+ this.insertionMetrics.push({
44
+ treeType: treeId,
45
+ insertionType,
46
+ numLeaves,
47
+ value
48
+ });
49
+ }
50
+ addDataRetrievalMetric(retrievalType, value) {
51
+ this.dataRetrievalMetrics.push({
52
+ retrievalType,
53
+ value: value
54
+ });
55
+ }
56
+ toGithubActionBenchmarkJSON(indent = 2) {
57
+ const data = [];
58
+ for (const blockSync of this.blockSyncMetrics){
59
+ data.push({
60
+ name: `Block Sync/${blockSync.numTxs} txs/${blockSync.numLeaves} leaves per tx`,
61
+ value: blockSync.value,
62
+ unit: 'ms'
63
+ });
64
+ }
65
+ for (const insertion of this.insertionMetrics){
66
+ data.push({
67
+ name: `Tree Insertion/${MerkleTreeId[insertion.treeType]}/${InsertionType[insertion.insertionType]}/${insertion.numLeaves} leaves`,
68
+ value: insertion.value,
69
+ unit: 'ms'
70
+ });
71
+ }
72
+ for (const retrieval of this.dataRetrievalMetrics){
73
+ data.push({
74
+ name: `Data Retrieval/${DataRetrievalType[retrieval.retrievalType]}`,
75
+ value: retrieval.value,
76
+ unit: 'us'
77
+ });
78
+ }
79
+ return JSON.stringify(data, null, indent);
80
+ }
81
+ }
@@ -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=fork_checkpoint.d.ts.map
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;WAEM,GAAG,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,cAAc,CAAC;IAKzE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IASvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ9B"}
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
  }
@@ -1,3 +1,3 @@
1
1
  export * from './native_world_state.js';
2
2
  export * from './fork_checkpoint.js';
3
- //# sourceMappingURL=index.d.ts.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uYXRpdmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDIn0=
@@ -0,0 +1,45 @@
1
+ import { type Logger, type LoggerBindings } from '@aztec/foundation/log';
2
+ import type { GenesisData } from '@aztec/stdlib/world-state';
3
+ import { WsdbService } from '@aztec/wsdb';
4
+ import type { WorldStateInstrumentation } from '../instrumentation/instrumentation.js';
5
+ import type { WorldStateTreeMapSizes } from '../synchronizer/factory.js';
6
+ import { WorldStateMessageType, type WorldStateRequest, type WorldStateRequestCategories, type WorldStateResponse } from './message.js';
7
+ import type { NativeWorldStateInstance } from './native_world_state_instance.js';
8
+ /**
9
+ * IPC-backed world state instance.
10
+ * Uses WsdbService (spawns aztec-wsdb binary) and the generated AsyncApi
11
+ * to communicate via the NamedUnion IPC protocol.
12
+ */
13
+ export declare class IpcWorldState implements NativeWorldStateInstance {
14
+ private readonly wsdb;
15
+ private readonly instrumentation;
16
+ private readonly log;
17
+ private open;
18
+ private queues;
19
+ private api;
20
+ /** Tracks checkpoint depth per fork (WSDB IPC doesn't return depth in response). */
21
+ private checkpointDepths;
22
+ constructor(wsdb: WsdbService, instrumentation: WorldStateInstrumentation, bindings?: LoggerBindings, log?: Logger);
23
+ /**
24
+ * Spawn an `aztec-wsdb` subprocess and return an IPC-backed world state wrapping it.
25
+ * Encapsulates wsdb binary discovery, service construction, and readiness wait.
26
+ */
27
+ static spawn(dataDir: string, wsTreeMapSizes: WorldStateTreeMapSizes, genesis: GenesisData, instrumentation: WorldStateInstrumentation, bindings?: LoggerBindings): Promise<IpcWorldState>;
28
+ /** Returns the socket path of the underlying wsdb server. */
29
+ getSocketPath(): string;
30
+ call<T extends WorldStateMessageType>(messageType: T, body: WorldStateRequest[T] & WorldStateRequestCategories, responseHandler?: (response: WorldStateResponse[T]) => WorldStateResponse[T], errorHandler?: (_: string) => void): Promise<WorldStateResponse[T]>;
31
+ close(): Promise<void>;
32
+ private _sendMessage;
33
+ private dispatch;
34
+ }
35
+ /**
36
+ * Helper to create WsdbOptions from standard world state config.
37
+ * Returns the options needed to construct a wsdb service command line.
38
+ */
39
+ export declare function getWsdbOptions(dataDir: string, wsTreeMapSizes: WorldStateTreeMapSizes): {
40
+ treeHeights: Record<number, number>;
41
+ treePrefill: Record<number, number>;
42
+ mapSizes: Record<number, number>;
43
+ initialHeaderGeneratorPoint: number;
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBjX3dvcmxkX3N0YXRlX2luc3RhbmNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL2lwY193b3JsZF9zdGF0ZV9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFFdkYsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFzQixNQUFNLDJCQUEyQixDQUFDO0FBQ2pGLE9BQU8sRUFBWSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFlcEQsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFNTCxxQkFBcUIsRUFFckIsS0FBSyxpQkFBaUIsRUFDdEIsS0FBSywyQkFBMkIsRUFDaEMsS0FBSyxrQkFBa0IsRUFNeEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQXFSakY7Ozs7R0FJRztBQUNILHFCQUFhLGFBQWMsWUFBVyx3QkFBd0I7SUFRMUQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO0lBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZTtJQUVoQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUc7SUFWdEIsT0FBTyxDQUFDLElBQUksQ0FBUTtJQUNwQixPQUFPLENBQUMsTUFBTSxDQUF5QztJQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFXO0lBQ3RCLG9GQUFvRjtJQUNwRixPQUFPLENBQUMsZ0JBQWdCLENBQTZCO0lBRXJELFlBQ21CLElBQUksRUFBRSxXQUFXLEVBQ2pCLGVBQWUsRUFBRSx5QkFBeUIsRUFDM0QsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUNSLEdBQUcsR0FBRSxNQUEyRCxFQUtsRjtJQUVEOzs7T0FHRztJQUNILE9BQWEsS0FBSyxDQUNoQixPQUFPLEVBQUUsTUFBTSxFQUNmLGNBQWMsRUFBRSxzQkFBc0IsRUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFDcEIsZUFBZSxFQUFFLHlCQUF5QixFQUMxQyxRQUFRLENBQUMsRUFBRSxjQUFjLEdBQ3hCLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FReEI7SUFFRCw2REFBNkQ7SUFDN0QsYUFBYSxJQUFJLE1BQU0sQ0FFdEI7SUFFSyxJQUFJLENBQUMsQ0FBQyxTQUFTLHFCQUFxQixFQUN4QyxXQUFXLEVBQUUsQ0FBQyxFQUNkLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRywyQkFBMkIsRUFDeEQsZUFBZSw2REFBdUUsRUFDdEYsWUFBWSxzQkFBb0IsR0FDL0IsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBNkNoQztJQUVLLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBVTNCO1lBRWEsWUFBWTtZQWlCWixRQUFRO0NBcVh2QjtBQUVEOzs7R0FHRztBQUNILHdCQUFnQixjQUFjLENBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsY0FBYyxFQUFFLHNCQUFzQixHQUNyQztJQUNELFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztDQUNyQyxDQXNCQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc_world_state_instance.d.ts","sourceRoot":"","sources":["../../src/native/ipc_world_state_instance.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAY,WAAW,EAAE,MAAM,aAAa,CAAC;AAepD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAML,qBAAqB,EAErB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EAMxB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAqRjF;;;;GAIG;AACH,qBAAa,aAAc,YAAW,wBAAwB;IAQ1D,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,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,IAAI,EAAE,WAAW,EACjB,eAAe,EAAE,yBAAyB,EAC3D,QAAQ,CAAC,EAAE,cAAc,EACR,GAAG,GAAE,MAA2D,EAKlF;IAED;;;OAGG;IACH,OAAa,KAAK,CAChB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,sBAAsB,EACtC,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,yBAAyB,EAC1C,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,aAAa,CAAC,CAQxB;IAED,6DAA6D;IAC7D,aAAa,IAAI,MAAM,CAEtB;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,CA6ChC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3B;YAEa,YAAY;YAiBZ,QAAQ;CAqXvB;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"}