What is zk-STARKs and zk-SNARKs?

zk-STARKs (Transparent Information Argument with Zero Information Core) and zk-SNARKs (Non-Interactive Information Argument with Zero Information Core) are zero-knowledge proof (ZKP) systems. These systems allow one party (proving) to prove to the other (verifying) the truth of a statement without revealing any information beyond the validity of the statement.

Both zk-STARKs and zk-SNARKs use the concept of a "prover" and "verifier"; where the prover can create a proof that a statement is true and the verifier can check the validity of the proof without checking it. have to carry out the basic calculations themselves.

The main difference between the two is that zk-STARKs are "transparent", meaning that the proof itself includes the computation performed to generate the proof, and the verifier can verify the computation independently. In contrast, zk-SNARKs are "interactive" and do not reveal the computation to the validator, which makes them more private.

Another important difference is that zk-STARKs do not require a reliable setup (also known as a "ceremony"), while zk-SNARKs require a reliable setup. This is because zk-STARKs can be verified by anyone with access to the system's public parameters, while zk-SNARKs require a special "trusted setup" phase where certain confidential information is generated and then destroyed.

In summary, zk-STARKs are transparent, require no reliable installation, and can be verified by anyone. zk-SNARKs are more specific, but require a reliable setup and can only be verified by those with access to public parameters.