Zk-SNARKs Can Prove Possession of Information Privately

Zero-knowledge succinct non-interactive argument of knowledge (zk-SNARK) can verify that another party is in possession of information without the other party needing to reveal that information or leak parts of it. This is useful because it provides a way of doing private transactions in public.

In a distributed, trust-less system like a cryptocurrency, zk-SNARKs can be used to make private transactions that are verifiable and stored on the blockchain (Zcash already does this, but for the most part blockchains are anonymous, not private). That means privacy conscious parties can benefit from using a blockchain while maintaining privacy at the transaction level and decreasing the chances of being de-anonymized at the transaction history level.

What is this used for?

Extrapolating a bit, there are interesting things you can do using zk-SNARKs with blockchains. You could verify an account balance by checking if it has enough available funds without leaking the balance or the account. You could verify the possession of a certificate or license without revealing any information about the certificate itself (like checking an ID without having to look at it). You could pay taxes without revealing your assets. You could automate verification of things like lottery tickets or possessing a certain NFT.

See also: