[{"data":1,"prerenderedAt":87},["ShallowReactive",2],{"project-merkle-rust":3},{"id":4,"title":5,"body":6,"date":69,"description":70,"extension":71,"featured":72,"github":57,"image":73,"live":73,"meta":74,"navigation":72,"path":75,"role":76,"seo":77,"status":78,"stem":79,"tags":80,"updated":73,"__hash__":86},"projects\u002Fprojects\u002Fmerkle-rust.md","Merkle Trees in Rust",{"type":7,"value":8,"toc":62},"minimark",[9,14,18,21,25,41,44,48,51],[10,11,13],"h2",{"id":12},"from-leaves-to-a-commitment","From leaves to a commitment",[15,16,17],"p",{},"A Merkle root commits to a collection of data. An inclusion proof lets someone check one item against that root without downloading the whole collection. I built these structures in Rust to explore how hash commitments and proofs fit together.",[15,19,20],{},"The library exposes both binary Merkle trees and sparse Merkle trees, alongside proof types and a generic hashing interface.",[10,22,24],{"id":23},"building-blocks","Building blocks",[26,27,28,32,35,38],"ul",{},[29,30,31],"li",{},"Binary trees built from raw leaf data or precomputed leaf hashes.",[29,33,34],{},"Single inclusion proofs and multi-proofs.",[29,36,37],{},"Sparse trees with key-based state and sparse proofs.",[29,39,40],{},"Interchangeable SHA-256 and Keccak-256 hashers producing 32-byte hashes.",[15,42,43],{},"Leaf hashes and internal node hashes use different prefixes. The binary tree promotes an unpaired node to the next layer when a level contains an odd number of nodes.",[10,45,47],{"id":46},"keeping-the-pieces-separate","Keeping the pieces separate",[15,49,50],{},"Hashing, tree construction, proof handling, sparse state, and empty hashes each live in their own module. Tests cover empty input, single-leaf trees, deterministic roots, odd leaf counts, and the distinction between hash functions.",[15,52,53,54,61],{},"Browse the ",[55,56,60],"a",{"href":57,"rel":58},"https:\u002F\u002Fgithub.com\u002FIbrahimIjai\u002Fmerkle-rust",[59],"nofollow","library source"," to follow the tree and proof implementations.",{"title":63,"searchDepth":64,"depth":64,"links":65},"",2,[66,67,68],{"id":12,"depth":64,"text":13},{"id":23,"depth":64,"text":24},{"id":46,"depth":64,"text":47},"2026-05-07","Binary and sparse Merkle trees in Rust, with inclusion proofs, multi-proofs, and interchangeable SHA-256 and Keccak-256 hashers.","md",true,null,{},"\u002Fprojects\u002Fmerkle-rust","Solo developer",{"title":5,"description":70},"In Progress","projects\u002Fmerkle-rust",[81,82,83,84,85],"Rust","Cryptography","Merkle Trees","SHA-256","Keccak-256","TNmCfwGnLVRxX2H8oZrkcK9wnk_o1rUgDe6VDFzE7ac",1791997975365]