-
Notifications
You must be signed in to change notification settings - Fork 234
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: append-only merkle tree generics (#5355)
Give Merkle Trees generic type arguments for the leaves they store. --------- Co-authored-by: Santiago Palladino <santiago@aztecprotocol.com>
- Loading branch information
1 parent
ae5126a
commit ef7bf79
Showing
42 changed files
with
477 additions
and
209 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -79,6 +79,7 @@ | |
"erc", | ||
"falsey", | ||
"fargate", | ||
"Fieldeable", | ||
"filestat", | ||
"flatmap", | ||
"foundryup", | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 7 additions & 3 deletions
10
yarn-project/merkle-tree/src/interfaces/append_only_tree.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,17 @@ | ||
import { TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js'; | ||
import { Bufferable } from '@aztec/foundation/serialize'; | ||
|
||
import { TreeSnapshot, TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js'; | ||
import { MerkleTree } from './merkle_tree.js'; | ||
|
||
/** | ||
* A Merkle tree that supports only appending leaves and not updating existing leaves. | ||
*/ | ||
export interface AppendOnlyTree extends MerkleTree, TreeSnapshotBuilder { | ||
export interface AppendOnlyTree<T extends Bufferable = Buffer> | ||
extends MerkleTree<T>, | ||
TreeSnapshotBuilder<TreeSnapshot<T>> { | ||
/** | ||
* Appends a set of leaf values to the tree. | ||
* @param leaves - The set of leaves to be appended. | ||
*/ | ||
appendLeaves(leaves: Buffer[]): Promise<void>; | ||
appendLeaves(leaves: T[]): Promise<void>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 7 additions & 3 deletions
10
yarn-project/merkle-tree/src/interfaces/update_only_tree.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,18 @@ | ||
import { TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js'; | ||
import { Bufferable } from '@aztec/foundation/serialize'; | ||
|
||
import { TreeSnapshot, TreeSnapshotBuilder } from '../snapshots/snapshot_builder.js'; | ||
import { MerkleTree } from './merkle_tree.js'; | ||
|
||
/** | ||
* A Merkle tree that supports updates at arbitrary indices but not appending. | ||
*/ | ||
export interface UpdateOnlyTree extends MerkleTree, TreeSnapshotBuilder { | ||
export interface UpdateOnlyTree<T extends Bufferable = Buffer> | ||
extends MerkleTree<T>, | ||
TreeSnapshotBuilder<TreeSnapshot<T>> { | ||
/** | ||
* Updates a leaf at a given index in the tree. | ||
* @param leaf - The leaf value to be updated. | ||
* @param index - The leaf to be updated. | ||
*/ | ||
updateLeaf(leaf: Buffer, index: bigint): Promise<void>; | ||
updateLeaf(leaf: T, index: bigint): Promise<void>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.