Skip to content

Latest commit

 

History

History
33 lines (16 loc) · 2.26 KB

Day11.md

File metadata and controls

33 lines (16 loc) · 2.26 KB

#DaysOfZeroKnowledge. Day 11.

Today, we are going to talk a particular type of ZKP, which does not require interaction between a verifier and a prover, is a Non-Interactive Zero Knowledge Proof (NIZK).

NIZK are very suitable for Ethereum blockchain applications because they allow a smart contract to act as a verifier. This way, anyone can generate a proof and send it as part of a transaction to the smart contract, which can perform some action depending on whether the proof is valid or not. Also, this protocol can verify one’s statement to a larger group of people.

The most preferable NIZK is Zero-knowledge Succinct Non-Interactive Argument of Knowledge (zk-SNARK) proof.

This protocol adds the following:

Features with zk-SNARK

These properties make zk-SNARK especially suitable for blockchains, where on-chain storage and computation can be expensive and senders often go offline after sending a transaction.

This protocol uses three algorithms:

Key generator

Prover function

Verifier function

When zk-SNARKs are used in blockchains, both the key and proof generation are executed off-chain. Only the general verification algorithm is run inside a smart contract on chain. Also, if we want to use a non-interactive protocol, we need to use a trusted setup. The trusted setup is the process which generates part of the public data used by a prover when computing her proof.

Non-interactivity is only useful if we want to allow multiple independent verifiers to verify a given proof without each one having to individually query the prover. Succinctness is necessary only if the medium used for storing the proofs is very expensive and/or if we need very short verification times.

That's all for this thread. Thank you for reading! If you liked this thread, follow me @Hasseru and retweet.

References

zk-SNARKs on Bitcoin.