zk-SNARK

A zk-SNARK (Zero-Knowledge Succinct Non-interactive Argument of Knowledge) is a cryptographic proof that enables one party to prove knowledge of a secret to another party without divulging the secret itself. zk-SNARKs find applications in various fields, including cryptocurrency, privacy-preserving computing, and supply chain management.

The key properties of how a zk-SNARK operates:

  • The Prover possesses a secret they want to prove their knowledge of to the Verifier without revealing it.

  • The key property of a zk-SNARK is that the proof is succinct, meaning that it is very small and easy to verify.

  • For users with negative balances in our system, we treat them as zero.

We utilize zk-SNARKs to validate both our Proof of Assets and our Proof of Liabilities. The zk-SNARK we use proves there are no negative balances included in the total liability calculation. Otherwise a malicious exchange could create fake users with negative balances which would understate total customer liabilities. By using a zk-SNARK that prevents inclusion of negative balances it ensures that the total liabilities to customers published are accurate & tamper proof.

Example of a zk-SNARK preventing tampering:

Let's assume the exchange has 2 customers with the following balances:
Alice: 4 BTC
Bob: 10 BTC
Total customer liabilities: 14 BTC

The proof will demonstrate the exchange’s total liabilities = 14 BTC

If the exchange creates a fake account called Carol with a negative balance it may report its liabilities as below:
Alice: 4 BTC
Bob: 10 BTC
Carol: - 2 BTC
Total customer liabilities: 12 BTC

The true liability of the exchange is actually 14 BTC. By creating a fake user with a negative balance the exchange might try to hide its true liabilities and thus understate its obligations. 

The proof using a zk-SNARK will ignore the negative account balance and calculate the total customer liability as 14 BTC

What is the difference between a Zero knowledge proof and a zk-SNARK?

  • Zero-Knowledge Proofs (ZKPs) and zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) are both types of cryptographic proofs that enable one party to prove knowledge of something to another party without revealing any other information. However, there are some key differences between the two.

  • ZKPs are interactive proofs, meaning that the prover and the verifier need to interact with each other for the proof to be verified. This can be a drawback in some cases, as it can make the proof verification process more complex and time-consuming.

  • On the other hand, zk-SNARKs are non-interactive proofs, meaning that the prover does not need to interact with the verifier for the proof to be verified. This makes zk-SNARKs more efficient than ZKPs, as the proof verification process can be done more quickly and easily.

  • Another difference between ZKPs and zk-SNARKs is the size of the proofs. ZKPs can be relatively large, while zk-SNARKs are typically much smaller. This makes zk-SNARKs more suitable for applications where the size of the proofs is important, such as blockchain and distributed ledger technology.

  • Finally, ZKPs and zk-SNARKs are based on different cryptographic techniques. ZKPs are based on the Fiat-Shamir heuristic, while zk-SNARKs are based on the Groth16 protocol. The Groth16 protocol is a more recent and sophisticated protocol than the Fiat-Shamir heuristic, and it offers a number of advantages, such as increased efficiency and security.

In general, zk-SNARKs are a more efficient and secure type of zero-knowledge proof than ZKPs. However, ZKPs are still a valuable tool, and they may be more suitable for some applications.

Here is a table that summarizes the key differences between ZKPs and zk-SNARKs:

Previous
Previous

Solvency proof: Traditional vs. Cryptographic

Next
Next

Community Consensus