In 1985, Zero Knowledge Proof was invented by MIT researchers Shafi Goldwasser, Silvio Micali, and Charles Rackoff in their paper *The Knowledge Complexity of Interactive Proof Systems*.

Zero Knowledge Proof refers to a method by which one party (the prover) can prove to another party (the verifier) that something is true, without revealing any information apart from the fact that this specific statement is true.

To make that possible, zero-knowledge protocols rely on algorithms that take some data as input and return ‘true’ or ‘false’ as output.

A zero-knowledge protocol must satisfy the following three criteria:

- Completeness: If the input is valid, the zero-knowledge protocol always returns ‘true’. Hence, an honest prover can convince an honest verifier.
- Soundness: If the input is invalid, the zero-knowledge protocol cannot return ‘true’. Hence, it’s impossible for a malicious prover to trick an honest verifier into believing an invalid statement is valid.
- Zero-knowledge: The verifier learns nothing about a statement beyond its validity or falsity

Two common types of Zero-Knowledge Proof:

- ZK-SNARKs, an acronym for Zero-Knowledge Succinct Non-Interactive Argument of Knowledge.
- ZK-STARK, an acronym for Zero-Knowledge Scalable Transparent Argument of Knowledge.

Please check out the link below if you want to know more about Zero Knowledge Proof and the difference between ZK-SNARKs and ZK-STARKs.)