skip to content

A mental model for zero-knowledge attestation

category: Privacydate: 1 min read
#zk#privacy#cryptography#snarks

Zero-knowledge gets sold as cryptography that proves you know something without revealing it. That's true but unhelpful. The useful model is: a zk system is three functions — commit, prove, verify — glued by a structured relation.

RUST
// the relation is the product; the SNARK is packaging
trait Relation {
type Witness;
type Statement;
fn satisfies(w: &Self::Witness, s: &Self::Statement) -> bool;
}

Design the relation first. Pick the proving system last.

The proof system is a compression scheme for the relation. Get the relation right and the choice of SNARK is an engineering tradeoff, not a research problem.

  • Commitment schemes are where privacy actually lives.
  • Verification cost scales with public inputs, not witness size — design accordingly.
  • Trusted setups are social infrastructure. Treat them like you'd treat a CA.