@aztec/world-state 0.0.1-commit.c2eed6949 → 0.0.1-commit.c52d6e7

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 +2 -1
  2. package/dest/index.d.ts.map +1 -1
  3. package/dest/index.js +1 -0
  4. package/dest/instrumentation/instrumentation.d.ts +4 -3
  5. package/dest/instrumentation/instrumentation.d.ts.map +1 -1
  6. package/dest/instrumentation/instrumentation.js +4 -9
  7. package/dest/native/index.d.ts +2 -1
  8. package/dest/native/index.d.ts.map +1 -1
  9. package/dest/native/index.js +1 -0
  10. package/dest/native/ipc_world_state_instance.d.ts +89 -0
  11. package/dest/native/ipc_world_state_instance.d.ts.map +1 -0
  12. package/dest/native/ipc_world_state_instance.js +670 -0
  13. package/dest/native/merkle_trees_facade.d.ts +8 -4
  14. package/dest/native/merkle_trees_facade.d.ts.map +1 -1
  15. package/dest/native/merkle_trees_facade.js +60 -115
  16. package/dest/native/message.d.ts +14 -230
  17. package/dest/native/message.d.ts.map +1 -1
  18. package/dest/native/message.js +0 -42
  19. package/dest/native/native_world_state.d.ts +19 -7
  20. package/dest/native/native_world_state.d.ts.map +1 -1
  21. package/dest/native/native_world_state.js +120 -58
  22. package/dest/native/native_world_state_instance.d.ts +56 -42
  23. package/dest/native/native_world_state_instance.d.ts.map +1 -1
  24. package/dest/native/native_world_state_instance.js +1 -203
  25. package/dest/native/world_state_operation.d.ts +7 -0
  26. package/dest/native/world_state_operation.d.ts.map +1 -0
  27. package/dest/native/world_state_operation.js +5 -0
  28. package/dest/synchronizer/config.d.ts +1 -1
  29. package/dest/synchronizer/config.d.ts.map +1 -1
  30. package/dest/synchronizer/config.js +9 -10
  31. package/dest/synchronizer/errors.d.ts +8 -1
  32. package/dest/synchronizer/errors.d.ts.map +1 -1
  33. package/dest/synchronizer/errors.js +8 -1
  34. package/dest/synchronizer/factory.d.ts +4 -4
  35. package/dest/synchronizer/factory.d.ts.map +1 -1
  36. package/dest/synchronizer/factory.js +7 -6
  37. package/dest/synchronizer/index.d.ts +2 -1
  38. package/dest/synchronizer/index.d.ts.map +1 -1
  39. package/dest/synchronizer/index.js +1 -0
  40. package/dest/synchronizer/server_world_state_synchronizer.d.ts +11 -6
  41. package/dest/synchronizer/server_world_state_synchronizer.d.ts.map +1 -1
  42. package/dest/synchronizer/server_world_state_synchronizer.js +67 -40
  43. package/dest/test/utils.d.ts +1 -1
  44. package/dest/test/utils.d.ts.map +1 -1
  45. package/dest/test/utils.js +6 -1
  46. package/dest/testing.d.ts +4 -3
  47. package/dest/testing.d.ts.map +1 -1
  48. package/dest/testing.js +22 -7
  49. package/package.json +13 -10
  50. package/src/index.ts +1 -0
  51. package/src/instrumentation/instrumentation.ts +6 -18
  52. package/src/native/index.ts +1 -0
  53. package/src/native/ipc_world_state_instance.ts +847 -0
  54. package/src/native/merkle_trees_facade.ts +85 -112
  55. package/src/native/message.ts +13 -297
  56. package/src/native/native_world_state.ts +144 -97
  57. package/src/native/native_world_state_instance.ts +94 -281
  58. package/src/native/world_state_operation.ts +33 -0
  59. package/src/synchronizer/config.ts +14 -10
  60. package/src/synchronizer/errors.ts +8 -0
  61. package/src/synchronizer/factory.ts +11 -10
  62. package/src/synchronizer/index.ts +1 -0
  63. package/src/synchronizer/server_world_state_synchronizer.ts +73 -36
  64. package/src/test/utils.ts +10 -1
  65. package/src/testing.ts +19 -10
  66. package/dest/native/world_state_ops_queue.d.ts +0 -19
  67. package/dest/native/world_state_ops_queue.d.ts.map +0 -1
  68. package/dest/native/world_state_ops_queue.js +0 -146
  69. package/src/native/world_state_ops_queue.ts +0 -190
@@ -1,10 +1,11 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { type IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
4
+ import { BlockHash } from '@aztec/stdlib/block';
4
5
  import type { BatchInsertionResult, IndexedTreeId, MerkleTreeLeafType, MerkleTreeReadOperations, MerkleTreeWriteOperations, SequentialInsertionResult, TreeInfo } from '@aztec/stdlib/interfaces/server';
5
6
  import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
6
7
  import { type BlockHeader, StateReference } from '@aztec/stdlib/tx';
7
- import { type WorldStateRevision, WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
8
+ import type { WorldStateRevision } from '@aztec/stdlib/world-state';
8
9
  import { type SerializedLeafValue } from './message.js';
9
10
  import type { NativeWorldStateInstance } from './native_world_state_instance.js';
10
11
  export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
@@ -13,7 +14,8 @@ export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
13
14
  protected readonly revision: WorldStateRevision;
14
15
  constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision);
15
16
  getInitialHeader(): BlockHeader;
16
- getRevision(): WorldStateRevisionWithHandle;
17
+ getRevision(): WorldStateRevision;
18
+ getIpcPath(): string;
17
19
  findLeafIndices(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<(bigint | undefined)[]>;
18
20
  findSiblingPaths<N extends number>(treeId: MerkleTreeId, values: MerkleTreeLeafType<MerkleTreeId>[]): Promise<({
19
21
  path: SiblingPath<N>;
@@ -35,6 +37,7 @@ export declare class MerkleTreesFacade implements MerkleTreeReadOperations {
35
37
  export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements MerkleTreeWriteOperations {
36
38
  private opts;
37
39
  private log;
40
+ private closePromise;
38
41
  constructor(instance: NativeWorldStateInstance, initialHeader: BlockHeader, revision: WorldStateRevision, opts: {
39
42
  closeDelayMs?: number;
40
43
  });
@@ -43,6 +46,7 @@ export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements
43
46
  batchInsert<TreeHeight extends number, SubtreeSiblingPathHeight extends number, ID extends IndexedTreeId>(treeId: ID, rawLeaves: Buffer[], subtreeHeight: number): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
44
47
  sequentialInsert<TreeHeight extends number, ID extends IndexedTreeId>(treeId: ID, rawLeaves: Buffer[]): Promise<SequentialInsertionResult<TreeHeight>>;
45
48
  close(): Promise<void>;
49
+ private doClose;
46
50
  [Symbol.asyncDispose](): Promise<void>;
47
51
  createCheckpoint(): Promise<number>;
48
52
  commitCheckpoint(): Promise<void>;
@@ -50,5 +54,5 @@ export declare class MerkleTreesForkFacade extends MerkleTreesFacade implements
50
54
  commitAllCheckpointsTo(depth: number): Promise<void>;
51
55
  revertAllCheckpointsTo(depth: number): Promise<void>;
52
56
  }
53
- export declare function serializeLeaf(leaf: Fr | NullifierLeaf | PublicDataTreeLeaf): SerializedLeafValue;
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVzX2ZhY2FkZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9tZXJrbGVfdHJlZXNfZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQ1Ysb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsUUFBUSxFQUNULE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBRWIsa0JBQWtCLEVBRW5CLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF5QixjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSWxHLE9BQU8sRUFFTCxLQUFLLG1CQUFtQixFQUl6QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWpGLHFCQUFhLGlCQUFrQixZQUFXLHdCQUF3QjtJQUU5RCxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSx3QkFBd0I7SUFDckQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsV0FBVztJQUM3QyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxrQkFBa0I7SUFIakQsWUFDcUIsUUFBUSxFQUFFLHdCQUF3QixFQUNsQyxhQUFhLEVBQUUsV0FBVyxFQUMxQixRQUFRLEVBQUUsa0JBQWtCLEVBQzdDO0lBRUosZ0JBQWdCLElBQUksV0FBVyxDQUU5QjtJQUVELFdBQVcsSUFBSSw0QkFBNEIsQ0FFMUM7SUFFRCxlQUFlLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUVqSDtJQUVLLGdCQUFnQixDQUFDLENBQUMsU0FBUyxNQUFNLEVBQ3JDLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUN6QyxPQUFPLENBQUMsQ0FBQztRQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFBO0tBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBYWxFO0lBRUssb0JBQW9CLENBQ3hCLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUMxQyxVQUFVLEVBQUUsTUFBTSxHQUNqQixPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQWVqQztJQUVLLGVBQWUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxDQVE1RztJQUVLLFlBQVksQ0FBQyxFQUFFLFNBQVMsWUFBWSxFQUN4QyxNQUFNLEVBQUUsRUFBRSxFQUNWLFNBQVMsRUFBRSxNQUFNLEdBQ2hCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FpQjdDO0lBRUsscUJBQXFCLENBQ3pCLE1BQU0sRUFBRSxhQUFhLEVBQ3JCLEtBQUssRUFBRSxNQUFNLEdBQ1osT0FBTyxDQUFDO1FBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUFDLGNBQWMsRUFBRSxPQUFPLENBQUE7S0FBRSxHQUFHLFNBQVMsQ0FBQyxDQVVqRTtJQUVLLGNBQWMsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBUXZHO0lBRUssaUJBQWlCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQWFqRDtJQUVLLHdCQUF3QixJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FXeEQ7SUFFSyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBWXpEO0lBRUssNkJBQTZCLENBQUMsRUFBRSxTQUFTLFlBQVksRUFDekQsTUFBTSxFQUFFLEVBQUUsRUFDVixXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQ3BCLE9BQU8sQ0FBQyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBUXRDO0NBQ0Y7QUFFRCxxQkFBYSxxQkFBc0IsU0FBUSxpQkFBa0IsWUFBVyx5QkFBeUI7SUFPN0YsT0FBTyxDQUFDLElBQUk7SUFOZCxPQUFPLENBQUMsR0FBRyxDQUF3RDtJQUVuRSxZQUNFLFFBQVEsRUFBRSx3QkFBd0IsRUFDbEMsYUFBYSxFQUFFLFdBQVcsRUFDMUIsUUFBUSxFQUFFLGtCQUFrQixFQUNwQixJQUFJLEVBQUU7UUFBRSxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxFQUt4QztJQUNLLGFBQWEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FNdEQ7SUFFSyxZQUFZLENBQUMsRUFBRSxTQUFTLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FNdkc7SUFFSyxXQUFXLENBQUMsVUFBVSxTQUFTLE1BQU0sRUFBRSx3QkFBd0IsU0FBUyxNQUFNLEVBQUUsRUFBRSxTQUFTLGFBQWEsRUFDNUcsTUFBTSxFQUFFLEVBQUUsRUFDVixTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQ25CLGFBQWEsRUFBRSxNQUFNLEdBQ3BCLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsQ0FBQyxDQXlCckU7SUFFSyxnQkFBZ0IsQ0FBQyxVQUFVLFNBQVMsTUFBTSxFQUFFLEVBQUUsU0FBUyxhQUFhLEVBQ3hFLE1BQU0sRUFBRSxFQUFFLEVBQ1YsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUNsQixPQUFPLENBQUMseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FvQmhEO0lBRVksS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FZbEM7SUFFSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBYTNDO0lBRVksZ0JBQWdCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUkvQztJQUVZLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHN0M7SUFFWSxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzdDO0lBRVksc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBTWhFO0lBRVksc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBTWhFO0NBQ0Y7QUFjRCx3QkFBZ0IsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsYUFBYSxHQUFHLGtCQUFrQixHQUFHLG1CQUFtQixDQVFoRyJ9
57
+ export declare function serializeLeaf(leaf: Fr | BlockHash | NullifierLeaf | PublicDataTreeLeaf): SerializedLeafValue;
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVzX2ZhY2FkZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25hdGl2ZS9tZXJrbGVfdHJlZXNfZmFjYWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEQsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUNWLG9CQUFvQixFQUNwQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLFFBQVEsRUFDVCxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUViLGtCQUFrQixFQUVuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBeUIsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0YsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUlwRSxPQUFPLEVBRUwsS0FBSyxtQkFBbUIsRUFHekIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVqRixxQkFBYSxpQkFBa0IsWUFBVyx3QkFBd0I7SUFFOUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCO0lBQ3JELFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVc7SUFDN0MsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCO0lBSGpELFlBQ3FCLFFBQVEs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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":"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"}
1
+ {"version":3,"file":"merkle_trees_facade.d.ts","sourceRoot":"","sources":["../../src/native/merkle_trees_facade.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,11 @@ import { createLogger } from '@aztec/foundation/log';
5
5
  import { serializeToBuffer } from '@aztec/foundation/serialize';
6
6
  import { sleep } from '@aztec/foundation/sleep';
7
7
  import { SiblingPath } from '@aztec/foundation/trees';
8
+ import { BlockHash } from '@aztec/stdlib/block';
8
9
  import { MerkleTreeId, NullifierLeaf, NullifierLeafPreimage, PublicDataTreeLeaf, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
9
10
  import { PartialStateReference, StateReference } from '@aztec/stdlib/tx';
10
- import { WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
11
11
  import assert from 'assert';
12
- import { WorldStateMessageType, blockStateReference, treeStateReferenceToSnapshot } from './message.js';
12
+ import { blockStateReference, treeStateReferenceToSnapshot } from './message.js';
13
13
  export class MerkleTreesFacade {
14
14
  instance;
15
15
  initialHeader;
@@ -23,18 +23,17 @@ export class MerkleTreesFacade {
23
23
  return this.initialHeader;
24
24
  }
25
25
  getRevision() {
26
- return WorldStateRevisionWithHandle.fromWorldStateRevision(this.revision, this.instance.getHandle());
26
+ return this.revision;
27
+ }
28
+ getIpcPath() {
29
+ return this.instance.getIpcPath();
27
30
  }
28
31
  findLeafIndices(treeId, values) {
29
32
  return this.findLeafIndicesAfter(treeId, values, 0n);
30
33
  }
31
34
  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)=>{
35
+ const paths = await this.instance.findSiblingPaths(treeId, this.revision, values.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))));
36
+ return paths.map((path)=>{
38
37
  if (!path) {
39
38
  return undefined;
40
39
  }
@@ -45,13 +44,8 @@ export class MerkleTreesFacade {
45
44
  });
46
45
  }
47
46
  async findLeafIndicesAfter(treeId, leaves, startIndex) {
48
- const response = await this.instance.call(WorldStateMessageType.FIND_LEAF_INDICES, {
49
- leaves: leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))),
50
- revision: this.revision,
51
- treeId,
52
- startIndex
53
- });
54
- return response.indices.map((index)=>{
47
+ const indices = await this.instance.findLeafIndices(treeId, this.revision, leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))), startIndex);
48
+ return indices.map((index)=>{
55
49
  if (typeof index === 'number' || typeof index === 'bigint') {
56
50
  return BigInt(index);
57
51
  } else {
@@ -60,117 +54,72 @@ export class MerkleTreesFacade {
60
54
  });
61
55
  }
62
56
  async getLeafPreimage(treeId, leafIndex) {
63
- const resp = await this.instance.call(WorldStateMessageType.GET_LEAF_PREIMAGE, {
64
- leafIndex,
65
- revision: this.revision,
66
- treeId
67
- });
57
+ const resp = await this.instance.getLeafPreimage(treeId, this.revision, leafIndex);
68
58
  return resp ? deserializeIndexedLeaf(resp) : undefined;
69
59
  }
70
60
  async getLeafValue(treeId, leafIndex) {
71
- const resp = await this.instance.call(WorldStateMessageType.GET_LEAF_VALUE, {
72
- leafIndex,
73
- revision: this.revision,
74
- treeId
75
- });
61
+ const resp = await this.instance.getLeafValue(treeId, this.revision, leafIndex);
76
62
  if (!resp) {
77
63
  return undefined;
78
64
  }
79
65
  const leaf = deserializeLeafValue(resp);
80
66
  if (leaf instanceof Fr) {
81
- return leaf;
67
+ return treeId === MerkleTreeId.ARCHIVE ? new BlockHash(leaf) : leaf;
82
68
  } else {
83
69
  return leaf.toBuffer();
84
70
  }
85
71
  }
86
72
  async getPreviousValueIndex(treeId, value) {
87
- const resp = await this.instance.call(WorldStateMessageType.FIND_LOW_LEAF, {
88
- key: new Fr(value),
89
- revision: this.revision,
90
- treeId
91
- });
73
+ const resp = await this.instance.findLowLeaf(treeId, this.revision, new Fr(value));
92
74
  return {
93
75
  alreadyPresent: resp.alreadyPresent,
94
76
  index: BigInt(resp.index)
95
77
  };
96
78
  }
97
79
  async getSiblingPath(treeId, leafIndex) {
98
- const siblingPath = await this.instance.call(WorldStateMessageType.GET_SIBLING_PATH, {
99
- leafIndex,
100
- revision: this.revision,
101
- treeId
102
- });
80
+ const siblingPath = await this.instance.getSiblingPath(treeId, this.revision, leafIndex);
103
81
  return new SiblingPath(siblingPath.length, siblingPath);
104
82
  }
105
83
  async getStateReference() {
106
- const resp = await this.instance.call(WorldStateMessageType.GET_STATE_REFERENCE, {
107
- revision: this.revision
108
- });
109
- 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])));
84
+ const state = await this.instance.getStateReference(this.revision);
85
+ return new StateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]), new PartialStateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.NOTE_HASH_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.NULLIFIER_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.PUBLIC_DATA_TREE])));
110
86
  }
111
87
  async getInitialStateReference() {
112
- const resp = await this.instance.call(WorldStateMessageType.GET_INITIAL_STATE_REFERENCE, {
113
- canonical: true
114
- });
115
- 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])));
88
+ const state = await this.instance.getInitialStateReference();
89
+ return new StateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]), new PartialStateReference(treeStateReferenceToSnapshot(state[MerkleTreeId.NOTE_HASH_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.NULLIFIER_TREE]), treeStateReferenceToSnapshot(state[MerkleTreeId.PUBLIC_DATA_TREE])));
116
90
  }
117
91
  async getTreeInfo(treeId) {
118
- const resp = await this.instance.call(WorldStateMessageType.GET_TREE_INFO, {
119
- treeId: treeId,
120
- revision: this.revision
121
- });
122
- return {
123
- depth: resp.depth,
124
- root: resp.root,
125
- size: BigInt(resp.size),
126
- treeId
127
- };
92
+ return await this.instance.getTreeInfo(treeId, this.revision);
128
93
  }
129
94
  async getBlockNumbersForLeafIndices(treeId, leafIndices) {
130
- const response = await this.instance.call(WorldStateMessageType.GET_BLOCK_NUMBERS_FOR_LEAF_INDICES, {
131
- treeId,
132
- revision: this.revision,
133
- leafIndices
134
- });
135
- return response.blockNumbers.map((x)=>x === undefined || x === null ? undefined : BlockNumber(Number(x)));
95
+ const blockNumbers = await this.instance.getBlockNumbersForLeafIndices(treeId, this.revision, leafIndices);
96
+ return blockNumbers.map((x)=>x === undefined || x === null ? undefined : BlockNumber(Number(x)));
136
97
  }
137
98
  }
138
99
  _computedKey = Symbol.asyncDispose;
139
100
  export class MerkleTreesForkFacade extends MerkleTreesFacade {
140
101
  opts;
141
102
  log;
103
+ closePromise;
142
104
  constructor(instance, initialHeader, revision, opts){
143
105
  assert.notEqual(revision.forkId, 0, 'Fork ID must be set');
144
106
  assert.equal(revision.includeUncommitted, true, 'Fork must include uncommitted data');
145
107
  super(instance, initialHeader, revision), this.opts = opts, this.log = createLogger('world-state:merkle-trees-fork-facade');
146
108
  }
147
109
  async updateArchive(header) {
148
- await this.instance.call(WorldStateMessageType.UPDATE_ARCHIVE, {
149
- forkId: this.revision.forkId,
150
- blockHeaderHash: (await header.hash()).toBuffer(),
151
- blockStateRef: blockStateReference(header.state)
152
- });
110
+ await this.instance.updateArchive(this.revision.forkId, blockStateReference(header.state), (await header.hash()).toBuffer());
153
111
  }
154
112
  async appendLeaves(treeId, leaves) {
155
- await this.instance.call(WorldStateMessageType.APPEND_LEAVES, {
156
- leaves: leaves.map((leaf)=>leaf),
157
- forkId: this.revision.forkId,
158
- treeId
159
- });
113
+ await this.instance.appendLeaves(treeId, this.revision.forkId, leaves.map((leaf)=>serializeLeaf(hydrateLeaf(treeId, leaf))));
160
114
  }
161
115
  async batchInsert(treeId, rawLeaves, subtreeHeight) {
162
116
  const leaves = rawLeaves.map((leaf)=>hydrateLeaf(treeId, leaf)).map(serializeLeaf);
163
- const resp = await this.instance.call(WorldStateMessageType.BATCH_INSERT, {
164
- leaves,
165
- treeId,
166
- forkId: this.revision.forkId,
167
- subtreeDepth: subtreeHeight
168
- });
117
+ const resp = await this.instance.batchInsert(treeId, this.revision.forkId, leaves, subtreeHeight);
169
118
  return {
170
- newSubtreeSiblingPath: new SiblingPath(resp.subtree_path.length, resp.subtree_path),
171
- sortedNewLeaves: resp.sorted_leaves.map(([leaf])=>leaf).map(deserializeLeafValue).map(serializeToBuffer),
172
- sortedNewLeavesIndexes: resp.sorted_leaves.map(([, index])=>index),
173
- lowLeavesWitnessData: resp.low_leaf_witness_data.map((data)=>({
119
+ newSubtreeSiblingPath: new SiblingPath(resp.subtreePath.length, resp.subtreePath),
120
+ sortedNewLeaves: resp.sortedLeaves.map(([leaf])=>leaf).map(deserializeLeafValue).map(serializeToBuffer),
121
+ sortedNewLeavesIndexes: resp.sortedLeaves.map(([, index])=>index),
122
+ lowLeavesWitnessData: resp.lowLeafWitnessData.map((data)=>({
174
123
  index: BigInt(data.index),
175
124
  leafPreimage: deserializeIndexedLeaf(data.leaf),
176
125
  siblingPath: new SiblingPath(data.path.length, data.path)
@@ -179,34 +128,42 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
179
128
  }
180
129
  async sequentialInsert(treeId, rawLeaves) {
181
130
  const leaves = rawLeaves.map((leaf)=>hydrateLeaf(treeId, leaf)).map(serializeLeaf);
182
- const resp = await this.instance.call(WorldStateMessageType.SEQUENTIAL_INSERT, {
183
- leaves,
184
- treeId,
185
- forkId: this.revision.forkId
186
- });
131
+ const resp = await this.instance.sequentialInsert(treeId, this.revision.forkId, leaves);
187
132
  return {
188
- lowLeavesWitnessData: resp.low_leaf_witness_data.map((data)=>({
133
+ lowLeavesWitnessData: resp.lowLeafWitnessData.map((data)=>({
189
134
  index: BigInt(data.index),
190
135
  leafPreimage: deserializeIndexedLeaf(data.leaf),
191
136
  siblingPath: new SiblingPath(data.path.length, data.path)
192
137
  })),
193
- insertionWitnessData: resp.insertion_witness_data.map((data)=>({
138
+ insertionWitnessData: resp.insertionWitnessData.map((data)=>({
194
139
  index: BigInt(data.index),
195
140
  leafPreimage: deserializeIndexedLeaf(data.leaf),
196
141
  siblingPath: new SiblingPath(data.path.length, data.path)
197
142
  }))
198
143
  };
199
144
  }
200
- async close() {
145
+ close() {
201
146
  assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
147
+ // Share the in-flight close promise across duplicate dispose calls so DELETE_FORK is sent at most once.
148
+ if (this.closePromise) {
149
+ return this.closePromise;
150
+ }
151
+ this.closePromise = this.doClose();
152
+ return this.closePromise;
153
+ }
154
+ async doClose() {
202
155
  try {
203
- await this.instance.call(WorldStateMessageType.DELETE_FORK, {
204
- forkId: this.revision.forkId
205
- });
156
+ await this.instance.deleteFork(this.revision.forkId);
206
157
  } catch (err) {
207
158
  // Ignore errors due to native instance being closed during shutdown.
208
159
  // This can happen when validators are still processing block proposals while the node is stopping.
209
- if (err?.message === 'Native instance is closed') {
160
+ if (err?.message === 'Native instance is closed' || err?.message === 'IPC instance is closed') {
161
+ return;
162
+ }
163
+ // Ignore "Fork not found": the native fork was already destroyed by a pending-chain unwind or a
164
+ // historical prune (both call C++ remove_forks_for_block). Fork IDs are monotonic and never reused,
165
+ // so swallowing this on close cannot mask a deletion of a different fork.
166
+ if (err?.message === 'Fork not found') {
210
167
  return;
211
168
  }
212
169
  throw err;
@@ -215,9 +172,6 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
215
172
  async [_computedKey]() {
216
173
  if (this.opts.closeDelayMs) {
217
174
  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
175
  this.log.warn('Error closing MerkleTreesForkFacade after delay', {
222
176
  err
223
177
  });
@@ -228,41 +182,30 @@ export class MerkleTreesForkFacade extends MerkleTreesFacade {
228
182
  }
229
183
  async createCheckpoint() {
230
184
  assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
231
- const resp = await this.instance.call(WorldStateMessageType.CREATE_CHECKPOINT, {
232
- forkId: this.revision.forkId
233
- });
234
- return resp.depth;
185
+ return await this.instance.createCheckpoint(this.revision.forkId);
235
186
  }
236
187
  async commitCheckpoint() {
237
188
  assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
238
- await this.instance.call(WorldStateMessageType.COMMIT_CHECKPOINT, {
239
- forkId: this.revision.forkId
240
- });
189
+ await this.instance.commitCheckpoint(this.revision.forkId);
241
190
  }
242
191
  async revertCheckpoint() {
243
192
  assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
244
- await this.instance.call(WorldStateMessageType.REVERT_CHECKPOINT, {
245
- forkId: this.revision.forkId
246
- });
193
+ await this.instance.revertCheckpoint(this.revision.forkId);
247
194
  }
248
195
  async commitAllCheckpointsTo(depth) {
249
196
  assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
250
- await this.instance.call(WorldStateMessageType.COMMIT_ALL_CHECKPOINTS, {
251
- forkId: this.revision.forkId,
252
- depth
253
- });
197
+ await this.instance.commitAllCheckpoints(this.revision.forkId, depth);
254
198
  }
255
199
  async revertAllCheckpointsTo(depth) {
256
200
  assert.notEqual(this.revision.forkId, 0, 'Fork ID must be set');
257
- await this.instance.call(WorldStateMessageType.REVERT_ALL_CHECKPOINTS, {
258
- forkId: this.revision.forkId,
259
- depth
260
- });
201
+ await this.instance.revertAllCheckpoints(this.revision.forkId, depth);
261
202
  }
262
203
  }
263
204
  function hydrateLeaf(treeId, leaf) {
264
205
  if (leaf instanceof Fr) {
265
206
  return leaf;
207
+ } else if (leaf instanceof BlockHash) {
208
+ return leaf.toFr();
266
209
  } else if (treeId === MerkleTreeId.NULLIFIER_TREE) {
267
210
  return NullifierLeaf.fromBuffer(leaf);
268
211
  } else if (treeId === MerkleTreeId.PUBLIC_DATA_TREE) {
@@ -272,7 +215,9 @@ function hydrateLeaf(treeId, leaf) {
272
215
  }
273
216
  }
274
217
  export function serializeLeaf(leaf) {
275
- if (leaf instanceof Fr) {
218
+ if (leaf instanceof BlockHash) {
219
+ return leaf.toBuffer();
220
+ } else if (leaf instanceof Fr) {
276
221
  return leaf.toBuffer();
277
222
  } else if (leaf instanceof NullifierLeaf) {
278
223
  return {