@aztec/world-state 0.21.0 → 0.22.0

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.
@@ -1,10 +1,8 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { L2Block, MerkleTreeId } from '@aztec/circuit-types';
3
- import { NullifierLeafPreimage, StateReference } from '@aztec/circuits.js';
4
- import { Fr } from '@aztec/foundation/fields';
2
+ import { L2Block, MerkleTreeId, SiblingPath } from '@aztec/circuit-types';
3
+ import { Header, NullifierLeafPreimage, StateReference } from '@aztec/circuits.js';
5
4
  import { IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
6
5
  import { BatchInsertionResult } from '@aztec/merkle-tree';
7
- import { SiblingPath } from '@aztec/types/membership';
8
6
  /**
9
7
  * Type alias for the nullifier tree ID.
10
8
  */
@@ -49,6 +47,10 @@ export interface MerkleTreeOperations {
49
47
  * Gets the current state reference.
50
48
  */
51
49
  getStateReference(): Promise<StateReference>;
50
+ /**
51
+ * Builds the initial header.
52
+ */
53
+ buildInitialHeader(): Promise<Header>;
52
54
  /**
53
55
  * Gets sibling path for a leaf.
54
56
  * @param treeId - The tree to be queried for a sibling path.
@@ -96,20 +98,11 @@ export interface MerkleTreeOperations {
96
98
  */
97
99
  getLeafValue(treeId: MerkleTreeId, index: bigint): Promise<Buffer | undefined>;
98
100
  /**
99
- * Inserts the new block hash into the archive.
101
+ * Inserts the block hash into the archive.
100
102
  * This includes all of the current roots of all of the data trees and the current blocks global vars.
101
- * @param globalVariablesHash - The global variables hash to insert into the block hash.
102
- */
103
- updateArchive(globalVariablesHash: Fr): Promise<void>;
104
- /**
105
- * Updates the latest global variables hash
106
- * @param globalVariablesHash - The latest global variables hash
107
- */
108
- updateLatestGlobalVariablesHash(globalVariablesHash: Fr): Promise<void>;
109
- /**
110
- * Gets the global variables hash from the previous block
103
+ * @param header - The header to insert into the archive.
111
104
  */
112
- getLatestGlobalVariablesHash(): Promise<Fr>;
105
+ updateArchive(header: Header): Promise<void>;
113
106
  /**
114
107
  * Batch insert multiple leaves into the tree.
115
108
  * @param leaves - Leaves to insert into the tree.
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_tree_operations.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_tree_operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merkle_tree_operations.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_tree_operations.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,4 @@ export async function inspectTree(db, treeId, log = createDebugLogger('aztec:ins
10
10
  }
11
11
  log(output.join('\n'));
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfb3BlcmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JsZC1zdGF0ZS1kYi9tZXJrbGVfdHJlZV9vcGVyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBc0sxRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixFQUF3QixFQUN4QixNQUFvQixFQUNwQixHQUFHLEdBQUcsaUJBQWlCLENBQUMsb0JBQW9CLENBQUM7SUFFN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLENBQUMsV0FBVyxNQUFNLFNBQVMsSUFBSSxDQUFDLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNuQyxNQUFNLENBQUMsSUFBSSxDQUNULFNBQVMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUN6RyxDQUFDO0lBQ0osQ0FBQztJQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyJ9
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfb3BlcmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JsZC1zdGF0ZS1kYi9tZXJrbGVfdHJlZV9vcGVyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBK0oxRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixFQUF3QixFQUN4QixNQUFvQixFQUNwQixHQUFHLEdBQUcsaUJBQWlCLENBQUMsb0JBQW9CLENBQUM7SUFFN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLENBQUMsV0FBVyxNQUFNLFNBQVMsSUFBSSxDQUFDLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNuQyxNQUFNLENBQUMsSUFBSSxDQUNULFNBQVMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUN6RyxDQUFDO0lBQ0osQ0FBQztJQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyJ9
@@ -1,10 +1,8 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { L2Block, MerkleTreeId } from '@aztec/circuit-types';
3
- import { NullifierLeafPreimage, StateReference } from '@aztec/circuits.js';
4
- import { Fr } from '@aztec/foundation/fields';
2
+ import { L2Block, MerkleTreeId, SiblingPath } from '@aztec/circuit-types';
3
+ import { Header, NullifierLeafPreimage, StateReference } from '@aztec/circuits.js';
5
4
  import { IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
6
5
  import { BatchInsertionResult } from '@aztec/merkle-tree';
7
- import { SiblingPath } from '@aztec/types/membership';
8
6
  import { MerkleTreeDb } from './merkle_tree_db.js';
9
7
  import { HandleL2BlockResult, MerkleTreeOperations, TreeInfo } from './merkle_tree_operations.js';
10
8
  /**
@@ -26,6 +24,11 @@ export declare class MerkleTreeOperationsFacade implements MerkleTreeOperations
26
24
  * @returns The current state reference.
27
25
  */
28
26
  getStateReference(): Promise<StateReference>;
27
+ /**
28
+ * Builds the initial header.
29
+ * @returns The initial header.
30
+ */
31
+ buildInitialHeader(): Promise<Header>;
29
32
  /**
30
33
  * Appends a set of leaf values to the tree.
31
34
  * @param treeId - Id of the tree to append leaves to.
@@ -90,18 +93,9 @@ export declare class MerkleTreeOperationsFacade implements MerkleTreeOperations
90
93
  /**
91
94
  * Inserts the new block hash into the archive.
92
95
  * This includes all of the current roots of all of the data trees and the current blocks global vars.
93
- * @param globalVariablesHash - The global variables hash to insert into the block hash.
94
- */
95
- updateArchive(globalVariablesHash: Fr): Promise<void>;
96
- /**
97
- * Updates the latest global variables hash
98
- * @param globalVariablesHash - The latest global variables hash
99
- */
100
- updateLatestGlobalVariablesHash(globalVariablesHash: Fr): Promise<void>;
101
- /**
102
- * Gets the global variables hash from the previous block
96
+ * @param header - The header to insert into the archive.
103
97
  */
104
- getLatestGlobalVariablesHash(): Promise<Fr>;
98
+ updateArchive(header: Header): Promise<void>;
105
99
  /**
106
100
  * Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
107
101
  * @param block - The L2 block to handle.
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_tree_operations_facade.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_tree_operations_facade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merkle_tree_operations_facade.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_tree_operations_facade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAElG;;GAEG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IACzD,OAAO,CAAC,KAAK;IAAgB,OAAO,CAAC,kBAAkB;gBAA/C,KAAK,EAAE,YAAY,EAAU,kBAAkB,EAAE,OAAO;IAE5E;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIpD;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAI5C;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;;;;OAKG;IACG,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAKpG;;;;;;OAMG;IACH,qBAAqB,CACnB,MAAM,EAAE,YAAY,CAAC,cAAc,EACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CACN;QACE;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,cAAc,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,CACZ;IAID;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,cAAc,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1G;;;;;OAKG;IACG,eAAe,CACnB,MAAM,EAAE,YAAY,CAAC,cAAc,EACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAK/C;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/E;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9E;;;;OAIG;IACI,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIlE;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;;OAGG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC;;;;;;OAMG;IACI,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EACnF,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;CAGvE"}
@@ -22,6 +22,13 @@ export class MerkleTreeOperationsFacade {
22
22
  getStateReference() {
23
23
  return this.trees.getStateReference(this.includeUncommitted);
24
24
  }
25
+ /**
26
+ * Builds the initial header.
27
+ * @returns The initial header.
28
+ */
29
+ buildInitialHeader() {
30
+ return this.trees.buildInitialHeader(this.includeUncommitted);
31
+ }
25
32
  /**
26
33
  * Appends a set of leaf values to the tree.
27
34
  * @param treeId - Id of the tree to append leaves to.
@@ -93,23 +100,10 @@ export class MerkleTreeOperationsFacade {
93
100
  /**
94
101
  * Inserts the new block hash into the archive.
95
102
  * This includes all of the current roots of all of the data trees and the current blocks global vars.
96
- * @param globalVariablesHash - The global variables hash to insert into the block hash.
97
- */
98
- updateArchive(globalVariablesHash) {
99
- return this.trees.updateArchive(globalVariablesHash, this.includeUncommitted);
100
- }
101
- /**
102
- * Updates the latest global variables hash
103
- * @param globalVariablesHash - The latest global variables hash
104
- */
105
- updateLatestGlobalVariablesHash(globalVariablesHash) {
106
- return this.trees.updateLatestGlobalVariablesHash(globalVariablesHash, this.includeUncommitted);
107
- }
108
- /**
109
- * Gets the global variables hash from the previous block
103
+ * @param header - The header to insert into the archive.
110
104
  */
111
- getLatestGlobalVariablesHash() {
112
- return this.trees.getLatestGlobalVariablesHash(this.includeUncommitted);
105
+ updateArchive(header) {
106
+ return this.trees.updateArchive(header, this.includeUncommitted);
113
107
  }
114
108
  /**
115
109
  * Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
@@ -144,4 +138,4 @@ export class MerkleTreeOperationsFacade {
144
138
  return this.trees.batchInsert(treeId, leaves, subtreeHeight);
145
139
  }
146
140
  }
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfb3BlcmF0aW9uc19mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ybGQtc3RhdGUtZGIvbWVya2xlX3RyZWVfb3BlcmF0aW9uc19mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLEtBQW1CLEVBQVUsa0JBQTJCO1FBQXhELFVBQUssR0FBTCxLQUFLLENBQWM7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVM7SUFBRyxDQUFDO0lBRWhGOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLE1BQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLE1BQW9CLEVBQUUsTUFBZ0I7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBbUIsTUFBb0IsRUFBRSxLQUFhO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRixPQUFPLElBQWlDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHFCQUFxQixDQUNuQixNQUFtQyxFQUNuQyxLQUFhO1FBY2IsT0FBTyxJ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
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfb3BlcmF0aW9uc19mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ybGQtc3RhdGUtZGIvbWVya2xlX3RyZWVfb3BlcmF0aW9uc19mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQW9CLEtBQW1CLEVBQVUsa0JBQTJCO1FBQXhELFVBQUssR0FBTCxLQUFLLENBQWM7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVM7SUFBRyxDQUFDO0lBRWhGOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLE1BQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLE1BQW9CLEVBQUUsTUFBZ0I7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBbUIsTUFBb0IsRUFBRSxLQUFhO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRixPQUFPLElBQWlDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHFCQUFxQixDQUNuQixNQUFtQyxFQUNuQyxLQUFhO1FBY2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxNQUFtQyxFQUFFLElBQTJCLEVBQUUsS0FBYTtRQUN4RixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsTUFBbUMsRUFDbkMsS0FBYTtRQUViLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRixPQUFPLFFBQStDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLE1BQW9CLEVBQUUsS0FBYTtRQUMvQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFlBQVksQ0FBQyxNQUFvQixFQUFFLEtBQWE7UUFDOUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksYUFBYSxDQUFDLE1BQWM7UUFDakMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsS0FBYztRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQixPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFFBQVE7UUFDbkIsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FDaEIsTUFBb0IsRUFDcEIsTUFBZ0IsRUFDaEIsYUFBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiJ9
@@ -1,9 +1,8 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { MerkleTreeId } from '@aztec/circuit-types';
3
- import { Fr, StateReference } from '@aztec/circuits.js';
2
+ import { MerkleTreeId, SiblingPath } from '@aztec/circuit-types';
3
+ import { Header, StateReference } from '@aztec/circuits.js';
4
4
  import { IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
5
5
  import { BatchInsertionResult } from '@aztec/merkle-tree';
6
- import { SiblingPath } from '@aztec/types/membership';
7
6
  import { MerkleTreeDb } from './merkle_tree_db.js';
8
7
  import { HandleL2BlockResult, MerkleTreeOperations, TreeInfo } from './merkle_tree_operations.js';
9
8
  /**
@@ -13,7 +12,6 @@ export declare class MerkleTreeSnapshotOperationsFacade implements MerkleTreeOpe
13
12
  #private;
14
13
  constructor(trees: MerkleTreeDb, blockNumber: number);
15
14
  findLeafIndex(treeId: MerkleTreeId, value: Buffer): Promise<bigint | undefined>;
16
- getLatestGlobalVariablesHash(): Promise<Fr>;
17
15
  getLeafPreimage(treeId: MerkleTreeId.NULLIFIER_TREE, index: bigint): Promise<IndexedTreeLeafPreimage | undefined>;
18
16
  getLeafValue(treeId: MerkleTreeId, index: bigint): Promise<Buffer | undefined>;
19
17
  getPreviousValueIndex(treeId: MerkleTreeId.NULLIFIER_TREE, value: bigint): Promise<{
@@ -36,7 +34,7 @@ export declare class MerkleTreeSnapshotOperationsFacade implements MerkleTreeOpe
36
34
  handleL2Block(): Promise<HandleL2BlockResult>;
37
35
  rollback(): Promise<void>;
38
36
  updateHistoricArchive(): Promise<void>;
39
- updateLatestGlobalVariablesHash(): Promise<void>;
40
37
  updateLeaf(): Promise<void>;
38
+ buildInitialHeader(): Promise<Header>;
41
39
  }
42
40
  //# sourceMappingURL=merkle_tree_snapshot_operations_facade.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_tree_snapshot_operations_facade.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_tree_snapshot_operations_facade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAA0B,EAAE,EAAyB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAqC,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAElG;;GAEG;AACH,qBAAa,kCAAmC,YAAW,oBAAoB;;gBAKjE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM;IAc9C,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKrF,4BAA4B,IAAI,OAAO,CAAC,EAAE,CAAC;IAIrC,eAAe,CACnB,MAAM,EAAE,YAAY,CAAC,cAAc,EACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAKzC,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK9E,qBAAqB,CACzB,MAAM,EAAE,YAAY,CAAC,cAAc,EACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CACN;QACE;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,cAAc,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,CACZ;IAKK,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAK9F,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUpD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAoClD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,KAAK,OAAO,CACxF,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAC3D;IAID,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
1
+ {"version":3,"file":"merkle_tree_snapshot_operations_facade.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_tree_snapshot_operations_facade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAA8B,MAAM,EAAyB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/G,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAqC,MAAM,oBAAoB,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAElG;;GAEG;AACH,qBAAa,kCAAmC,YAAW,oBAAoB;;gBAKjE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM;IAc9C,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK/E,eAAe,CACnB,MAAM,EAAE,YAAY,CAAC,cAAc,EACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAKzC,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK9E,qBAAqB,CACzB,MAAM,EAAE,YAAY,CAAC,cAAc,EACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CACN;QACE;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,cAAc,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,CACZ;IAKK,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAK9F,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUpD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAoClD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,KAAK,OAAO,CACxF,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAC3D;IAID,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;CAGtC"}
@@ -18,9 +18,6 @@ export class MerkleTreeSnapshotOperationsFacade {
18
18
  const tree = await __classPrivateFieldGet(this, _MerkleTreeSnapshotOperationsFacade_instances, "m", _MerkleTreeSnapshotOperationsFacade_getTreeSnapshot).call(this, treeId);
19
19
  return tree.findLeafIndex(value);
20
20
  }
21
- getLatestGlobalVariablesHash() {
22
- return Promise.reject(new Error('not implemented'));
23
- }
24
21
  async getLeafPreimage(treeId, index) {
25
22
  const snapshot = (await __classPrivateFieldGet(this, _MerkleTreeSnapshotOperationsFacade_instances, "m", _MerkleTreeSnapshotOperationsFacade_getTreeSnapshot).call(this, treeId));
26
23
  return snapshot.getLatestLeafPreimageCopy(BigInt(index));
@@ -78,12 +75,12 @@ export class MerkleTreeSnapshotOperationsFacade {
78
75
  updateHistoricArchive() {
79
76
  return Promise.reject(new Error('Tree snapshot operations are read-only'));
80
77
  }
81
- updateLatestGlobalVariablesHash() {
82
- return Promise.reject(new Error('Tree snapshot operations are read-only'));
83
- }
84
78
  updateLeaf() {
85
79
  return Promise.reject(new Error('Tree snapshot operations are read-only'));
86
80
  }
81
+ buildInitialHeader() {
82
+ throw new Error('Building initial header not supported on snapshot.');
83
+ }
87
84
  }
88
85
  _MerkleTreeSnapshotOperationsFacade_treesDb = new WeakMap(), _MerkleTreeSnapshotOperationsFacade_blockNumber = new WeakMap(), _MerkleTreeSnapshotOperationsFacade_treeSnapshots = new WeakMap(), _MerkleTreeSnapshotOperationsFacade_instances = new WeakSet(), _MerkleTreeSnapshotOperationsFacade_getTreeSnapshot = async function _MerkleTreeSnapshotOperationsFacade_getTreeSnapshot(merkleTreeId) {
89
86
  if (__classPrivateFieldGet(this, _MerkleTreeSnapshotOperationsFacade_treeSnapshots, "f")[merkleTreeId]) {
@@ -92,4 +89,4 @@ _MerkleTreeSnapshotOperationsFacade_treesDb = new WeakMap(), _MerkleTreeSnapshot
92
89
  __classPrivateFieldSet(this, _MerkleTreeSnapshotOperationsFacade_treeSnapshots, await __classPrivateFieldGet(this, _MerkleTreeSnapshotOperationsFacade_treesDb, "f").getSnapshot(__classPrivateFieldGet(this, _MerkleTreeSnapshotOperationsFacade_blockNumber, "f")), "f");
93
90
  return __classPrivateFieldGet(this, _MerkleTreeSnapshotOperationsFacade_treeSnapshots, "f")[merkleTreeId];
94
91
  };
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfc25hcHNob3Rfb3BlcmF0aW9uc19mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ybGQtc3RhdGUtZGIvbWVya2xlX3RyZWVfc25hcHNob3Rfb3BlcmF0aW9uc19mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVF2Rzs7R0FFRztBQUNILE1BQU0sT0FBTyxrQ0FBa0M7SUFLN0MsWUFBWSxLQUFtQixFQUFFLFdBQW1COztRQUpwRCw4REFBdUI7UUFDdkIsa0VBQXFCO1FBQ3JCLDREQUFvRSxFQUFFLEVBQUM7UUFHckUsdUJBQUEsSUFBSSwrQ0FBWSxLQUFLLE1BQUEsQ0FBQztRQUN0Qix1QkFBQSxJQUFJLG1EQUFnQixXQUFXLE1BQUEsQ0FBQztJQUNsQyxDQUFDO0lBV0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFvQixFQUFFLEtBQWE7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSx1QkFBQSxJQUFJLDBHQUFpQixNQUFyQixJQUFJLEVBQWtCLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsNEJBQTRCO1FBQzFCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQ25CLE1BQW1DLEVBQ25DLEtBQWE7UUFFYixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sdUJBQUEsSUFBSSwwR0FBaUIsTUFBckIsSUFBSSxFQUFrQixNQUFNLENBQUMsQ0FBd0IsQ0FBQztR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
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVfc25hcHNob3Rfb3BlcmF0aW9uc19mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ybGQtc3RhdGUtZGIvbWVya2xlX3RyZWVfc25hcHNob3Rfb3BlcmF0aW9uc19mYWNhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsRUFBVSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQU8vRzs7R0FFRztBQUNILE1BQU0sT0FBTyxrQ0FBa0M7SUFLN0MsWUFBWSxLQUFtQixFQUFFLFdBQW1COztRQUpwRCw4REFBdUI7UUFDdkIsa0VBQXFCO1FBQ3JCLDREQUFvRSxFQUFFLEVBQUM7UUFHckUsdUJBQUEsSUFBSSwrQ0FBWSxLQUFLLE1BQUEsQ0FBQztRQUN0Qix1QkFBQSxJQUFJLG1EQUFnQixXQUFXLE1BQUEsQ0FBQztJQUNsQyxDQUFDO0lBV0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFvQixFQUFFLEtBQWE7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSx1QkFBQSxJQUFJLDBHQUFpQixNQUFyQixJQUFJLEVBQWtCLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsTUFBbUMsRUFDbkMsS0FBYTtRQUViLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSx1QkFBQSxJQUFJLDBHQUFpQixNQUFyQixJQUFJLEVBQWtCLE1BQU0sQ0FBQyxDQUF3QixDQUFDO1FBQzlFLE9BQU8sUUFBUSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsWUFB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
@@ -1,21 +1,12 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { L2Block, MerkleTreeId } from '@aztec/circuit-types';
3
- import { Fr, StateReference } from '@aztec/circuits.js';
2
+ import { L2Block, MerkleTreeId, SiblingPath } from '@aztec/circuit-types';
3
+ import { Header, StateReference } from '@aztec/circuits.js';
4
+ import { DebugLogger } from '@aztec/foundation/log';
4
5
  import { IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
5
6
  import { AztecKVStore } from '@aztec/kv-store';
6
7
  import { BatchInsertionResult } from '@aztec/merkle-tree';
7
- import { SiblingPath } from '@aztec/types/membership';
8
8
  import { MerkleTreeDb } from './merkle_tree_db.js';
9
9
  import { HandleL2BlockResult, IndexedTreeId, MerkleTreeOperations, TreeInfo } from './merkle_tree_operations.js';
10
- /**
11
- * Data necessary to reinitialize the merkle trees from Db.
12
- */
13
- interface FromDbOptions {
14
- /**
15
- * The global variables hash from the last block.
16
- */
17
- globalVariablesHash: Fr;
18
- }
19
10
  /**
20
11
  * A convenience class for managing multiple merkle trees.
21
12
  */
@@ -24,20 +15,15 @@ export declare class MerkleTrees implements MerkleTreeDb {
24
15
  private store;
25
16
  private log;
26
17
  private trees;
27
- private latestGlobalVariablesHash;
28
18
  private jobQueue;
29
- constructor(store: AztecKVStore, log?: import("@aztec/foundation/log").DebugLogger);
30
- /**
31
- * initializes the collection of Merkle Trees.
32
- * @param fromDbOptions - Options to initialize the trees from the database.
33
- */
34
- init(fromDbOptions?: FromDbOptions): Promise<void>;
19
+ private constructor();
35
20
  /**
36
21
  * Method to asynchronously create and initialize a MerkleTrees instance.
37
22
  * @param store - The db instance to use for data persistance.
38
23
  * @returns - A fully initialized MerkleTrees instance.
39
24
  */
40
- static new(store: AztecKVStore): Promise<MerkleTrees>;
25
+ static new(store: AztecKVStore, log?: DebugLogger): Promise<MerkleTrees>;
26
+ buildInitialHeader(includeUncommitted: boolean): Promise<Header>;
41
27
  /**
42
28
  * Stops the job queue (waits for all jobs to finish).
43
29
  */
@@ -53,22 +39,11 @@ export declare class MerkleTrees implements MerkleTreeDb {
53
39
  */
54
40
  asCommitted(): MerkleTreeOperations;
55
41
  /**
56
- * Inserts into the roots trees (CONTRACT_TREE_ROOTS_TREE, NOTE_HASH_TREE_ROOTS_TREE, L1_TO_L2_MESSAGE_TREE_ROOTS_TREE)
57
- * the current roots of the corresponding trees (CONTRACT_TREE, NOTE_HASH_TREE, L1_TO_L2_MESSAGE_TREE).
58
- * @param globalsHash - The current global variables hash.
59
- * @param includeUncommitted - Indicates whether to include uncommitted data.
60
- */
61
- updateArchive(globalsHash: Fr, includeUncommitted: boolean): Promise<void>;
62
- /**
63
- * Updates the latest global variables hash
64
- * @param globalVariablesHash - The latest global variables hash
65
- */
66
- updateLatestGlobalVariablesHash(globalVariablesHash: Fr): Promise<void>;
67
- /**
68
- * Gets the global variables hash from the previous block
42
+ * Updates the archive with the new block/header hash.
43
+ * @param header - The header whose hash to insert into the archive.
69
44
  * @param includeUncommitted - Indicates whether to include uncommitted data.
70
45
  */
71
- getLatestGlobalVariablesHash(includeUncommitted: boolean): Promise<Fr>;
46
+ updateArchive(header: Header, includeUncommitted: boolean): Promise<void>;
72
47
  /**
73
48
  * Gets the tree info for the specified tree.
74
49
  * @param treeId - Id of the tree to get information from.
@@ -82,7 +57,6 @@ export declare class MerkleTrees implements MerkleTreeDb {
82
57
  * @returns The current state reference
83
58
  */
84
59
  getStateReference(includeUncommitted: boolean): Promise<StateReference>;
85
- private _getCurrentBlockHash;
86
60
  /**
87
61
  * Gets the value at the given index.
88
62
  * @param treeId - The ID of the tree to get the leaf value from.
@@ -177,55 +151,6 @@ export declare class MerkleTrees implements MerkleTreeDb {
177
151
  * @returns Promise containing the result of the function.
178
152
  */
179
153
  private synchronize;
180
- private _updateLatestGlobalVariablesHash;
181
- private _getGlobalVariablesHash;
182
- private _updateArchive;
183
- /**
184
- * Returns the tree info for the specified tree id.
185
- * @param treeId - Id of the tree to get information from.
186
- * @param includeUncommitted - Indicates whether to include uncommitted data.
187
- * @returns The tree info for the specified tree.
188
- */
189
- private _getTreeInfo;
190
- /**
191
- * Returns an instance of an indexed tree.
192
- * @param treeId - Id of the tree to get an instance of.
193
- * @returns The indexed tree for the specified tree id.
194
- */
195
- private _getIndexedTree;
196
- /**
197
- * Returns the sibling path for a leaf in a tree.
198
- * @param treeId - Id of the tree to get the sibling path from.
199
- * @param index - Index of the leaf to get the sibling path for.
200
- * @param includeUncommitted - Indicates whether to include uncommitted updates in the sibling path.
201
- * @returns Promise containing the sibling path for the leaf.
202
- */
203
- private _getSiblingPath;
204
- /**
205
- * Appends leaves to a tree.
206
- * @param treeId - Id of the tree to append leaves to.
207
- * @param leaves - Leaves to append.
208
- * @returns Empty promise.
209
- */
210
- private _appendLeaves;
211
- private _updateLeaf;
212
- /**
213
- * Commits all pending updates.
214
- * @returns Empty promise.
215
- */
216
- private _commit;
217
- /**
218
- * Rolls back all pending updates.
219
- * @returns Empty promise.
220
- */
221
- private _rollback;
222
154
  getSnapshot(blockNumber: number): Promise<import("@aztec/merkle-tree").TreeSnapshot[]>;
223
- private _snapshot;
224
- /**
225
- * Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
226
- * @param l2Block - The L2 block to handle.
227
- */
228
- private _handleL2Block;
229
155
  }
230
- export {};
231
156
  //# sourceMappingURL=merkle_trees.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merkle_trees.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_trees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merkle_trees.d.ts","sourceRoot":"","sources":["../../src/world-state-db/merkle_trees.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,12 @@
1
- var _MerkleTrees_globalVariablesHash;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
+ var _MerkleTrees_instances, _MerkleTrees_init, _MerkleTrees_updateArchive, _MerkleTrees_getTreeInfo, _MerkleTrees_getIndexedTree, _MerkleTrees_appendLeaves, _MerkleTrees_updateLeaf, _MerkleTrees_commit, _MerkleTrees_rollback, _MerkleTrees_snapshot, _MerkleTrees_handleL2Block, _MerkleTrees_isDbPopulated;
2
+ import { __classPrivateFieldGet } from "tslib";
3
3
  import { MerkleTreeId } from '@aztec/circuit-types';
4
- import { ARCHIVE_HEIGHT, AppendOnlyTreeSnapshot, CONTRACT_TREE_HEIGHT, Fr, GlobalVariables, L1_TO_L2_MSG_TREE_HEIGHT, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_TREE_HEIGHT, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_TREE_HEIGHT, NullifierLeaf, NullifierLeafPreimage, PUBLIC_DATA_SUBTREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT, PartialStateReference, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, StateReference, } from '@aztec/circuits.js';
5
- import { computeBlockHash, computeGlobalsHash } from '@aztec/circuits.js/abis';
6
- import { Committable } from '@aztec/foundation/committable';
4
+ import { ARCHIVE_HEIGHT, AppendOnlyTreeSnapshot, CONTRACT_TREE_HEIGHT, Fr, GlobalVariables, Header, L1_TO_L2_MSG_TREE_HEIGHT, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_TREE_HEIGHT, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_TREE_HEIGHT, NullifierLeaf, NullifierLeafPreimage, PUBLIC_DATA_SUBTREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT, PartialStateReference, PublicDataTreeLeaf, PublicDataTreeLeafPreimage, StateReference, } from '@aztec/circuits.js';
7
5
  import { SerialQueue } from '@aztec/foundation/fifo';
8
6
  import { createDebugLogger } from '@aztec/foundation/log';
9
- import { Pedersen, StandardIndexedTree, StandardTree, loadTree, newTree, } from '@aztec/merkle-tree';
7
+ import { Pedersen, StandardIndexedTree, StandardTree, getTreeMeta, loadTree, newTree, } from '@aztec/merkle-tree';
10
8
  import { INITIAL_NULLIFIER_TREE_SIZE, INITIAL_PUBLIC_DATA_TREE_SIZE } from './merkle_tree_db.js';
11
9
  import { MerkleTreeOperationsFacade } from './merkle_tree_operations_facade.js';
12
- const LAST_GLOBAL_VARS_HASH = 'lastGlobalVarsHash';
13
10
  /**
14
11
  * The nullifier tree is an indexed tree.
15
12
  */
@@ -30,56 +27,27 @@ class PublicDataTree extends StandardIndexedTree {
30
27
  * A convenience class for managing multiple merkle trees.
31
28
  */
32
29
  export class MerkleTrees {
33
- constructor(store, log = createDebugLogger('aztec:merkle_trees')) {
30
+ constructor(store, log) {
31
+ _MerkleTrees_instances.add(this);
34
32
  this.store = store;
35
33
  this.log = log;
36
34
  this.trees = [];
37
35
  this.jobQueue = new SerialQueue();
38
- _MerkleTrees_globalVariablesHash.set(this, void 0);
39
- this.latestGlobalVariablesHash = new Committable(Fr.ZERO);
40
- __classPrivateFieldSet(this, _MerkleTrees_globalVariablesHash, store.openSingleton(LAST_GLOBAL_VARS_HASH), "f");
41
- }
42
- /**
43
- * initializes the collection of Merkle Trees.
44
- * @param fromDbOptions - Options to initialize the trees from the database.
45
- */
46
- async init(fromDbOptions) {
47
- const fromDb = fromDbOptions !== undefined;
48
- const initializeTree = fromDb ? loadTree : newTree;
49
- const hasher = new Pedersen();
50
- const contractTree = await initializeTree(StandardTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.CONTRACT_TREE]}`, CONTRACT_TREE_HEIGHT);
51
- const nullifierTree = await initializeTree(NullifierTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.NULLIFIER_TREE]}`, NULLIFIER_TREE_HEIGHT, INITIAL_NULLIFIER_TREE_SIZE);
52
- const noteHashTree = await initializeTree(StandardTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.NOTE_HASH_TREE]}`, NOTE_HASH_TREE_HEIGHT);
53
- const publicDataTree = await initializeTree(PublicDataTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.PUBLIC_DATA_TREE]}`, PUBLIC_DATA_TREE_HEIGHT, INITIAL_PUBLIC_DATA_TREE_SIZE);
54
- const l1Tol2MessageTree = await initializeTree(StandardTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]}`, L1_TO_L2_MSG_TREE_HEIGHT);
55
- const archive = await initializeTree(StandardTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.ARCHIVE]}`, ARCHIVE_HEIGHT);
56
- this.trees = [contractTree, nullifierTree, noteHashTree, publicDataTree, l1Tol2MessageTree, archive];
57
- this.jobQueue.start();
58
- // The first leaf in the blocks tree contains the empty roots of the other trees and empty global variables.
59
- if (!fromDb) {
60
- const initialGlobalVariablesHash = computeGlobalsHash(GlobalVariables.empty());
61
- await this._updateLatestGlobalVariablesHash(initialGlobalVariablesHash);
62
- await this._updateArchive(initialGlobalVariablesHash, true);
63
- await this._commit();
64
- }
65
- else {
66
- await this._updateLatestGlobalVariablesHash(fromDbOptions.globalVariablesHash);
67
- // make the restored global variables hash and tree roots current
68
- await this._commit();
69
- }
70
36
  }
71
37
  /**
72
38
  * Method to asynchronously create and initialize a MerkleTrees instance.
73
39
  * @param store - The db instance to use for data persistance.
74
40
  * @returns - A fully initialized MerkleTrees instance.
75
41
  */
76
- static async new(store) {
77
- const merkleTrees = new MerkleTrees(store);
78
- const globalVariablesHash = store.openSingleton(LAST_GLOBAL_VARS_HASH);
79
- const val = globalVariablesHash.get();
80
- await merkleTrees.init(val ? { globalVariablesHash: Fr.fromBuffer(val) } : undefined);
42
+ static async new(store, log = createDebugLogger('aztec:merkle_trees')) {
43
+ const merkleTrees = new MerkleTrees(store, log);
44
+ await __classPrivateFieldGet(merkleTrees, _MerkleTrees_instances, "m", _MerkleTrees_init).call(merkleTrees);
81
45
  return merkleTrees;
82
46
  }
47
+ async buildInitialHeader(includeUncommitted) {
48
+ const state = await this.getStateReference(includeUncommitted);
49
+ return new Header(AppendOnlyTreeSnapshot.zero(), Buffer.alloc(32, 0), state, GlobalVariables.empty());
50
+ }
83
51
  /**
84
52
  * Stops the job queue (waits for all jobs to finish).
85
53
  */
@@ -101,27 +69,12 @@ export class MerkleTrees {
101
69
  return new MerkleTreeOperationsFacade(this, false);
102
70
  }
103
71
  /**
104
- * Inserts into the roots trees (CONTRACT_TREE_ROOTS_TREE, NOTE_HASH_TREE_ROOTS_TREE, L1_TO_L2_MESSAGE_TREE_ROOTS_TREE)
105
- * the current roots of the corresponding trees (CONTRACT_TREE, NOTE_HASH_TREE, L1_TO_L2_MESSAGE_TREE).
106
- * @param globalsHash - The current global variables hash.
72
+ * Updates the archive with the new block/header hash.
73
+ * @param header - The header whose hash to insert into the archive.
107
74
  * @param includeUncommitted - Indicates whether to include uncommitted data.
108
75
  */
109
- async updateArchive(globalsHash, includeUncommitted) {
110
- await this.synchronize(() => this._updateArchive(globalsHash, includeUncommitted));
111
- }
112
- /**
113
- * Updates the latest global variables hash
114
- * @param globalVariablesHash - The latest global variables hash
115
- */
116
- async updateLatestGlobalVariablesHash(globalVariablesHash) {
117
- return await this.synchronize(() => this._updateLatestGlobalVariablesHash(globalVariablesHash));
118
- }
119
- /**
120
- * Gets the global variables hash from the previous block
121
- * @param includeUncommitted - Indicates whether to include uncommitted data.
122
- */
123
- async getLatestGlobalVariablesHash(includeUncommitted) {
124
- return await this.synchronize(() => this._getGlobalVariablesHash(includeUncommitted));
76
+ async updateArchive(header, includeUncommitted) {
77
+ await this.synchronize(() => __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_updateArchive).call(this, header, includeUncommitted));
125
78
  }
126
79
  /**
127
80
  * Gets the tree info for the specified tree.
@@ -130,7 +83,7 @@ export class MerkleTrees {
130
83
  * @returns The tree info for the specified tree.
131
84
  */
132
85
  async getTreeInfo(treeId, includeUncommitted) {
133
- return await this.synchronize(() => this._getTreeInfo(treeId, includeUncommitted));
86
+ return await this.synchronize(() => __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_getTreeInfo).call(this, treeId, includeUncommitted));
134
87
  }
135
88
  /**
136
89
  * Get the current state reference
@@ -145,11 +98,6 @@ export class MerkleTrees {
145
98
  const state = new StateReference(getAppendOnlyTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE), new PartialStateReference(getAppendOnlyTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE), getAppendOnlyTreeSnapshot(MerkleTreeId.NULLIFIER_TREE), getAppendOnlyTreeSnapshot(MerkleTreeId.CONTRACT_TREE), getAppendOnlyTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE)));
146
99
  return Promise.resolve(state);
147
100
  }
148
- // TODO(#3941)
149
- async _getCurrentBlockHash(globalsHash, includeUncommitted) {
150
- const state = await this.getStateReference(includeUncommitted);
151
- return computeBlockHash(globalsHash, state.partial.noteHashTree.root, state.partial.nullifierTree.root, state.partial.contractTree.root, state.l1ToL2MessageTree.root, state.partial.publicDataTree.root);
152
- }
153
101
  /**
154
102
  * Gets the value at the given index.
155
103
  * @param treeId - The ID of the tree to get the leaf value from.
@@ -168,7 +116,7 @@ export class MerkleTrees {
168
116
  * @returns The sibling path for the leaf.
169
117
  */
170
118
  async getSiblingPath(treeId, index, includeUncommitted) {
171
- return await this.synchronize(() => this._getSiblingPath(treeId, index, includeUncommitted));
119
+ return await this.synchronize(() => this.trees[treeId].getSiblingPath(index, includeUncommitted));
172
120
  }
173
121
  /**
174
122
  * Appends leaves to a tree.
@@ -177,21 +125,21 @@ export class MerkleTrees {
177
125
  * @returns Empty promise.
178
126
  */
179
127
  async appendLeaves(treeId, leaves) {
180
- return await this.synchronize(() => this._appendLeaves(treeId, leaves));
128
+ return await this.synchronize(() => __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_appendLeaves).call(this, treeId, leaves));
181
129
  }
182
130
  /**
183
131
  * Commits all pending updates.
184
132
  * @returns Empty promise.
185
133
  */
186
134
  async commit() {
187
- return await this.synchronize(() => this._commit());
135
+ return await this.synchronize(() => __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_commit).call(this));
188
136
  }
189
137
  /**
190
138
  * Rolls back all pending updates.
191
139
  * @returns Empty promise.
192
140
  */
193
141
  async rollback() {
194
- return await this.synchronize(() => this._rollback());
142
+ return await this.synchronize(() => __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_rollback).call(this));
195
143
  }
196
144
  /**
197
145
  * Finds the index of the largest leaf whose value is less than or equal to the provided value.
@@ -201,7 +149,7 @@ export class MerkleTrees {
201
149
  * @returns The found leaf index and a flag indicating if the corresponding leaf's value is equal to `newValue`.
202
150
  */
203
151
  async getPreviousValueIndex(treeId, value, includeUncommitted) {
204
- return await this.synchronize(() => Promise.resolve(this._getIndexedTree(treeId).findIndexOfPreviousKey(value, includeUncommitted)));
152
+ return await this.synchronize(() => Promise.resolve(__classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_getIndexedTree).call(this, treeId).findIndexOfPreviousKey(value, includeUncommitted)));
205
153
  }
206
154
  /**
207
155
  * Gets the leaf data at a given index and tree.
@@ -211,7 +159,7 @@ export class MerkleTrees {
211
159
  * @returns Leaf preimage.
212
160
  */
213
161
  async getLeafPreimage(treeId, index, includeUncommitted) {
214
- return await this.synchronize(() => Promise.resolve(this._getIndexedTree(treeId).getLatestLeafPreimageCopy(index, includeUncommitted)));
162
+ return await this.synchronize(() => Promise.resolve(__classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_getIndexedTree).call(this, treeId).getLatestLeafPreimageCopy(index, includeUncommitted)));
215
163
  }
216
164
  /**
217
165
  * Returns the index of a leaf given its value, or undefined if no leaf with that value is found.
@@ -234,7 +182,7 @@ export class MerkleTrees {
234
182
  * @returns Empty promise.
235
183
  */
236
184
  async updateLeaf(treeId, leaf, index) {
237
- return await this.synchronize(() => this._updateLeaf(treeId, leaf, index));
185
+ return await this.synchronize(() => __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_updateLeaf).call(this, treeId, leaf, index));
238
186
  }
239
187
  /**
240
188
  * Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
@@ -242,7 +190,7 @@ export class MerkleTrees {
242
190
  * @returns Whether the block handled was produced by this same node.
243
191
  */
244
192
  async handleL2Block(block) {
245
- return await this.synchronize(() => this._handleL2Block(block));
193
+ return await this.synchronize(() => __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_handleL2Block).call(this, block));
246
194
  }
247
195
  /**
248
196
  * Batch insert multiple leaves into the tree.
@@ -266,165 +214,164 @@ export class MerkleTrees {
266
214
  async synchronize(fn) {
267
215
  return await this.jobQueue.put(fn);
268
216
  }
269
- _updateLatestGlobalVariablesHash(globalVariablesHash) {
270
- this.latestGlobalVariablesHash.set(globalVariablesHash);
271
- return Promise.resolve();
272
- }
273
- _getGlobalVariablesHash(includeUncommitted) {
274
- return Promise.resolve(this.latestGlobalVariablesHash.get(includeUncommitted));
275
- }
276
- async _updateArchive(globalsHash, includeUncommitted) {
277
- const blockHash = await this._getCurrentBlockHash(globalsHash, includeUncommitted);
278
- await this._appendLeaves(MerkleTreeId.ARCHIVE, [blockHash.toBuffer()]);
217
+ getSnapshot(blockNumber) {
218
+ return Promise.all(this.trees.map(tree => tree.getSnapshot(blockNumber)));
279
219
  }
280
- /**
281
- * Returns the tree info for the specified tree id.
282
- * @param treeId - Id of the tree to get information from.
283
- * @param includeUncommitted - Indicates whether to include uncommitted data.
284
- * @returns The tree info for the specified tree.
285
- */
286
- _getTreeInfo(treeId, includeUncommitted) {
287
- const treeInfo = {
288
- treeId,
289
- root: this.trees[treeId].getRoot(includeUncommitted),
290
- size: this.trees[treeId].getNumLeaves(includeUncommitted),
291
- depth: this.trees[treeId].getDepth(),
292
- };
293
- return Promise.resolve(treeInfo);
220
+ }
221
+ _MerkleTrees_instances = new WeakSet(), _MerkleTrees_init =
222
+ /**
223
+ * Initializes the collection of Merkle Trees.
224
+ */
225
+ async function _MerkleTrees_init() {
226
+ const fromDb = __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_isDbPopulated).call(this);
227
+ const initializeTree = fromDb ? loadTree : newTree;
228
+ const hasher = new Pedersen();
229
+ const contractTree = await initializeTree(StandardTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.CONTRACT_TREE]}`, CONTRACT_TREE_HEIGHT);
230
+ const nullifierTree = await initializeTree(NullifierTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.NULLIFIER_TREE]}`, NULLIFIER_TREE_HEIGHT, INITIAL_NULLIFIER_TREE_SIZE);
231
+ const noteHashTree = await initializeTree(StandardTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.NOTE_HASH_TREE]}`, NOTE_HASH_TREE_HEIGHT);
232
+ const publicDataTree = await initializeTree(PublicDataTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.PUBLIC_DATA_TREE]}`, PUBLIC_DATA_TREE_HEIGHT, INITIAL_PUBLIC_DATA_TREE_SIZE);
233
+ const l1Tol2MessageTree = await initializeTree(StandardTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.L1_TO_L2_MESSAGE_TREE]}`, L1_TO_L2_MSG_TREE_HEIGHT);
234
+ const archive = await initializeTree(StandardTree, this.store, hasher, `${MerkleTreeId[MerkleTreeId.ARCHIVE]}`, ARCHIVE_HEIGHT);
235
+ this.trees = [contractTree, nullifierTree, noteHashTree, publicDataTree, l1Tol2MessageTree, archive];
236
+ this.jobQueue.start();
237
+ if (!fromDb) {
238
+ // We are not initializing from db so we need to populate the first leaf of the archive tree which is a hash of
239
+ // the initial header.
240
+ const initialHeder = await this.buildInitialHeader(true);
241
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_updateArchive).call(this, initialHeder, true);
242
+ }
243
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_commit).call(this);
244
+ }, _MerkleTrees_updateArchive = async function _MerkleTrees_updateArchive(header, includeUncommitted) {
245
+ const state = await this.getStateReference(includeUncommitted);
246
+ // This method should be called only when the block builder already updated the state so we sanity check that it's
247
+ // the case here.
248
+ if (!state.toBuffer().equals(header.state.toBuffer())) {
249
+ throw new Error('State in header does not match current state');
250
+ }
251
+ const blockHash = header.hash();
252
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_appendLeaves).call(this, MerkleTreeId.ARCHIVE, [blockHash.toBuffer()]);
253
+ }, _MerkleTrees_getTreeInfo = function _MerkleTrees_getTreeInfo(treeId, includeUncommitted) {
254
+ const treeInfo = {
255
+ treeId,
256
+ root: this.trees[treeId].getRoot(includeUncommitted),
257
+ size: this.trees[treeId].getNumLeaves(includeUncommitted),
258
+ depth: this.trees[treeId].getDepth(),
259
+ };
260
+ return Promise.resolve(treeInfo);
261
+ }, _MerkleTrees_getIndexedTree = function _MerkleTrees_getIndexedTree(treeId) {
262
+ return this.trees[treeId];
263
+ }, _MerkleTrees_appendLeaves =
264
+ /**
265
+ * Appends leaves to a tree.
266
+ * @param treeId - Id of the tree to append leaves to.
267
+ * @param leaves - Leaves to append.
268
+ * @returns Empty promise.
269
+ */
270
+ async function _MerkleTrees_appendLeaves(treeId, leaves) {
271
+ const tree = this.trees[treeId];
272
+ if (!('appendLeaves' in tree)) {
273
+ throw new Error('Tree does not support `appendLeaves` method');
274
+ }
275
+ return await tree.appendLeaves(leaves);
276
+ }, _MerkleTrees_updateLeaf = async function _MerkleTrees_updateLeaf(treeId, leaf, index) {
277
+ const tree = this.trees[treeId];
278
+ if (!('updateLeaf' in tree)) {
279
+ throw new Error('Tree does not support `updateLeaf` method');
280
+ }
281
+ return await tree.updateLeaf(leaf, index);
282
+ }, _MerkleTrees_commit =
283
+ /**
284
+ * Commits all pending updates.
285
+ * @returns Empty promise.
286
+ */
287
+ async function _MerkleTrees_commit() {
288
+ for (const tree of this.trees) {
289
+ await tree.commit();
294
290
  }
295
- /**
296
- * Returns an instance of an indexed tree.
297
- * @param treeId - Id of the tree to get an instance of.
298
- * @returns The indexed tree for the specified tree id.
299
- */
300
- _getIndexedTree(treeId) {
301
- return this.trees[treeId];
291
+ }, _MerkleTrees_rollback =
292
+ /**
293
+ * Rolls back all pending updates.
294
+ * @returns Empty promise.
295
+ */
296
+ async function _MerkleTrees_rollback() {
297
+ for (const tree of this.trees) {
298
+ await tree.rollback();
302
299
  }
303
- /**
304
- * Returns the sibling path for a leaf in a tree.
305
- * @param treeId - Id of the tree to get the sibling path from.
306
- * @param index - Index of the leaf to get the sibling path for.
307
- * @param includeUncommitted - Indicates whether to include uncommitted updates in the sibling path.
308
- * @returns Promise containing the sibling path for the leaf.
309
- */
310
- _getSiblingPath(treeId, index, includeUncommitted) {
311
- return Promise.resolve(this.trees[treeId].getSiblingPath(index, includeUncommitted));
300
+ }, _MerkleTrees_snapshot = async function _MerkleTrees_snapshot(blockNumber) {
301
+ for (const tree of this.trees) {
302
+ await tree.snapshot(blockNumber);
312
303
  }
313
- /**
314
- * Appends leaves to a tree.
315
- * @param treeId - Id of the tree to append leaves to.
316
- * @param leaves - Leaves to append.
317
- * @returns Empty promise.
318
- */
319
- async _appendLeaves(treeId, leaves) {
320
- const tree = this.trees[treeId];
321
- if (!('appendLeaves' in tree)) {
322
- throw new Error('Tree does not support `appendLeaves` method');
304
+ }, _MerkleTrees_handleL2Block =
305
+ /**
306
+ * Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
307
+ * @param l2Block - The L2 block to handle.
308
+ */
309
+ async function _MerkleTrees_handleL2Block(l2Block) {
310
+ const treeRootWithIdPairs = [
311
+ [l2Block.header.state.partial.contractTree.root, MerkleTreeId.CONTRACT_TREE],
312
+ [l2Block.header.state.partial.nullifierTree.root, MerkleTreeId.NULLIFIER_TREE],
313
+ [l2Block.header.state.partial.noteHashTree.root, MerkleTreeId.NOTE_HASH_TREE],
314
+ [l2Block.header.state.partial.publicDataTree.root, MerkleTreeId.PUBLIC_DATA_TREE],
315
+ [l2Block.header.state.l1ToL2MessageTree.root, MerkleTreeId.L1_TO_L2_MESSAGE_TREE],
316
+ [l2Block.archive.root, MerkleTreeId.ARCHIVE],
317
+ ];
318
+ const compareRoot = (root, treeId) => {
319
+ const treeRoot = this.trees[treeId].getRoot(true);
320
+ return treeRoot.equals(root.toBuffer());
321
+ };
322
+ const ourBlock = treeRootWithIdPairs.every(([root, id]) => compareRoot(root, id));
323
+ if (ourBlock) {
324
+ this.log(`Block ${l2Block.number} is ours, committing world state`);
325
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_commit).call(this);
326
+ }
327
+ else {
328
+ this.log(`Block ${l2Block.number} is not ours, rolling back world state and committing state from chain`);
329
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_rollback).call(this);
330
+ // Sync the append only trees
331
+ for (const [tree, leaves] of [
332
+ [MerkleTreeId.CONTRACT_TREE, l2Block.newContracts],
333
+ [MerkleTreeId.NOTE_HASH_TREE, l2Block.newCommitments],
334
+ [MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l2Block.newL1ToL2Messages],
335
+ ]) {
336
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_appendLeaves).call(this, tree, leaves.map(fr => fr.toBuffer()));
323
337
  }
324
- return await tree.appendLeaves(leaves);
325
- }
326
- async _updateLeaf(treeId, leaf, index) {
327
- const tree = this.trees[treeId];
328
- if (!('updateLeaf' in tree)) {
329
- throw new Error('Tree does not support `updateLeaf` method');
338
+ // Sync the indexed trees
339
+ await this.trees[MerkleTreeId.NULLIFIER_TREE].batchInsert(l2Block.newNullifiers.map(fr => fr.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
340
+ const publicDataTree = this.trees[MerkleTreeId.PUBLIC_DATA_TREE];
341
+ // We insert the public data tree leaves with one batch per tx to avoid updating the same key twice
342
+ for (let i = 0; i < l2Block.newPublicDataWrites.length / MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX; i++) {
343
+ await publicDataTree.batchInsert(l2Block.newPublicDataWrites
344
+ .slice(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * i, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * (i + 1))
345
+ .map(write => new PublicDataTreeLeaf(write.leafIndex, write.newValue).toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
330
346
  }
331
- return await tree.updateLeaf(leaf, index);
332
- }
333
- /**
334
- * Commits all pending updates.
335
- * @returns Empty promise.
336
- */
337
- async _commit() {
338
- for (const tree of this.trees) {
339
- await tree.commit();
347
+ // The last thing remaining is to update the archive
348
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_updateArchive).call(this, l2Block.header, true);
349
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_commit).call(this);
350
+ }
351
+ for (const [root, treeId] of treeRootWithIdPairs) {
352
+ const treeName = MerkleTreeId[treeId];
353
+ const info = await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_getTreeInfo).call(this, treeId, false);
354
+ const syncedStr = '0x' + info.root.toString('hex');
355
+ const rootStr = root.toString();
356
+ // Sanity check that the rebuilt trees match the roots published by the L2 block
357
+ if (!info.root.equals(root.toBuffer())) {
358
+ throw new Error(`Synced tree root ${treeName} does not match published L2 block root: ${syncedStr} != ${rootStr}`);
340
359
  }
341
- this.latestGlobalVariablesHash.commit();
342
- await __classPrivateFieldGet(this, _MerkleTrees_globalVariablesHash, "f").set(this.latestGlobalVariablesHash.get().toBuffer());
343
- }
344
- /**
345
- * Rolls back all pending updates.
346
- * @returns Empty promise.
347
- */
348
- async _rollback() {
349
- for (const tree of this.trees) {
350
- await tree.rollback();
360
+ else {
361
+ this.log(`Tree ${treeName} synched with size ${info.size} root ${rootStr}`);
351
362
  }
352
- this.latestGlobalVariablesHash.rollback();
353
363
  }
354
- getSnapshot(blockNumber) {
355
- return Promise.all(this.trees.map(tree => tree.getSnapshot(blockNumber)));
356
- }
357
- async _snapshot(blockNumber) {
358
- for (const tree of this.trees) {
359
- await tree.snapshot(blockNumber);
360
- }
364
+ await __classPrivateFieldGet(this, _MerkleTrees_instances, "m", _MerkleTrees_snapshot).call(this, l2Block.number);
365
+ return { isBlockOurs: ourBlock };
366
+ }, _MerkleTrees_isDbPopulated = function _MerkleTrees_isDbPopulated() {
367
+ try {
368
+ getTreeMeta(this.store, MerkleTreeId[MerkleTreeId.NULLIFIER_TREE]);
369
+ // Tree meta was found --> db is populated
370
+ return true;
361
371
  }
362
- /**
363
- * Handles a single L2 block (i.e. Inserts the new commitments into the merkle tree).
364
- * @param l2Block - The L2 block to handle.
365
- */
366
- async _handleL2Block(l2Block) {
367
- const treeRootWithIdPairs = [
368
- [l2Block.header.state.partial.contractTree.root, MerkleTreeId.CONTRACT_TREE],
369
- [l2Block.header.state.partial.nullifierTree.root, MerkleTreeId.NULLIFIER_TREE],
370
- [l2Block.header.state.partial.noteHashTree.root, MerkleTreeId.NOTE_HASH_TREE],
371
- [l2Block.header.state.partial.publicDataTree.root, MerkleTreeId.PUBLIC_DATA_TREE],
372
- [l2Block.header.state.l1ToL2MessageTree.root, MerkleTreeId.L1_TO_L2_MESSAGE_TREE],
373
- [l2Block.archive.root, MerkleTreeId.ARCHIVE],
374
- ];
375
- const compareRoot = (root, treeId) => {
376
- const treeRoot = this.trees[treeId].getRoot(true);
377
- return treeRoot.equals(root.toBuffer());
378
- };
379
- const ourBlock = treeRootWithIdPairs.every(([root, id]) => compareRoot(root, id));
380
- if (ourBlock) {
381
- this.log(`Block ${l2Block.number} is ours, committing world state`);
382
- await this._commit();
383
- }
384
- else {
385
- this.log(`Block ${l2Block.number} is not ours, rolling back world state and committing state from chain`);
386
- await this._rollback();
387
- // Sync the append only trees
388
- for (const [tree, leaves] of [
389
- [MerkleTreeId.CONTRACT_TREE, l2Block.newContracts],
390
- [MerkleTreeId.NOTE_HASH_TREE, l2Block.newCommitments],
391
- [MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l2Block.newL1ToL2Messages],
392
- ]) {
393
- await this._appendLeaves(tree, leaves.map(fr => fr.toBuffer()));
394
- }
395
- // Sync the indexed trees
396
- await this.trees[MerkleTreeId.NULLIFIER_TREE].batchInsert(l2Block.newNullifiers.map(fr => fr.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
397
- const publicDataTree = this.trees[MerkleTreeId.PUBLIC_DATA_TREE];
398
- // We insert the public data tree leaves with one batch per tx to avoid updating the same key twice
399
- for (let i = 0; i < l2Block.newPublicDataWrites.length / MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX; i++) {
400
- await publicDataTree.batchInsert(l2Block.newPublicDataWrites
401
- .slice(MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * i, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * (i + 1))
402
- .map(write => new PublicDataTreeLeaf(write.leafIndex, write.newValue).toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
403
- }
404
- // Sync and add the block to the blocks tree
405
- const globalVariablesHash = computeGlobalsHash(l2Block.header.globalVariables);
406
- await this._updateLatestGlobalVariablesHash(globalVariablesHash);
407
- this.log(`Synced global variables with hash ${globalVariablesHash}`);
408
- const blockHash = await this._getCurrentBlockHash(globalVariablesHash, true);
409
- await this._appendLeaves(MerkleTreeId.ARCHIVE, [blockHash.toBuffer()]);
410
- await this._commit();
411
- }
412
- for (const [root, treeId] of treeRootWithIdPairs) {
413
- const treeName = MerkleTreeId[treeId];
414
- const info = await this._getTreeInfo(treeId, false);
415
- const syncedStr = '0x' + info.root.toString('hex');
416
- const rootStr = root.toString();
417
- // Sanity check that the rebuilt trees match the roots published by the L2 block
418
- if (!info.root.equals(root.toBuffer())) {
419
- throw new Error(`Synced tree root ${treeName} does not match published L2 block root: ${syncedStr} != ${rootStr}`);
420
- }
421
- else {
422
- this.log(`Tree ${treeName} synched with size ${info.size} root ${rootStr}`);
423
- }
424
- }
425
- await this._snapshot(l2Block.number);
426
- return { isBlockOurs: ourBlock };
372
+ catch (e) {
373
+ // Tree meta was not found --> db is not populated
374
+ return false;
427
375
  }
428
- }
429
- _MerkleTrees_globalVariablesHash = new WeakMap();
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dvcmxkLXN0YXRlLWRiL21lcmtsZV90cmVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsRUFBRSxFQUNGLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsc0NBQXNDLEVBQ3RDLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQixjQUFjLEdBQ2YsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE9BQU8sRUFJTCxRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFlBQVksRUFFWixRQUFRLEVBQ1IsT0FBTyxHQUNSLE1BQU0sb0JBQW9CLENBQUM7QUFJNUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDZCQUE2QixFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBRS9HLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBWWhGLE1BQU0scUJBQXFCLEdBQUcsb0JBQW9CLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLGFBQWMsU0FBUSxtQkFBbUI7SUFDN0MsWUFBWSxLQUFtQixFQUFF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
376
+ };
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVya2xlX3RyZWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dvcmxkLXN0YXRlLWRiL21lcmtsZV90cmVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBVyxZQUFZLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsRUFBRSxFQUNGLGVBQWUsRUFDZixNQUFNLEVBQ04sd0JBQXdCLEVBQ3hCLHNDQUFzQyxFQUN0QyxxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsY0FBYyxHQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3ZFLE9BQU8sRUFJTCxRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFlBQVksRUFFWixXQUFXLEVBQ1gsUUFBUSxFQUNSLE9BQU8sR0FDUixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSw2QkFBNkIsRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVoRjs7R0FFRztBQUNILE1BQU0sYUFBYyxTQUFRLG1CQUFtQjtJQUM3QyxZQUFZLEtBQW1CLEVBQUUsTUFBYyxFQUFFLElBQVksRUFBRSxLQUFhLEVBQUUsT0FBZSxFQUFFLEVBQUUsSUFBYTtRQUM1RyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/world-state",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "typedocOptions": {
@@ -30,12 +30,12 @@
30
30
  "rootDir": "./src"
31
31
  },
32
32
  "dependencies": {
33
- "@aztec/circuit-types": "0.21.0",
34
- "@aztec/circuits.js": "0.21.0",
35
- "@aztec/foundation": "0.21.0",
36
- "@aztec/kv-store": "0.21.0",
37
- "@aztec/merkle-tree": "0.21.0",
38
- "@aztec/types": "0.21.0",
33
+ "@aztec/circuit-types": "0.22.0",
34
+ "@aztec/circuits.js": "0.22.0",
35
+ "@aztec/foundation": "0.22.0",
36
+ "@aztec/kv-store": "0.22.0",
37
+ "@aztec/merkle-tree": "0.22.0",
38
+ "@aztec/types": "0.22.0",
39
39
  "tslib": "^2.4.0"
40
40
  },
41
41
  "devDependencies": {