Skip to content

Latest commit

 

History

History
120 lines (81 loc) · 4.28 KB

File metadata and controls

120 lines (81 loc) · 4.28 KB

CI

mpz

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.

⚠️ Notice

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.

Crates

Many protocol crates follow a -core / high-level split: the -core crate contains the cryptographic internals without any I/O, while the parent crate adds async networking on top. See Core vs IO for rationale.

Primitives

Foundation

  • mpz-core - Core cryptographic primitives (AES, PRG, GGM tree, LPN, commitment).
  • mpz-common - Protocol execution runtime, I/O, multiplexing, and threading. No cryptography.
  • mpz-fields - Finite-field arithmetic.

Circuits

Protocols

Virtual Machine

Higher-level Protocols

  • mpz-garble (-core) - Half-gate garbled circuit protocols.
  • mpz-zk (-core) - QuickSilver zero-knowledge proofs.
  • mpz-hash - MPC-friendly hash functions (SHA-2, Blake3, Keccak) built on the circuit and VM layers.

Dependency Graph

The -core suffix is omitted for brevity; see the crate list above for the full split. Arrows point from dependent to dependency.

graph LR
    mpz-share-conversion --> mpz-ole
    mpz-ole --> mpz-fields
    mpz-ole --> mpz-ot
    
    mpz-garble --> mpz-ot
    mpz-garble --> mpz-vm-core
    mpz-garble --> mpz-circuits

    mpz-hash --> mpz-vm-core
    mpz-hash --> mpz-circuits

    mpz-zk --> mpz-ot
    mpz-zk --> mpz-vm-core
    
    
    mpz-ot --> mpz-cointoss
    mpz-ot --> mpz-core
    mpz-ot --> mpz-common
    mpz-cointoss --> mpz-core
    mpz-cointoss --> mpz-common
    mpz-vm-core --> mpz-circuits
    mpz-vm-core --> mpz-memory-core
    mpz-vm-core --> mpz-common
    mpz-ideal-vm --> mpz-vm-core
    mpz-memory-core --> mpz-core
    mpz-circuits --> mpz-core
    mpz-fields --> mpz-core
    mpz-core --> clmul
    mpz-core --> matrix-transpose
Loading

License

All crates in this repository are licensed under either of

at your option.

Contribution

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.

Contributors

Pronunciation

mpz is pronounced "em-peasy".