# Zero Knowledge v Multi Party Computation (MPC)

I am struggling with understanding the difference between the two. From what I am putting together, they have different adversarial models, MPC adds the condition of collusion between parties i.e. election voting.

OR

Is Zero Knowledge a prerequisite for MPC?

I would appreciate if it anyone could provide both a simple and expanded explanation for this.

It would be better for you to ask for this question on a specific resource like https://crypto.stackexchange.com. In cryptography, these are two quite different concepts. You could also look into Wikipedia pages.

I will try to describe these two concepts in a few words, maybe it will help.

Non-interactive zero-knowledge proof (NIZKP) is a special string which proves some statement about some public value (like knowledge of a secret key corresponding to the public key, or hidden structure of some message) without revealing any other info (e.g. the corresponding secret key). In a context of Ethereum, it typically means that the originator of transaction hides its exact value, but provides a proof that it's a valid transaction.

Multi-party computation is an interactive communication between several parties so that they securely simultaneously compute some function of their secret values, without revealing those values. You could imaging MPC between 3 parties, each one having a secret number, and they (each one) evaluate the sum of those numbers. However, no one gets knowledge of secret numbers of 2 counterparties, only the total sum of 3 of them.

Regarding adversarial models, they are different of course, but it's just a consequence of different concepts (different parties and goals).

E.g. in NIZKP you have 2 parties: prover, which has some secret knowledge, and generalized verifier (actually, anyone), which doesn't know any secret values. The goal of prover (I) convince verifier in something (typically using the secret value) (II) doesn't reveal the secret value. The goals of adversary: (I) convince verifier in something wrong (or without knowledge of secret value) or (II) use honest prover's proof to reveal the secret value.

In MPC, you have several peers. Each of them has a goal to (I) securely evaluate the function of secret values of peers and (II) allow other peers to do the same, but without revealing the secret value. Dishonest peers (adversary) may want to (I) deceive other peers so the result value they evaluate will be incorrect (II) to reveal secret values of other peers.