✨ Features
- New struct: `MmrSuccessorProof` which helps to prive that one MMR
accumulator is a predecessor (or successor) of another.
📚 Documentation
- Conform to new (rust v1.80.0) indentation rules in doc strings.
- Drop instructions for installing leveldb, which is no longer
a dependency.
🧪 Test
- Add tests for mismatching lengths in leaf index lists.
- Implement `Arbitrary` for `MmrAccumulator` so that it produces an
object that is consistent (number of peaks equals number of set
bits in num leafs).
- Add tests for edge cases.
- Add positive and negative tests for `MmrSuccessorProof`.
🚀 Performance
- Benchmark `par_interpolate`.
- Use separate dispatcher threshold for `par_interpolate`, different
from sequential counterpart, with separate threshold.
- In `par_interpolate`, recurse to parallel version.
♻️ Refactor
- (!) Drop generic type argument `<H>` from MMR functions and
structs.
- (!) Copy (don't point to) auth path in struct `LeafMutation`.
- (!) Rename `MmrAccumulator`'s `new` to `new_from_leafs`, which
better describes what's going on.
- (!) Drop unused `get_height_from_leaf_index`.
🔨 Fixes
- Fix membership proof crash of peak list is too short in MMR batch
functions.
- Various bugs exposed by proptest's edge cases.
⚙️ Miscellaneous
- Conform to new rust version (v1.80.0) linting rules.
- Update perflog.