@aztec/merkle-tree 0.30.1 → 0.32.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.
- package/dest/interfaces/append_only_tree.d.ts +4 -3
- package/dest/interfaces/append_only_tree.d.ts.map +1 -1
- package/dest/interfaces/indexed_tree.d.ts +3 -1
- package/dest/interfaces/indexed_tree.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree.d.ts +12 -3
- package/dest/interfaces/merkle_tree.d.ts.map +1 -1
- package/dest/interfaces/update_only_tree.d.ts +4 -3
- package/dest/interfaces/update_only_tree.d.ts.map +1 -1
- package/dest/load_tree.d.ts +2 -1
- package/dest/load_tree.d.ts.map +1 -1
- package/dest/load_tree.js +3 -3
- package/dest/new_tree.d.ts +2 -1
- package/dest/new_tree.d.ts.map +1 -1
- package/dest/new_tree.js +3 -3
- package/dest/sha_256.d.ts +9 -0
- package/dest/sha_256.d.ts.map +1 -1
- package/dest/sha_256.js +23 -1
- package/dest/snapshots/append_only_snapshot.d.ts +6 -4
- package/dest/snapshots/append_only_snapshot.d.ts.map +1 -1
- package/dest/snapshots/append_only_snapshot.js +17 -9
- package/dest/snapshots/base_full_snapshot.d.ts +9 -6
- package/dest/snapshots/base_full_snapshot.d.ts.map +1 -1
- package/dest/snapshots/base_full_snapshot.js +11 -5
- package/dest/snapshots/full_snapshot.d.ts +6 -2
- package/dest/snapshots/full_snapshot.d.ts.map +1 -1
- package/dest/snapshots/full_snapshot.js +6 -2
- package/dest/snapshots/indexed_tree_snapshot.d.ts +2 -2
- package/dest/snapshots/indexed_tree_snapshot.d.ts.map +1 -1
- package/dest/snapshots/indexed_tree_snapshot.js +2 -2
- package/dest/snapshots/snapshot_builder.d.ts +13 -5
- package/dest/snapshots/snapshot_builder.d.ts.map +1 -1
- package/dest/snapshots/snapshot_builder_test_suite.d.ts +3 -2
- package/dest/snapshots/snapshot_builder_test_suite.d.ts.map +1 -1
- package/dest/snapshots/snapshot_builder_test_suite.js +5 -2
- package/dest/sparse_tree/sparse_tree.d.ts +7 -6
- package/dest/sparse_tree/sparse_tree.d.ts.map +1 -1
- package/dest/sparse_tree/sparse_tree.js +9 -4
- package/dest/standard_indexed_tree/standard_indexed_tree.d.ts +4 -1
- package/dest/standard_indexed_tree/standard_indexed_tree.d.ts.map +1 -1
- package/dest/standard_indexed_tree/standard_indexed_tree.js +8 -2
- package/dest/standard_tree/standard_tree.d.ts +7 -5
- package/dest/standard_tree/standard_tree.d.ts.map +1 -1
- package/dest/standard_tree/standard_tree.js +9 -4
- package/dest/tree_base.d.ts +22 -5
- package/dest/tree_base.d.ts.map +1 -1
- package/dest/tree_base.js +20 -3
- package/package.json +5 -5
- package/src/interfaces/append_only_tree.ts +7 -3
- package/src/interfaces/indexed_tree.ts +6 -1
- package/src/interfaces/merkle_tree.ts +13 -3
- package/src/interfaces/update_only_tree.ts +7 -3
- package/src/load_tree.ts +13 -3
- package/src/new_tree.ts +5 -3
- package/src/sha_256.ts +24 -0
- package/src/snapshots/append_only_snapshot.ts +27 -11
- package/src/snapshots/base_full_snapshot.ts +15 -8
- package/src/snapshots/full_snapshot.ts +12 -5
- package/src/snapshots/indexed_tree_snapshot.ts +5 -5
- package/src/snapshots/snapshot_builder.ts +14 -5
- package/src/snapshots/snapshot_builder_test_suite.ts +13 -7
- package/src/sparse_tree/sparse_tree.ts +14 -7
- package/src/standard_indexed_tree/standard_indexed_tree.ts +11 -2
- package/src/standard_tree/standard_tree.ts +14 -8
- package/src/tree_base.ts +31 -5
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import {
|
|
2
|
+
import { Bufferable } from '@aztec/foundation/serialize';
|
|
3
|
+
import { TreeSnapshot, TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js';
|
|
3
4
|
import { MerkleTree } from './merkle_tree.js';
|
|
4
5
|
/**
|
|
5
6
|
* A Merkle tree that supports only appending leaves and not updating existing leaves.
|
|
6
7
|
*/
|
|
7
|
-
export interface AppendOnlyTree extends MerkleTree
|
|
8
|
+
export interface AppendOnlyTree<T extends Bufferable = Buffer> extends MerkleTree<T>, TreeSnapshotBuilder<TreeSnapshot<T>> {
|
|
8
9
|
/**
|
|
9
10
|
* Appends a set of leaf values to the tree.
|
|
10
11
|
* @param leaves - The set of leaves to be appended.
|
|
11
12
|
*/
|
|
12
|
-
appendLeaves(leaves:
|
|
13
|
+
appendLeaves(leaves: T[]): Promise<void>;
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=append_only_tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append_only_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/append_only_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"append_only_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/append_only_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,CAC3D,SAAQ,UAAU,CAAC,CAAC,CAAC,EACnB,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { SiblingPath } from '@aztec/circuit-types';
|
|
3
3
|
import { IndexedTreeLeaf, IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
|
|
4
|
+
import { IndexedTreeSnapshot, TreeSnapshot, TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js';
|
|
4
5
|
import { AppendOnlyTree } from './append_only_tree.js';
|
|
6
|
+
import { MerkleTree } from './merkle_tree.js';
|
|
5
7
|
/**
|
|
6
8
|
* Factory for creating leaf preimages.
|
|
7
9
|
*/
|
|
@@ -69,7 +71,7 @@ export interface BatchInsertionResult<TreeHeight extends number, SubtreeSiblingP
|
|
|
69
71
|
/**
|
|
70
72
|
* Indexed merkle tree.
|
|
71
73
|
*/
|
|
72
|
-
export interface IndexedTree extends AppendOnlyTree {
|
|
74
|
+
export interface IndexedTree extends MerkleTree<Buffer>, TreeSnapshotBuilder<IndexedTreeSnapshot>, Omit<AppendOnlyTree<Buffer>, keyof TreeSnapshotBuilder<TreeSnapshot<Buffer>>> {
|
|
73
75
|
/**
|
|
74
76
|
* Finds the index of the largest leaf whose value is less than or equal to the provided value.
|
|
75
77
|
* @param newValue - The new value to be inserted into the tree.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexed_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/indexed_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"indexed_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/indexed_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAC7F;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAAC;IACpD;;OAEG;IACH,KAAK,IAAI,uBAAuB,CAAC;IACjC;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,uBAAuB,GAAG,uBAAuB,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD;;OAEG;IACH,YAAY,EAAE,uBAAuB,CAAC;IACtC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM;IACtG;;OAEG;IACH,oBAAoB,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;IACxD;;OAEG;IACH,qBAAqB,EAAE,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC7D;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;OAEG;IACH,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WACf,SAAQ,UAAU,CAAC,MAAM,CAAC,EACxB,mBAAmB,CAAC,mBAAmB,CAAC,EACxC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E;;;;;OAKG;IACH,sBAAsB,CACpB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,OAAO,GAEzB;QACE;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,cAAc,EAAE,OAAO,CAAC;KACzB,GACD,SAAS,CAAC;IAEd;;;;;OAKG;IACH,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAE3G;;;;;OAKG;IACH,WAAW,CAAC,UAAU,SAAS,MAAM,EAAE,aAAa,SAAS,MAAM,EAAE,wBAAwB,SAAS,MAAM,EAC1G,MAAM,EAAE,MAAM,EAAE,EAChB,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,CAAC;CACxE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { SiblingPath } from '@aztec/circuit-types';
|
|
3
|
+
import { Bufferable } from '@aztec/foundation/serialize';
|
|
3
4
|
/**
|
|
4
5
|
* Defines the interface for a source of sibling paths.
|
|
5
6
|
*/
|
|
@@ -14,7 +15,7 @@ export interface SiblingPathSource {
|
|
|
14
15
|
/**
|
|
15
16
|
* Defines the interface for a Merkle tree.
|
|
16
17
|
*/
|
|
17
|
-
export interface MerkleTree extends SiblingPathSource {
|
|
18
|
+
export interface MerkleTree<T extends Bufferable = Buffer> extends SiblingPathSource {
|
|
18
19
|
/**
|
|
19
20
|
* Returns the current root of the tree.
|
|
20
21
|
* @param includeUncommitted - Set to true to include uncommitted updates in the calculated root.
|
|
@@ -42,13 +43,21 @@ export interface MerkleTree extends SiblingPathSource {
|
|
|
42
43
|
* @param index - The index of the leaf value to be returned.
|
|
43
44
|
* @param includeUncommitted - Set to true to include uncommitted updates in the data set.
|
|
44
45
|
*/
|
|
45
|
-
getLeafValue(index: bigint, includeUncommitted: boolean):
|
|
46
|
+
getLeafValue(index: bigint, includeUncommitted: boolean): T | undefined;
|
|
46
47
|
/**
|
|
47
48
|
* Returns the index of a leaf given its value, or undefined if no leaf with that value is found.
|
|
48
49
|
* @param leaf - The leaf value to look for.
|
|
49
50
|
* @param includeUncommitted - Indicates whether to include uncommitted data.
|
|
50
51
|
* @returns The index of the first leaf found with a given value (undefined if not found).
|
|
51
52
|
*/
|
|
52
|
-
findLeafIndex(leaf:
|
|
53
|
+
findLeafIndex(leaf: T, includeUncommitted: boolean): bigint | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Returns the first index containing a leaf value after `startIndex`.
|
|
56
|
+
* @param leaf - The leaf value to look for.
|
|
57
|
+
* @param startIndex - The index to start searching from (used when skipping nullified messages)
|
|
58
|
+
* @param includeUncommitted - Indicates whether to include uncommitted data.
|
|
59
|
+
* @returns The index of the first leaf found with a given value (undefined if not found).
|
|
60
|
+
*/
|
|
61
|
+
findLeafIndexAfter(leaf: T, startIndex: bigint, includeUncommitted: boolean): bigint | undefined;
|
|
53
62
|
}
|
|
54
63
|
//# sourceMappingURL=merkle_tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merkle_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/merkle_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"merkle_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/merkle_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CACvG;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,iBAAiB;IAClF;;;OAGG;IACH,OAAO,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAAC;IAE7C;;;OAGG;IACH,YAAY,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAAC;IAElD;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC;IAExE;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAExE;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAClG"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import {
|
|
2
|
+
import { Bufferable } from '@aztec/foundation/serialize';
|
|
3
|
+
import { TreeSnapshot, TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js';
|
|
3
4
|
import { MerkleTree } from './merkle_tree.js';
|
|
4
5
|
/**
|
|
5
6
|
* A Merkle tree that supports updates at arbitrary indices but not appending.
|
|
6
7
|
*/
|
|
7
|
-
export interface UpdateOnlyTree extends MerkleTree
|
|
8
|
+
export interface UpdateOnlyTree<T extends Bufferable = Buffer> extends MerkleTree<T>, TreeSnapshotBuilder<TreeSnapshot<T>> {
|
|
8
9
|
/**
|
|
9
10
|
* Updates a leaf at a given index in the tree.
|
|
10
11
|
* @param leaf - The leaf value to be updated.
|
|
11
12
|
* @param index - The leaf to be updated.
|
|
12
13
|
*/
|
|
13
|
-
updateLeaf(leaf:
|
|
14
|
+
updateLeaf(leaf: T, index: bigint): Promise<void>;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=update_only_tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update_only_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/update_only_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"update_only_tree.d.ts","sourceRoot":"","sources":["../../src/interfaces/update_only_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,CAC3D,SAAQ,UAAU,CAAC,CAAC,CAAC,EACnB,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"}
|
package/dest/load_tree.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Bufferable, FromBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
import { AztecKVStore } from '@aztec/kv-store';
|
|
3
4
|
import { Hasher } from '@aztec/types/interfaces';
|
|
4
5
|
import { TreeBase } from './tree_base.js';
|
|
@@ -10,5 +11,5 @@ import { TreeBase } from './tree_base.js';
|
|
|
10
11
|
* @param name - Name of the tree.
|
|
11
12
|
* @returns The newly created tree.
|
|
12
13
|
*/
|
|
13
|
-
export declare function loadTree<T extends TreeBase
|
|
14
|
+
export declare function loadTree<T extends TreeBase<Bufferable>, D extends FromBuffer<Bufferable>>(c: new (store: AztecKVStore, hasher: Hasher, name: string, depth: number, size: bigint, deserializer: D, root: Buffer) => T, store: AztecKVStore, hasher: Hasher, name: string, deserializer: D): Promise<T>;
|
|
14
15
|
//# sourceMappingURL=load_tree.d.ts.map
|
package/dest/load_tree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load_tree.d.ts","sourceRoot":"","sources":["../src/load_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,
|
|
1
|
+
{"version":3,"file":"load_tree.d.ts","sourceRoot":"","sources":["../src/load_tree.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,EACvF,CAAC,EAAE,KACD,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,EACf,IAAI,EAAE,MAAM,KACT,CAAC,EACN,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,CAAC,CAIZ"}
|
package/dest/load_tree.js
CHANGED
|
@@ -7,9 +7,9 @@ import { getTreeMeta } from './tree_base.js';
|
|
|
7
7
|
* @param name - Name of the tree.
|
|
8
8
|
* @returns The newly created tree.
|
|
9
9
|
*/
|
|
10
|
-
export function loadTree(c, store, hasher, name) {
|
|
10
|
+
export function loadTree(c, store, hasher, name, deserializer) {
|
|
11
11
|
const { root, depth, size } = getTreeMeta(store, name);
|
|
12
|
-
const tree = new c(store, hasher, name, depth, size, root);
|
|
12
|
+
const tree = new c(store, hasher, name, depth, size, deserializer, root);
|
|
13
13
|
return Promise.resolve(tree);
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF90cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQVksV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLENBUU0sRUFDTixLQUFtQixFQUNuQixNQUFjLEVBQ2QsSUFBWSxFQUNaLFlBQWU7SUFFZixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDIn0=
|
package/dest/new_tree.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Bufferable, FromBuffer } from '@aztec/foundation/serialize';
|
|
1
2
|
import { AztecKVStore } from '@aztec/kv-store';
|
|
2
3
|
import { Hasher } from '@aztec/types/interfaces';
|
|
3
4
|
import { TreeBase } from './tree_base.js';
|
|
@@ -11,5 +12,5 @@ import { TreeBase } from './tree_base.js';
|
|
|
11
12
|
* @param prefilledSize - A number of leaves that are prefilled with values.
|
|
12
13
|
* @returns The newly created tree.
|
|
13
14
|
*/
|
|
14
|
-
export declare function newTree<T extends TreeBase
|
|
15
|
+
export declare function newTree<T extends TreeBase<Bufferable>, D extends FromBuffer<Bufferable>>(c: new (store: AztecKVStore, hasher: Hasher, name: string, depth: number, size: bigint, deserializer: D) => T, store: AztecKVStore, hasher: Hasher, name: string, deserializer: D, depth: number, prefilledSize?: number): Promise<T>;
|
|
15
16
|
//# sourceMappingURL=new_tree.d.ts.map
|
package/dest/new_tree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new_tree.d.ts","sourceRoot":"","sources":["../src/new_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,QAAQ,
|
|
1
|
+
{"version":3,"file":"new_tree.d.ts","sourceRoot":"","sources":["../src/new_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,UAAU,CAAC,EAC5F,CAAC,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,EAC7G,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,EACf,KAAK,EAAE,MAAM,EACb,aAAa,SAAI,GAChB,OAAO,CAAC,CAAC,CAAC,CAIZ"}
|
package/dest/new_tree.js
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* @param prefilledSize - A number of leaves that are prefilled with values.
|
|
9
9
|
* @returns The newly created tree.
|
|
10
10
|
*/
|
|
11
|
-
export async function newTree(c, store, hasher, name, depth, prefilledSize = 1) {
|
|
12
|
-
const tree = new c(store, hasher, name, depth, 0n);
|
|
11
|
+
export async function newTree(c, store, hasher, name, deserializer, depth, prefilledSize = 1) {
|
|
12
|
+
const tree = new c(store, hasher, name, depth, 0n, deserializer);
|
|
13
13
|
await tree.init(prefilledSize);
|
|
14
14
|
return tree;
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3X3RyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV3X3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQzNCLENBQTZHLEVBQzdHLEtBQW1CLEVBQ25CLE1BQWMsRUFDZCxJQUFZLEVBQ1osWUFBZSxFQUNmLEtBQWEsRUFDYixhQUFhLEdBQUcsQ0FBQztJQUVqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ==
|
package/dest/sha_256.d.ts
CHANGED
|
@@ -9,4 +9,13 @@ export declare class SHA256 implements Hasher {
|
|
|
9
9
|
hash(lhs: Uint8Array, rhs: Uint8Array): Buffer;
|
|
10
10
|
hashInputs(inputs: Buffer[]): Buffer;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* A helper class encapsulating truncated SHA256 hash functionality.
|
|
14
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
15
|
+
* purposes.
|
|
16
|
+
*/
|
|
17
|
+
export declare class SHA256Trunc implements Hasher {
|
|
18
|
+
hash(lhs: Uint8Array, rhs: Uint8Array): Buffer;
|
|
19
|
+
hashInputs(inputs: Buffer[]): Buffer;
|
|
20
|
+
}
|
|
12
21
|
//# sourceMappingURL=sha_256.d.ts.map
|
package/dest/sha_256.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sha_256.d.ts","sourceRoot":"","sources":["../src/sha_256.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"sha_256.d.ts","sourceRoot":"","sources":["../src/sha_256.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,MAAO,YAAW,MAAM;IAK5B,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAQ9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CAG5C;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,MAAM;IAKjC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAQ9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;CAG5C"}
|
package/dest/sha_256.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
2
|
+
import { truncateAndPad } from '@aztec/foundation/serialize';
|
|
2
3
|
/**
|
|
3
4
|
* A helper class encapsulating SHA256 hash functionality.
|
|
4
5
|
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
@@ -20,4 +21,25 @@ export class SHA256 {
|
|
|
20
21
|
return sha256(Buffer.concat(inputs));
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
+
/**
|
|
25
|
+
* A helper class encapsulating truncated SHA256 hash functionality.
|
|
26
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
27
|
+
* purposes.
|
|
28
|
+
*/
|
|
29
|
+
export class SHA256Trunc {
|
|
30
|
+
/*
|
|
31
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
32
|
+
* purposes.
|
|
33
|
+
*/
|
|
34
|
+
hash(lhs, rhs) {
|
|
35
|
+
return truncateAndPad(sha256(Buffer.concat([Buffer.from(lhs), Buffer.from(rhs)])));
|
|
36
|
+
}
|
|
37
|
+
/*
|
|
38
|
+
* @deprecated Don't call SHA256 directly in production code. Instead, create suitably-named functions for specific
|
|
39
|
+
* purposes.
|
|
40
|
+
*/
|
|
41
|
+
hashInputs(inputs) {
|
|
42
|
+
return truncateAndPad(sha256(Buffer.concat(inputs)));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhXzI1Ni5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zaGFfMjU2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHN0Q7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxNQUFNO0lBQ2pCOzs7T0FHRztJQUNJLElBQUksQ0FBQyxHQUFlLEVBQUUsR0FBZTtRQUMxQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVLENBQUMsTUFBZ0I7UUFDaEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7O09BR0c7SUFDSSxJQUFJLENBQUMsR0FBZSxFQUFFLEdBQWU7UUFDMUMsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLE1BQWdCO1FBQ2hDLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Bufferable, FromBuffer } from '@aztec/foundation/serialize';
|
|
1
2
|
import { AztecKVStore } from '@aztec/kv-store';
|
|
2
3
|
import { Hasher } from '@aztec/types/interfaces';
|
|
3
4
|
import { AppendOnlyTree } from '../interfaces/append_only_tree.js';
|
|
@@ -18,13 +19,14 @@ import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
|
|
|
18
19
|
* Best case: O(H) database reads + O(1) hashes
|
|
19
20
|
* Worst case: O(H) database reads + O(H) hashes
|
|
20
21
|
*/
|
|
21
|
-
export declare class AppendOnlySnapshotBuilder implements TreeSnapshotBuilder {
|
|
22
|
+
export declare class AppendOnlySnapshotBuilder<T extends Bufferable> implements TreeSnapshotBuilder<TreeSnapshot<T>> {
|
|
22
23
|
#private;
|
|
23
24
|
private db;
|
|
24
25
|
private tree;
|
|
25
26
|
private hasher;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
private deserializer;
|
|
28
|
+
constructor(db: AztecKVStore, tree: TreeBase<T> & AppendOnlyTree<T>, hasher: Hasher, deserializer: FromBuffer<T>);
|
|
29
|
+
getSnapshot(block: number): Promise<TreeSnapshot<T>>;
|
|
30
|
+
snapshot(block: number): Promise<TreeSnapshot<T>>;
|
|
29
31
|
}
|
|
30
32
|
//# sourceMappingURL=append_only_snapshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append_only_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/append_only_snapshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkB1E;;;;;;;;;;;;;;GAcG;AACH,qBAAa,
|
|
1
|
+
{"version":3,"file":"append_only_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/append_only_snapshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkB1E;;;;;;;;;;;;;;GAcG;AACH,qBAAa,yBAAyB,CAAC,CAAC,SAAS,UAAU,CAAE,YAAW,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;IAMxG,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;gBAHZ,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAQrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAqBpD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CA4ElD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var _AppendOnlySnapshotBuilder_instances, _AppendOnlySnapshotBuilder_nodeValue, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, _AppendOnlySnapshotBuilder_snapshotMetadata, _AppendOnlySnapshotBuilder_getSnapshotMeta, _AppendOnlySnapshot_instances, _AppendOnlySnapshot_getHistoricalNodeValue, _AppendOnlySnapshot_getBlockNumberThatModifiedNode;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { SiblingPath } from '@aztec/circuit-types';
|
|
4
|
+
import { serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
5
|
// stores the last block that modified this node
|
|
5
6
|
const nodeModifiedAtBlockKey = (level, index) => `node:${level}:${index}:modifiedAtBlock`;
|
|
6
7
|
// stores the value of the node at the above block
|
|
@@ -21,11 +22,12 @@ const historicalNodeKey = (level, index) => `node:${level}:${index}:value`;
|
|
|
21
22
|
* Worst case: O(H) database reads + O(H) hashes
|
|
22
23
|
*/
|
|
23
24
|
export class AppendOnlySnapshotBuilder {
|
|
24
|
-
constructor(db, tree, hasher) {
|
|
25
|
+
constructor(db, tree, hasher, deserializer) {
|
|
25
26
|
_AppendOnlySnapshotBuilder_instances.add(this);
|
|
26
27
|
this.db = db;
|
|
27
28
|
this.tree = tree;
|
|
28
29
|
this.hasher = hasher;
|
|
30
|
+
this.deserializer = deserializer;
|
|
29
31
|
_AppendOnlySnapshotBuilder_nodeValue.set(this, void 0);
|
|
30
32
|
_AppendOnlySnapshotBuilder_nodeLastModifiedByBlock.set(this, void 0);
|
|
31
33
|
_AppendOnlySnapshotBuilder_snapshotMetadata.set(this, void 0);
|
|
@@ -39,14 +41,14 @@ export class AppendOnlySnapshotBuilder {
|
|
|
39
41
|
if (typeof meta === 'undefined') {
|
|
40
42
|
return Promise.reject(new Error(`Snapshot for tree ${this.tree.getName()} at block ${block} does not exist`));
|
|
41
43
|
}
|
|
42
|
-
return Promise.resolve(new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, meta.numLeaves, meta.root, this.tree, this.hasher));
|
|
44
|
+
return Promise.resolve(new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, meta.numLeaves, meta.root, this.tree, this.hasher, this.deserializer));
|
|
43
45
|
}
|
|
44
46
|
snapshot(block) {
|
|
45
47
|
return this.db.transaction(() => {
|
|
46
48
|
const meta = __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_instances, "m", _AppendOnlySnapshotBuilder_getSnapshotMeta).call(this, block);
|
|
47
49
|
if (typeof meta !== 'undefined') {
|
|
48
50
|
// no-op, we already have a snapshot
|
|
49
|
-
return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, meta.numLeaves, meta.root, this.tree, this.hasher);
|
|
51
|
+
return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, meta.numLeaves, meta.root, this.tree, this.hasher, this.deserializer);
|
|
50
52
|
}
|
|
51
53
|
const root = this.tree.getRoot(false);
|
|
52
54
|
const depth = this.tree.getDepth();
|
|
@@ -84,7 +86,7 @@ export class AppendOnlySnapshotBuilder {
|
|
|
84
86
|
numLeaves,
|
|
85
87
|
root,
|
|
86
88
|
});
|
|
87
|
-
return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, numLeaves, root, this.tree, this.hasher);
|
|
89
|
+
return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, numLeaves, root, this.tree, this.hasher, this.deserializer);
|
|
88
90
|
});
|
|
89
91
|
}
|
|
90
92
|
}
|
|
@@ -95,7 +97,7 @@ _AppendOnlySnapshotBuilder_nodeValue = new WeakMap(), _AppendOnlySnapshotBuilder
|
|
|
95
97
|
* a
|
|
96
98
|
*/
|
|
97
99
|
class AppendOnlySnapshot {
|
|
98
|
-
constructor(nodes, nodeHistory, block, leafCount, historicalRoot, tree, hasher) {
|
|
100
|
+
constructor(nodes, nodeHistory, block, leafCount, historicalRoot, tree, hasher, deserializer) {
|
|
99
101
|
_AppendOnlySnapshot_instances.add(this);
|
|
100
102
|
this.nodes = nodes;
|
|
101
103
|
this.nodeHistory = nodeHistory;
|
|
@@ -104,6 +106,7 @@ class AppendOnlySnapshot {
|
|
|
104
106
|
this.historicalRoot = historicalRoot;
|
|
105
107
|
this.tree = tree;
|
|
106
108
|
this.hasher = hasher;
|
|
109
|
+
this.deserializer = deserializer;
|
|
107
110
|
}
|
|
108
111
|
getSiblingPath(index) {
|
|
109
112
|
const path = [];
|
|
@@ -138,16 +141,21 @@ class AppendOnlySnapshot {
|
|
|
138
141
|
}
|
|
139
142
|
// leaf was set some time in the past
|
|
140
143
|
if (blockNumber <= this.block) {
|
|
141
|
-
|
|
144
|
+
const val = this.nodes.get(historicalNodeKey(leafLevel, index));
|
|
145
|
+
return val ? this.deserializer.fromBuffer(val) : undefined;
|
|
142
146
|
}
|
|
143
147
|
// leaf has been set but in a block in the future
|
|
144
148
|
return undefined;
|
|
145
149
|
}
|
|
146
150
|
findLeafIndex(value) {
|
|
151
|
+
return this.findLeafIndexAfter(value, 0n);
|
|
152
|
+
}
|
|
153
|
+
findLeafIndexAfter(value, startIndex) {
|
|
154
|
+
const valueBuffer = serializeToBuffer(value);
|
|
147
155
|
const numLeaves = this.getNumLeaves();
|
|
148
|
-
for (let i =
|
|
156
|
+
for (let i = startIndex; i < numLeaves; i++) {
|
|
149
157
|
const currentValue = this.getLeafValue(i);
|
|
150
|
-
if (currentValue && currentValue.equals(
|
|
158
|
+
if (currentValue && serializeToBuffer(currentValue).equals(valueBuffer)) {
|
|
151
159
|
return i;
|
|
152
160
|
}
|
|
153
161
|
}
|
|
@@ -186,4 +194,4 @@ _AppendOnlySnapshot_instances = new WeakSet(), _AppendOnlySnapshot_getHistorical
|
|
|
186
194
|
}, _AppendOnlySnapshot_getBlockNumberThatModifiedNode = function _AppendOnlySnapshot_getBlockNumberThatModifiedNode(level, index) {
|
|
187
195
|
return this.nodeHistory.get(nodeModifiedAtBlockKey(level, index));
|
|
188
196
|
};
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kX29ubHlfc25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc25hcHNob3RzL2FwcGVuZF9vbmx5X3NuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBMEIsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVF4RixnREFBZ0Q7QUFDaEQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEtBQUssa0JBQWtCLENBQUM7QUFFMUcsa0RBQWtEO0FBQ2xELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxLQUFLLFFBQVEsQ0FBQztBQVkzRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFLcEMsWUFDVSxFQUFnQixFQUNoQixJQUFxQyxFQUNyQyxNQUFjLEVBQ2QsWUFBMkI7O1FBSDNCLE9BQUUsR0FBRixFQUFFLENBQWM7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBaUM7UUFDckMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBUnJDLHVEQUFtRTtRQUNuRSxxRUFBc0Y7UUFDdEYsOERBQXNEO1FBUXBELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQyx1QkFBQSxJQUFJLHdDQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLFFBQVEsT0FBTyxDQUFDLE1BQUEsQ0FBQztRQUN0RSx1QkFBQSxJQUFJLHNEQUE0QixFQUFFLENBQUMsT0FBTyxDQUFDLHVCQUF1QixRQUFRLFFBQVEsQ0FBQyxNQUFBLENBQUM7UUFDcEYsdUJBQUEsSUFBSSwrQ0FBcUIs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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { SiblingPath } from '@aztec/circuit-types';
|
|
3
|
+
import { Bufferable, FromBuffer } from '@aztec/foundation/serialize';
|
|
3
4
|
import { AztecKVStore, AztecMap } from '@aztec/kv-store';
|
|
4
5
|
import { TreeBase } from '../tree_base.js';
|
|
5
6
|
import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
|
|
@@ -28,7 +29,7 @@ type SnapshotMetadata = {
|
|
|
28
29
|
* Worst case space complexity: O(N * M)
|
|
29
30
|
* Sibling path access: O(H) database reads
|
|
30
31
|
*/
|
|
31
|
-
export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase
|
|
32
|
+
export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase<Bufferable>, S extends TreeSnapshot<Bufferable>> implements TreeSnapshotBuilder<S> {
|
|
32
33
|
#private;
|
|
33
34
|
protected db: AztecKVStore;
|
|
34
35
|
protected tree: T;
|
|
@@ -43,20 +44,22 @@ export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase, S
|
|
|
43
44
|
/**
|
|
44
45
|
* A source of sibling paths from a snapshot tree
|
|
45
46
|
*/
|
|
46
|
-
export declare class BaseFullTreeSnapshot implements TreeSnapshot {
|
|
47
|
+
export declare class BaseFullTreeSnapshot<T extends Bufferable> implements TreeSnapshot<T> {
|
|
47
48
|
#private;
|
|
48
49
|
protected db: AztecMap<string, [Buffer, Buffer]>;
|
|
49
50
|
protected historicRoot: Buffer;
|
|
50
51
|
protected numLeaves: bigint;
|
|
51
|
-
protected tree: TreeBase
|
|
52
|
-
|
|
52
|
+
protected tree: TreeBase<T>;
|
|
53
|
+
protected deserializer: FromBuffer<T>;
|
|
54
|
+
constructor(db: AztecMap<string, [Buffer, Buffer]>, historicRoot: Buffer, numLeaves: bigint, tree: TreeBase<T>, deserializer: FromBuffer<T>);
|
|
53
55
|
getSiblingPath<N extends number>(index: bigint): SiblingPath<N>;
|
|
54
|
-
getLeafValue(index: bigint):
|
|
56
|
+
getLeafValue(index: bigint): T | undefined;
|
|
55
57
|
getDepth(): number;
|
|
56
58
|
getRoot(): Buffer;
|
|
57
59
|
getNumLeaves(): bigint;
|
|
58
60
|
protected pathFromRootToLeaf(leafIndex: bigint): Generator<Buffer[], void, unknown>;
|
|
59
|
-
findLeafIndex(value:
|
|
61
|
+
findLeafIndex(value: T): bigint | undefined;
|
|
62
|
+
findLeafIndexAfter(value: T, startIndex: bigint): bigint | undefined;
|
|
60
63
|
}
|
|
61
64
|
export {};
|
|
62
65
|
//# sourceMappingURL=base_full_snapshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_full_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/base_full_snapshot.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;GAEG;AACH,KAAK,gBAAgB,GAAG;IACtB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,YAAY,
|
|
1
|
+
{"version":3,"file":"base_full_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/base_full_snapshot.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;GAEG;AACH,KAAK,gBAAgB,GAAG;IACtB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,YAAY,CAAC,UAAU,CAAC,CAClH,YAAW,mBAAmB,CAAC,CAAC,CAAC;;IAKrB,SAAS,CAAC,EAAE,EAAE,YAAY;IAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAHzD,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAEzC,EAAE,EAAE,YAAY,EAAY,IAAI,EAAE,CAAC;IAKzD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAwDnC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAEzD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAUxC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;CAKpE;AAED;;GAEG;AACH,qBAAa,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;;IAE9E,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,SAAS,CAAC,YAAY,EAAE,MAAM;IAC9B,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;gBAJ3B,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAGvC,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAc/D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAS1C,QAAQ,IAAI,MAAM;IAIlB,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;IAItB,SAAS,CAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAwC/C,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS;IAIpC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAW5E"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var _BaseFullTreeSnapshotBuilder_instances, _BaseFullTreeSnapshotBuilder_getSnapshotMeta, _BaseFullTreeSnapshot_instances, _BaseFullTreeSnapshot_getPathFromRoot;
|
|
2
2
|
import { __classPrivateFieldGet } from "tslib";
|
|
3
3
|
import { SiblingPath } from '@aztec/circuit-types';
|
|
4
|
+
import { serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
5
|
/**
|
|
5
6
|
* Builds a full snapshot of a tree. This implementation works for any Merkle tree and stores
|
|
6
7
|
* it in a database in a similar way to how a tree is stored in memory, using pointers.
|
|
@@ -87,12 +88,13 @@ _BaseFullTreeSnapshotBuilder_instances = new WeakSet(), _BaseFullTreeSnapshotBui
|
|
|
87
88
|
* A source of sibling paths from a snapshot tree
|
|
88
89
|
*/
|
|
89
90
|
export class BaseFullTreeSnapshot {
|
|
90
|
-
constructor(db, historicRoot, numLeaves, tree) {
|
|
91
|
+
constructor(db, historicRoot, numLeaves, tree, deserializer) {
|
|
91
92
|
_BaseFullTreeSnapshot_instances.add(this);
|
|
92
93
|
this.db = db;
|
|
93
94
|
this.historicRoot = historicRoot;
|
|
94
95
|
this.numLeaves = numLeaves;
|
|
95
96
|
this.tree = tree;
|
|
97
|
+
this.deserializer = deserializer;
|
|
96
98
|
}
|
|
97
99
|
getSiblingPath(index) {
|
|
98
100
|
const siblings = [];
|
|
@@ -109,7 +111,7 @@ export class BaseFullTreeSnapshot {
|
|
|
109
111
|
for (const [node, _sibling] of this.pathFromRootToLeaf(index)) {
|
|
110
112
|
leafNode = node;
|
|
111
113
|
}
|
|
112
|
-
return leafNode;
|
|
114
|
+
return leafNode ? this.deserializer.fromBuffer(leafNode) : undefined;
|
|
113
115
|
}
|
|
114
116
|
getDepth() {
|
|
115
117
|
return this.tree.getDepth();
|
|
@@ -137,10 +139,14 @@ export class BaseFullTreeSnapshot {
|
|
|
137
139
|
}
|
|
138
140
|
}
|
|
139
141
|
findLeafIndex(value) {
|
|
142
|
+
return this.findLeafIndexAfter(value, 0n);
|
|
143
|
+
}
|
|
144
|
+
findLeafIndexAfter(value, startIndex) {
|
|
140
145
|
const numLeaves = this.getNumLeaves();
|
|
141
|
-
|
|
146
|
+
const buffer = serializeToBuffer(value);
|
|
147
|
+
for (let i = startIndex; i < numLeaves; i++) {
|
|
142
148
|
const currentValue = this.getLeafValue(i);
|
|
143
|
-
if (currentValue && currentValue.equals(
|
|
149
|
+
if (currentValue && serializeToBuffer(currentValue).equals(buffer)) {
|
|
144
150
|
return i;
|
|
145
151
|
}
|
|
146
152
|
}
|
|
@@ -158,4 +164,4 @@ _BaseFullTreeSnapshot_instances = new WeakSet(), _BaseFullTreeSnapshot_getPathFr
|
|
|
158
164
|
path.reverse();
|
|
159
165
|
return path;
|
|
160
166
|
};
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9mdWxsX3NuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NuYXBzaG90cy9iYXNlX2Z1bGxfc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUEwQixpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBZ0J4Rjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLE9BQWdCLDJCQUEyQjtJQU0vQyxZQUFzQixFQUFnQixFQUFZLElBQU87O1FBQW5DLE9BQUUsR0FBRixFQUFFLENBQWM7UUFBWSxTQUFJLEdBQUosSUFBSSxDQUFHO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBQSxJQUFJLDRGQUFpQixNQUFyQixJQUFJLEVBQWtCLEtBQUssQ0FBQyxDQUFDO1lBRXRELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEtBQUssR0FBK0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUUxRCwwRUFBMEU7WUFDMUUsaUNBQWlDO1lBQ2pDLHlDQUF5QztZQUN6QywwQ0FBMEM7WUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFHLENBQUM7Z0JBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLDBEQUEwRDtnQkFDMUQsd0VBQXdFO2dCQUN4RSwyQ0FBMkM7Z0JBQzNDLCtGQUErRjtnQkFDL0YsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUM1QixTQUFTO2dCQUNYLENBQUM7Z0JBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDO29CQUN0QixnREFBZ0Q7b0JBQ2hELHFFQUFxRTtvQkFDckUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3pCLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXJHLHNFQUFzRTtnQkFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUVsRCxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxRQUFRLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pFLHVEQUF1RDtnQkFDdkQsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7Z0JBRUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO1lBQ0gsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUMzRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLFVBQVUsQ0FBQyxNQUFjLEVBQUUsS0FBYSxJQUFTLENBQUM7SUFFNUQsV0FBVyxDQUFDLE9BQWU7UUFDekIsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBQSxJQUFJLDRGQUFpQixNQUFyQixJQUFJLEVBQWtCLE9BQU8sQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLE9BQU8sNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEcsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7Q0FPRjs2SkFIa0IsS0FBYTtJQUM1QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUdIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUNZLEVBQXNDLEVBQ3RDLFlBQW9CLEVBQ3BCLFNBQWlCLEVBQ2pCLElBQWlCLEVBQ2pCLFlBQTJCOztRQUozQixPQUFFLEdBQUYsRUFBRSxDQUFvQztRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWU7SUFDcEMsQ0FBQztJQUVKLGNBQWMsQ0FBbUIsS0FBYTtRQUM1QyxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFFOUIsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELDJFQUEyRTtRQUMzRSxvRUFBb0U7UUFDcEUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRW5CLE9BQU8sSUFBSSxXQUFXLENBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxRQUFRLEdBQXVCLFNBQVMsQ0FBQztRQUM3QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUQsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkUsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVTLENBQUMsa0JBQWtCLENBQUMsU0FBaUI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMvQixNQUFNLFlBQVksR0FBRyx1QkFBQSxJQUFJLDhFQUFpQixNQUFyQixJQUFJLEVBQWtCLFNBQVMsQ0FBQyxDQUFDO1FBRXRELElBQUksSUFBSSxHQUFXLElBQUksQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLDhGQUE4RjtZQUM5RixNQUFNLFFBQVEsR0FBcUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJO2dCQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzdCLENBQUM7WUFDRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXBELE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFdEIsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBc0JELGFBQWEsQ0FBQyxLQUFRO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsS0FBUSxFQUFFLFVBQWtCO1FBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLFlBQVksSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDbkUsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjt3SUE1QmtCLFNBQWlCO0lBQ2hDLE1BQU0sSUFBSSxHQUFpQixFQUFFLENBQUM7SUFDOUIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsU0FBUyxLQUFLLEVBQUUsQ0FBQztRQUNqQixLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ==
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Bufferable, FromBuffer } from '@aztec/foundation/serialize';
|
|
3
|
+
import { AztecKVStore } from '@aztec/kv-store';
|
|
2
4
|
import { TreeBase } from '../tree_base.js';
|
|
3
5
|
import { BaseFullTreeSnapshotBuilder } from './base_full_snapshot.js';
|
|
4
6
|
import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
|
|
@@ -16,7 +18,9 @@ import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
|
|
|
16
18
|
* Worst case space complexity: O(N * M)
|
|
17
19
|
* Sibling path access: O(H) database reads
|
|
18
20
|
*/
|
|
19
|
-
export declare class FullTreeSnapshotBuilder extends BaseFullTreeSnapshotBuilder<TreeBase
|
|
20
|
-
|
|
21
|
+
export declare class FullTreeSnapshotBuilder<T extends Bufferable> extends BaseFullTreeSnapshotBuilder<TreeBase<T>, TreeSnapshot<T>> implements TreeSnapshotBuilder<TreeSnapshot<T>> {
|
|
22
|
+
private deserializer;
|
|
23
|
+
constructor(db: AztecKVStore, tree: TreeBase<T>, deserializer: FromBuffer<T>);
|
|
24
|
+
protected openSnapshot(root: Buffer, numLeaves: bigint): TreeSnapshot<T>;
|
|
21
25
|
}
|
|
22
26
|
//# sourceMappingURL=full_snapshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"full_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/full_snapshot.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAwB,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;;;;;;;;;;;;GAaG;AACH,qBAAa,
|
|
1
|
+
{"version":3,"file":"full_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/full_snapshot.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAwB,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;;;;;;;;;;;;GAaG;AACH,qBAAa,uBAAuB,CAAC,CAAC,SAAS,UAAU,CACvD,SAAQ,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAChE,YAAW,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAEE,OAAO,CAAC,YAAY;gBAAzD,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAU,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAIpF,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;CAGzE"}
|