# Potential MPC Applications Ideas
## Group1 Social graphs/Reputation System
### Eigen Trust
Trust scoring algorithm in a peer-to-peer network.
Each peer has local trust scores of the peers it knows. (trust scores are calculated locally and normalized)
Using MPC, eigen trust scores can be calculated without disclosing the local trust scores
#### Challenges
- The number of peers in the network grows, number of communication/computations grows
- Handling Iterative computation efficiently until convergence in MPC
#### References
[Original paper](http://ilpubs.stanford.edu:8090/562/1/2002-56.pdf)
[wikipedia Eigen Trust](https://en.wikipedia.org/wiki/EigenTrust)
[zk eigen trust](https://github.com/eigen-trust)
### Sybil Rank
Sybil detection algorithm in a network.
Bidirectional graph network.
Choose a set of seed nodes (non-Sybil nodes).
Do a random walk from the seed nodes via directed edges and count the number of visits on each node. Use the value as a score. If the score is low, the node is Sybil in high probability.
Using MPC, the nodes don’t have to reveal the connected nodes but still can execute this process.
#### Challenges
- Use randomness in MPC many times
- Iterative process
- How to handle private graph structure efficiently in MPC
#### References
[SybilRank](https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final42_2.pdf)
### Other Social Graph/Reputation scores
There are other algorithms for Sybil detection/defense.
Reputation scorings
### Challenges
- Handling a big number of nodes in single MPC evaluation seems very inefficient.
- Is it possible to reduce to efficient 2-party computation?
- What is a good MPC scheme for handling graph structure?
## Group2 Negotiations, Votings, Auctions
### Private Negotiation
2-pc garbling circuit both-ways
Enforcing on-chain activity with both signatures generated from circuits.
- PeekABook
- 2-pc price negotiation
- blind-find
- Company purchasing
- Peace negotiation
- 2-pc negotiation
- Voting
- Privacy-preserving policy decisions
- n-pc votings
- etc
#### References
- [Private binding negotiation](https://ethresear.ch/t/private-binding-negotiations/12426)
- [Peek A Book](https://ethresear.ch/t/peekabook-private-order-matching/6987)
### Auctions
Auctions with sealed bids without trusted third party.
### Challenges
TODO:
## Group3 Machine learning, Statistical analysis
### Machine Learning, Statistical analysis
Training of machine-learning models on private data sets owned by different parties.
Evaluation of one party's private model using another party's private data. (Federated learning)
- Federated learning
- private inference on private model
If you combine zk-ml and MPC, we can do more powerful things.
Current ZKML model follows two different approaches.
1) Private model, public input
2) Public model, private input
Using MPC, it can be extended a little bit further such that, you can get a evaluation of a private model which was trained with certain dataset (you don't know the whole dataset but still verify probabilistically) without revealing your input.
So, this is private model (partially), private input.
This might be useful for sensitive model ex) medical model trained with data from different medical institutes.
### Challenges
- How large model we can handle efficiently?
- Data poisoning attack is inevitable in private training sets
- can we use zkp for provenance information of data to prevent poisoning attack?
#### References
- [CrypTen](https://arxiv.org/pdf/2109.00984.pdf)
- [Garbled Neural Network](https://eprint.iacr.org/2019/338)
- [intro to zkml](https://worldcoin.org/blog/engineering/intro-to-zkml)
## Group4 Others
### Content lookup
Use cases in applications like Skiff
related to private information retrieval.
- PIR
- Oblivious data structure
### Secret management
Use secret sharing schemes to manage or recover secrets in a more secure way
## ZKP & MPC
The combination of zero-knowledge proofs(ZKPs) and secure multiparty computation(MPC) gives us powerful tool. It enables verifiable secure multiparty computation with privacy on its input and output.
Publicly auditable MPC(PA-MPC) or Universally verifiable MPC can output some transcript that everyone can verify the correctness of the computation.
#### Proof of correct construction of circuit garbling
Generate zk-snark proof of circuit garbling. Garbler can convince evaluator that the circuit garbling was done correctly with the proof.
#### Proof of correct execution of garbled circuit
Evaluator should evaluate the garbled circuit with committed inputs and do the evaluation correctly. By generating the proof of correct evaluation, evaluator can convince the garbler that the evaluation was done correctly with the proof.
#### ZKP of computation on Linear secret sharing scheme (LSSS)
We can generate zk-snark proof of valid MPC on LSSS. This is done with collaborative zk-snarks.
#### References
https://eprint.iacr.org/2014/075.pdf
https://eprint.iacr.org/2015/058.pdf
https://eprint.iacr.org/2021/1530
### MPC Toolings
- Writing MPC circuit
- Generating zkp of the correct MPC execution
https://github.com/MPC-SoK/frameworks
https://github.com/rdragos/awesome-mpc