The MSRV for the main crates is 1.65, which is higher than the Rust
version that stabilised workplace dependencies (1.64). The implicit MSRV
for the component crates is still lower than this, so we don't migrate
these crates.
After replacing `quickcheck` with `proptest` in `zcash_history`, memory
consumption of the property tests grew substantially as a consequence of
sample generation exploring the upper bounds of sample ranges;
previously, the large operation counts would have occurred only with low
probability. However, the correctness of the operations on the `Tree`
data structure should not depend upon the tree size, so it's fine to
reduce the number of operations in order to bound the memory
consumption. As the documentation on `Tree` notes, this data structure
is not intended to be used stand-alone because doing so may result in
unbounded memory use; the property tests were doing exactly this and so
were producing this exact pathological memory behavior.
The MSRVs of the component crates are left as-is, partly because our
dependencies don't require us to bump them, and partly because those
crates have no pending changes and are relatively stable. We also plan
to split the component crates out into a separate repository, where it
will be easier to have a separate MSRV.
Closeszcash/librustzcash#759.
`bigint`'s deprecation message suggests to use `uint` instead.
`uint`'s documentation suggests using `primitive-types` for
128 and 256 bit unsigned integers; these use `uint` under the
hood but do provide a somewhat more complete (and hopefully stable)
API.
Fixes#527
Each Zcash epoch (between two network upgrades) has a separate history
tree, making it easy to switch the node data format at network upgrades.
This commit enables the general tree logic to be shared across history
tree versions.