@aztec/world-state 0.0.0-test.0 → 0.0.1-commit.023c3e5

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 (63) 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 +1 -1
  9. package/dest/native/fork_checkpoint.d.ts.map +1 -1
  10. package/dest/native/index.d.ts +1 -1
  11. package/dest/native/merkle_trees_facade.d.ts +19 -7
  12. package/dest/native/merkle_trees_facade.d.ts.map +1 -1
  13. package/dest/native/merkle_trees_facade.js +76 -14
  14. package/dest/native/message.d.ts +74 -52
  15. package/dest/native/message.d.ts.map +1 -1
  16. package/dest/native/message.js +61 -61
  17. package/dest/native/native_world_state.d.ts +27 -19
  18. package/dest/native/native_world_state.d.ts.map +1 -1
  19. package/dest/native/native_world_state.js +103 -41
  20. package/dest/native/native_world_state_instance.d.ts +20 -4
  21. package/dest/native/native_world_state_instance.d.ts.map +1 -1
  22. package/dest/native/native_world_state_instance.js +42 -3
  23. package/dest/native/world_state_ops_queue.d.ts +1 -1
  24. package/dest/native/world_state_ops_queue.d.ts.map +1 -1
  25. package/dest/native/world_state_ops_queue.js +1 -1
  26. package/dest/synchronizer/config.d.ts +12 -4
  27. package/dest/synchronizer/config.d.ts.map +1 -1
  28. package/dest/synchronizer/config.js +27 -7
  29. package/dest/synchronizer/errors.d.ts +4 -0
  30. package/dest/synchronizer/errors.d.ts.map +1 -0
  31. package/dest/synchronizer/errors.js +5 -0
  32. package/dest/synchronizer/factory.d.ts +11 -3
  33. package/dest/synchronizer/factory.d.ts.map +1 -1
  34. package/dest/synchronizer/factory.js +13 -8
  35. package/dest/synchronizer/index.d.ts +1 -1
  36. package/dest/synchronizer/server_world_state_synchronizer.d.ts +21 -31
  37. package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
  38. package/dest/synchronizer/server_world_state_synchronizer.js +144 -92
  39. package/dest/test/index.d.ts +1 -1
  40. package/dest/test/utils.d.ts +12 -5
  41. package/dest/test/utils.d.ts.map +1 -1
  42. package/dest/test/utils.js +54 -47
  43. package/dest/testing.d.ts +3 -3
  44. package/dest/testing.d.ts.map +1 -1
  45. package/dest/testing.js +7 -11
  46. package/dest/world-state-db/index.d.ts +1 -1
  47. package/dest/world-state-db/merkle_tree_db.d.ts +12 -9
  48. package/dest/world-state-db/merkle_tree_db.d.ts.map +1 -1
  49. package/package.json +24 -24
  50. package/src/instrumentation/instrumentation.ts +31 -43
  51. package/src/native/bench_metrics.ts +91 -0
  52. package/src/native/merkle_trees_facade.ts +83 -18
  53. package/src/native/message.ts +94 -74
  54. package/src/native/native_world_state.ts +132 -52
  55. package/src/native/native_world_state_instance.ts +62 -9
  56. package/src/native/world_state_ops_queue.ts +1 -1
  57. package/src/synchronizer/config.ts +48 -16
  58. package/src/synchronizer/errors.ts +5 -0
  59. package/src/synchronizer/factory.ts +38 -9
  60. package/src/synchronizer/server_world_state_synchronizer.ts +170 -117
  61. package/src/test/utils.ts +92 -82
  62. package/src/testing.ts +4 -8
  63. package/src/world-state-db/merkle_tree_db.ts +16 -8
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
+ }
@@ -7,4 +7,4 @@ export declare class ForkCheckpoint {
7
7
  commit(): Promise<void>;
8
8
  revert(): Promise<void>;
9
9
  }
10
- //# sourceMappingURL=fork_checkpoint.d.ts.map
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ya19jaGVja3BvaW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlL2ZvcmtfY2hlY2twb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRGLHFCQUFhLGNBQWM7SUFHTCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7SUFGekMsT0FBTyxDQUFDLFNBQVMsQ0FBUztJQUUxQixPQUFPLGVBQXNFO0lBRTdFLE9BQWEsR0FBRyxDQUFDLElBQUksRUFBRSw4QkFBOEIsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBRzlFO0lBRUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPNUI7SUFFSyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU81QjtDQUNGIn0=
@@ -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;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,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=
@@ -1,11 +1,11 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- import { Fr } from '@aztec/foundation/fields';
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
3
  import { type IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
5
4
  import type { BatchInsertionResult, IndexedTreeId, MerkleTreeLeafType, MerkleTreeReadOperations, MerkleTreeWriteOperations, SequentialInsertionResult, TreeInfo } from '@aztec/stdlib/interfaces/server';
6
5
  import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
7
6
  import { type BlockHeader, StateReference } from '@aztec/stdlib/tx';
8
- import { type SerializedLeafValue, type WorldStateRevision } from './message.js';
7
+ import { type WorldStateRevision, WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
8
+ import { type SerializedLeafValue } from './message.js';
9
9
  import type { NativeWorldStateInstance } from './native_world_state_instance.js';
10
10
  export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
11
11
  protected readonly instance: NativeWorldStateInstance;
@@ -13,7 +13,12 @@ export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
13
13
  protected readonly revision: WorldStateRevision;
14
14
  constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision);
15
15
  getInitialHeader(): BlockHeader;
16
+ getRevision(): WorldStateRevisionWithHandle;
16
17
  findLeafIndices(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<(bigint | undefined)[]>;
18
+ findSiblingPaths<N extends number>(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<({
19
+ path: SiblingPath<N>;
20
+ index: bigint;
21
+ } | undefined)[]>;
17
22
  findLeafIndicesAfter(treeId: MerkleTreeId, leaves: MerkleTreeLeafType<MerkleTreeId>[], startIndex: bigint): Promise<(bigint | undefined)[]>;
18
23
  getLeafPreimage(treeId: IndexedTreeId, leafIndex: bigint): Promise<IndexedTreeLeafPreimage | undefined>;
19
24
  getLeafValue<ID extends MerkleTreeId>(treeId: ID, leafIndex: bigint): Promise<MerkleTreeLeafType<ID> | undefined>;
@@ -25,18 +30,25 @@ export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
25
30
  getStateReference(): Promise<StateReference>;
26
31
  getInitialStateReference(): Promise<StateReference>;
27
32
  getTreeInfo(treeId: MerkleTreeId): Promise<TreeInfo>;
28
- getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(treeId: ID, leafIndices: bigint[]): Promise<(bigint | undefined)[]>;
33
+ getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(treeId: ID, leafIndices: bigint[]): Promise<(BlockNumber | undefined)[]>;
29
34
  }
30
35
  export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements MerkleTreeWriteOperations {
31
- constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision);
36
+ private opts;
37
+ private log;
38
+ constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision, opts: {
39
+ closeDelayMs?: number;
40
+ });
32
41
  updateArchive(header: BlockHeader): Promise<void>;
33
42
  appendLeaves<ID extends MerkleTreeId>(treeId: ID, leaves: MerkleTreeLeafType<ID>[]): Promise<void>;
34
43
  batchInsert<TreeHeight extends number, SubtreeSiblingPathHeight extends number, ID extends IndexedTreeId>(treeId: ID, rawLeaves: Buffer[], subtreeHeight: number): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
35
44
  sequentialInsert<TreeHeight extends number, ID extends IndexedTreeId>(treeId: ID, rawLeaves: Buffer[]): Promise<SequentialInsertionResult<TreeHeight>>;
36
45
  close(): Promise<void>;
46
+ [Symbol.dispose](): Promise<void>;
37
47
  createCheckpoint(): Promise<void>;
38
48
  commitCheckpoint(): Promise<void>;
39
49
  revertCheckpoint(): Promise<void>;
50
+ commitAllCheckpoints(): Promise<void>;
51
+ revertAllCheckpoints(): Promise<void>;
40
52
  }
41
53
  export declare function serializeLeaf(leaf: Fr | NullifierLeaf | PublicDataTreeLeaf): SerializedLeafValue;
42
- //# sourceMappingURL=merkle_trees_facade.d.ts.map
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVzX2ZhY2FkZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9tZXJrbGVfdHJlZXNfZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQ1Ysb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsUUFBUSxFQUNULE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBRWIsa0JBQWtCLEVBRW5CLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF5QixjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSWxHLE9BQU8sRUFFTCxLQUFLLG1CQUFtQixFQUl6QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWpGLHFCQUFhLGlCQUFrQixZQUFXLHdCQUF3QjtJQUU5RCxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSx3QkFBd0I7SUFDckQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsV0FBVztJQUM3QyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0I7SUFIakQsWUFDcUIsUUFBUSxFQUFFLHdCQUF3QixFQUNsQyxhQUFhLEVBQUUsV0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_trees_facade.d.ts","sourceRoot":"","sources":["../../src/native/merkle_trees_facade.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,aAAa,EAEb,kBAAkB,EAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,WAAW,EAAyB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAI3F,OAAO,EAEL,KAAK,mBAAmB,EAExB,KAAK,kBAAkB,EAGxB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,qBAAa,iBAAkB,YAAW,wBAAwB;IAE9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB;IACrD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW;IAC7C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB;gBAF5B,QAAQ,EAAE,wBAAwB,EAClC,aAAa,EAAE,WAAW,EAC1B,QAAQ,EAAE,kBAAkB;IAGjD,gBAAgB,IAAI,WAAW;IAI/B,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAI5G,oBAAoB,CACxB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAiB5B,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAUvG,YAAY,CAAC,EAAE,SAAS,YAAY,EACxC,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IAmBxC,qBAAqB,CACzB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IAY5D,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAUlG,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAe5C,wBAAwB,IAAI,OAAO,CAAC,cAAc,CAAC;IAanD,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcpD,6BAA6B,CAAC,EAAE,SAAS,YAAY,EACzD,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CASnC;AAED,qBAAa,qBAAsB,SAAQ,iBAAkB,YAAW,yBAAyB;gBACnF,QAAQ,EAAE,wBAAwB,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB;IAKlG,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlG,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EAC5G,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IA2BhE,gBAAgB,CAAC,UAAU,SAAS,MAAM,EAAE,EAAE,SAAS,aAAa,EACxE,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAsBpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/C;AAcD,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,CAQhG"}
1
+ {"version":3,"file":"merkle_trees_facade.d.ts","sourceRoot":"","sources":["../../src/native/merkle_trees_facade.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,13 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ var _computedKey;
2
+ import { BlockNumber } from '@aztec/foundation/branded-types';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { createLogger } from '@aztec/foundation/log';
2
5
  import { serializeToBuffer } from '@aztec/foundation/serialize';
6
+ import { sleep } from '@aztec/foundation/sleep';
3
7
  import { SiblingPath } from '@aztec/foundation/trees';
4
8
  import { MerkleTreeId, NullifierLeaf, NullifierLeafPreimage, PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
5
9
  import { PartialStateReference, StateReference } from '@aztec/stdlib/tx';
10
+ import { WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
6
11
  import assert from 'assert';
7
12
  import { WorldStateMessageType, blockStateReference, treeStateReferenceToSnapshot } from './message.js';
8
13
  export class MerkleTreesFacade {
@@ -17,9 +22,28 @@ export class MerkleTreesFacade {
17
22
  getInitialHeader() {
18
23
  return this.initialHeader;
19
24
  }
25
+ getRevision() {
26
+ return WorldStateRevisionWithHandle.fromWorldStateRevision(this.revision, this.instance.getHandle());
27
+ }
20
28
  findLeafIndices(treeId, values) {
21
29
  return this.findLeafIndicesAfter(treeId, values, 0n);
22
30
  }
31
+ async findSiblingPaths(treeId, values) {
32
+ const response = await this.instance.call(WorldStateMessageType.FIND_SIBLING_PATHS, {
33
+ leaves: values.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
34
+ revision: this.revision,
35
+ treeId
36
+ });
37
+ return response.paths.map((path)=>{
38
+ if (!path) {
39
+ return undefined;
40
+ }
41
+ return {
42
+ path: new SiblingPath(path.path.length, path.path),
43
+ index: BigInt(path.index)
44
+ };
45
+ });
46
+ }
23
47
  async findLeafIndicesAfter(treeId, leaves, startIndex) {
24
48
  const response = await this.instance.call(WorldStateMessageType.FIND_LEAF_INDICES, {
25
49
  leaves: leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
@@ -108,14 +132,17 @@ export class MerkleTreesFacade {
108
132
  revision: this.revision,
109
133
  leafIndices
110
134
  });
111
- return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined : BigInt(x));
135
+ return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined : BlockNumber(Number(x)));
112
136
  }
113
137
  }
138
+ _computedKey = Symbol.dispose;
114
139
  export class MerkleTreesForkFacade extends MerkleTreesFacade {
115
- constructor(instance, initialHeader, revision){
140
+ opts;
141
+ log;
142
+ constructor(instance, initialHeader, revision, opts){
116
143
  assert.notEqual(revision.forkId, 0, 'Fork ID must be set');
117
144
  assert.equal(revision.includeUncommitted, true, 'Fork must include uncommitted data');
118
- super(instance, initialHeader, revision);
145
+ super(instance, initialHeader, revision), this.opts = opts, this.log = createLogger('world-state:merkle-trees-fork-facade');
119
146
  }
120
147
  async updateArchive(header) {
121
148
  await this.instance.call(WorldStateMessageType.UPDATE_ARCHIVE, {
@@ -172,9 +199,32 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
172
199
  }
173
200
  async close() {
174
201
  assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
175
- await this.instance.call(WorldStateMessageType.DELETE_FORK, {
176
- forkId: this.revision.forkId
177
- });
202
+ try {
203
+ await this.instance.call(WorldStateMessageType.DELETE_FORK, {
204
+ forkId: this.revision.forkId
205
+ });
206
+ } catch (err) {
207
+ // Ignore errors due to native instance being closed during shutdown.
208
+ // This can happen when validators are still processing block proposals while the node is stopping.
209
+ if (err?.message === 'Native instance is closed') {
210
+ return;
211
+ }
212
+ throw err;
213
+ }
214
+ }
215
+ async [_computedKey]() {
216
+ if (this.opts.closeDelayMs) {
217
+ void sleep(this.opts.closeDelayMs).then(()=>this.close()).catch((err)=>{
218
+ if (err && 'message' in err && err.message === 'Native instance is closed') {
219
+ return; // Ignore errors due to native instance being closed
220
+ }
221
+ this.log.warn('Error closing MerkleTreesForkFacade after delay', {
222
+ err
223
+ });
224
+ });
225
+ } else {
226
+ await this.close();
227
+ }
178
228
  }
179
229
  async createCheckpoint() {
180
230
  assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
@@ -194,6 +244,18 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
194
244
  forkId: this.revision.forkId
195
245
  });
196
246
  }
247
+ async commitAllCheckpoints() {
248
+ assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
249
+ await this.instance.call(WorldStateMessageType.COMMIT_ALL_CHECKPOINTS, {
250
+ forkId: this.revision.forkId
251
+ });
252
+ }
253
+ async revertAllCheckpoints() {
254
+ assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
255
+ await this.instance.call(WorldStateMessageType.REVERT_ALL_CHECKPOINTS, {
256
+ forkId: this.revision.forkId
257
+ });
258
+ }
197
259
  }
198
260
  function hydrateLeaf(treeId, leaf) {
199
261
  if (leaf instanceof Fr) {
@@ -211,7 +273,7 @@ export function serializeLeaf(leaf) {
211
273
  return leaf.toBuffer();
212
274
  } else if (leaf instanceof NullifierLeaf) {
213
275
  return {
214
- value: leaf.nullifier.toBuffer()
276
+ nullifier: leaf.nullifier.toBuffer()
215
277
  };
216
278
  } else {
217
279
  return {
@@ -226,14 +288,14 @@ function deserializeLeafValue(leaf) {
226
288
  } else if ('slot' in leaf) {
227
289
  return new PublicDataTreeLeaf(Fr.fromBuffer(leaf.slot), Fr.fromBuffer(leaf.value));
228
290
  } else {
229
- return new NullifierLeaf(Fr.fromBuffer(leaf.value));
291
+ return new NullifierLeaf(Fr.fromBuffer(leaf.nullifier));
230
292
  }
231
293
  }
232
- function deserializeIndexedLeaf(leaf) {
233
- if ('slot' in leaf.value) {
234
- return new PublicDataTreeLeafPreimage(Fr.fromBuffer(leaf.value.slot), Fr.fromBuffer(leaf.value.value), Fr.fromBuffer(leaf.nextValue), BigInt(leaf.nextIndex));
235
- } else if ('value' in leaf.value) {
236
- return new NullifierLeafPreimage(Fr.fromBuffer(leaf.value.value), Fr.fromBuffer(leaf.nextValue), BigInt(leaf.nextIndex));
294
+ function deserializeIndexedLeaf(leafPreimage) {
295
+ if ('slot' in leafPreimage.leaf) {
296
+ return new PublicDataTreeLeafPreimage(new PublicDataTreeLeaf(Fr.fromBuffer(leafPreimage.leaf.slot), Fr.fromBuffer(leafPreimage.leaf.value)), Fr.fromBuffer(leafPreimage.nextKey), BigInt(leafPreimage.nextIndex));
297
+ } else if ('nullifier' in leafPreimage.leaf) {
298
+ return new NullifierLeafPreimage(new NullifierLeaf(Fr.fromBuffer(leafPreimage.leaf.nullifier)), Fr.fromBuffer(leafPreimage.nextKey), BigInt(leafPreimage.nextIndex));
237
299
  } else {
238
300
  throw new Error('Invalid leaf type');
239
301
  }