Eric Tu
0e9d4d635a
Add max_checkpoints getter
2024-09-06 12:14:28 -04:00
Kris Nuttycombe
ef7fcde5fa
Release shardtree version 0.4.0
2024-08-12 11:33:36 -06:00
Kris Nuttycombe
1f86f1259a
Release incrementalmerkletree version 0.6.0
2024-08-12 10:18:42 -06:00
Kris Nuttycombe
192cb3ffda
shardtree: Remove `Node::Pruned`
...
In 7e48886fd3
, `Node::Pruned` was
introduced in order to fix problems with `LocatedTree::max_position`
resulting from reinsertion of subtree information as children of
a previously pruned subtree represented by a `Node::Leaf` at its
root. This fix introduced a large amount of complexity that is
better resolved by fixing the `max_position` function in a different
way and generally minimizing its usage.
2024-06-27 16:30:57 -06:00
Kris Nuttycombe
88681ae335
shardtree: Reduce dependence upon `LocatedTree::max_position`
2024-06-27 16:30:57 -06:00
Kris Nuttycombe
b38b9d5d62
shardtree: Minor cleanups & documentation improvements.
2024-06-27 16:30:52 -06:00
Kris Nuttycombe
f5adcd5a2c
shardtree: Fix pruning of annotated `Parent` nodes with `Nil` children.
...
The current behavior of `unite` incorrectly discards annotation data.
2024-06-27 14:39:48 -06:00
Jack Grigg
020a7d76d7
shardtree: Use `Tree` constructors instead of struct creation
...
This makes it easier for us to track where new tree nodes are created,
and how the node kinds are used within the `ShardTree` data model.
2024-06-26 14:08:25 +00:00
Kris Nuttycombe
d40e178f8d
shardtree: Do not unify pruned nodes with empty nodes.
2024-05-28 19:22:45 -06:00
Kris Nuttycombe
7e48886fd3
shardtree: Add `Pruned` node type
...
In circumstances where insertion into a subtree results in pruning, and
then a subsequent insertion within the same range contains leaves that
must be retained, it is necessary to be able to distinguish the maximum
position among notes that have been observed but later pruned. This
fixes a bug wherein an insertion into an already-pruned tree could cause
the maximum position reported for the subtree to regress.
2024-05-28 19:22:45 -06:00
Kris Nuttycombe
ffc087424d
shardtree: Discard `REFERENCE` retention in leaf overwrites.
...
Also, disallow value-conflicted overwrites at the leaf level.
2024-05-28 17:13:31 -06:00
Kris Nuttycombe
e55ff2d7f2
incrementalmerkletree: add `Reference` retention type.
...
This new retention type is intended to be used when inserting frontiers
that should not automatically be pruned.
Also, improve documentation for the `Retention` type.
2024-05-28 17:10:38 -06:00
Kris Nuttycombe
57b6e8999f
shardtree: `Nil` nodes cannot replace any other sort of node in the tree.
2024-05-28 15:54:18 -06:00
Kris Nuttycombe
811d384bd4
shardtree: Improve tracing
2024-05-28 15:50:07 -06:00
Kris Nuttycombe
7c862c16b3
Release shardtree version 0.3.1
2024-04-03 13:49:13 -06:00
Kris Nuttycombe
52e956b8ec
shardtree: Ensure `test-dependencies` feature enables `incrementalmerkletree/test-dependencies`
...
This is intended to fix an issue with the `docs.rs` build.
2024-04-03 11:58:37 -06:00
Kris Nuttycombe
22ee3d8f4e
Release shardtree version 0.3.0
2024-03-24 18:29:25 -06:00
Kris Nuttycombe
ac9ecaca12
shardtree: Add `InsertionError::MarkedRetentionInvalid`
2024-03-24 18:26:00 -06:00
Kris Nuttycombe
17f2bcd037
Apply suggestions from code review
...
Co-authored-by: str4d <thestr4d@gmail.com>
2024-03-11 16:51:06 -06:00
Kris Nuttycombe
fa147c89c6
shardtree: Add `ShardTree::store_mut`
2024-03-11 13:03:03 -06:00
Kris Nuttycombe
25cb18973e
shardtree: Add `ShardTree::insert_frontier`
2024-03-11 13:02:34 -06:00
Kris Nuttycombe
214d76e40a
shardtree: Add an accessor for a `ShardTree`'s underlying `ShardStore`
2024-03-09 17:12:19 -07:00
Kris Nuttycombe
769fd2be45
shardtree: Release version 0.2.0
2023-11-07 09:57:48 -07:00
Kris Nuttycombe
39ce028701
Apply suggestions from code review
...
Co-authored-by: str4d <thestr4d@gmail.com>
2023-11-07 07:44:07 -07:00
Kris Nuttycombe
b2c5cd9fc4
shardtree: Correct erroneous `ShardStore::get_checkpoint_at_depth` documentation
2023-11-07 07:44:07 -07:00
Kris Nuttycombe
8d301a14dd
shardtree: Add `witness_at_checkpoint_id` methods.
...
It is useful to be able to refer to a specific checkpoint, rather than
just a checkpoint depth, when computing a witness.
2023-11-07 07:44:07 -07:00
Kris Nuttycombe
9359c8d1b8
shardtree: Add `root_at_checkpoint_id` methods.
...
It can be useful to refer to a specific checkpoint, rather than just a
checkpoint depth, for which one wishes to compute the root.
2023-11-07 07:44:05 -07:00
Jack Grigg
2dece0181a
shardtree 0.1.0
2023-09-08 16:36:50 +00:00
Jack Grigg
8c81d0bc4b
incrementalmerkletree 0.5.0
2023-09-08 16:31:11 +00:00
Jack Grigg
3f8999816f
shardtree: Migrate to `bitflags 2`
2023-07-27 23:17:06 +00:00
Jack Grigg
6628520585
shardtree: Remove unused dependencies
2023-07-27 23:17:06 +00:00
Jack Grigg
f5fd2a0a3e
Add docs.rs feature flag labels to `incrementalmerkletree` and `shardtree`
2023-07-27 22:57:09 +00:00
Jack Grigg
e7a38c0ee9
shardtree: Initial empty changelog
2023-07-27 22:30:38 +00:00
Jack Grigg
60caaeb99e
shardtree: Update docs with content from readme
2023-07-27 22:28:55 +00:00
Jack Grigg
60c21dae6c
shardtree: Add a readme
2023-07-27 22:28:24 +00:00
Jack Grigg
4fd57fc862
shardtree: Use edition 2021 and set MSRV
2023-07-27 22:08:07 +00:00
Jack Grigg
5753ce005d
shardtree: Remove unnecessary methods from the public API
2023-07-25 17:19:43 +00:00
Jack Grigg
06199d6f45
shardtree: Improve documentation
2023-07-25 17:19:38 +00:00
Jack Grigg
0a6964ad05
shardtree: Move `ShardStore`-related types into module
2023-07-25 15:54:44 +00:00
Jack Grigg
fb894cdbb7
shardtree: Add `std::error::Error` bound to `ShardStore::Error`
2023-07-25 15:54:44 +00:00
Jack Grigg
1bd0a7c941
shardtree: Move error types into module
2023-07-25 15:54:44 +00:00
Jack Grigg
8d699c9667
shardtree: Pass checkpoints alongside tree to `ShardTree::insert_tree`
...
There are no `ShardTree` APIs that allow for checkpointing at arbitrary
positions, which makes sense as the relevant leaf may have been pruned.
For this API to be a viable substitute for `ShardTree::batch_insert`, it
therefore needs to support marking any checkpoints associated with the
inserted tree.
2023-07-25 13:50:27 +00:00
Jack Grigg
4666e9e370
shardtree: Don't insert empty subtrees in `ShardTree::insert_tree`
...
`ShardTree::max_leaf_position` relies on the invariant that the last
shard in the subtrees vector is never created without a leaf then being
added to it. `LocatedTree::decompose_to_level` can return a trailing
empty subtree for some inputs, and given that it is always correct to
not insert an empty subtree into `self`, we maintain the invariant by
skipping empty subtrees.
2023-07-24 18:14:24 +00:00
Jack Grigg
1eda8b2e24
shardtree: Derive correct shard root addrs in `ShardTree::insert_tree`
...
`LocatedTree::decompose_to_level` will return the tree as-is if it is
smaller than a shard, so we can't assume that the address of `subtree`
is a valid shard address.
2023-07-24 18:13:05 +00:00
Jack Grigg
f23b5f314f
shardtree: Pin `tempfile < 3.7.0` in dev-dependencies to keep MSRV
2023-07-24 17:22:28 +00:00
Jack Grigg
8a62290ffe
shardtree: Add tests comparing `insert_tree` to `batch_insert`
2023-07-24 17:22:28 +00:00
Jack Grigg
faabef3106
shardtree: Extract an `arb_leaves` strategy from `arb_shardtree`
2023-07-24 02:16:12 +00:00
Jack Grigg
5b4dce85ca
shardtree: Switch from `Rc` to `Arc` to make trees `Send`
2023-07-17 21:02:33 +00:00
Jack Grigg
7ec75fdd91
shardtree: Clarify documentation for `ShardStore::remove_checkpoint`
...
`CachingShardStore` relies on this method being a no-op when the
checkpoint doesn't exist.
2023-07-17 20:56:53 +00:00
Jack Grigg
f5160a4790
shardtree: Pin `dashmap < 5.5.0` in dev-dependencies to keep MSRV
2023-07-14 19:26:32 +00:00