Skip to content

Networking for multi-party computation and threshold signature applications using the Noise protocol for end-to-end encryption

Notifications You must be signed in to change notification settings

mpc-sdk/framework

Repository files navigation

Multi-party computation protocol

End-to-end encrypted relay service designed for MPC/TSS applications built using the noise protocol and websockets for the transport layer.

The service facilitates secure communication between peers but it does not handle public key exchange nor meeting points.

For clients to use the relay service they must know the public key of the server and the public keys of all the participants for a session.

Creating a meeting point that shares the session identifier between participants to execute an MPC/TSS protocol is left up to the application. Typically, this can be achieved by encoding the session identifier in a URL and sharing the URL with all the participants.

Features

Protocols

  • cggmp: Enable the CGGMP21 protocol using synedrion.

Signers

  • ecdsa: Single-party signer compatible with Ethereum using k256.
  • eddsa: Single-party signer compatible with Solana using ed25519 and ed25519-dalek.
  • schnorr: Single-party signer compatible with Bitcoin Taproot (BIP-340) using k256.

Bindings

Webassembly

  • CGGMP
  • ECDSA
  • EdDSA
  • FROST
  • Schnorr

Node

  • CGGMP
  • ECDSA
  • EdDSA
  • FROST
  • Schnorr

Server Installation

cargo install mpc-relay

Documentation

  • protocol Message types and encoding
  • server Websocket server library
  • client Websocket client library
  • cli Command line interface for the server

The client implementation uses web-sys for webassembly and tokio-tungstenite for other platforms.

Development

Getting Started

You will need the rust toolchain and a few other tools:

cargo install cargo-make
cargo install cargo-nextest
cargo install wasm-pack

Minimum supported rust version (MSRV) is 1.68.1.

Run the gen-keys task to setup keypairs for the server and test specs:

cargo make gen-keys

Server

Start a server:

cargo run -- start config.toml

Documentation

cargo make doc

Tests

To run the integration tests using the native client:

cargo nextest run

For webassembly and node binding tests see the README files in the conformance directory.

License

The bindings and driver crates are released under the GPLv3 license and all other code is either MIT or Apache-2.0.

About

Networking for multi-party computation and threshold signature applications using the Noise protocol for end-to-end encryption

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages