# Non Interactive Zero Knowledge Proof
The `Non Interactive Zero Knowledge Proof` referred as to `NIZK` prove the statement without revealing any information about the statement. There are some types of `NIZK` for example `SNORKs`, `STARKs` and so on. In this section, we describe the `SNARKs` and especially [`Pinocchio Protocol`](https://eprint.iacr.org/2013/279.pdf). It's a little bit complicated technology so I divide into three parts.
## Abstract
The `SNARKs` converts the computation problems into the polynomial equations. We can not only hide the computation itself but also verify the computation faster than compute it again. That's why the `SNARKs` is also used for scaling solution for example `zk rollup`.
## Detail
The `SNARKs` has three steps.
1. [QAP](4_3_1_qap.md)
Converting computation which we want to prove without revealing additional information into polynomial equations. In [`Pinocchio Protocol`](https://eprint.iacr.org/2013/279.pdf), we need to generate polynonial equations for each computation. The polynomial equations are decided for corresponding computation.
2. [Polynomail Commitment](4_3_2_polynomial_commitment.md)
Hiding the secret as polynomial coefficients, opening with evaluating that polynomials at point, and we can prove the computation was done correctly.
3. [Homomorphic Encryption](4_3_3_homomorphic_encryption.md)
The polynomial coefficients are encrypted to keep the secret so we need perform evaluation with remaining encrypted. The `Homomorphic Encryption` can perform the multiple time addition and one time multiplication for encrypted number using elliptic curve and pairing.