Zero-knowledge guide


Poseidon is a cryptographic hash function which is optimized to be efficiently computable within a zk-SNARK.

Private input

Inputs to a zk-SNARK which are known by the prover but not by the verifier.

Public input

Inputs to a zk-SNARK which are known by both the prover and the verifier.

Public key encryption

Public-key encryption is any scheme which allows someone to encrypt a message using a publicly known encryption key, but only the holder(s) of a different private key can successfully decrypt the message. Some such systems can also be used to implement digital signatures.

Trusted setup ceremony

When creating a new zk-SNARK, one of the additional pieces of information that gets generated along with the proving and verification keys is known as “toxic waste”. If this toxic waste isn’t destroyed then the holder of that waste is capable of creating fake proofs. A trusted setup ceremony with many participants is used to create the keys and as long as at least one participant destroys their toxic waste fake proofs cannot be created.


Within the context of a zk-SNARK, a witness is a piece of information which (a) should remain private to the prover but which (b) the prover wishes to demonstrate to the verifier that they do know.