Commit Graph

97 Commits

Author SHA1 Message Date
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
Daira Hopwood 971e84e780
Merge pull request #8 from daira/dual-license
Ensure that GitHub's "View license" link points to complete license information
2022-01-05 15:34:56 +00:00
Daira Hopwood 864990d128 Update copyright year, and change the copyright holder to The Electric Coin Company.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-01-04 19:40:02 +00:00
Daira Hopwood 17d6ccbebe Ensure that GitHub's "View license" link points to complete license information.
refs https://github.com/zcash/librustzcash/issues/443

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2022-01-04 17:37:34 +00:00
str4d a829044d8a
Merge pull request #11 from zcash/release-0.2.0
incrementalmerkletree 0.2.0
2021-12-17 16:35:37 +00:00
Jack Grigg 1ac3ad239f incrementalmerkletree 0.2.0
Closes zcash/incrementalmerkletree#10.
2021-12-17 16:00:32 +00:00
Kris Nuttycombe 5312649292
Merge pull request #7 from nuttycom/use_witness_for_checkpointing
Use witness for checkpointing
2021-12-10 10:32:04 -07:00
Kris Nuttycombe 0a8854f1b0 Apply suggestions from code review & fix clippy complaints. 2021-12-09 16:31:22 -07:00
Kris Nuttycombe e4573b81c1 Ensure that we always drop old checkpoints when adding a checkpoint. 2021-12-06 13:37:48 -07:00
Kris Nuttycombe 67a5d6ff29 Fix documentation of tree methods. 2021-12-06 13:37:48 -07:00
Kris Nuttycombe 6296748cad Use witness functionality for checkpointing.
This restores an earlier approach to creating checkpoints
that is more space-efficient and reuses the `witness`
machinery. This is preparatory work for supporting arbitrary
rewind-to-witnessed-position.
2021-12-02 08:09:12 -07:00
str4d b7bd624612
Merge pull request #6 from nuttycom/serialization_support
Two minor fixes, plus methods required to support parsing and serialization.
2021-08-03 14:18:22 +01:00