A cryptographic protocol that allows a party to prove possession of information, such as a private key, without revealing it. Zero-knowledge proofs offer "proofs of validity" to convey information from a prover to a verifier. They are used to verify transactions on a blockchain very quickly.
A Simple Zero Proof Example
For blockchains and other verification purposes, zero-knowledge proofs can be very complicated. However, a "challenge-response" server login is a simple example that shows how a value can be proven even though it is never divulged. Instead of storing the actual password on a server, which could be stolen if the server were attacked, a numeric hash value of the password is created by the client and stored on both the client and server.
When a user logs in, the server creates a random "challenge" number and sends it to the client. The client subtracts its hash number from the challenge and sends the result ("response") back to the server, which performs the same subtraction. If the server subtraction matches the response, the server knows the client has the original password, and the user is authenticated. See hash
Zero Knowledge on Layer 2 Blockchains
ZK-SNARK and ZK-STARK are examples used in Layer 2 blockchain "rollups." SNARK hides addresses and transaction amounts but allows the network to verify and confirm a transaction. For example, it is used by the privacy-oriented Zcash cryptocurrency to provide anonymous payments (see Zcash
). STARK offers more scalability and transparency and is touted as the ultimate successor to SNARK.
SNARK stands for "succinct non-interactive argument of knowledge," while STARK means "succinct transparent argument of knowledge." See Layer 2 blockchain
and zero confirmation transaction