Kris Nuttycombe
027a98e53a
Remove redundant documentation on trait impls.
2022-03-31 08:21:33 -06:00
Kris Nuttycombe
244fa7b73c
Apply suggestions from code review
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2022-03-31 07:10:02 -06:00
Kris Nuttycombe
a858de06d8
Always query the tree by position, not hash.
...
This modifies the `Tree::authentication_path` and `Tree::remove_witness`
methods to only operate in terms of the tree position, rather than both
the position and the hash that is expected to be the leaf at that
position.
Positions in the tree are always unique, and the tree already contains
the leaf information corresponding to each position, so the existing API
previously required the storage of redundant information. This change
streamlines the API without loss of power.
This also adds additional consistency checks to the property tests.
2022-03-30 22:16:31 -06:00
Kris Nuttycombe
413ed2e70a
Merge pull request #31 from nuttycom/bridgetree_separate_tip
...
Track the mutable tip of the bridgetree separate from the prior bridges.
2022-03-30 21:33:25 -06:00
Kris Nuttycombe
d4d4950d31
Use existing current_leaf method rather than introducing "tip"
2022-03-30 18:09:50 -06:00
Kris Nuttycombe
12187dc0a4
Remove inaccurate test comment.
2022-03-30 17:57:18 -06:00
Kris Nuttycombe
fc1d1ab9fc
Avoid unnecessary clones in garbage collection.
2022-03-30 16:41:59 -06:00
Kris Nuttycombe
da24923d7f
Add a test that demonstrates the failure case.
2022-03-30 16:41:59 -06:00
Kris Nuttycombe
31449b350e
Track the state since the last checkpoint/witness separately from prior bridges.
2022-03-30 16:41:59 -06:00
ebfull
2a2276f0eb
Merge pull request #30 from nuttycom/remove_recordings
...
Remove the unused recording types & logic
2022-03-30 15:31:22 -06:00
Kris Nuttycombe
34cc29dc4b
Remove the unused recording types & logic
2022-03-30 15:20:11 -06:00
str4d
fdbc2065b9
Merge pull request #27 from zcash/release-0.3.0-beta.1
...
incrementalmerkletree 0.3.0-beta.1
2022-03-22 18:56:29 +00:00
Jack Grigg
62059495de
incrementalmerkletree 0.3.0-beta.1
...
Closes zcash/incrementalmerkletree#25 .
2022-03-22 17:29:55 +00:00
Kris Nuttycombe
62c33e4480
Merge pull request #24 from zcash/fix_auth_frag_construction
...
Fix incorrect consistency check for auth_fragment construction.
2022-03-11 16:45:29 -07:00
Kris Nuttycombe
f8703a2eab
Fix incorrect consistency check for auth_fragment construction.
...
This was just entirely wrong; it will often be the case that we've
observed several altitudes but have an empty list of values within
a particular fragment.
2022-03-11 15:45:33 -07:00
Kris Nuttycombe
8ef73e0b29
Merge pull request #23 from zcash/fix_bridgetree_from_parts
...
Fix error in BridgeTree::from_parts consistency check.
2022-03-11 14:47:22 -07:00
Kris Nuttycombe
9b710286d5
Fix incorrect from_parts consistency check.
2022-03-10 18:39:51 -07:00
Kris Nuttycombe
250052489d
Add a test demonstrating incorrect consistency check.
2022-03-10 18:39:36 -07:00
Kris Nuttycombe
5707d6ac09
Merge pull request #21 from zcash/always_rewind_unless_empty
...
Rewinds are no longer blocked by existing witnesses.
2022-03-02 11:51:49 -07:00
Kris Nuttycombe
e01885f6e2
Rewinds are no longer blocked by existing witnesses.
...
In practice, when performing a rewind we don't want to have to
do the additional bookkeeping keeping the leaf position and
value around just to be able to remove the witnesses. After
this change, `rewind` will always succeed unless there are
no checkpoints.
2022-03-02 11:32:31 -07:00
str4d
dd57b430de
Merge pull request #20 from nuttycom/weaken_hashable_constraints
...
Do not force Hashable values to also be Ord and Clone
2022-02-24 18:56:47 +00:00
Kris Nuttycombe
23c0370b54
Add missing position accessor to AuthFragment
2022-02-24 09:11:46 -07:00
Kris Nuttycombe
f112568d73
Do not force Hashable values to also be Ord and Clone
...
While these additional bounds are often used with hashable
types, they are not necessary for the construction of `Frontier`
values, and so should not be required everywhere.
2022-02-24 09:01:23 -07:00
Kris Nuttycombe
9b76231a08
Merge pull request #19 from nuttycom/bridgetree_serialization
...
Add public accessors and constructors for Checkpoint.
2022-02-24 08:25:28 -07:00
Kris Nuttycombe
36b26cf0bb
Add public accessors and constructors for Checkpoint.
2022-02-24 08:17:21 -07:00
Kris Nuttycombe
6f722b39e7
Merge pull request #18 from nuttycom/rustfmt
...
Fix formatting & linting errors.
2022-02-23 22:51:38 -07:00
Kris Nuttycombe
42b9608e43
Fix linting errors.
2022-02-23 21:44:36 -07:00
Kris Nuttycombe
7dc9f91468
Fix naming of beta lints.
2022-02-23 21:44:36 -07:00
Kris Nuttycombe
61a06de241
Fix formatting.
2022-02-23 21:30:52 -07:00
Kris Nuttycombe
40bc2a06da
Add CI configuration
2022-02-23 21:29:25 -07:00
Kris Nuttycombe
ec530f7ca6
Merge pull request #17 from zcash/witness_returns_position
...
Return the current position & leaf from the witness operation.
2022-02-23 19:30:53 -07:00
Kris Nuttycombe
b4339d94db
Return the current position & leaf from the witness operation.
...
Co-authored-by: str4d <jack@electriccoin.co>
2022-02-23 19:30:10 -07:00
Kris Nuttycombe
33b9bc9667
Merge pull request #16 from nuttycom/allow_duplicate_hashes
...
Use (position, hash) pair to uniquely identify leaves.
2022-02-23 13:35:41 -07:00
Kris Nuttycombe
1dbb0d057d
Update the property tests to generate positioned unwitness and auth_path operations.
2022-02-23 13:35:17 -07:00
Kris Nuttycombe
b23b6ff9ec
Record position with hash when constructing witnesses.
2022-02-23 11:33:08 -07:00
Kris Nuttycombe
3f0566375b
Merge pull request #15 from nuttycom/remove_witness_deferred
...
Add garbage collection to the incremental merkle tree.
2022-02-23 11:32:47 -07:00
Kris Nuttycombe
d5b7d90e13
Add bridgetree garbage collection.
...
This adds a garbage collection method to BridgeTree that
can be used to eliminate checkpoints and removed witnesses
that are no longer reachable for possible rewinds. It also
prunes unnecessary auth fragments from the tree.
2022-02-23 08:59:12 -07:00
Kris Nuttycombe
c284081a0a
Merge remote-tracking branch 'upstream/master' into fix_bridgetree_checkpoint_rewind
2022-02-22 21:05:11 -07:00
Kris Nuttycombe
96157ea5f3
Merge pull request #12 from ghassmo/master
...
use Self instead of the type's name
2022-02-22 21:01:28 -07:00
Kris Nuttycombe
fd9300bf8f
Simplify the checkpoint data structure by removing is_checkpointed
...
It's possible to figure out whether or not a checkpoint is a duplicate
just by looking at the list of checkpoints; the checkpoint doesn't
need to carry that data internally.
2022-02-22 09:51:19 -07:00
Kris Nuttycombe
993dd64650
Fix bridgetree checkpoint/rewind logic to fully restore the tree state.
...
Removal of witnesses is now recorded on a per-checkpoint
level, so that rewinding the tree state now restores any
witnesses that were removed since the checkpoint.
A number of internal consistency checks previously enforced
by the property tests have been removed as they did not
correctly implement this semantic, and reimplementing these
consistency checks would be equivalent to reimplementing the
sample tree, so these checks are now performed simply by
comparison against the reference implentation.
2022-02-22 09:44:32 -07:00
Kris Nuttycombe
aedd865d42
Make example tests reusable across tree implementations.
2022-02-20 13:09:49 -07:00
Kris Nuttycombe
ba4fe68eb2
Update bridgetree checkpoint/rewind tests to demonstrate the rewind error.
2022-02-20 10:21:58 -07:00
Kris Nuttycombe
efffa8a442
Key auth fragments by note position rather than bridge index.
...
This substantially simplifies reasoning about authentication
path fragments in garbage collection.
2022-02-20 10:21:58 -07:00
Kris Nuttycombe
da420277a5
Use BTreeMap instead of HashMap when keyed by leaf hashes
2022-02-20 10:21:58 -07:00
Kris Nuttycombe
6327364524
Add current_leaf and is_witnessed to the tree API
...
Rename `current_position` to `current_offset` in the
sample API to avoid confusion with the meaning of
the `Position` type.
2022-02-20 10:21:21 -07:00
Kris Nuttycombe
60d12057a0
Fix a second error in checkpoint/witness/rewind ordering for the sample tree.
2022-02-18 13:32:45 -07:00
Kris Nuttycombe
c73cedf8b6
Fix failing rewind/remove_witness interaction.
2022-02-18 13:32:45 -07:00
Kris Nuttycombe
6440119cf7
Add a failing test for remove_witness/rewind interaction
2022-02-18 13:32:45 -07:00
ghassmo
24e1980e8a
use Self instead of the type's name
2022-01-23 23:16:30 +04:00