@aztec/merkle-tree 3.0.0-nightly.20251202 → 3.0.0-nightly.20251204
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/snapshots/append_only_snapshot.d.ts +4 -3
- package/dest/snapshots/append_only_snapshot.d.ts.map +1 -1
- package/dest/snapshots/base_full_snapshot.d.ts +5 -4
- package/dest/snapshots/base_full_snapshot.d.ts.map +1 -1
- package/dest/snapshots/snapshot_builder.d.ts +4 -3
- package/dest/snapshots/snapshot_builder.d.ts.map +1 -1
- package/dest/snapshots/snapshot_builder_test_suite.d.ts +1 -1
- package/dest/snapshots/snapshot_builder_test_suite.d.ts.map +1 -1
- package/dest/snapshots/snapshot_builder_test_suite.js +19 -18
- package/dest/sparse_tree/sparse_tree.d.ts +4 -3
- package/dest/sparse_tree/sparse_tree.d.ts.map +1 -1
- package/dest/standard_indexed_tree/standard_indexed_tree.d.ts +4 -3
- package/dest/standard_indexed_tree/standard_indexed_tree.d.ts.map +1 -1
- package/dest/standard_tree/standard_tree.d.ts +4 -3
- package/dest/standard_tree/standard_tree.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/snapshots/append_only_snapshot.ts +9 -8
- package/src/snapshots/base_full_snapshot.ts +5 -4
- package/src/snapshots/snapshot_builder.ts +3 -2
- package/src/snapshots/snapshot_builder_test_suite.ts +19 -18
- package/src/sparse_tree/sparse_tree.ts +3 -2
- package/src/standard_indexed_tree/standard_indexed_tree.ts +3 -2
- package/src/standard_tree/standard_tree.ts +3 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { type Bufferable, type FromBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
import type { Hasher } from '@aztec/foundation/trees';
|
|
3
4
|
import type { AztecKVStore } from '@aztec/kv-store';
|
|
@@ -26,7 +27,7 @@ export declare class AppendOnlySnapshotBuilder<T extends Bufferable> implements
|
|
|
26
27
|
private hasher;
|
|
27
28
|
private deserializer;
|
|
28
29
|
constructor(db: AztecKVStore, tree: TreeBase<T> & AppendOnlyTree<T>, hasher: Hasher, deserializer: FromBuffer<T>);
|
|
29
|
-
getSnapshot(block:
|
|
30
|
-
snapshot(block:
|
|
30
|
+
getSnapshot(block: BlockNumber): Promise<TreeSnapshot<T>>;
|
|
31
|
+
snapshot(block: BlockNumber): Promise<TreeSnapshot<T>>;
|
|
31
32
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kX29ubHlfc25hcHNob3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zbmFwc2hvdHMvYXBwZW5kX29ubHlfc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFLEtBQUssVUFBVSxFQUFxQixNQUFNLDZCQUE2QixDQUFDO0FBRWxHLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBa0IvRTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILHFCQUFhLHlCQUF5QixDQUFDLENBQUMsU0FBUyxVQUFVLENBQUUsWUFBVyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7O0lBTXhHLE9BQU8sQ0FBQyxFQUFFO0lBQ1YsT0FBTyxDQUFDLElBQUk7SUFDWixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxZQUFZO0lBSnRCLFlBQ1UsRUFBRSxFQUFFLFlBQVksRUFDaEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQ3JDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFNcEM7SUFFRCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBbUJ4RDtJQUVELFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0F1RXJEO0NBS0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append_only_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/append_only_snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAElG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkB/E;;;;;;;;;;;;;;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;IAJtB,YACU,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,EAMpC;IAED,WAAW,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"append_only_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/append_only_snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAElG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkB/E;;;;;;;;;;;;;;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;IAJtB,YACU,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,EAMpC;IAED,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAmBxD;IAED,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAuErD;CAKF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { type Bufferable, type FromBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
3
4
|
import type { AztecKVStore, AztecMap } from '@aztec/kv-store';
|
|
@@ -33,11 +34,11 @@ export declare abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase<Buf
|
|
|
33
34
|
protected db: AztecKVStore;
|
|
34
35
|
protected tree: T;
|
|
35
36
|
protected nodes: AztecMap<string, [Buffer, Buffer]>;
|
|
36
|
-
protected snapshotMetadata: AztecMap<
|
|
37
|
+
protected snapshotMetadata: AztecMap<BlockNumber, SnapshotMetadata>;
|
|
37
38
|
constructor(db: AztecKVStore, tree: T);
|
|
38
|
-
snapshot(block:
|
|
39
|
+
snapshot(block: BlockNumber): Promise<S>;
|
|
39
40
|
protected handleLeaf(_index: bigint, _node: Buffer): void;
|
|
40
|
-
getSnapshot(version:
|
|
41
|
+
getSnapshot(version: BlockNumber): Promise<S>;
|
|
41
42
|
protected abstract openSnapshot(root: Buffer, numLeaves: bigint): S;
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
@@ -61,4 +62,4 @@ export declare class BaseFullTreeSnapshot<T extends Bufferable> implements TreeS
|
|
|
61
62
|
findLeafIndexAfter(value: T, startIndex: bigint): bigint | undefined;
|
|
62
63
|
}
|
|
63
64
|
export {};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9mdWxsX3NuYXBzaG90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc25hcHNob3RzL2Jhc2VfZnVsbF9zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUUsS0FBSyxVQUFVLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRTs7R0FFRztBQUNILEtBQUssZ0JBQWdCLEdBQUc7SUFDdEIsZ0NBQWdDO0lBQ2hDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixrQ0FBa0M7SUFDbEMsU0FBUyxFQUFFLE1BQU0sQ0FBQztDQUNuQixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsOEJBQXNCLDJCQUEyQixDQUFDLENBQUMsU0FBUyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxTQUFTLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FDbEgsWUFBVyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7O0lBTS9CLFNBQVMsQ0FBQyxFQUFFLEVBQUUsWUFBWTtJQUMxQixTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFMbkIsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUVwRSxZQUNZLEVBQUUsRUFBRSxZQUFZLEVBQ2hCLElBQUksRUFBRSxDQUFDLEVBSWxCO0lBRUQsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQXNEdkM7SUFFRCxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUc7SUFFNUQsV0FBVyxDQUFDLE9BQU8sRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQVE1QztJQUVELFNBQVMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FLckU7QUFFRDs7R0FFRztBQUNILHFCQUFhLG9CQUFvQixDQUFDLENBQUMsU0FBUyxVQUFVLENBQUUsWUFBVyxZQUFZLENBQUMsQ0FBQyxDQUFDOztJQUU5RSxTQUFTLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsU0FBUyxDQUFDLFlBQVksRUFBRSxNQUFNO0lBQzlCLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTTtJQUMzQixTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0IsU0FBUyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBTHZDLFlBQ1ksRUFBRSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFDdEMsWUFBWSxFQUFFLE1BQU0sRUFDcEIsU0FBUyxFQUFFLE1BQU0sRUFDakIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFDakIsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFDbkM7SUFFSixjQUFjLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FZOUQ7SUFFRCxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQU96QztJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FFaEI7SUFFRCxZQUFZLElBQUksTUFBTSxDQUVyQjtJQUVELFNBQVMsQ0FBRSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSx1REFrQjlDO0lBc0JELGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBRTFDO0lBRU0sa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBVTFFO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_full_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/base_full_snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;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;;IAM/B,SAAS,CAAC,EAAE,EAAE,YAAY;IAC1B,SAAS,CAAC,IAAI,EAAE,CAAC;IALnB,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"base_full_snapshot.d.ts","sourceRoot":"","sources":["../../src/snapshots/base_full_snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { Bufferable } from '@aztec/foundation/serialize';
|
|
2
3
|
import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
|
|
3
4
|
/**
|
|
@@ -8,12 +9,12 @@ export interface TreeSnapshotBuilder<S extends TreeSnapshot<Bufferable>> {
|
|
|
8
9
|
* Creates a snapshot of the tree at the given version.
|
|
9
10
|
* @param block - The version to snapshot the tree at.
|
|
10
11
|
*/
|
|
11
|
-
snapshot(block:
|
|
12
|
+
snapshot(block: BlockNumber): Promise<S>;
|
|
12
13
|
/**
|
|
13
14
|
* Returns a snapshot of the tree at the given version.
|
|
14
15
|
* @param block - The version of the snapshot to return.
|
|
15
16
|
*/
|
|
16
|
-
getSnapshot(block:
|
|
17
|
+
getSnapshot(block: BlockNumber): Promise<S>;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
20
|
* A tree snapshot
|
|
@@ -79,4 +80,4 @@ export interface IndexedTreeSnapshot extends TreeSnapshot<Buffer> {
|
|
|
79
80
|
alreadyPresent: boolean;
|
|
80
81
|
};
|
|
81
82
|
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3RfYnVpbGRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NuYXBzaG90cy9zbmFwc2hvdF9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBGOztHQUVHO0FBQ0gsTUFBTSxXQUFXLG1CQUFtQixDQUFDLENBQUMsU0FBUyxZQUFZLENBQUMsVUFBVSxDQUFDO0lBQ3JFOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6Qzs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDN0M7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxZQUFZLENBQUMsQ0FBQyxTQUFTLFVBQVU7SUFDaEQ7O09BRUc7SUFDSCxPQUFPLElBQUksTUFBTSxDQUFDO0lBRWxCOztPQUVHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FBQztJQUVuQjs7T0FFRztJQUNILFlBQVksSUFBSSxNQUFNLENBQUM7SUFFdkI7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUUzQzs7O09BR0c7SUFDSCxjQUFjLENBQUMsQ0FBQyxTQUFTLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRTs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFFNUM7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztDQUNyRTtBQUVELG9DQUFvQztBQUNwQyxNQUFNLFdBQVcsbUJBQW9CLFNBQVEsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUMvRDs7O09BR0c7SUFDSCx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLHVCQUF1QixHQUFHLFNBQVMsQ0FBQztJQUU5RTs7OztPQUlHO0lBQ0gsc0JBQXNCLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRztRQUN4Qzs7V0FFRztRQUNILEtBQUssRUFBRSxNQUFNLENBQUM7UUFDZDs7V0FFRztRQUNILGNBQWMsRUFBRSxPQUFPLENBQUM7S0FDekIsQ0FBQztDQUNIIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot_builder.d.ts","sourceRoot":"","sources":["../../src/snapshots/snapshot_builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,YAAY,CAAC,UAAU,CAAC;IACrE;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"snapshot_builder.d.ts","sourceRoot":"","sources":["../../src/snapshots/snapshot_builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,YAAY,CAAC,UAAU,CAAC;IACrE;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,UAAU;IAChD;;OAEG;IACH,OAAO,IAAI,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE3C;;;OAGG;IACH,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAEhE;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;IAE5C;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACrE;AAED,oCAAoC;AACpC,MAAM,WAAW,mBAAoB,SAAQ,YAAY,CAAC,MAAM,CAAC;IAC/D;;;OAGG;IACH,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAE9E;;;;OAIG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG;QACxC;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH"}
|
|
@@ -3,4 +3,4 @@ import type { TreeBase } from '../tree_base.js';
|
|
|
3
3
|
import type { TreeSnapshot, TreeSnapshotBuilder } from './snapshot_builder.js';
|
|
4
4
|
/** Creates a test suit for snapshots */
|
|
5
5
|
export declare function describeSnapshotBuilderTestSuite<T extends TreeBase<Bufferable>, S extends TreeSnapshotBuilder<TreeSnapshot<Bufferable>>>(getTree: () => T, getSnapshotBuilder: () => S, modifyTree: (tree: T) => Promise<void>): void;
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3RfYnVpbGRlcl90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc25hcHNob3RzL3NuYXBzaG90X2J1aWxkZXJfdGVzdF9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUk5RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUkvRSx3Q0FBd0M7QUFDeEMsd0JBQWdCLGdDQUFnQyxDQUM5QyxDQUFDLFNBQVMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUM5QixDQUFDLFNBQVMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3ZELE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFtTnRGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot_builder_test_suite.d.ts","sourceRoot":"","sources":["../../src/snapshots/snapshot_builder_test_suite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snapshot_builder_test_suite.d.ts","sourceRoot":"","sources":["../../src/snapshots/snapshot_builder_test_suite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAI9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAI/E,wCAAwC;AACxC,wBAAgB,gCAAgC,CAC9C,CAAC,SAAS,QAAQ,CAAC,UAAU,CAAC,EAC9B,CAAC,SAAS,mBAAmB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EACvD,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,QAmNtF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { randomBigInt } from '@aztec/foundation/crypto';
|
|
2
3
|
import { jest } from '@jest/globals';
|
|
3
4
|
jest.setTimeout(50_000);
|
|
@@ -17,12 +18,12 @@ jest.setTimeout(50_000);
|
|
|
17
18
|
it('takes snapshots', async ()=>{
|
|
18
19
|
await modifyTree(tree);
|
|
19
20
|
await tree.commit();
|
|
20
|
-
await expect(snapshotBuilder.snapshot(1)).resolves.toBeDefined();
|
|
21
|
+
await expect(snapshotBuilder.snapshot(BlockNumber(1))).resolves.toBeDefined();
|
|
21
22
|
});
|
|
22
23
|
it('is idempotent', async ()=>{
|
|
23
24
|
await modifyTree(tree);
|
|
24
25
|
await tree.commit();
|
|
25
|
-
const block = 1;
|
|
26
|
+
const block = BlockNumber(1);
|
|
26
27
|
const snapshot = await snapshotBuilder.snapshot(block);
|
|
27
28
|
const newSnapshot = await snapshotBuilder.snapshot(block);
|
|
28
29
|
expect(newSnapshot.getRoot()).toEqual(snapshot.getRoot());
|
|
@@ -30,7 +31,7 @@ jest.setTimeout(50_000);
|
|
|
30
31
|
it('returns the same path if tree has not diverged', async ()=>{
|
|
31
32
|
await modifyTree(tree);
|
|
32
33
|
await tree.commit();
|
|
33
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
34
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
34
35
|
const historicPaths = await Promise.all(leaves.map((leaf)=>snapshot.getSiblingPath(leaf)));
|
|
35
36
|
const expectedPaths = await Promise.all(leaves.map((leaf)=>tree.getSiblingPath(leaf, false)));
|
|
36
37
|
for (const [index, path] of historicPaths.entries()){
|
|
@@ -40,7 +41,7 @@ jest.setTimeout(50_000);
|
|
|
40
41
|
it('returns historic paths if tree has diverged and no new snapshots have been taken', async ()=>{
|
|
41
42
|
await modifyTree(tree);
|
|
42
43
|
await tree.commit();
|
|
43
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
44
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
44
45
|
const expectedPaths = await Promise.all(leaves.map((leaf)=>tree.getSiblingPath(leaf, false)));
|
|
45
46
|
await modifyTree(tree);
|
|
46
47
|
await tree.commit();
|
|
@@ -53,10 +54,10 @@ jest.setTimeout(50_000);
|
|
|
53
54
|
await modifyTree(tree);
|
|
54
55
|
await tree.commit();
|
|
55
56
|
const expectedPaths = await Promise.all(leaves.map((leaf)=>tree.getSiblingPath(leaf, false)));
|
|
56
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
57
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
57
58
|
await modifyTree(tree);
|
|
58
59
|
await tree.commit();
|
|
59
|
-
await snapshotBuilder.snapshot(2);
|
|
60
|
+
await snapshotBuilder.snapshot(BlockNumber(2));
|
|
60
61
|
// check that snapshot 2 has not influenced snapshot(1) at all
|
|
61
62
|
const historicPaths = await Promise.all(leaves.map((leaf)=>snapshot.getSiblingPath(leaf)));
|
|
62
63
|
for (const [index, path] of historicPaths.entries()){
|
|
@@ -67,10 +68,10 @@ jest.setTimeout(50_000);
|
|
|
67
68
|
await modifyTree(tree);
|
|
68
69
|
await tree.commit();
|
|
69
70
|
const expectedPaths = await Promise.all(leaves.map((leaf)=>tree.getSiblingPath(leaf, false)));
|
|
70
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
71
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
71
72
|
await modifyTree(tree);
|
|
72
73
|
await tree.commit();
|
|
73
|
-
await snapshotBuilder.snapshot(2);
|
|
74
|
+
await snapshotBuilder.snapshot(BlockNumber(2));
|
|
74
75
|
await modifyTree(tree);
|
|
75
76
|
await tree.commit();
|
|
76
77
|
// check that snapshot 2 has not influenced snapshot(1) at all
|
|
@@ -86,13 +87,13 @@ jest.setTimeout(50_000);
|
|
|
86
87
|
await modifyTree(tree);
|
|
87
88
|
await tree.commit();
|
|
88
89
|
const expectedPaths = await Promise.all(leaves.map((leaf)=>tree.getSiblingPath(leaf, false)));
|
|
89
|
-
await snapshotBuilder.snapshot(1);
|
|
90
|
+
await snapshotBuilder.snapshot(BlockNumber(1));
|
|
90
91
|
for(let i = 2; i < 5; i++){
|
|
91
92
|
await modifyTree(tree);
|
|
92
93
|
await tree.commit();
|
|
93
|
-
await snapshotBuilder.snapshot(i);
|
|
94
|
+
await snapshotBuilder.snapshot(BlockNumber(i));
|
|
94
95
|
}
|
|
95
|
-
const firstSnapshot = await snapshotBuilder.getSnapshot(1);
|
|
96
|
+
const firstSnapshot = await snapshotBuilder.getSnapshot(BlockNumber(1));
|
|
96
97
|
const historicPaths = await Promise.all(leaves.map((leaf)=>firstSnapshot.getSiblingPath(leaf)));
|
|
97
98
|
for (const [index, path] of historicPaths.entries()){
|
|
98
99
|
expect(path).toEqual(expectedPaths[index]);
|
|
@@ -101,15 +102,15 @@ jest.setTimeout(50_000);
|
|
|
101
102
|
it('throws if an unknown snapshot is requested', async ()=>{
|
|
102
103
|
await modifyTree(tree);
|
|
103
104
|
await tree.commit();
|
|
104
|
-
await snapshotBuilder.snapshot(1);
|
|
105
|
-
await expect(snapshotBuilder.getSnapshot(2)).rejects.toThrow();
|
|
105
|
+
await snapshotBuilder.snapshot(BlockNumber(1));
|
|
106
|
+
await expect(snapshotBuilder.getSnapshot(BlockNumber(2))).rejects.toThrow();
|
|
106
107
|
});
|
|
107
108
|
});
|
|
108
109
|
describe('getRoot', ()=>{
|
|
109
110
|
it('returns the historical root of the tree when the snapshot was taken', async ()=>{
|
|
110
111
|
await modifyTree(tree);
|
|
111
112
|
await tree.commit();
|
|
112
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
113
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
113
114
|
const historicalRoot = tree.getRoot(false);
|
|
114
115
|
await modifyTree(tree);
|
|
115
116
|
await tree.commit();
|
|
@@ -121,7 +122,7 @@ jest.setTimeout(50_000);
|
|
|
121
122
|
it('returns the same depth as the tree', async ()=>{
|
|
122
123
|
await modifyTree(tree);
|
|
123
124
|
await tree.commit();
|
|
124
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
125
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
125
126
|
expect(snapshot.getDepth()).toEqual(tree.getDepth());
|
|
126
127
|
});
|
|
127
128
|
});
|
|
@@ -129,7 +130,7 @@ jest.setTimeout(50_000);
|
|
|
129
130
|
it('returns the historical leaves count when the snapshot was taken', async ()=>{
|
|
130
131
|
await modifyTree(tree);
|
|
131
132
|
await tree.commit();
|
|
132
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
133
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
133
134
|
const historicalNumLeaves = tree.getNumLeaves(false);
|
|
134
135
|
await modifyTree(tree);
|
|
135
136
|
await tree.commit();
|
|
@@ -140,7 +141,7 @@ jest.setTimeout(50_000);
|
|
|
140
141
|
it('returns the historical leaf value when the snapshot was taken', async ()=>{
|
|
141
142
|
await modifyTree(tree);
|
|
142
143
|
await tree.commit();
|
|
143
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
144
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
144
145
|
const historicalLeafValue = tree.getLeafValue(0n, false);
|
|
145
146
|
expect(snapshot.getLeafValue(0n)).toEqual(historicalLeafValue);
|
|
146
147
|
await modifyTree(tree);
|
|
@@ -152,7 +153,7 @@ jest.setTimeout(50_000);
|
|
|
152
153
|
it('returns the historical leaf index when the snapshot was taken', async ()=>{
|
|
153
154
|
await modifyTree(tree);
|
|
154
155
|
await tree.commit();
|
|
155
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
156
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
156
157
|
const initialLastLeafIndex = tree.getNumLeaves(false) - 1n;
|
|
157
158
|
let lastLeaf = tree.getLeafValue(initialLastLeafIndex, false);
|
|
158
159
|
expect(snapshot.findLeafIndex(lastLeaf)).toBe(initialLastLeafIndex);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { type Bufferable } from '@aztec/foundation/serialize';
|
|
2
3
|
import type { UpdateOnlyTree } from '../interfaces/update_only_tree.js';
|
|
3
4
|
import type { TreeSnapshot } from '../snapshots/snapshot_builder.js';
|
|
@@ -13,9 +14,9 @@ export declare class SparseTree<T extends Bufferable> extends TreeBase<T> implem
|
|
|
13
14
|
* @param index - Index of the leaf to be updated.
|
|
14
15
|
*/
|
|
15
16
|
updateLeaf(value: T, index: bigint): Promise<void>;
|
|
16
|
-
snapshot(block:
|
|
17
|
-
getSnapshot(block:
|
|
17
|
+
snapshot(block: BlockNumber): Promise<TreeSnapshot<T>>;
|
|
18
|
+
getSnapshot(block: BlockNumber): Promise<TreeSnapshot<T>>;
|
|
18
19
|
findLeafIndex(_value: T, _includeUncommitted: boolean): bigint | undefined;
|
|
19
20
|
findLeafIndexAfter(_value: T, _startIndex: bigint, _includeUncommitted: boolean): bigint | undefined;
|
|
20
21
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhcnNlX3RyZWUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcGFyc2VfdHJlZS9zcGFyc2VfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFFakYsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFnQixRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RDs7R0FFRztBQUNILHFCQUFhLFVBQVUsQ0FBQyxDQUFDLFNBQVMsVUFBVSxDQUFFLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBRSxZQUFXLGNBQWMsQ0FBQyxDQUFDLENBQUM7O0lBRTVGOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FxQnhEO0lBRU0sUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUU1RDtJQUVNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FFL0Q7SUFFTSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FFaEY7SUFFTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBRTFHO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sparse_tree.d.ts","sourceRoot":"","sources":["../../src/sparse_tree/sparse_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAgB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;;IAE5F;;;;OAIG;IACI,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxD;IAEM,QAAQ,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sparse_tree.d.ts","sourceRoot":"","sources":["../../src/sparse_tree/sparse_tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAgB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;;IAE5F;;;;OAIG;IACI,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxD;IAEM,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAE5D;IAEM,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAE/D;IAEM,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,mBAAmB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEhF;IAEM,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE1G;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { FromBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
3
4
|
import type { Hasher, IndexedTreeLeaf, IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
|
|
@@ -267,8 +268,8 @@ export declare class StandardIndexedTree extends TreeBase<Buffer> implements Ind
|
|
|
267
268
|
*/
|
|
268
269
|
batchInsert<TreeHeight extends number, SubtreeHeight extends number, SubtreeSiblingPathHeight extends number>(leaves: Buffer[], subtreeHeight: SubtreeHeight): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
|
|
269
270
|
getSubtreeSiblingPath<SubtreeHeight extends number, SubtreeSiblingPathHeight extends number>(subtreeHeight: SubtreeHeight, includeUncommitted: boolean): Promise<SiblingPath<SubtreeSiblingPathHeight>>;
|
|
270
|
-
snapshot(blockNumber:
|
|
271
|
-
getSnapshot(blockNumber:
|
|
271
|
+
snapshot(blockNumber: BlockNumber): Promise<IndexedTreeSnapshot>;
|
|
272
|
+
getSnapshot(blockNumber: BlockNumber): Promise<IndexedTreeSnapshot>;
|
|
272
273
|
/**
|
|
273
274
|
* Encodes leaves and appends them to a tree.
|
|
274
275
|
* @param preimages - Leaves to encode.
|
|
@@ -286,4 +287,4 @@ export declare class StandardIndexedTree extends TreeBase<Buffer> implements Ind
|
|
|
286
287
|
*/
|
|
287
288
|
private encodeLeaf;
|
|
288
289
|
}
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRfaW5kZXhlZF90cmVlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhbmRhcmRfaW5kZXhlZF90cmVlL3N0YW5kYXJkX2luZGV4ZWRfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hHLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBeUIsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFbEYsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsZUFBTyxNQUFNLHFCQUFxQixzRUFFakMsQ0FBQztBQUVGLGVBQU8sTUFBTSxzQkFBc0IsNkVBRWxDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sV0FBVyxXQUFXO0lBQzFCOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FBQztJQUN6Qzs7O09BR0c7SUFDSCxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxlQUFlLENBQUM7Q0FDN0M7QUFrQkQsZUFBTyxNQUFNLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxNQUFNLENBRS9DLENB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard_indexed_tree.d.ts","sourceRoot":"","sources":["../../src/standard_indexed_tree/standard_indexed_tree.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"standard_indexed_tree.d.ts","sourceRoot":"","sources":["../../src/standard_indexed_tree/standard_indexed_tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { type Bufferable } from '@aztec/foundation/serialize';
|
|
2
3
|
import type { AppendOnlyTree } from '../interfaces/append_only_tree.js';
|
|
3
4
|
import type { TreeSnapshot } from '../snapshots/snapshot_builder.js';
|
|
@@ -13,9 +14,9 @@ export declare class StandardTree<T extends Bufferable = Buffer> extends TreeBas
|
|
|
13
14
|
* @returns Empty promise.
|
|
14
15
|
*/
|
|
15
16
|
appendLeaves(leaves: T[]): void;
|
|
16
|
-
snapshot(blockNumber:
|
|
17
|
-
getSnapshot(blockNumber:
|
|
17
|
+
snapshot(blockNumber: BlockNumber): Promise<TreeSnapshot<T>>;
|
|
18
|
+
getSnapshot(blockNumber: BlockNumber): Promise<TreeSnapshot<T>>;
|
|
18
19
|
findLeafIndex(value: T, includeUncommitted: boolean): bigint | undefined;
|
|
19
20
|
findLeafIndexAfter(value: T, startIndex: bigint, includeUncommitted: boolean): bigint | undefined;
|
|
20
21
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRfdHJlZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YW5kYXJkX3RyZWUvc3RhbmRhcmRfdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFJakYsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDOztHQUVHO0FBQ0gscUJBQWEsWUFBWSxDQUFDLENBQUMsU0FBUyxVQUFVLEdBQUcsTUFBTSxDQUFFLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBRSxZQUFXLGNBQWMsQ0FBQyxDQUFDLENBQUM7O0lBR3ZHOzs7O09BSUc7SUFDYSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FhOUM7SUFFTSxRQUFRLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBRWxFO0lBRU0sV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUVyRTtJQUVNLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUU5RTtJQUVNLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FTdkc7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard_tree.d.ts","sourceRoot":"","sources":["../../src/standard_tree/standard_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAIjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;;IAGvG;;;;OAIG;IACa,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAa9C;IAEM,QAAQ,CAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"standard_tree.d.ts","sourceRoot":"","sources":["../../src/standard_tree/standard_tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAIjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;;IAGvG;;;;OAIG;IACa,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAa9C;IAEM,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAElE;IAEM,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAErE;IAEM,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAE9E;IAEM,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CASvG;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/merkle-tree",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20251204",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
62
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
63
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
61
|
+
"@aztec/foundation": "3.0.0-nightly.20251204",
|
|
62
|
+
"@aztec/kv-store": "3.0.0-nightly.20251204",
|
|
63
|
+
"@aztec/stdlib": "3.0.0-nightly.20251204",
|
|
64
64
|
"sha256": "^0.2.0",
|
|
65
65
|
"tslib": "^2.4.0"
|
|
66
66
|
},
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { type Bufferable, type FromBuffer, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
3
4
|
import type { Hasher } from '@aztec/foundation/trees';
|
|
@@ -40,8 +41,8 @@ type SnapshotMetadata = {
|
|
|
40
41
|
*/
|
|
41
42
|
export class AppendOnlySnapshotBuilder<T extends Bufferable> implements TreeSnapshotBuilder<TreeSnapshot<T>> {
|
|
42
43
|
#nodeValue: AztecMap<ReturnType<typeof historicalNodeKey>, Buffer>;
|
|
43
|
-
#nodeLastModifiedByBlock: AztecMap<ReturnType<typeof nodeModifiedAtBlockKey>,
|
|
44
|
-
#snapshotMetadata: AztecMap<
|
|
44
|
+
#nodeLastModifiedByBlock: AztecMap<ReturnType<typeof nodeModifiedAtBlockKey>, BlockNumber>;
|
|
45
|
+
#snapshotMetadata: AztecMap<BlockNumber, SnapshotMetadata>;
|
|
45
46
|
|
|
46
47
|
constructor(
|
|
47
48
|
private db: AztecKVStore,
|
|
@@ -55,7 +56,7 @@ export class AppendOnlySnapshotBuilder<T extends Bufferable> implements TreeSnap
|
|
|
55
56
|
this.#snapshotMetadata = db.openMap(`append_only_snapshot:${treeName}:snapshot_metadata`);
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
getSnapshot(block:
|
|
59
|
+
getSnapshot(block: BlockNumber): Promise<TreeSnapshot<T>> {
|
|
59
60
|
const meta = this.#getSnapshotMeta(block);
|
|
60
61
|
|
|
61
62
|
if (typeof meta === 'undefined') {
|
|
@@ -76,7 +77,7 @@ export class AppendOnlySnapshotBuilder<T extends Bufferable> implements TreeSnap
|
|
|
76
77
|
);
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
snapshot(block:
|
|
80
|
+
snapshot(block: BlockNumber): Promise<TreeSnapshot<T>> {
|
|
80
81
|
return this.db.transaction(() => {
|
|
81
82
|
const meta = this.#getSnapshotMeta(block);
|
|
82
83
|
if (typeof meta !== 'undefined') {
|
|
@@ -149,7 +150,7 @@ export class AppendOnlySnapshotBuilder<T extends Bufferable> implements TreeSnap
|
|
|
149
150
|
});
|
|
150
151
|
}
|
|
151
152
|
|
|
152
|
-
#getSnapshotMeta(block:
|
|
153
|
+
#getSnapshotMeta(block: BlockNumber): SnapshotMetadata | undefined {
|
|
153
154
|
return this.#snapshotMetadata.get(block);
|
|
154
155
|
}
|
|
155
156
|
}
|
|
@@ -160,8 +161,8 @@ export class AppendOnlySnapshotBuilder<T extends Bufferable> implements TreeSnap
|
|
|
160
161
|
class AppendOnlySnapshot<T extends Bufferable> implements TreeSnapshot<T> {
|
|
161
162
|
constructor(
|
|
162
163
|
private nodes: AztecMap<string, Buffer>,
|
|
163
|
-
private nodeHistory: AztecMap<string,
|
|
164
|
-
private block:
|
|
164
|
+
private nodeHistory: AztecMap<string, BlockNumber>,
|
|
165
|
+
private block: BlockNumber,
|
|
165
166
|
private leafCount: bigint,
|
|
166
167
|
private historicalRoot: Buffer,
|
|
167
168
|
private tree: TreeBase<T> & AppendOnlyTree<T>,
|
|
@@ -256,7 +257,7 @@ class AppendOnlySnapshot<T extends Bufferable> implements TreeSnapshot<T> {
|
|
|
256
257
|
return this.hasher.hash(lhs, rhs);
|
|
257
258
|
}
|
|
258
259
|
|
|
259
|
-
#getBlockNumberThatModifiedNode(level: number, index: bigint):
|
|
260
|
+
#getBlockNumberThatModifiedNode(level: number, index: bigint): BlockNumber | undefined {
|
|
260
261
|
return this.nodeHistory.get(nodeModifiedAtBlockKey(level, index));
|
|
261
262
|
}
|
|
262
263
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { type Bufferable, type FromBuffer, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
3
4
|
import type { AztecKVStore, AztecMap } from '@aztec/kv-store';
|
|
@@ -35,7 +36,7 @@ export abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase<Bufferable>
|
|
|
35
36
|
implements TreeSnapshotBuilder<S>
|
|
36
37
|
{
|
|
37
38
|
protected nodes: AztecMap<string, [Buffer, Buffer]>;
|
|
38
|
-
protected snapshotMetadata: AztecMap<
|
|
39
|
+
protected snapshotMetadata: AztecMap<BlockNumber, SnapshotMetadata>;
|
|
39
40
|
|
|
40
41
|
constructor(
|
|
41
42
|
protected db: AztecKVStore,
|
|
@@ -45,7 +46,7 @@ export abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase<Bufferable>
|
|
|
45
46
|
this.snapshotMetadata = db.openMap(`full_snapshot:${tree.getName()}:metadata`);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
|
-
snapshot(block:
|
|
49
|
+
snapshot(block: BlockNumber): Promise<S> {
|
|
49
50
|
return this.db.transaction(() => {
|
|
50
51
|
const snapshotMetadata = this.#getSnapshotMeta(block);
|
|
51
52
|
|
|
@@ -103,7 +104,7 @@ export abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase<Bufferable>
|
|
|
103
104
|
|
|
104
105
|
protected handleLeaf(_index: bigint, _node: Buffer): void {}
|
|
105
106
|
|
|
106
|
-
getSnapshot(version:
|
|
107
|
+
getSnapshot(version: BlockNumber): Promise<S> {
|
|
107
108
|
const snapshotMetadata = this.#getSnapshotMeta(version);
|
|
108
109
|
|
|
109
110
|
if (!snapshotMetadata) {
|
|
@@ -115,7 +116,7 @@ export abstract class BaseFullTreeSnapshotBuilder<T extends TreeBase<Bufferable>
|
|
|
115
116
|
|
|
116
117
|
protected abstract openSnapshot(root: Buffer, numLeaves: bigint): S;
|
|
117
118
|
|
|
118
|
-
#getSnapshotMeta(block:
|
|
119
|
+
#getSnapshotMeta(block: BlockNumber): SnapshotMetadata | undefined {
|
|
119
120
|
return this.snapshotMetadata.get(block);
|
|
120
121
|
}
|
|
121
122
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { Bufferable } from '@aztec/foundation/serialize';
|
|
2
3
|
import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
|
|
3
4
|
|
|
@@ -9,13 +10,13 @@ export interface TreeSnapshotBuilder<S extends TreeSnapshot<Bufferable>> {
|
|
|
9
10
|
* Creates a snapshot of the tree at the given version.
|
|
10
11
|
* @param block - The version to snapshot the tree at.
|
|
11
12
|
*/
|
|
12
|
-
snapshot(block:
|
|
13
|
+
snapshot(block: BlockNumber): Promise<S>;
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Returns a snapshot of the tree at the given version.
|
|
16
17
|
* @param block - The version of the snapshot to return.
|
|
17
18
|
*/
|
|
18
|
-
getSnapshot(block:
|
|
19
|
+
getSnapshot(block: BlockNumber): Promise<S>;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { randomBigInt } from '@aztec/foundation/crypto';
|
|
2
3
|
import type { Bufferable } from '@aztec/foundation/serialize';
|
|
3
4
|
|
|
@@ -29,14 +30,14 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
29
30
|
it('takes snapshots', async () => {
|
|
30
31
|
await modifyTree(tree);
|
|
31
32
|
await tree.commit();
|
|
32
|
-
await expect(snapshotBuilder.snapshot(1)).resolves.toBeDefined();
|
|
33
|
+
await expect(snapshotBuilder.snapshot(BlockNumber(1))).resolves.toBeDefined();
|
|
33
34
|
});
|
|
34
35
|
|
|
35
36
|
it('is idempotent', async () => {
|
|
36
37
|
await modifyTree(tree);
|
|
37
38
|
await tree.commit();
|
|
38
39
|
|
|
39
|
-
const block = 1;
|
|
40
|
+
const block = BlockNumber(1);
|
|
40
41
|
const snapshot = await snapshotBuilder.snapshot(block);
|
|
41
42
|
const newSnapshot = await snapshotBuilder.snapshot(block);
|
|
42
43
|
|
|
@@ -46,7 +47,7 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
46
47
|
it('returns the same path if tree has not diverged', async () => {
|
|
47
48
|
await modifyTree(tree);
|
|
48
49
|
await tree.commit();
|
|
49
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
50
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
50
51
|
|
|
51
52
|
const historicPaths = await Promise.all(leaves.map(leaf => snapshot.getSiblingPath(leaf)));
|
|
52
53
|
const expectedPaths = await Promise.all(leaves.map(leaf => tree.getSiblingPath(leaf, false)));
|
|
@@ -59,7 +60,7 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
59
60
|
it('returns historic paths if tree has diverged and no new snapshots have been taken', async () => {
|
|
60
61
|
await modifyTree(tree);
|
|
61
62
|
await tree.commit();
|
|
62
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
63
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
63
64
|
|
|
64
65
|
const expectedPaths = await Promise.all(leaves.map(leaf => tree.getSiblingPath(leaf, false)));
|
|
65
66
|
|
|
@@ -79,12 +80,12 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
79
80
|
|
|
80
81
|
const expectedPaths = await Promise.all(leaves.map(leaf => tree.getSiblingPath(leaf, false)));
|
|
81
82
|
|
|
82
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
83
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
83
84
|
|
|
84
85
|
await modifyTree(tree);
|
|
85
86
|
await tree.commit();
|
|
86
87
|
|
|
87
|
-
await snapshotBuilder.snapshot(2);
|
|
88
|
+
await snapshotBuilder.snapshot(BlockNumber(2));
|
|
88
89
|
|
|
89
90
|
// check that snapshot 2 has not influenced snapshot(1) at all
|
|
90
91
|
const historicPaths = await Promise.all(leaves.map(leaf => snapshot.getSiblingPath(leaf)));
|
|
@@ -100,12 +101,12 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
100
101
|
|
|
101
102
|
const expectedPaths = await Promise.all(leaves.map(leaf => tree.getSiblingPath(leaf, false)));
|
|
102
103
|
|
|
103
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
104
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
104
105
|
|
|
105
106
|
await modifyTree(tree);
|
|
106
107
|
await tree.commit();
|
|
107
108
|
|
|
108
|
-
await snapshotBuilder.snapshot(2);
|
|
109
|
+
await snapshotBuilder.snapshot(BlockNumber(2));
|
|
109
110
|
|
|
110
111
|
await modifyTree(tree);
|
|
111
112
|
await tree.commit();
|
|
@@ -125,15 +126,15 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
125
126
|
await modifyTree(tree);
|
|
126
127
|
await tree.commit();
|
|
127
128
|
const expectedPaths = await Promise.all(leaves.map(leaf => tree.getSiblingPath(leaf, false)));
|
|
128
|
-
await snapshotBuilder.snapshot(1);
|
|
129
|
+
await snapshotBuilder.snapshot(BlockNumber(1));
|
|
129
130
|
|
|
130
131
|
for (let i = 2; i < 5; i++) {
|
|
131
132
|
await modifyTree(tree);
|
|
132
133
|
await tree.commit();
|
|
133
|
-
await snapshotBuilder.snapshot(i);
|
|
134
|
+
await snapshotBuilder.snapshot(BlockNumber(i));
|
|
134
135
|
}
|
|
135
136
|
|
|
136
|
-
const firstSnapshot = await snapshotBuilder.getSnapshot(1);
|
|
137
|
+
const firstSnapshot = await snapshotBuilder.getSnapshot(BlockNumber(1));
|
|
137
138
|
const historicPaths = await Promise.all(leaves.map(leaf => firstSnapshot.getSiblingPath(leaf)));
|
|
138
139
|
|
|
139
140
|
for (const [index, path] of historicPaths.entries()) {
|
|
@@ -144,9 +145,9 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
144
145
|
it('throws if an unknown snapshot is requested', async () => {
|
|
145
146
|
await modifyTree(tree);
|
|
146
147
|
await tree.commit();
|
|
147
|
-
await snapshotBuilder.snapshot(1);
|
|
148
|
+
await snapshotBuilder.snapshot(BlockNumber(1));
|
|
148
149
|
|
|
149
|
-
await expect(snapshotBuilder.getSnapshot(2)).rejects.toThrow();
|
|
150
|
+
await expect(snapshotBuilder.getSnapshot(BlockNumber(2))).rejects.toThrow();
|
|
150
151
|
});
|
|
151
152
|
});
|
|
152
153
|
|
|
@@ -154,7 +155,7 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
154
155
|
it('returns the historical root of the tree when the snapshot was taken', async () => {
|
|
155
156
|
await modifyTree(tree);
|
|
156
157
|
await tree.commit();
|
|
157
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
158
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
158
159
|
const historicalRoot = tree.getRoot(false);
|
|
159
160
|
|
|
160
161
|
await modifyTree(tree);
|
|
@@ -169,7 +170,7 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
169
170
|
it('returns the same depth as the tree', async () => {
|
|
170
171
|
await modifyTree(tree);
|
|
171
172
|
await tree.commit();
|
|
172
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
173
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
173
174
|
expect(snapshot.getDepth()).toEqual(tree.getDepth());
|
|
174
175
|
});
|
|
175
176
|
});
|
|
@@ -178,7 +179,7 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
178
179
|
it('returns the historical leaves count when the snapshot was taken', async () => {
|
|
179
180
|
await modifyTree(tree);
|
|
180
181
|
await tree.commit();
|
|
181
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
182
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
182
183
|
const historicalNumLeaves = tree.getNumLeaves(false);
|
|
183
184
|
|
|
184
185
|
await modifyTree(tree);
|
|
@@ -192,7 +193,7 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
192
193
|
it('returns the historical leaf value when the snapshot was taken', async () => {
|
|
193
194
|
await modifyTree(tree);
|
|
194
195
|
await tree.commit();
|
|
195
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
196
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
196
197
|
const historicalLeafValue = tree.getLeafValue(0n, false);
|
|
197
198
|
expect(snapshot.getLeafValue(0n)).toEqual(historicalLeafValue);
|
|
198
199
|
|
|
@@ -207,7 +208,7 @@ export function describeSnapshotBuilderTestSuite<
|
|
|
207
208
|
it('returns the historical leaf index when the snapshot was taken', async () => {
|
|
208
209
|
await modifyTree(tree);
|
|
209
210
|
await tree.commit();
|
|
210
|
-
const snapshot = await snapshotBuilder.snapshot(1);
|
|
211
|
+
const snapshot = await snapshotBuilder.snapshot(BlockNumber(1));
|
|
211
212
|
|
|
212
213
|
const initialLastLeafIndex = tree.getNumLeaves(false) - 1n;
|
|
213
214
|
let lastLeaf = tree.getLeafValue(initialLastLeafIndex, false);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { type Bufferable, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
|
|
3
4
|
import type { UpdateOnlyTree } from '../interfaces/update_only_tree.js';
|
|
@@ -38,11 +39,11 @@ export class SparseTree<T extends Bufferable> extends TreeBase<T> implements Upd
|
|
|
38
39
|
return Promise.resolve();
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
public snapshot(block:
|
|
42
|
+
public snapshot(block: BlockNumber): Promise<TreeSnapshot<T>> {
|
|
42
43
|
return this.#snapshotBuilder.snapshot(block);
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
public getSnapshot(block:
|
|
46
|
+
public getSnapshot(block: BlockNumber): Promise<TreeSnapshot<T>> {
|
|
46
47
|
return this.#snapshotBuilder.getSnapshot(block);
|
|
47
48
|
}
|
|
48
49
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
2
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import type { FromBuffer } from '@aztec/foundation/serialize';
|
|
3
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
5
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
@@ -595,11 +596,11 @@ export class StandardIndexedTree extends TreeBase<Buffer> implements IndexedTree
|
|
|
595
596
|
return fullSiblingPath.getSubtreeSiblingPath(subtreeHeight);
|
|
596
597
|
}
|
|
597
598
|
|
|
598
|
-
snapshot(blockNumber:
|
|
599
|
+
snapshot(blockNumber: BlockNumber): Promise<IndexedTreeSnapshot> {
|
|
599
600
|
return this.#snapshotBuilder.snapshot(blockNumber);
|
|
600
601
|
}
|
|
601
602
|
|
|
602
|
-
getSnapshot(blockNumber:
|
|
603
|
+
getSnapshot(blockNumber: BlockNumber): Promise<IndexedTreeSnapshot> {
|
|
603
604
|
return this.#snapshotBuilder.getSnapshot(blockNumber);
|
|
604
605
|
}
|
|
605
606
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { type Bufferable, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
3
4
|
import type { TreeInsertionStats } from '@aztec/stdlib/stats';
|
|
@@ -33,11 +34,11 @@ export class StandardTree<T extends Bufferable = Buffer> extends TreeBase<T> imp
|
|
|
33
34
|
} satisfies TreeInsertionStats);
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
public snapshot(blockNumber:
|
|
37
|
+
public snapshot(blockNumber: BlockNumber): Promise<TreeSnapshot<T>> {
|
|
37
38
|
return this.#snapshotBuilder.snapshot(blockNumber);
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
public getSnapshot(blockNumber:
|
|
41
|
+
public getSnapshot(blockNumber: BlockNumber): Promise<TreeSnapshot<T>> {
|
|
41
42
|
return this.#snapshotBuilder.getSnapshot(blockNumber);
|
|
42
43
|
}
|
|
43
44
|
|