@aztec/merkle-tree 0.20.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.
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -2
- package/dest/interfaces/indexed_tree.d.ts +31 -5
- package/dest/interfaces/indexed_tree.d.ts.map +1 -1
- package/dest/interfaces/merkle_tree.d.ts +3 -3
- package/dest/interfaces/merkle_tree.d.ts.map +1 -1
- package/dest/load_tree.d.ts +2 -2
- package/dest/load_tree.d.ts.map +1 -1
- package/dest/load_tree.js +6 -7
- package/dest/new_tree.d.ts +2 -2
- package/dest/new_tree.d.ts.map +1 -1
- package/dest/new_tree.js +3 -3
- package/dest/snapshots/append_only_snapshot.d.ts +2 -2
- package/dest/snapshots/append_only_snapshot.d.ts.map +1 -1
- package/dest/snapshots/append_only_snapshot.js +81 -92
- package/dest/snapshots/base_full_snapshot.d.ts +23 -11
- package/dest/snapshots/base_full_snapshot.d.ts.map +1 -1
- package/dest/snapshots/base_full_snapshot.js +65 -83
- package/dest/snapshots/full_snapshot.js +2 -2
- package/dest/snapshots/indexed_tree_snapshot.d.ts +5 -5
- package/dest/snapshots/indexed_tree_snapshot.d.ts.map +1 -1
- package/dest/snapshots/indexed_tree_snapshot.js +20 -18
- package/dest/snapshots/snapshot_builder.d.ts +7 -7
- package/dest/snapshots/snapshot_builder.d.ts.map +1 -1
- package/dest/snapshots/snapshot_builder_test_suite.js +8 -8
- package/dest/sparse_tree/sparse_tree.d.ts +1 -1
- package/dest/sparse_tree/sparse_tree.d.ts.map +1 -1
- package/dest/sparse_tree/sparse_tree.js +7 -6
- package/dest/standard_indexed_tree/standard_indexed_tree.d.ts +16 -39
- package/dest/standard_indexed_tree/standard_indexed_tree.d.ts.map +1 -1
- package/dest/standard_indexed_tree/standard_indexed_tree.js +52 -73
- package/dest/standard_indexed_tree/test/standard_indexed_tree_with_append.d.ts.map +1 -1
- package/dest/standard_indexed_tree/test/standard_indexed_tree_with_append.js +10 -9
- package/dest/standard_tree/standard_tree.d.ts +4 -4
- package/dest/standard_tree/standard_tree.d.ts.map +1 -1
- package/dest/standard_tree/standard_tree.js +12 -11
- package/dest/tree_base.d.ts +13 -11
- package/dest/tree_base.d.ts.map +1 -1
- package/dest/tree_base.js +42 -36
- package/package.json +5 -8
package/dest/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export * from './pedersen.js';
|
|
|
6
6
|
export * from './sparse_tree/sparse_tree.js';
|
|
7
7
|
export { StandardIndexedTree } from './standard_indexed_tree/standard_indexed_tree.js';
|
|
8
8
|
export * from './standard_tree/standard_tree.js';
|
|
9
|
-
export { INITIAL_LEAF } from './tree_base.js';
|
|
9
|
+
export { INITIAL_LEAF, getTreeMeta } from './tree_base.js';
|
|
10
10
|
export { newTree } from './new_tree.js';
|
|
11
11
|
export { loadTree } from './load_tree.js';
|
|
12
12
|
export * from './snapshots/snapshot_builder.js';
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,cAAc,kCAAkC,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvF,cAAc,kCAAkC,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC"}
|
package/dest/index.js
CHANGED
|
@@ -6,11 +6,11 @@ export * from './pedersen.js';
|
|
|
6
6
|
export * from './sparse_tree/sparse_tree.js';
|
|
7
7
|
export { StandardIndexedTree } from './standard_indexed_tree/standard_indexed_tree.js';
|
|
8
8
|
export * from './standard_tree/standard_tree.js';
|
|
9
|
-
export { INITIAL_LEAF } from './tree_base.js';
|
|
9
|
+
export { INITIAL_LEAF, getTreeMeta } from './tree_base.js';
|
|
10
10
|
export { newTree } from './new_tree.js';
|
|
11
11
|
export { loadTree } from './load_tree.js';
|
|
12
12
|
export * from './snapshots/snapshot_builder.js';
|
|
13
13
|
export * from './snapshots/full_snapshot.js';
|
|
14
14
|
export * from './snapshots/append_only_snapshot.js';
|
|
15
15
|
export * from './snapshots/indexed_tree_snapshot.js';
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHNDQUFzQyxDQUFDIn0=
|
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { SiblingPath } from '@aztec/circuit-types';
|
|
3
|
+
import { IndexedTreeLeaf, IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
|
|
4
4
|
import { AppendOnlyTree } from './append_only_tree.js';
|
|
5
|
+
/**
|
|
6
|
+
* Factory for creating leaf preimages.
|
|
7
|
+
*/
|
|
8
|
+
export interface PreimageFactory {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new preimage from a leaf.
|
|
11
|
+
* @param leaf - Leaf to create a preimage from.
|
|
12
|
+
* @param nextKey - Next key of the leaf.
|
|
13
|
+
* @param nextIndex - Next index of the leaf.
|
|
14
|
+
*/
|
|
15
|
+
fromLeaf(leaf: IndexedTreeLeaf, nextKey: bigint, nextIndex: bigint): IndexedTreeLeafPreimage;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new preimage from a buffer.
|
|
18
|
+
* @param buffer - Buffer to create a preimage from.
|
|
19
|
+
*/
|
|
20
|
+
fromBuffer(buffer: Buffer): IndexedTreeLeafPreimage;
|
|
21
|
+
/**
|
|
22
|
+
* Creates an empty preimage.
|
|
23
|
+
*/
|
|
24
|
+
empty(): IndexedTreeLeafPreimage;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a copy of a preimage.
|
|
27
|
+
* @param preimage - Preimage to be cloned.
|
|
28
|
+
*/
|
|
29
|
+
clone(preimage: IndexedTreeLeafPreimage): IndexedTreeLeafPreimage;
|
|
30
|
+
}
|
|
5
31
|
/**
|
|
6
32
|
* All of the data to be return during batch insertion.
|
|
7
33
|
*/
|
|
@@ -50,7 +76,7 @@ export interface IndexedTree extends AppendOnlyTree {
|
|
|
50
76
|
* @param includeUncommitted - If true, the uncommitted changes are included in the search.
|
|
51
77
|
* @returns The found leaf index and a flag indicating if the corresponding leaf's value is equal to `newValue`.
|
|
52
78
|
*/
|
|
53
|
-
findIndexOfPreviousKey(newValue: bigint, includeUncommitted: boolean):
|
|
79
|
+
findIndexOfPreviousKey(newValue: bigint, includeUncommitted: boolean): {
|
|
54
80
|
/**
|
|
55
81
|
* The index of the found leaf.
|
|
56
82
|
*/
|
|
@@ -59,14 +85,14 @@ export interface IndexedTree extends AppendOnlyTree {
|
|
|
59
85
|
* A flag indicating if the corresponding leaf's value is equal to `newValue`.
|
|
60
86
|
*/
|
|
61
87
|
alreadyPresent: boolean;
|
|
62
|
-
} | undefined
|
|
88
|
+
} | undefined;
|
|
63
89
|
/**
|
|
64
90
|
* Gets the latest LeafPreimage copy.
|
|
65
91
|
* @param index - Index of the leaf of which to obtain the LeafPreimage copy.
|
|
66
92
|
* @param includeUncommitted - If true, the uncommitted changes are included in the search.
|
|
67
93
|
* @returns A copy of the leaf preimage at the given index or undefined if the leaf was not found.
|
|
68
94
|
*/
|
|
69
|
-
getLatestLeafPreimageCopy(index: bigint, includeUncommitted: boolean):
|
|
95
|
+
getLatestLeafPreimageCopy(index: bigint, includeUncommitted: boolean): IndexedTreeLeafPreimage | undefined;
|
|
70
96
|
/**
|
|
71
97
|
* Batch insert multiple leaves into the tree.
|
|
72
98
|
* @param leaves - Leaves to insert 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,
|
|
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;AAEvD;;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,WAAY,SAAQ,cAAc;IACjD;;;;;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,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { SiblingPath } from '@aztec/types
|
|
2
|
+
import { SiblingPath } from '@aztec/circuit-types';
|
|
3
3
|
/**
|
|
4
4
|
* Defines the interface for a source of sibling paths.
|
|
5
5
|
*/
|
|
@@ -42,13 +42,13 @@ export interface MerkleTree extends SiblingPathSource {
|
|
|
42
42
|
* @param index - The index of the leaf value to be returned.
|
|
43
43
|
* @param includeUncommitted - Set to true to include uncommitted updates in the data set.
|
|
44
44
|
*/
|
|
45
|
-
getLeafValue(index: bigint, includeUncommitted: boolean):
|
|
45
|
+
getLeafValue(index: bigint, includeUncommitted: boolean): Buffer | undefined;
|
|
46
46
|
/**
|
|
47
47
|
* Returns the index of a leaf given its value, or undefined if no leaf with that value is found.
|
|
48
48
|
* @param leaf - The leaf value to look for.
|
|
49
49
|
* @param includeUncommitted - Indicates whether to include uncommitted data.
|
|
50
50
|
* @returns The index of the first leaf found with a given value (undefined if not found).
|
|
51
51
|
*/
|
|
52
|
-
findLeafIndex(leaf: Buffer, includeUncommitted: boolean):
|
|
52
|
+
findLeafIndex(leaf: Buffer, includeUncommitted: boolean): bigint | undefined;
|
|
53
53
|
}
|
|
54
54
|
//# 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,
|
|
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;AAEnD;;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,UAAW,SAAQ,iBAAiB;IACnD;;;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,MAAM,GAAG,SAAS,CAAC;IAE7E;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAC9E"}
|
package/dest/load_tree.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { AztecKVStore } from '@aztec/kv-store';
|
|
2
3
|
import { Hasher } from '@aztec/types/interfaces';
|
|
3
|
-
import { LevelUp } from 'levelup';
|
|
4
4
|
import { TreeBase } from './tree_base.js';
|
|
5
5
|
/**
|
|
6
6
|
* Creates a new tree and sets its root, depth and size based on the meta data which are associated with the name.
|
|
@@ -10,5 +10,5 @@ import { TreeBase } from './tree_base.js';
|
|
|
10
10
|
* @param name - Name of the tree.
|
|
11
11
|
* @returns The newly created tree.
|
|
12
12
|
*/
|
|
13
|
-
export declare function loadTree<T extends TreeBase>(c: new (
|
|
13
|
+
export declare function loadTree<T extends TreeBase>(c: new (store: AztecKVStore, hasher: Hasher, name: string, depth: number, size: bigint, root: Buffer) => T, store: AztecKVStore, hasher: Hasher, name: string): Promise<T>;
|
|
14
14
|
//# 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,
|
|
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,EACzC,CAAC,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,EAC1G,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,CAAC,CAIZ"}
|
package/dest/load_tree.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getTreeMeta } from './tree_base.js';
|
|
2
2
|
/**
|
|
3
3
|
* Creates a new tree and sets its root, depth and size based on the meta data which are associated with the name.
|
|
4
4
|
* @param c - The class of the tree to be instantiated.
|
|
@@ -7,10 +7,9 @@ import { decodeMeta } from './tree_base.js';
|
|
|
7
7
|
* @param name - Name of the tree.
|
|
8
8
|
* @returns The newly created tree.
|
|
9
9
|
*/
|
|
10
|
-
export
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
return tree;
|
|
10
|
+
export function loadTree(c, store, hasher, name) {
|
|
11
|
+
const { root, depth, size } = getTreeMeta(store, name);
|
|
12
|
+
const tree = new c(store, hasher, name, depth, size, root);
|
|
13
|
+
return Promise.resolve(tree);
|
|
15
14
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF90cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQVksV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLENBQTBHLEVBQzFHLEtBQW1CLEVBQ25CLE1BQWMsRUFDZCxJQUFZO0lBRVosTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDIn0=
|
package/dest/new_tree.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { AztecKVStore } from '@aztec/kv-store';
|
|
1
2
|
import { Hasher } from '@aztec/types/interfaces';
|
|
2
|
-
import { LevelUp } from 'levelup';
|
|
3
3
|
import { TreeBase } from './tree_base.js';
|
|
4
4
|
/**
|
|
5
5
|
* Creates a new tree.
|
|
@@ -11,5 +11,5 @@ import { TreeBase } from './tree_base.js';
|
|
|
11
11
|
* @param prefilledSize - A number of leaves that are prefilled with values.
|
|
12
12
|
* @returns The newly created tree.
|
|
13
13
|
*/
|
|
14
|
-
export declare function newTree<T extends TreeBase>(c: new (
|
|
14
|
+
export declare function newTree<T extends TreeBase>(c: new (store: AztecKVStore, hasher: Hasher, name: string, depth: number, size: bigint) => T, store: AztecKVStore, hasher: Hasher, name: string, depth: number, prefilledSize?: number): Promise<T>;
|
|
15
15
|
//# 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,
|
|
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,EAC9C,CAAC,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,EAC5F,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,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,
|
|
12
|
-
const tree = new c(
|
|
11
|
+
export async function newTree(c, store, hasher, name, depth, prefilledSize = 1) {
|
|
12
|
+
const tree = new c(store, hasher, name, depth, 0n);
|
|
13
13
|
await tree.init(prefilledSize);
|
|
14
14
|
return tree;
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3X3RyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV3X3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQzNCLENBQTRGLEVBQzVGLEtBQW1CLEVBQ25CLE1BQWMsRUFDZCxJQUFZLEVBQ1osS0FBYSxFQUNiLGFBQWEsR0FBRyxDQUFDO0lBRWpCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { AztecKVStore } from '@aztec/kv-store';
|
|
1
2
|
import { Hasher } from '@aztec/types/interfaces';
|
|
2
|
-
import { LevelUp } from 'levelup';
|
|
3
3
|
import { AppendOnlyTree } from '../interfaces/append_only_tree.js';
|
|
4
4
|
import { TreeBase } from '../tree_base.js';
|
|
5
5
|
import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
|
|
@@ -23,7 +23,7 @@ export declare class AppendOnlySnapshotBuilder implements TreeSnapshotBuilder {
|
|
|
23
23
|
private db;
|
|
24
24
|
private tree;
|
|
25
25
|
private hasher;
|
|
26
|
-
constructor(db:
|
|
26
|
+
constructor(db: AztecKVStore, tree: TreeBase & AppendOnlyTree, hasher: Hasher);
|
|
27
27
|
getSnapshot(block: number): Promise<TreeSnapshot>;
|
|
28
28
|
snapshot(block: number): Promise<TreeSnapshot>;
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append_only_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/append_only_snapshot.ts"],"names":[],"mappings":"
|
|
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,yBAA0B,YAAW,mBAAmB;;IAKvD,OAAO,CAAC,EAAE;IAAgB,OAAO,CAAC,IAAI;IAA6B,OAAO,CAAC,MAAM;gBAAzE,EAAE,EAAE,YAAY,EAAU,IAAI,EAAE,QAAQ,GAAG,cAAc,EAAU,MAAM,EAAE,MAAM;IAOrG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoBjD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CA0E/C"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
var _AppendOnlySnapshotBuilder_instances, _AppendOnlySnapshotBuilder_getSnapshotMeta, _AppendOnlySnapshot_instances, _AppendOnlySnapshot_getHistoricalNodeValue, _AppendOnlySnapshot_getBlockNumberThatModifiedNode;
|
|
2
|
-
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
-
import { SiblingPath } from '@aztec/types
|
|
1
|
+
var _AppendOnlySnapshotBuilder_instances, _AppendOnlySnapshotBuilder_nodeValue, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, _AppendOnlySnapshotBuilder_snapshotMetadata, _AppendOnlySnapshotBuilder_getSnapshotMeta, _AppendOnlySnapshot_instances, _AppendOnlySnapshot_getHistoricalNodeValue, _AppendOnlySnapshot_getBlockNumberThatModifiedNode;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { SiblingPath } from '@aztec/circuit-types';
|
|
4
4
|
// stores the last block that modified this node
|
|
5
|
-
const nodeModifiedAtBlockKey = (
|
|
5
|
+
const nodeModifiedAtBlockKey = (level, index) => `node:${level}:${index}:modifiedAtBlock`;
|
|
6
6
|
// stores the value of the node at the above block
|
|
7
|
-
const historicalNodeKey = (
|
|
8
|
-
// metadata for a snapshot
|
|
9
|
-
const snapshotRootKey = (treeName, block) => `snapshot:root:${treeName}:${block}`;
|
|
10
|
-
const snapshotNumLeavesKey = (treeName, block) => `snapshot:numLeaves:${treeName}:${block}`;
|
|
7
|
+
const historicalNodeKey = (level, index) => `node:${level}:${index}:value`;
|
|
11
8
|
/**
|
|
12
9
|
* A more space-efficient way of storing snapshots of AppendOnlyTrees that trades space need for slower
|
|
13
10
|
* sibling path reads.
|
|
@@ -29,95 +26,93 @@ export class AppendOnlySnapshotBuilder {
|
|
|
29
26
|
this.db = db;
|
|
30
27
|
this.tree = tree;
|
|
31
28
|
this.hasher = hasher;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
_AppendOnlySnapshotBuilder_nodeValue.set(this, void 0);
|
|
30
|
+
_AppendOnlySnapshotBuilder_nodeLastModifiedByBlock.set(this, void 0);
|
|
31
|
+
_AppendOnlySnapshotBuilder_snapshotMetadata.set(this, void 0);
|
|
32
|
+
const treeName = tree.getName();
|
|
33
|
+
__classPrivateFieldSet(this, _AppendOnlySnapshotBuilder_nodeValue, db.openMap(`append_only_snapshot:${treeName}:node`), "f");
|
|
34
|
+
__classPrivateFieldSet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, db.openMap(`append_ony_snapshot:${treeName}:block`), "f");
|
|
35
|
+
__classPrivateFieldSet(this, _AppendOnlySnapshotBuilder_snapshotMetadata, db.openMap(`append_only_snapshot:${treeName}:snapshot_metadata`), "f");
|
|
36
|
+
}
|
|
37
|
+
getSnapshot(block) {
|
|
38
|
+
const meta = __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_instances, "m", _AppendOnlySnapshotBuilder_getSnapshotMeta).call(this, block);
|
|
35
39
|
if (typeof meta === 'undefined') {
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
return new AppendOnlySnapshot(this.db, block, meta.numLeaves, meta.root, this.tree, this.hasher);
|
|
39
|
-
}
|
|
40
|
-
async snapshot(block) {
|
|
41
|
-
const meta = await __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_instances, "m", _AppendOnlySnapshotBuilder_getSnapshotMeta).call(this, block);
|
|
42
|
-
if (typeof meta !== 'undefined') {
|
|
43
|
-
// no-op, we already have a snapshot
|
|
44
|
-
return new AppendOnlySnapshot(this.db, block, meta.numLeaves, meta.root, this.tree, this.hasher);
|
|
40
|
+
return Promise.reject(new Error(`Snapshot for tree ${this.tree.getName()} at block ${block} does not exist`));
|
|
45
41
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const historicalValue = await this.db.get(historicalNodeKey(treeName, level, index)).catch(() => undefined);
|
|
55
|
-
if (!historicalValue || !node.equals(historicalValue)) {
|
|
56
|
-
// we've never seen this node before or it's different than before
|
|
57
|
-
// update the historical tree and tag it with the block that modified it
|
|
58
|
-
batch.put(nodeModifiedAtBlockKey(treeName, level, index), String(block));
|
|
59
|
-
batch.put(historicalNodeKey(treeName, level, index), node);
|
|
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));
|
|
43
|
+
}
|
|
44
|
+
snapshot(block) {
|
|
45
|
+
return this.db.transaction(() => {
|
|
46
|
+
const meta = __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_instances, "m", _AppendOnlySnapshotBuilder_getSnapshotMeta).call(this, block);
|
|
47
|
+
if (typeof meta !== 'undefined') {
|
|
48
|
+
// 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);
|
|
60
50
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
const root = this.tree.getRoot(false);
|
|
52
|
+
const depth = this.tree.getDepth();
|
|
53
|
+
const queue = [[root, 0, 0n]];
|
|
54
|
+
// walk the tree in BF and store latest nodes
|
|
55
|
+
while (queue.length > 0) {
|
|
56
|
+
const [node, level, index] = queue.shift();
|
|
57
|
+
const historicalValue = __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f").get(historicalNodeKey(level, index));
|
|
58
|
+
if (!historicalValue || !node.equals(historicalValue)) {
|
|
59
|
+
// we've never seen this node before or it's different than before
|
|
60
|
+
// update the historical tree and tag it with the block that modified it
|
|
61
|
+
void __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f").set(nodeModifiedAtBlockKey(level, index), block);
|
|
62
|
+
void __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f").set(historicalNodeKey(level, index), node);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// if this node hasn't changed, that means, nothing below it has changed either
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (level + 1 > depth) {
|
|
69
|
+
// short circuit if we've reached the leaf level
|
|
70
|
+
// otherwise getNode might throw if we ask for the children of a leaf
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
// these could be undefined because zero hashes aren't stored in the tree
|
|
74
|
+
const [lhs, rhs] = [this.tree.getNode(level + 1, 2n * index), this.tree.getNode(level + 1, 2n * index + 1n)];
|
|
75
|
+
if (lhs) {
|
|
76
|
+
queue.push([lhs, level + 1, 2n * index]);
|
|
77
|
+
}
|
|
78
|
+
if (rhs) {
|
|
79
|
+
queue.push([rhs, level + 1, 2n * index + 1n]);
|
|
80
|
+
}
|
|
64
81
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.tree.getNode(level + 1, 2n * index),
|
|
73
|
-
this.tree.getNode(level + 1, 2n * index + 1n),
|
|
74
|
-
]);
|
|
75
|
-
if (lhs) {
|
|
76
|
-
queue.push([lhs, level + 1, 2n * index]);
|
|
77
|
-
}
|
|
78
|
-
if (rhs) {
|
|
79
|
-
queue.push([rhs, level + 1, 2n * index + 1n]);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
const numLeaves = this.tree.getNumLeaves(false);
|
|
83
|
-
batch.put(snapshotNumLeavesKey(treeName, block), String(numLeaves));
|
|
84
|
-
batch.put(snapshotRootKey(treeName, block), root);
|
|
85
|
-
await batch.write();
|
|
86
|
-
return new AppendOnlySnapshot(this.db, block, numLeaves, root, this.tree, this.hasher);
|
|
82
|
+
const numLeaves = this.tree.getNumLeaves(false);
|
|
83
|
+
void __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_snapshotMetadata, "f").set(block, {
|
|
84
|
+
numLeaves,
|
|
85
|
+
root,
|
|
86
|
+
});
|
|
87
|
+
return new AppendOnlySnapshot(__classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeValue, "f"), __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock, "f"), block, numLeaves, root, this.tree, this.hasher);
|
|
88
|
+
});
|
|
87
89
|
}
|
|
88
90
|
}
|
|
89
|
-
_AppendOnlySnapshotBuilder_instances = new WeakSet(), _AppendOnlySnapshotBuilder_getSnapshotMeta =
|
|
90
|
-
|
|
91
|
-
const treeName = this.tree.getName();
|
|
92
|
-
const root = await this.db.get(snapshotRootKey(treeName, block));
|
|
93
|
-
const numLeaves = BigInt(await this.db.get(snapshotNumLeavesKey(treeName, block)));
|
|
94
|
-
return { root, numLeaves };
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
return undefined;
|
|
98
|
-
}
|
|
91
|
+
_AppendOnlySnapshotBuilder_nodeValue = new WeakMap(), _AppendOnlySnapshotBuilder_nodeLastModifiedByBlock = new WeakMap(), _AppendOnlySnapshotBuilder_snapshotMetadata = new WeakMap(), _AppendOnlySnapshotBuilder_instances = new WeakSet(), _AppendOnlySnapshotBuilder_getSnapshotMeta = function _AppendOnlySnapshotBuilder_getSnapshotMeta(block) {
|
|
92
|
+
return __classPrivateFieldGet(this, _AppendOnlySnapshotBuilder_snapshotMetadata, "f").get(block);
|
|
99
93
|
};
|
|
100
94
|
/**
|
|
101
95
|
* a
|
|
102
96
|
*/
|
|
103
97
|
class AppendOnlySnapshot {
|
|
104
|
-
constructor(
|
|
98
|
+
constructor(nodes, nodeHistory, block, leafCount, historicalRoot, tree, hasher) {
|
|
105
99
|
_AppendOnlySnapshot_instances.add(this);
|
|
106
|
-
this.
|
|
100
|
+
this.nodes = nodes;
|
|
101
|
+
this.nodeHistory = nodeHistory;
|
|
107
102
|
this.block = block;
|
|
108
103
|
this.leafCount = leafCount;
|
|
109
104
|
this.historicalRoot = historicalRoot;
|
|
110
105
|
this.tree = tree;
|
|
111
106
|
this.hasher = hasher;
|
|
112
107
|
}
|
|
113
|
-
|
|
108
|
+
getSiblingPath(index) {
|
|
114
109
|
const path = [];
|
|
115
110
|
const depth = this.tree.getDepth();
|
|
116
111
|
let level = depth;
|
|
117
112
|
while (level > 0) {
|
|
118
113
|
const isRight = index & 0x01n;
|
|
119
114
|
const siblingIndex = isRight ? index - 1n : index + 1n;
|
|
120
|
-
const sibling =
|
|
115
|
+
const sibling = __classPrivateFieldGet(this, _AppendOnlySnapshot_instances, "m", _AppendOnlySnapshot_getHistoricalNodeValue).call(this, level, siblingIndex);
|
|
121
116
|
path.push(sibling);
|
|
122
117
|
level -= 1;
|
|
123
118
|
index >>= 1n;
|
|
@@ -134,24 +129,24 @@ class AppendOnlySnapshot {
|
|
|
134
129
|
// we could recompute it, but it's way cheaper to just store the root
|
|
135
130
|
return this.historicalRoot;
|
|
136
131
|
}
|
|
137
|
-
|
|
132
|
+
getLeafValue(index) {
|
|
138
133
|
const leafLevel = this.getDepth();
|
|
139
|
-
const blockNumber =
|
|
134
|
+
const blockNumber = __classPrivateFieldGet(this, _AppendOnlySnapshot_instances, "m", _AppendOnlySnapshot_getBlockNumberThatModifiedNode).call(this, leafLevel, index);
|
|
140
135
|
// leaf hasn't been set yet
|
|
141
136
|
if (typeof blockNumber === 'undefined') {
|
|
142
137
|
return undefined;
|
|
143
138
|
}
|
|
144
139
|
// leaf was set some time in the past
|
|
145
140
|
if (blockNumber <= this.block) {
|
|
146
|
-
return this.
|
|
141
|
+
return this.nodes.get(historicalNodeKey(leafLevel, index));
|
|
147
142
|
}
|
|
148
143
|
// leaf has been set but in a block in the future
|
|
149
144
|
return undefined;
|
|
150
145
|
}
|
|
151
|
-
|
|
146
|
+
findLeafIndex(value) {
|
|
152
147
|
const numLeaves = this.getNumLeaves();
|
|
153
148
|
for (let i = 0n; i < numLeaves; i++) {
|
|
154
|
-
const currentValue =
|
|
149
|
+
const currentValue = this.getLeafValue(i);
|
|
155
150
|
if (currentValue && currentValue.equals(value)) {
|
|
156
151
|
return i;
|
|
157
152
|
}
|
|
@@ -159,15 +154,15 @@ class AppendOnlySnapshot {
|
|
|
159
154
|
return undefined;
|
|
160
155
|
}
|
|
161
156
|
}
|
|
162
|
-
_AppendOnlySnapshot_instances = new WeakSet(), _AppendOnlySnapshot_getHistoricalNodeValue =
|
|
163
|
-
const blockNumber =
|
|
157
|
+
_AppendOnlySnapshot_instances = new WeakSet(), _AppendOnlySnapshot_getHistoricalNodeValue = function _AppendOnlySnapshot_getHistoricalNodeValue(level, index) {
|
|
158
|
+
const blockNumber = __classPrivateFieldGet(this, _AppendOnlySnapshot_instances, "m", _AppendOnlySnapshot_getBlockNumberThatModifiedNode).call(this, level, index);
|
|
164
159
|
// node has never been set
|
|
165
160
|
if (typeof blockNumber === 'undefined') {
|
|
166
161
|
return this.tree.getZeroHash(level);
|
|
167
162
|
}
|
|
168
163
|
// node was set some time in the past
|
|
169
164
|
if (blockNumber <= this.block) {
|
|
170
|
-
return this.
|
|
165
|
+
return this.nodes.get(historicalNodeKey(level, index));
|
|
171
166
|
}
|
|
172
167
|
// the node has been modified since this snapshot was taken
|
|
173
168
|
// because we're working with an AppendOnly tree, historical leaves never change
|
|
@@ -183,18 +178,12 @@ _AppendOnlySnapshot_instances = new WeakSet(), _AppendOnlySnapshot_getHistorical
|
|
|
183
178
|
if (leafStart >= this.leafCount) {
|
|
184
179
|
return this.tree.getZeroHash(level);
|
|
185
180
|
}
|
|
186
|
-
const [lhs, rhs] =
|
|
181
|
+
const [lhs, rhs] = [
|
|
187
182
|
__classPrivateFieldGet(this, _AppendOnlySnapshot_instances, "m", _AppendOnlySnapshot_getHistoricalNodeValue).call(this, level + 1, 2n * index),
|
|
188
183
|
__classPrivateFieldGet(this, _AppendOnlySnapshot_instances, "m", _AppendOnlySnapshot_getHistoricalNodeValue).call(this, level + 1, 2n * index + 1n),
|
|
189
|
-
]
|
|
184
|
+
];
|
|
190
185
|
return this.hasher.hash(lhs, rhs);
|
|
191
|
-
}, _AppendOnlySnapshot_getBlockNumberThatModifiedNode =
|
|
192
|
-
|
|
193
|
-
const value = await this.db.get(nodeModifiedAtBlockKey(this.tree.getName(), level, index));
|
|
194
|
-
return parseInt(value.toString(), 10);
|
|
195
|
-
}
|
|
196
|
-
catch (err) {
|
|
197
|
-
return undefined;
|
|
198
|
-
}
|
|
186
|
+
}, _AppendOnlySnapshot_getBlockNumberThatModifiedNode = function _AppendOnlySnapshot_getBlockNumberThatModifiedNode(level, index) {
|
|
187
|
+
return this.nodeHistory.get(nodeModifiedAtBlockKey(level, index));
|
|
199
188
|
};
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kX29ubHlfc25hcHNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc25hcHNob3RzL2FwcGVuZF9vbmx5X3NuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUW5ELGdEQUFnRDtBQUNoRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksS0FBSyxrQkFBa0IsQ0FBQztBQUUxRyxrREFBa0Q7QUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEtBQUssUUFBUSxDQUFDO0FBWTNGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxZQUFvQixFQUFnQixFQUFVLElBQStCLEVBQVUsTUFBYzs7UUFBakYsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUFVLFNBQUksR0FBSixJQUFJLENBQTJCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUpyRyx1REFBbUU7UUFDbkUscUVBQXNGO1FBQ3RGLDhEQUFzRDtRQUdwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsdUJBQUEsSUFBSSx3Q0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLHdCQUF3QixRQUFRLE9BQU8sQ0FBQyxNQUFBLENBQUM7UUFDdEUsdUJBQUEsSUFBSSxzREFBNEIsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsUUFBUSxRQUFRLENBQUMsTUFBQSxDQUFDO1FBQ3BGLHVCQUFBLElBQUksK0NBQXFCLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLFFBQVEsb0JBQW9CLENBQUMsTUFBQSxDQUFDO0lBQzVGLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixNQUFNLElBQUksR0FBRyx1QkFBQSxJQUFJLHdGQUFpQixNQUFyQixJQUFJLEVBQWtCLEtBQUssQ0FBQyxDQUFDO1FBRTFDLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDaEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ2hILENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLElBQUksa0JBQWtCLENBQ3BCLHVCQUFBLElBQUksNENBQVcsRUFDZix1QkFBQSxJQUFJLDBEQUF5QixFQUM3QixLQUFLLEVBQ0wsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEdBQUcsdUJBQUEsSUFBSSx3RkFBaUIsTUFBckIsSUFBSSxFQUFrQixLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNoQyxvQ0FBb0M7Z0JBQ3BDLE9BQU8sSUFBSSxrQkFBa0IsQ0FDM0IsdUJBQUEsSUFBSSw0Q0FBVyxFQUNmLHVCQUFBLElBQUksMERBQXlCLEVBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEtBQUssR0FBK0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUUxRCw2Q0FBNkM7WUFDN0MsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFHLENBQUM7Z0JBRTVDLE1BQU0sZUFBZSxHQUFHLHVCQUFBLElBQUksNENBQVcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQ3RELGtFQUFrRTtvQkFDbEUsd0VBQXdFO29CQUN4RSxLQUFLLHVCQUFBLElBQUksMERBQXlCLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDcEYsS0FBSyx1QkFBQSxJQUFJLDRDQUFXLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEUsQ0FBQztxQkFBTSxDQUFDO29CQUNOLCtFQUErRTtvQkFDL0UsU0FBUztnQkFDWCxDQUFDO2dCQUVELElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQztvQkFDdEIsZ0RBQWdEO29CQUNoRCxxRUFBcUU7b0JBQ3JFLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCx5RUFBeUU7Z0JBQ3pFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFN0csSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBRUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELEtBQUssdUJBQUEsSUFBSSxtREFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUNyQyxTQUFTO2dCQUNULElBQUk7YUFDTCxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksa0JBQWtCLENBQzNCLHVCQUFBLElBQUksNENBQVcsRUFDZix1QkFBQSxJQUFJLDBEQUF5QixFQUM3QixLQUFLLEVBQ0wsU0FBUyxFQUNULElBQUksRUFDSixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUtGOzhVQUhrQixLQUFhO0lBQzVCLE9BQU8sdUJBQUEsSUFBSSxtREFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUdIOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0I7SUFDdEIsWUFDVSxLQUErQixFQUMvQixXQUFxQyxFQUNyQyxLQUFhLEVBQ2IsU0FBaUIsRUFDakIsY0FBc0IsRUFDdEIsSUFBK0IsRUFDL0IsTUFBYzs7UUFOZCxVQUFLLEdBQUwsS0FBSyxDQUEwQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBMEI7UUFDckMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUcsY0FBYyxDQUFtQixLQUFhO1FBQ25ELE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25DLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVsQixPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixNQUFNLE9BQU8sR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQzlCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUV2RCxNQUFNLE9BQU8sR0FBRyx1QkFBQSxJQUFJLGlGQUF3QixNQUE1QixJQUFJLEVBQXlCLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRW5CLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxXQUFXLENBQUksS0FBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPO1FBQ0wscUVBQXFFO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLHVCQUFBLElBQUkseUZBQWdDLE1BQXBDLElBQUksRUFBaUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTNFLDJCQUEyQjtRQUMzQixJQUFJLE9BQU8sV0FBVyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELGlEQUFpRDtRQUNqRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBMENELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7Z0pBbER5QixLQUFhLEVBQUUsS0FBYTtJQUNsRCxNQUFNLFdBQVcsR0FBRyx1QkFBQSxJQUFJLHlGQUFnQyxNQUFwQyxJQUFJLEVBQWlDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUV2RSwwQkFBMEI7SUFDMUIsSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxnRkFBZ0Y7SUFDaEYsbUZBQW1GO0lBQ25GLHNDQUFzQztJQUN0QyxFQUFFO0lBQ0YsMERBQTBEO0lBQzFELGdGQUFnRjtJQUNoRixvRUFBb0U7SUFDcEUscURBQXFEO0lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsTUFBTSxTQUFTLEdBQUcsS0FBSyxHQUFHLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3RELElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1FBQ2pCLHVCQUFBLElBQUksaUZBQXdCLE1BQTVCLElBQUksRUFBeUIsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ25ELHVCQUFBLElBQUksaUZBQXdCLE1BQTVCLElBQUksRUFBeUIsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztLQUN6RCxDQUFDO0lBRUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxtSEFFK0IsS0FBYSxFQUFFLEtBQWE7SUFDMUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDIn0=
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { SiblingPath } from '@aztec/types
|
|
3
|
-
import {
|
|
2
|
+
import { SiblingPath } from '@aztec/circuit-types';
|
|
3
|
+
import { AztecKVStore, AztecMap } from '@aztec/kv-store';
|
|
4
4
|
import { TreeBase } from '../tree_base.js';
|
|
5
5
|
import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
|
|
6
|
+
/**
|
|
7
|
+
* Metadata for a snapshot, per block
|
|
8
|
+
*/
|
|
9
|
+
type SnapshotMetadata = {
|
|
10
|
+
/** The tree root at the time */
|
|
11
|
+
root: Buffer;
|
|
12
|
+
/** The number of filled leaves */
|
|
13
|
+
numLeaves: bigint;
|
|
14
|
+
};
|
|
6
15
|
/**
|
|
7
16
|
* Builds a full snapshot of a tree. This implementation works for any Merkle tree and stores
|
|
8
17
|
* it in a database in a similar way to how a tree is stored in memory, using pointers.
|
|
@@ -21,11 +30,13 @@ import { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
|
|
|
21
30
|
*/
|
|
22
31
|
export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase, S extends TreeSnapshot> implements TreeSnapshotBuilder<S> {
|
|
23
32
|
#private;
|
|
24
|
-
protected db:
|
|
33
|
+
protected db: AztecKVStore;
|
|
25
34
|
protected tree: T;
|
|
26
|
-
|
|
35
|
+
protected nodes: AztecMap<string, [Buffer, Buffer]>;
|
|
36
|
+
protected snapshotMetadata: AztecMap<number, SnapshotMetadata>;
|
|
37
|
+
constructor(db: AztecKVStore, tree: T);
|
|
27
38
|
snapshot(block: number): Promise<S>;
|
|
28
|
-
protected handleLeaf(_index: bigint, _node: Buffer
|
|
39
|
+
protected handleLeaf(_index: bigint, _node: Buffer): void;
|
|
29
40
|
getSnapshot(version: number): Promise<S>;
|
|
30
41
|
protected abstract openSnapshot(root: Buffer, numLeaves: bigint): S;
|
|
31
42
|
}
|
|
@@ -34,17 +45,18 @@ export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase, S
|
|
|
34
45
|
*/
|
|
35
46
|
export declare class BaseFullTreeSnapshot implements TreeSnapshot {
|
|
36
47
|
#private;
|
|
37
|
-
protected db:
|
|
48
|
+
protected db: AztecMap<string, [Buffer, Buffer]>;
|
|
38
49
|
protected historicRoot: Buffer;
|
|
39
50
|
protected numLeaves: bigint;
|
|
40
51
|
protected tree: TreeBase;
|
|
41
|
-
constructor(db:
|
|
42
|
-
getSiblingPath<N extends number>(index: bigint):
|
|
43
|
-
getLeafValue(index: bigint):
|
|
52
|
+
constructor(db: AztecMap<string, [Buffer, Buffer]>, historicRoot: Buffer, numLeaves: bigint, tree: TreeBase);
|
|
53
|
+
getSiblingPath<N extends number>(index: bigint): SiblingPath<N>;
|
|
54
|
+
getLeafValue(index: bigint): Buffer | undefined;
|
|
44
55
|
getDepth(): number;
|
|
45
56
|
getRoot(): Buffer;
|
|
46
57
|
getNumLeaves(): bigint;
|
|
47
|
-
protected pathFromRootToLeaf(leafIndex: bigint):
|
|
48
|
-
findLeafIndex(value: Buffer):
|
|
58
|
+
protected pathFromRootToLeaf(leafIndex: bigint): Generator<Buffer[], void, unknown>;
|
|
59
|
+
findLeafIndex(value: Buffer): bigint | undefined;
|
|
49
60
|
}
|
|
61
|
+
export {};
|
|
50
62
|
//# 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,
|
|
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,CAC1F,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,oBAAqB,YAAW,YAAY;;IAErD,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;gBAHd,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ;IAG1B,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAc/D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAS/C,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,MAAM,GAAG,MAAM,GAAG,SAAS;CAUjD"}
|