Commit Graph

6 Commits

Author SHA1 Message Date
Sean Bowe 09029e9a96
Expose new() only in tests. 2021-06-24 14:16:13 -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 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 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