mirror of
https://github.com/privacy-scaling-explorations/pse.dev.git
synced 2026-01-13 16:18:07 -05:00
140 lines
4.9 KiB
TypeScript
140 lines
4.9 KiB
TypeScript
import { ProjectCategory, ProjectInterface, ProjectStatus } from "@/lib/types"
|
|
|
|
export const mpcFramework: ProjectInterface = {
|
|
id: "mpc-framework",
|
|
image: "mpc-framework.png",
|
|
name: "MPC Framework",
|
|
category: ProjectCategory.DEVTOOLS,
|
|
license: "MIT",
|
|
section: "pse",
|
|
projectStatus: ProjectStatus.ACTIVE,
|
|
links: {
|
|
github: "https://github.com/privacy-scaling-explorations/mpc-framework",
|
|
website: "https://mpc.pse.dev",
|
|
telegram: "https://t.me/+FKnOHTkvmX02ODVl",
|
|
},
|
|
content: {
|
|
en: {
|
|
tldr: "Create secure MPC apps easily in TypeScript.",
|
|
description: `
|
|
|
|
|
|
A framework that makes MPC easy, in TypeScript.
|
|
|
|
## Quick Start
|
|
|
|
Try [a demo app](https://mpc.pse.dev/apps/hello) or quickly [spin up your own](https://github.com/privacy-scaling-explorations/mpc-framework?tab=readme-ov-file#usage-guide).
|
|
|
|
## Overview
|
|
|
|
To make an MPC app you need three things:
|
|
|
|
**1) Engine**
|
|
- Implements the underlying cryptography.
|
|
|
|
**2) Circuit Generator**
|
|
- The shared computation needs to be specified as a circuit, and you need something to generate
|
|
that. This is similar to using a compiler to get programs to run on your machine.
|
|
|
|
**3) Messaging with each Party**
|
|
- Send and receive bytes.
|
|
|
|
MPC Framework brings these pieces together in a straightforward TypeScript API to make MPC
|
|
application development easy.
|
|
|
|
It includes multiple officially supported components for (1) and (2), templates that include (3),
|
|
and is designed to accommodate new solutions for each component.
|
|
|
|
The main solution for (2) is [Summon](https://github.com/privacy-scaling-explorations/summon), which is a TypeScript-like
|
|
language for generating circuits.
|
|
|
|
## What is MPC?
|
|
|
|
MPC stands for _Multi-Party Computation_. In regular computation, all inputs,
|
|
outputs, and intermediate calculations are necessarily visible on the device
|
|
performing the computation. MPC, by contrast, allows multiple devices to
|
|
collaborate on a computation while keeping intermediate calculations and others'
|
|
inputs private.
|
|
|
|
Here's some ways that can be useful:
|
|
|
|
- Provide analysis on patient data to researchers without revealing the patient data
|
|
- Play [Rock Paper Scissors Lizard Spock](https://github.com/privacy-scaling-explorations/mpc-lizard-spock) while keeping your move secret
|
|
- Hold an auction while keeping the bids secret (only the winning bidder and price is revealed)
|
|
- [Match employers and job-seekers that each have hidden criteria](https://github.com/cursive-team/pz-hiring)
|
|
- Arrange optimal asset swaps (eg sports players / trading cards / corporate assets / NFTs) using hidden valuations
|
|
- Find out if you qualify for an insurance policy without sharing your health data and without requiring the insurer to reveal the policy requirements
|
|
- Quantify how much you have in common with someone and then figure out the commonalities together (or choose not to)
|
|
- Create an embarrassing songs playlist for a party where each song is liked by >=N people
|
|
|
|
For a bit more of an introduction to MPC, see Barry Whitehat's talk
|
|
[2PC is for Lovers](https://www.youtube.com/watch?v=PzcDqegGoKI). The
|
|
lovers' app described in the talk has been implemented using mpc-framework
|
|
[here](https://mpc.pse.dev/apps/2pc-is-for-lovers).
|
|
|
|
For a more technical introduction, see [Computerphile's video on Garbled Circuits](https://www.youtube.com/watch?v=FMZ-HARN0gI). For a deeper dive: [Pragmatic MPC](https://securecomputation.org/).
|
|
`,
|
|
},
|
|
},
|
|
team: [
|
|
{
|
|
name: "Andrew Morris",
|
|
image: "/avatars/andrew.png",
|
|
links: {
|
|
github: "https://github.com/voltrevo",
|
|
twitter: "https://x.com/voltrevo",
|
|
},
|
|
},
|
|
{
|
|
name: "Yanis Meziane",
|
|
image: "/avatars/yanis.png",
|
|
links:{
|
|
github: "https://github.com/Meyanis95",
|
|
twitter: "https://x.com/yanis_mezn",
|
|
}
|
|
},
|
|
],
|
|
tags: {
|
|
keywords: ["MPC", "TypeScript", "privacy", "Garbled Circuits", "iZK"],
|
|
themes: ["buildWith", "play", "research"],
|
|
types: [],
|
|
builtWith: ["ValueScript", "Summon", "MPZ", "EMP-Toolkit"],
|
|
},
|
|
extraLinks: {
|
|
buildWith: [
|
|
{
|
|
label: "Create MPC-powered apps in Typescript",
|
|
url: "https://github.com/privacy-scaling-explorations/mpc-framework"
|
|
},
|
|
{
|
|
label: "Generate circuits with Summon",
|
|
url: "https://github.com/privacy-scaling-explorations/summon"
|
|
},
|
|
],
|
|
research: [
|
|
{
|
|
label: "Trinity: 2PC with Laconic OT + Garbled Circuits + PLONK",
|
|
url: "https://github.com/privacy-scaling-explorations/Trinity",
|
|
},
|
|
{
|
|
label: "Authenticated Garbling",
|
|
url: "https://hackmd.io/@a37205y_SL2LtEA1y2OWhQ/Sy4-nZ3lyx",
|
|
},
|
|
],
|
|
play: [
|
|
{
|
|
label: "Hello world in MPC",
|
|
url: "https://mpc.pse.dev/apps/hello",
|
|
},
|
|
{
|
|
label: "Lizard Spock in MPC",
|
|
url: "https://mpc.pse.dev/apps/lizard-spock",
|
|
},
|
|
{
|
|
label: "More demos",
|
|
url: "https://mpc.pse.dev/showcase",
|
|
},
|
|
]
|
|
},
|
|
}
|