mpz is a collection of multi-party computation libraries written in Rust 🦀.
The scope of this project is currently limited to being used to implement TLSNotary. It is not intended for general public use.
See our design doc for information on design choices, standards and project structure.
This project is currently under active development and should not be used in production. Expect bugs and regular major breaking changes. Use at your own risk.
These crates implement complete, high-level protocols. Each top-level crate is
paired with an IO-free *-core crate containing the protocol logic; supporting
crates (primitives, circuits, execution, VM, and tooling) are intentionally not
listed here.
ot(ot-core) - Oblivious transfer.garble(garble-core) - Garbled circuits.ole(ole-core) - Oblivious linear evaluation.zk(zk-core) - Zero-knowledge proofs.share-conversion(share-conversion-core) - Multiplicative-to-additive and additive-to-multiplicative share conversion.cointoss(cointoss-core) - Two-party coin toss.
Tests and benchmarks can run on wasm32-wasip1 and wasm32-wasip1-threads through wasm-harness. See WASM.md for setup, engines, commands, and limitations.
All crates in this repository are licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See CONTRIBUTING.md.
mpz is pronounced "em-peasy".
