Skip to content
LogoLogo

Changelog

The full changelog lives in the repository: CHANGELOG.md on GitHub.

merkle-core, merkleforge-hash, and merkle-variants are versioned together; one entry covers all published crates. merkle-bench is never published. The project follows Keep a Changelog and Semantic Versioning.

Highlights

v0.5.0 (2026-10-14)

Correctness and performance fixes. Roots and proofs for the shipped hash adapters are unchanged.

  • Added: BinaryMerkleTree::from_leaves (one-pass O(n) build), SparseMerkleTree::verify_membership (checks the proof's key), HashFunction::hash_encoded_node, NodeEntry::commitment, and Clone / Debug / Serialize / Deserialize for all three trees.
  • Fixed: sparse and Patricia inserts and removals recompute only the changed path (4,000 sparse inserts: about 223 s to 0.2 s; one sparse proof: 151 ms to 25 µs; 4,000 Patricia inserts: about 5.9 s to 0.02 s). MerkleTree::insert on sparse and Patricia trees no longer overwrites a leaf after a removal.
  • Breaking: the default HashFunction::hash_nodes now hashes 0x01 ‖ left ‖ right; MerklePatriciaTrie selects plain Keccak through hash_encoded_node instead of the algorithm name; the hidden MptNode::__DigestMarker variant is gone.
  • Deprecated: SparseMerkleTree::verify. Use verify_membership.
  • Docs: this Vocs documentation site replaces the old React website, and the repository moved to 1888-Labs/MerkleForge.

v0.4.1 (2026-09-05)

Packaging and documentation refresh for the MerkleForge Framework rebrand: crate metadata, rewritten crate READMEs, and CONTRIBUTING.md.

v0.4.0 (2026-07-27)

Adds the Ethereum-compatible MerklePatriciaTrie<H> with RLP and hex-prefix encoding, EIP-1186-style MptProof witnesses, and validation against official Ethereum trie vectors.