All Projects → matter-labs-archive → powersoftau

matter-labs-archive / powersoftau

Licence: Apache-2.0, MIT licenses found Licenses found Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT
Communal zk-SNARK MPC for Public Parameters

Projects that are alternatives of or similar to powersoftau

r1cs
A Rust library for building R1CS gadgets
Stars: ✭ 75 (+368.75%)
Mutual labels:  zk-snarks
baseline
The Baseline Protocol is an open source initiative that combines advances in cryptography, messaging, and distributed ledger technology to enable confidential and complex coordination between enterprises while keeping data in systems of record. This repo serves as the main repo for the Baseline Protocol, containing core packages, examples, and r…
Stars: ✭ 565 (+3431.25%)
Mutual labels:  zk-snarks
SecMML
SecMML: Secure MPC(multi-party computation) Machine Learning Framework
Stars: ✭ 91 (+468.75%)
Mutual labels:  multi-party-computation
mpc
Secure Multi-Party Computation (MPC) with Go. This project implements secure two-party computation with Garbled circuit protocol.
Stars: ✭ 41 (+156.25%)
Mutual labels:  multi-party-computation
zksnarks
ZK-Snarks in English
Stars: ✭ 15 (-6.25%)
Mutual labels:  zk-snarks
multi-party-eddsa
Rust implementation of multi party Ed25519 signature scheme.
Stars: ✭ 86 (+437.5%)
Mutual labels:  multi-party-computation
minionn
Privacy -preserving Neural Networks
Stars: ✭ 58 (+262.5%)
Mutual labels:  multi-party-computation
encrypted-skin-cancer-detection
Detecting skin cancer in encrypted images with TensorFlow
Stars: ✭ 27 (+68.75%)
Mutual labels:  multi-party-computation
zerocash-ethereum
Smart contract - Zerocash-like approach for privacy on Ethereum
Stars: ✭ 18 (+12.5%)
Mutual labels:  zk-snarks
vocdoni-node
A set of libraries and tools for the Vocdoni decentralized backend infrastructure, the main ground of our universally verifiable, privacy-centric and scalable digital voting protocol
Stars: ✭ 58 (+262.5%)
Mutual labels:  zk-snarks
bellman-substrate
A library for supporting zk-SNARKs to Substrate
Stars: ✭ 26 (+62.5%)
Mutual labels:  zk-snarks
eth-mimblewimble
Ethereum 9 3/4's zk-SNARKs circuits and the python library for Mimblewimble on Ethereum
Stars: ✭ 77 (+381.25%)
Mutual labels:  zk-snarks
haal
Hääl - Anonymous Electronic Voting System on Public Blockchains
Stars: ✭ 96 (+500%)
Mutual labels:  zk-snarks
za
An experimental rust zksnarks compiler with embeeded bellman-bn128 prover
Stars: ✭ 39 (+143.75%)
Mutual labels:  zk-snarks
research
Shared learning of decentralized development.
Stars: ✭ 26 (+62.5%)
Mutual labels:  zk-snarks
ethsnarks
A toolkit for viable zk-SNARKS on Ethereum, Web, Mobile and Desktop
Stars: ✭ 224 (+1300%)
Mutual labels:  zk-snarks
pairing
Optimised bilinear pairings over elliptic curves
Stars: ✭ 44 (+175%)
Mutual labels:  bls12-381
go-kzg
FFT, data-recovery and KZG commitments, a.k.a. Kate commitments, in Go - *super experimental*
Stars: ✭ 34 (+112.5%)
Mutual labels:  bls12-381

Powers of Tau

Original story

This is a multi-party computation (MPC) ceremony which constructs partial zk-SNARK parameters for all circuits up to a depth of 221. It works by taking a step that is performed by all zk-SNARK MPCs and performing it in just one single ceremony. This makes individual zk-SNARK MPCs much cheaper and allows them to scale to practically unbounded numbers of participants.

This protocol is described in a forthcoming paper. It produces parameters for an adaptation of Jens Groth's 2016 pairing-based proving system using the BLS12-381 elliptic curve construction. The security proof relies on a randomness beacon being applied at the end of the ceremony.

Contributions

Extended to support Ethereum's BN256 curve and made it easier to change size of the ceremony. In addition proof generation process can be done in memory constrained environments now. Benchmark is around 1.3 Gb of memory and 3 hours for a 2^26 power of tau on BN256 curve on my personal laptop

Instructions

Instructions for a planned ceremony will be posted when everything is tested and finalized.


To run the ceremony on your laptop:

  1. Preparation:
rustup update # tested on rustup 1.17.0
cargo build
  1. Put response file from the previous ceremony to root directory.
  2. To generate new_challenge run:
cargo run --release --bin verify_transform_constrained # this will generate new_challenge from response file
  1. Backup old files and replace challenge file:
mv challenge challenge_old
mv response response_old
mv new_challenge challenge
  1. Run ceremony:
cargo run --release --bin compute_constrained # generate response file

Put your hash from output response to private gist (example: https://gist.github.com/skywinder/c35ab03c66c6b200b33ea2f388a6df89)

  1. Reboot laptop to clean up toxic waste.

  2. Save response file and give it to the next participant.

Recommendations from original ceremony

Participants of the ceremony sample some randomness, perform a computation, and then destroy the randomness. Only one participant needs to do this successfully to ensure the final parameters are secure. In order to see that this randomness is truly destroyed, participants may take various kinds of precautions:

  • putting the machine in a Faraday cage
  • destroying the machine afterwards
  • running the software on secure hardware
  • not connecting the hardware to any networks
  • using multiple machines and randomly picking the result of one of them to use
  • using different code than what we have provided
  • using a secure operating system
  • using an operating system that nobody would expect you to use (Rust can compile to Mac OS X and Windows)
  • using an unusual Rust toolchain or alternate rust compiler
  • lots of other ideas we can't think of

It is totally up to the participants. In general, participants should beware of side-channel attacks and assume that remnants of the randomness will be in RAM after the computation has finished.

License

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].