zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) are a specific type of zero-knowledge proof that allows one party to prove possession of information without revealing it. They are "succinct" (small proof size) and "non-interactive" (no back-and-forth between prover and verifier).
Properties
Zero-Knowledge: The verifier learns nothing beyond the statement's validity.
Succinct: Proofs are tiny (a few hundred bytes) regardless of the computation size.
Non-Interactive: A single message from prover to verifier, no multiple rounds needed.
Applications
Zcash: Uses zk-SNARKs for private transactions.
ZK-Rollups: Protocols like zkSync and Polygon zkEVM use zk-SNARKs to compress thousands of L2 transactions into a single proof that's verified on Ethereum.
Identity: Proving attributes (age, citizenship) without revealing underlying documents.
Limitations
Trusted Setup: zk-SNARKs require a one-time trusted setup ceremony. If the setup is compromised, the system's security is broken.
Quantum Vulnerability: Unlike zk-STARKs, zk-SNARKs are not quantum-resistant.