A hands-on walkthrough of building a mini ZK-rollup verifier in Rust from first principles, deliberately avoiding SNARKs to understand the underlying checks first. The author implements Pedersen commitments, Sigma/Fiat-Shamir proofs, Merkle membership, transaction binding, and bit-level constraints in a toy repo (rust-zkp). The goal is to make the verifier predicate — signature checks, balance/nonce validation, state root coherence — readable in plain Rust before any proof system compresses it into a succinct object. The post explains the conceptual gap between checking a transaction and proving one in the SNARK sense, and outlines next steps toward encoding these checks in a real circuit or zkVM.

8m read timeFrom coinsbench.com
Post cover image
Table of contents
1. Why I did not start with SNARKs2. What the verifier has to believe3. What I hand-rolled firstGet Joseph Wang ’s stories in your inbox4. How the mini rollup composes it5. Where this project stops6. What comes next7. Links and try it

Sort: