Commit Graph

259 Commits

Author SHA1 Message Date
Kris Nuttycombe 4c79a7d065 Release incrementalmerkletree-v0.4.0 and bridgetree-v0.3.0 2023-06-05 19:39:49 -06:00
Kris Nuttycombe 66cf091b97 Merge branch 'release-bridgetree-v0.2.1' into HEAD 2023-06-05 19:39:43 -06:00
Kris Nuttycombe b2077aa105
Merge pull request #76 from nuttycom/narrow_hashable_constraint
Remove the `Debug` bound from `Hashable`
2023-06-05 18:09:48 -06:00
Kris Nuttycombe a1dec495de Release of `bridgetree` v0.2.1
The `bridgetree-v0.2.0` tag was created with respect to an invalid
repository state, which did not actually contain the `bridgetree`
sources after they were factored out from the `incrementalmerkletree`
crate.
2023-06-05 17:14:09 -06:00
Kris Nuttycombe 87007ec69b Remove the `Debug` bound from `Hashable`
The `Debug` bound here is handy but not required for the operations
on the trait.
2023-06-05 16:52:54 -06:00
Kris Nuttycombe 69c9690bb6
Merge pull request #74 from nuttycom/docfix
Fix incorrect documentation and `cargo doc` issues.
2023-05-30 13:37:22 -06:00
Kris Nuttycombe 2f65d483ee
Update shardtree/src/lib.rs
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2023-05-30 12:40:11 -06:00
Kris Nuttycombe 51c3997ee6 Fix incorrect documentation and `cargo doc` issues. 2023-05-24 14:50:52 -06:00
Kris Nuttycombe 62f0c9039b
Merge pull request #73 from nuttycom/frontier_witness
Add the ability to compute a `MerklePath` from a Frontier
2023-05-24 14:10:46 -06:00
Kris Nuttycombe beb6ead57f
Merge pull request #72 from nuttycom/no_initial_checkpoint
Remove initial checkpoints.
2023-05-24 12:57:02 -06:00
Kris Nuttycombe b43902f0e6 Add the ability to compute a `MerklePath` from a Frontier
This adds a thin wrapper around `NonEmptyWitness::Frontier` that uses
the Frontier's statically known depth to be able to compute a
`MerklePath` with the same statically known depth.
2023-05-24 12:37:28 -06:00
Kris Nuttycombe 2b8e2d62fa Address comments from code review.
This also provides a minor performance and correctness improvement to
`remove_mark`.
2023-05-24 09:30:14 -06:00
Kris Nuttycombe 4efe39eaa6 Remove initial checkpoints.
The choice to use an initial checkpoint as an anchor for removals in
`unmark` operations produced an awkward situation where it was necessary
to choose a checkpoint identifier just to construct an empty tree. This
removes that decision in favor of eagerly removing data if there is no
checkpoint to tie the removal to.
2023-05-22 12:11:34 -06:00
Kris Nuttycombe a26844a451
Merge pull request #71 from nuttycom/shardstore_return_owned_types
Improvements required for implementing `ShardStore` atop a persistent store.
2023-05-22 12:08:11 -06:00
Kris Nuttycombe 5691b70947 Restore the relevant part of a deleted comment. 2023-05-22 10:29:40 -06:00
Kris Nuttycombe e2fa0a44c7 Make all `ShardStore` methods return `Result`
When implementing `ShardStore` atop a persistent data store, we need to
be able to reflect failures of the storage layer that are independent of
the presence or absence of data.
2023-05-19 15:45:03 -06:00
Kris Nuttycombe f292a271ac Return owned types from `ShardStore` getter methods.
The primary implementations of `ShardStore` will be constructing
owned values from an underlying persistence layer, and it is not
possible to return a reference to an owned value.
2023-05-19 15:43:06 -06:00
Kris Nuttycombe 15623973e4
Merge pull request #67 from nuttycom/shardstore_checkpoint_api
Add methods for managing checkpoint data to the ShardStore API.
2023-05-11 12:34:52 -06:00
Kris Nuttycombe dbb2a8f9c5 Make hash and checkpoint ID type parameters associated types of `ShardStore` 2023-05-11 12:04:37 -06:00
Kris Nuttycombe 666e72482a Address Clippy lints. 2023-05-10 20:44:58 -06:00
Kris Nuttycombe 247b38f336 Invert the relationship between shardtree errors and storage errors. 2023-05-10 20:44:57 -06:00
Kris Nuttycombe 0e502e3832 Add `Display` impl for `shardtree::InsertionError` 2023-05-10 20:43:56 -06:00
Kris Nuttycombe 10e5ee59a4 Distinguish between creating a new empty tree and loading data for an existing tree. 2023-05-10 20:43:20 -06:00
Kris Nuttycombe e15440bd37 Add checkpoint management APIs to `ShardStore`. 2023-05-10 20:43:20 -06:00
Kris Nuttycombe ed78bc2e56 Add dedicated `MemoryShardStore` type. 2023-05-10 20:43:18 -06:00
Kris Nuttycombe 62acf235a7
Merge pull request #68 from nuttycom/u64_positions
Use `u64` for the internal state of `Position` and `Address::index`
2023-05-10 20:34:59 -06:00
Kris Nuttycombe 951d61b27b
Merge pull request #66 from nuttycom/shardstore_blanket_mut_impl
Add a blanket implementation of ShardStore for mutable references to ShardStores
2023-05-10 20:34:49 -06:00
Kris Nuttycombe 34d9aa25bc Use `u64` for the internal state of `Position` and `Address::index` 2023-05-10 16:46:23 -06:00
Kris Nuttycombe 465f2ff0d8 Add a blanket implementation of ShardStore for mutable references to ShardStores. 2023-05-04 13:46:02 -06:00
Kris Nuttycombe b4bebd497e
Merge pull request #65 from nuttycom/improve_enumerate
Avoid a few usize->u8 comparisons.
2023-05-04 13:20:30 -06:00
Kris Nuttycombe 667c57a835 Avoid a few usize-u8 comparisons. 2023-05-04 12:49:16 -06:00
Kris Nuttycombe ea1686e8f8
Merge pull request #64 from nuttycom/typed_merkle_path
Use `MerklePath` when returning witnesses.
2023-04-11 09:40:27 -06:00
Kris Nuttycombe 69d444c439 Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2023-04-10 21:05:22 -06:00
Kris Nuttycombe 873a72ff98 Return `MerklePath` from `ShardTree::witness` 2023-04-06 19:48:10 -06:00
Kris Nuttycombe d2d945edcb Expose `MerklePath` type without a feature flag. 2023-04-06 17:07:20 -06:00
Kris Nuttycombe be81d67cef
Merge pull request #62 from nuttycom/add_librustzcash_types
Move `bridgetree::Frontier` to `incrementalmerkletree` and add `librustzcash` types.
2023-04-04 10:37:16 -06:00
Kris Nuttycombe ebbd2e3d2d Apply suggestions from code review.
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2023-03-31 19:43:25 -06:00
Kris Nuttycombe 9c0c9aa245 Merge remote-tracking branch 'upstream/master' into add_librustzcash_types 2023-03-31 16:02:59 -06:00
Kris Nuttycombe 02341ece26 Ensure that `BridgeTree` state is checkpointed when constructing from a frontier. 2023-03-27 09:54:21 -06:00
Kris Nuttycombe 739441a892
Merge pull request #63 from nuttycom/bridgetree_checkpoint_id
Make `bridgetree` polymorphic in checkpoint identifier type.
2023-03-24 09:00:25 -06:00
Kris Nuttycombe f7931ec31f Apply suggestions from code review. 2023-03-24 08:38:11 -06:00
Kris Nuttycombe 0d1c3e6512
Merge pull request #59 from nuttycom/fix_premature_tracking
Do not eagerly track marked nodes in the current bridge.
2023-03-24 08:29:38 -06:00
Kris Nuttycombe 978da59c67 Merge branch 'bridgetree_checkpoint_id' into add_librustzcash_types 2023-03-23 16:18:32 -06:00
Kris Nuttycombe 650edd0fc7 Make `bridgetree` polymorphic in checkpoint identifier type. 2023-03-23 16:02:40 -06:00
Kris Nuttycombe 53139f4f9c
Merge pull request #50 from nuttycom/shardtree
Add `shardtree` crate.
2023-03-23 13:12:00 -06:00
Kris Nuttycombe 30a1b7b62b Fix clippy complaints. 2023-03-21 12:15:22 -06:00
Kris Nuttycombe 71557cc0e3 Expose operations on `legacy-api` types required for serialization & testing. 2023-03-21 12:15:22 -06:00
Kris Nuttycombe 7cb2bdcc8f Add legacy `CommitmentTree` and `IncrementalWitness` types.
These types were previously part of the `zcash_primitives` crate and are
being included here to provide a migration path for when these types are
removed from `zcash_primitives`.
2023-03-21 12:15:22 -06:00
Kris Nuttycombe 4e3c6a6378 Move frontier types from `bridgetree` to `incrementalmerkletree`
These types are reusable outside of the context of the `bridgetree`
crate.
2023-03-21 12:15:22 -06:00
Kris Nuttycombe ff8095b7ed Remove `serde` serialization & deserialization
The structure of the `incrementalmerkletree` and `bridgetree` types has
not historically been stable, and as such it is not appropriate to
automatically derive serialization for these types.
2023-03-21 12:15:22 -06:00