# Zero-Knowledge Proofs

## <mark style="color:purple;">What Is A Zero-Knowledge Proof?</mark>

A zero-knowledge proof, also known as a ZK protocol, is a type of verification that takes place between a prover and a verifier. In a zero-knowledge proof system, the prover can demonstrate to the verifier that they know a specific piece of information (such as the solution to a mathematical equation) without exposing the information itself. Modern cryptographers can use these proof systems to provide better privacy and security.

A zero-knowledge proof was initially described in an MIT paper published in 1985 by Shafi Goldwasser and Silvio Micali. They demonstrated how to prove some properties of a number without revealing the number or any more information about it. This study also revealed the mathematically significant discovery that interactions between a prover and a verifier can reduce the amount of information needed to prove a particular theorem.

A ZK proof must meet two fundamental requirements: completeness and soundness. The ability of the prover to demonstrate knowledge of the necessary material to a high degree of likely accuracy is referred to as completeness. The verifier must be able to reliably verify whether or not the prover is in possession of the information for the proof to be valid. Finally, in order to be really zero-knowledge, the proof must achieve both completeness and soundness without ever communicating the information in question between the prover and the verifier.

Zero-knowledge proofs are typically employed in applications where privacy and security are critical. Authentication systems, for example, can use ZK proofs to validate credentials or identities without revealing them directly. For example, it can be used to verify that a person has a password to a computer system without revealing the password.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.defidocs.io/advanced-information/blockchain/zero-knowledge-proofs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
