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-passO(n)build),SparseMerkleTree::verify_membership(checks the proof's key),HashFunction::hash_encoded_node,NodeEntry::commitment, andClone/Debug/Serialize/Deserializefor 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::inserton sparse and Patricia trees no longer overwrites a leaf after a removal. - Breaking: the default
HashFunction::hash_nodesnow hashes0x01 ‖ left ‖ right;MerklePatriciaTrieselects plain Keccak throughhash_encoded_nodeinstead of the algorithm name; the hiddenMptNode::__DigestMarkervariant is gone. - Deprecated:
SparseMerkleTree::verify. Useverify_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.