Commit Graph

22 Commits

Author SHA1 Message Date
Sean Bowe 09029e9a96
Expose new() only in tests. 2021-06-24 14:16:13 -06:00
Sean Bowe 709dbd07c4
Added stuff for publishing to crates.io 2021-06-24 14:14:30 -06:00
ebfull 5abf28ccf3
Merge pull request #3 from nuttycom/fix_str_combine
Revert change to string combine function for tests.
2021-06-24 14:13:32 -06:00
Kris Nuttycombe e499a27f04 Revert change to string combine function for tests. 2021-06-24 14:12:52 -06:00
ebfull 6b42e590ae
Merge pull request #1 from nuttycom/merkle_bridge
Add an efficient implementation of the incremental merkle tree.
2021-06-24 14:00:34 -06:00
Kris Nuttycombe cf68d49d3f Trivial fixup. 2021-06-23 15:39:24 -06:00
Kris Nuttycombe 3decd0bf48 Use const generic parameter for tree depth. 2021-06-23 14:14:57 -06:00
Kris Nuttycombe aed785e896 Rename "Level" -> "Altitude"
The FlyClient spec uses "Altitude" for this concept in
Merkle mountain ranges, so I'm renaming for consistency.
2021-06-19 11:24:33 -06:00
Kris Nuttycombe d319262985 Add conversion from Position to usize 2021-06-19 08:07:59 -06:00
Kris Nuttycombe 205b075aa8 Expose position of possibly-empty frontier. 2021-06-18 22:06:16 -06:00
Kris Nuttycombe 06e0a5772e Add `Frontier` trait as a subset of `Tree` operations.
For some applications, it is not necessary to include the
full range of witnessing and checkpointing operations. The
Frontier trait captures the minimal operations required:
appending leaves to the tree and constructing the root
of the tree by hashing against empty nodes.
2021-06-18 14:21:03 -06:00
Kris Nuttycombe b89a359121 Remove duplicative case from witness computation. 2021-06-18 09:24:09 -06:00
Kris Nuttycombe c1fcd83329 Implement efficient incremental merkle tree. 2021-06-17 19:32:50 -06:00
Kris Nuttycombe 1267c8ec07 Rename "efficient" module to "bridgetree". 2021-06-17 19:31:26 -06:00
Kris Nuttycombe 37d1f920e4 Refactor hashing api & contracts of witness & checkpoint methods.
In this commit:

* TreeHasher is replaced by the Hashable trait. Hashable is
  modified to use level information in the construction of
  the hash, and a convenience method is provided for obtaining
  the empty node at a given level.

* The pop_checkpoint method is removed from the `Tree` interface.
  Instead, a maximum number of checkpoints is established at tree
  construction time and then the oldest checkpoints are automatically
  dropped when adding new checkpoints once that number is reached.

* The `witness` method implementation in the sample tree
  is modified to ignore duplicate calls.

* Property testing functiona are modified to abstract over
  the type of hashable data.
2021-06-17 19:24:18 -06:00
Kris Nuttycombe 68c8d88bd3 Move sample tree & efficient tree to independent modules. 2021-06-17 19:17:47 -06:00
Sean Bowe 48507454f3
combined tree 2021-01-05 15:11:17 -07:00
Sean Bowe e80228fb18
lol 2021-01-05 13:56:23 -07:00
Sean Bowe ba2abda0b9
lol 2021-01-05 13:46:01 -07:00
Sean Bowe 4ad04e62a1
lol 2021-01-05 13:40:05 -07:00
Sean Bowe 09940b3402 Added MIT license 2015-12-19 18:42:01 -07:00
Sean Bowe 1c09fdc74e Initial commit. 2015-12-19 18:37:23 -07:00