Skip to content

Instantly share code, notes, and snippets.

Last active May 23, 2019 08:01
Show Gist options
  • Save ebfull/bf62068eda56ce2e8731666fa21d1414 to your computer and use it in GitHub Desktop.
Save ebfull/bf62068eda56ce2e8731666fa21d1414 to your computer and use it in GitHub Desktop.

How do I verify the Sapling MPC?

What you'll need

  1. Install the Rust compiler. A version from a year ago will work but the recent one is fine too.
  2. Download the transcript from the Powers of Tau MPC. (See the links here.)
  3. Download the params file from the Sapling MPC.
  4. Check out the attestations for the Powers of Tau MPC. (Similar can be found for the Sapling MPC but participants chose various ways to distribute their attestations, they have not been coalesced into a single repository.)

Step 1: Verify Powers of Tau

Download the transcript file and clone the powersoftau code repository. Place the transcript file in that directory and run the following command:

cargo run --release --bin verify --features u128-support

This will verify the transcript file and write various parameter files to disk. This utility will also print out various hashes, which are commitments to the responses that each participant provided. These should match up with the attestations.

Step 2: Verify Sapling MPC

Download the params file and clone the sapling-mpc code repository.

Place the phase1radix2m13, phase1radix2m17 and phase1radix2m21 files that were output during step 1 into the sapling-mpc directory. Place the params file in the sapling-mpc directory also.

Now run the following command:

cargo run --release --bin verify

This will verify the parameters here, and output some hashes like before. These should correspond with the hashes on the wiki page, and those should correspond to what the participants obtained when they participated, just as in the Powers of Tau ceremony.

Step 3: Output the final parameters

In the sapling-mpc directory, now run cargo run --release --bin split_params to split the params file up into sapling-output.params, sapling-spend.params and sprout-groth16.params files that should correspond to the files we distribute to users.

Step 4: Verify the implementation and cryptography

All of what you've done so far is run pre-made tools that we've distributed. You'll need to review these tools yourself, as well as the social processes and the underlying cryptography. Or, you'll need to find others who have and rely on their judgment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment