From 1cdc5cd42c0011db0550c91842a1608b61eed664 Mon Sep 17 00:00:00 2001 From: ctrlc03 <93448202+ctrlc03@users.noreply.github.com> Date: Fri, 2 Feb 2024 12:33:19 +0000 Subject: [PATCH] docs(non-qv): update docs to reflect the integration of non-quadratic voting Cleanup docs and add instructions of how to use non quadratic voting when processing and tallying results --- .../versioned_docs/version-v1.x/circuits.md | 10 +- website/versioned_docs/version-v1.x/cli.md | 80 +++-- .../versioned_docs/version-v1.x/testing.md | 317 ++++++++---------- 3 files changed, 202 insertions(+), 205 deletions(-) diff --git a/website/versioned_docs/version-v1.x/circuits.md b/website/versioned_docs/version-v1.x/circuits.md index 0d75d868b6..5f3d10634e 100644 --- a/website/versioned_docs/version-v1.x/circuits.md +++ b/website/versioned_docs/version-v1.x/circuits.md @@ -11,7 +11,7 @@ MACI has three main zk-SNARK [circuits](https://github.com/privacy-scaling-explo 1. [`ProcessMessages.circom`](https://github.com/privacy-scaling-explorations/maci/blob/dev/circuits/circom/processMessages.circom), which takes a batch of encrypted messages, decrypts them, and generates a proof that the coordinator's local processing was performed correctly. 2. [`TallyVotes.circom`](https://github.com/privacy-scaling-explorations/maci/blob/dev/circuits/circom/tallyVotes.circom), which counts votes from users' ballots, batch by batch. -3. [`Subsidy.circom`](https://github.com/privacy-scaling-explorations/maci/blob/dev/circuits/circom/subsidy.circom), which implements [pairwise subsidy](https://hackmd.io/@chaosma/H1_9xmT2K). +3. [`Subsidy.circom`](https://github.com/privacy-scaling-explorations/maci/blob/dev/circuits/circom/subsidy.circom), which implements [pairwise subsidy](https://hackmd.io/@chaosma/H1_9xmT2K). Please note this is an optional feature. The rest of the circuits are utilities templates that are required for the main circuits to work correctly. These include utilities such as float math, conversion of private keys, and Poseidon hashing/encryption. @@ -56,6 +56,10 @@ This circuit requires the coordinator's private key, hence a proof for this circ ![ProcessMessages](/img/circuits/processMessages.svg) +:::info +A version working with non quadratic voting (non-qv) is also available. This version is called `processMessagesNonQV` and is to be used when the Poll is not using the quadratic voting feature. Note that by default MACI works with quadratic voting. +::: + #### Parameters | # | Parameter | Description | @@ -181,6 +185,10 @@ This method requires fewer circuit constraints than if we verified a Merkle proo ![TallyVotes](/img/circuits/tallyVotes.svg) +:::info +A version working with non quadratic voting (non-qv) is also available. This version is called `tallyVotesNonQv` and is to be used when the Poll is not using the quadratic voting feature. Note that by default MACI works with quadratic voting. +::: + #### Input signals | Input signal | Description | diff --git a/website/versioned_docs/version-v1.x/cli.md b/website/versioned_docs/version-v1.x/cli.md index c09e0a337c..becfa34376 100644 --- a/website/versioned_docs/version-v1.x/cli.md +++ b/website/versioned_docs/version-v1.x/cli.md @@ -27,27 +27,27 @@ pnpm run hardhat ## Subcommands -| Command | Description | Options | -| -------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `create` | Deploy the contracts | `-v, --vkRegistryAddress `: The vk registry contract address
`-i, --initialVoiceCredits `: The initial voice credits
`-p, --initialVoiceCreditsProxyAddress `: The initial voice credits proxy contract address
`-g, --signupGatekeeperAddress `: The signup gatekeeper contract address
`-ph3, --poseidonT3Address `: The PoseidonT3 contract address
`-ph4, --poseidonT4Address `: The PoseidonT4 contract address
`-ph5, --poseidonT5Address `: The PoseidonT5 contract address
`-ph6, --poseidonT6Address `: The PoseidonT6 contract address
`-q, --quiet`: Whether to print values to the console
`-s, --stateTreeDepth `: The state tree depth | -| `checkVerifyingKeys` | Check that the verifying keys in the contract match the local ones | `-q, --quiet`: Whether to print values to the console
`-vk, --vk-contract `: The VkRegistry contract address
`-s, --state-tree-depth `: The state tree depth
`-i, --int-state-tree-depth `: The intermediate state tree depth
`-m, --msg-tree-depth `: The message tree depth
`-v, --vote-option-tree-depth `: The vote option tree depth
`-b, --msg-batch-depth `: The message batch depth
`-p, --process-messages-zkey `: The process messages zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing))
`-t, --tally-votes-zkey `: The tally votes zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing))
`-ss, --subsidy-zkey `: The subsidy zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)) | -| `genMaciPubKey` | Generate a new MACI public key | `-sk, --privkey `: The private key | -| `genMaciKeyPair` | Generate a new MACI key pair | No options | -| `airdrop` | Airdrop topup credits to the coordinator | `-a, --amount `: The amount of topup
`-x, --contract `: The MACI contract address
`-o, --poll-id `: Poll id
`-t, --token-address `: The token address
`-q, --quiet`: Whether to print values to the console | -| `deployVkRegistry` | Deploy a new verification key registry contract | `-q, --quiet`: Whether to print values to the console | -| `show` | Show the deployed contract addresses | No options | -| `deployPoll` | Deploy a new poll | `-t, --duration `: The poll duration
`-g, --max-messages `: The max messages
`-mv, --max-vote-options `: The max vote options
`-i, --int-state-tree-depth `: The int state tree depth
`-b, --msg-batch-depth `: The message tree sub depth
`-m, --msg-tree-depth `: The message tree depth
`-v, --vote-option-tree-depth `: The vote option tree depth
`-pk, --pubkey `: The coordinator public key
`-x, --maci-address `: The MACI contract address
`-q, --quiet`: Whether to print values to the console | -| `setVerifyingKeys` | Set the verifying keys | `-s, --state-tree-depth `: The state tree depth
`-i, --int-state-tree-depth `: The intermediate state tree depth
`-m, --msg-tree-depth `: The message tree depth
`-v, --vote-option-tree-depth `: The vote option tree depth
`-b, --msg-batch-depth `: The message batch depth
`-p, --process-messages-zkey `: The process messages zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing))
`-t, --tally-votes-zkey `: The tally votes zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing))
`-k, --vk-registry `: The vk registry contract address
`-q, --quiet`: Whether to print values to the console
`-ss, --subsidy-zkey `: The subsidy zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)) | -| `publish` | Publish a new message to a MACI Poll contract | `-p, --pubkey `: The MACI public key which should replace the user's public key in the state tree
`-x, --contract `: The MACI contract address
`-sk, --privkey `: Your serialized MACI private key
`-i, --state-index `: The user's state index
`-v, --vote-option-index `: The vote option index
`-n, --nonce `: The message nonce
`-s, --salt `: The message salt
`-o, --poll-id `: The poll id
`-w, --new-vote-weight `: The new vote weight
`-q, --quiet`: Whether to print values to the console | -| `mergeMessages` | Merge the message accumulator queue | `-q, --quiet`: Whether to print values to the console
`-x, --maci-contract-address `: The MACI contract address
`-o, --poll-id `: The poll id
`-n, --num-queue-ops `: The number of queue operations | -| `mergeSignups` | Merge the signups accumulator queue | `-q, --quiet`: Whether to print values to the console
`-x, --maci-contract-address `: The MACI contract address
`-o, --poll-id `: The poll id
`-n, --num-queue-ops `: The number of queue operations | -| `timeTravel` | Fast-forward the time (only works for local hardhat testing) | `-s, --seconds `: The number of seconds to fast-forward
`-q, --quiet`: Whether to print values to the console | -| `signup` | Sign up to a MACI contract | `-p, --pubkey `: The MACI public key
`-x, --maci-address `: The MACI contract address
`-s, --sg-data `: The signup gateway data
`-i, --ivcp-data `: The initial voice credit proxy data
`-q, --quiet`: Whether to print values to the console | -| `topup` | Top up an account with voice credits | `-a, --amount `: The amount of topup
`-x, --maci-address `: The MACI contract address
`-i, --state-index `: State leaf index
`-o, --poll-id `: Poll id
`-q, --quiet`: Whether to print values to the console | -| `fundWallet` | Fund a wallet with Ether | `-a, --amount `: The amount of Ether
`-w, --address
`: The address to fund
`-q, --quiet`: Whether to print values to the console | -| `verify` | Verify the results of a poll and optionally the subsidy results on-chain | `-o, --poll-id `: The poll id
`-t, --tally-file `: The tally file with results, per vote option spent credits, spent voice credits total
`-s, --subsidy-file `: The subsidy file
`-x, --contract `: The MACI contract address
`-tc, --tally-contract `: The tally contract address
`-sc, --subsidy-contract `: The subsidy contract address
`-q, --quiet`: Whether to print values to the console | -| `genProofs` | Generate the proofs for a poll | `-sk, --privkey `: Your serialized MACI private key
`-x, --contract `: The MACI contract address
`-o, --poll-id `: The poll id
`-t, --tally-file `: The tally file
`-s, --subsidy-file `: The subsidy file
`-r, --rapidsnark `: The path to the rapidsnark binary
`-wp, --process-witnessgen `: The path to the process witness generation binary
`-wt, --tally-witnessgen `: The path to the tally witness generation binary
`-ws, --subsidy-witnessgen `: The path to the subsidy witness generation binary
`-zp, --process-zkey `-zt, --tally-zkey `: The path to the tally zkey
`-zs, --subsidy-zkey `: The path to the subsidy zkey
`-q, --quiet`: Whether to print values to the console
`-f, --output `: The output directory for proofs
`-tx, --transaction-hash :` Transaction hash of MACI contract creation
`-w, --wasm`: Whether to use the wasm binaries
`-pw, --process-wasm `: The path to the process witness generation wasm binary
`-tw, --tally-wasm `: The path to the tally witness generation wasm binary
`-sw, --subsidy-wasm `: The path to the subsidy witness generation wasm binary | -| proveOnChain | Prove the results of a poll on chain | `-o, --poll-id `: The poll id
`-q, --quiet`: Whether to print values to the console
`-x, --contract `: The MACI contract address
`-p, --message-processor-address `: The message processor contract address
`-t, --tally-contract `: The tally contract address
`-s, --subsidy-contract `: The subsidy contract address
`-f, --proof-dir `: The proof output directory from the genProofs subcommand | +| Command | Description | Options | +| -------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `create` | Deploy the contracts | `-v, --vkRegistryAddress `: The vk registry contract address
`-i, --initialVoiceCredits `: The initial voice credits
`-p, --initialVoiceCreditsProxyAddress `: The initial voice credits proxy contract address
`-g, --signupGatekeeperAddress `: The signup gatekeeper contract address
`-ph3, --poseidonT3Address `: The PoseidonT3 contract address
`-ph4, --poseidonT4Address `: The PoseidonT4 contract address
`-ph5, --poseidonT5Address `: The PoseidonT5 contract address
`-ph6, --poseidonT6Address `: The PoseidonT6 contract address
`-q, --quiet`: Whether to print values to the console
`-s, --stateTreeDepth `: The state tree depth | +| `checkVerifyingKeys` | Check that the verifying keys in the contract match the local ones | `-q, --quiet`: Whether to print values to the console
`-vk, --vk-contract `: The VkRegistry contract address
`-s, --state-tree-depth `: The state tree depth
`-i, --int-state-tree-depth `: The intermediate state tree depth
`-m, --msg-tree-depth `: The message tree depth
`-v, --vote-option-tree-depth `: The vote option tree depth
`-b, --msg-batch-depth `: The message batch depth
`-p, --process-messages-zkey `: The process messages zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing))
`-t, --tally-votes-zkey `: The tally votes zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing))
`-ss, --subsidy-zkey `: The subsidy zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)) | +| `genMaciPubKey` | Generate a new MACI public key | `-sk, --privkey `: The private key | +| `genMaciKeyPair` | Generate a new MACI key pair | No options | +| `airdrop` | Airdrop topup credits to the coordinator | `-a, --amount `: The amount of topup
`-x, --contract `: The MACI contract address
`-o, --poll-id `: Poll id
`-t, --token-address `: The token address
`-q, --quiet`: Whether to print values to the console | +| `deployVkRegistry` | Deploy a new verification key registry contract | `-q, --quiet`: Whether to print values to the console | +| `show` | Show the deployed contract addresses | No options | +| `deployPoll` | Deploy a new poll | `-t, --duration `: The poll duration
`-g, --max-messages `: The max messages
`-mv, --max-vote-options `: The max vote options
`-i, --int-state-tree-depth `: The int state tree depth
`-b, --msg-batch-depth `: The message tree sub depth
`-m, --msg-tree-depth `: The message tree depth
`-v, --vote-option-tree-depth `: The vote option tree depth
`-pk, --pubkey `: The coordinator public key
`-x, --maci-address `: The MACI contract address
`-q, --quiet`: Whether to print values to the console | +| `setVerifyingKeys` | Set the verifying keys | `-s, --state-tree-depth `: The state tree depth
`-i, --int-state-tree-depth `: The intermediate state tree depth
`-m, --msg-tree-depth `: The message tree depth
`-v, --vote-option-tree-depth `: The vote option tree depth
`-b, --msg-batch-depth `: The message batch depth
`-p, --process-messages-zkey `: The process messages zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing))
`-t, --tally-votes-zkey `: The tally votes zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing))
`-k, --vk-registry `: The vk registry contract address
`-q, --quiet`: Whether to print values to the console
`-ss, --subsidy-zkey `: The subsidy zkey path (see different options to use specific circuits [Trusted setup](https://maci.pse.dev/docs/trusted-setup) or [Testing](https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)) | +| `publish` | Publish a new message to a MACI Poll contract | `-p, --pubkey `: The MACI public key which should replace the user's public key in the state tree
`-x, --contract `: The MACI contract address
`-sk, --privkey `: Your serialized MACI private key
`-i, --state-index `: The user's state index
`-v, --vote-option-index `: The vote option index
`-n, --nonce `: The message nonce
`-s, --salt `: The message salt
`-o, --poll-id `: The poll id
`-w, --new-vote-weight `: The new vote weight
`-q, --quiet`: Whether to print values to the console | +| `mergeMessages` | Merge the message accumulator queue | `-q, --quiet`: Whether to print values to the console
`-x, --maci-contract-address `: The MACI contract address
`-o, --poll-id `: The poll id
`-n, --num-queue-ops `: The number of queue operations | +| `mergeSignups` | Merge the signups accumulator queue | `-q, --quiet`: Whether to print values to the console
`-x, --maci-contract-address `: The MACI contract address
`-o, --poll-id `: The poll id
`-n, --num-queue-ops `: The number of queue operations | +| `timeTravel` | Fast-forward the time (only works for local hardhat testing) | `-s, --seconds `: The number of seconds to fast-forward
`-q, --quiet`: Whether to print values to the console | +| `signup` | Sign up to a MACI contract | `-p, --pubkey `: The MACI public key
`-x, --maci-address `: The MACI contract address
`-s, --sg-data `: The signup gateway data
`-i, --ivcp-data `: The initial voice credit proxy data
`-q, --quiet`: Whether to print values to the console | +| `topup` | Top up an account with voice credits | `-a, --amount `: The amount of topup
`-x, --maci-address `: The MACI contract address
`-i, --state-index `: State leaf index
`-o, --poll-id `: Poll id
`-q, --quiet`: Whether to print values to the console | +| `fundWallet` | Fund a wallet with Ether | `-a, --amount `: The amount of Ether
`-w, --address
`: The address to fund
`-q, --quiet`: Whether to print values to the console | +| `verify` | Verify the results of a poll and optionally the subsidy results on-chain | `-o, --poll-id `: The poll id
`-t, --tally-file `: The tally file with results, per vote option spent credits, spent voice credits total
`-s, --subsidy-file `: The subsidy file
`-x, --contract `: The MACI contract address
`-tc, --tally-contract `: The tally contract address
`-sc, --subsidy-contract `: The subsidy contract address
`-q, --quiet`: Whether to print values to the console | +| `genProofs` | Generate the proofs for a poll | `-sk, --privkey `: Your serialized MACI private key
`-x, --contract `: The MACI contract address
`-o, --poll-id `: The poll id
`-t, --tally-file `: The tally file
`-s, --subsidy-file `: The subsidy file
`-r, --rapidsnark `: The path to the rapidsnark binary
`-wp, --process-witnessgen `: The path to the process witness generation binary
`-wt, --tally-witnessgen `: The path to the tally witness generation binary
`-ws, --subsidy-witnessgen `: The path to the subsidy witness generation binary
`-zp, --process-zkey `-zt, --tally-zkey `: The path to the tally zkey
`-zs, --subsidy-zkey `: The path to the subsidy zkey
`-q, --quiet`: Whether to print values to the console
`-f, --output `: The output directory for proofs
`-tx, --transaction-hash :` Transaction hash of MACI contract creation
`-w, --wasm`: Whether to use the wasm binaries
`-pw, --process-wasm `: The path to the process witness generation wasm binary
`-tw, --tally-wasm `: The path to the tally witness generation wasm binary
`-sw, --subsidy-wasm `: The path to the subsidy witness generation wasm binary
`-uq, --use-quadratic-voting`: Whether to process messages and tally votes using quadratic voting or not | +| `proveOnChain` | Prove the results of a poll on chain | `-o, --poll-id `: The poll id
`-q, --quiet`: Whether to print values to the console
`-x, --contract `: The MACI contract address
`-p, --message-processor-address `: The message processor contract address
`-t, --tally-contract `: The tally contract address
`-s, --subsidy-contract `: The subsidy contract address
`-f, --proof-dir `: The proof output directory from the genProofs subcommand | ## Public and private key format @@ -264,10 +264,10 @@ node build/ts/index.js genProofs -x 0x89962fa216d39fCcaaC11e1e462340d80ab6Cf4D \ -t tally.json \ -f proofs \ -r ~/rapidsnark/build/prover \ - -wp ./zkeys/ProcessMessages_10-2-1-2_test \ - -wt ./zkeys/TallyVotes_10-1-2_test \ - -zp ./zkeys/ProcessMessages_10-2-1-2_test.0.zkey \ - -zt ./zkeys/TallyVotes_10-1-2_test.0.zkey \ + -wp ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test \ + -wt ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test \ + -zp ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \ + -zt ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \ ``` **WASM Parameters** @@ -278,11 +278,27 @@ node build/ts/index.js genProofs \ -o 0 \ -t tally.json \ -f proofs \ - -zp ./zkeys/ProcessMessages_10-2-1-2_test.0.zkey \ - -zt ./zkeys/TallyVotes_10-1-2_test.0.zkey \ - -tw ./zkeys/TallyVotes_10-1-2_test_js/TallyVotes_10-1-2_test.wasm \ - -pw ./zkeys/ProcessMessages_10-2-1-2_test_js/ProcessMessages_10-2-1-2_test.wasm \ - -w true + -zp ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \ + -zt ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \ + -tw ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js/TallyVotes_10-1-2_test.wasm \ + -pw ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js/ProcessMessages_10-2-1-2_test.wasm \ + -w true \ +``` + +**Non Quadratic Voting** + +```bash +node build/ts/index.js genProofs \ + -sk macisk.49953af3585856f539d194b46c82f4ed54ec508fb9b882940cbe68bbc57e59e \ + -o 0 \ + -t tally.json \ + -f proofs \ + -zp ./zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test.0.zkey \ + -zt ./zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test.0.zkey \ + -tw ./zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_js/TallyVotesNonQv_10-1-2_test.wasm \ + -pw ./zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_js/ProcessMessagesNonQv_10-2-1-2_test.wasm \ + -w true \ + -uq false ``` Example output: @@ -310,8 +326,8 @@ node build/ts/index.js genProofs \ --privkey macisk.49953af3585856f539d194b46c82f4ed54ec508fb9b882940cbe68bbc57e59e \ --poll-id 0 \ --rapidsnark ~/rapidsnark/build/prover \ - --process-witnessgen ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test \ - --tally-witnessgen ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test \ + --process-witnessgen ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test \ + --tally-witnessgen ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test \ --process-zkey /zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \ --tally-zkey ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \ --tally-file tally.json \ diff --git a/website/versioned_docs/version-v1.x/testing.md b/website/versioned_docs/version-v1.x/testing.md index f4d6755065..9a6b65be90 100644 --- a/website/versioned_docs/version-v1.x/testing.md +++ b/website/versioned_docs/version-v1.x/testing.md @@ -73,6 +73,10 @@ or download them. Please remember to not use these testing `.zkey` files in prod MACI has two main zk-SNARK circuits, `processMessages` and `tallyVotes` (`subsidyPerBatch` is optional). +:::info +The `processMessages` and `tallyVotes` circuits are also provided in a non-quadratic voting (non-QV) version. Currently these new versions have not undergone a trusted setup ceremony. +::: + Each circuit is parameterised and there should be one `.zkey` file for each circuit and set of parameters. @@ -102,27 +106,143 @@ pnpm build:circuits-c pnpm build:circuits-wasm ``` -You should see the following files in `maci/cli/zkeys/`: +You should see the following files in `maci/cli/`: ```bash -ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test -ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test.dat -ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.sym -# either cpp or js -ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp -ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js -SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/SubsidyPerBatch_10-1-2_test -SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cppSubsidyPerBatch_10-1-2_test.dat -SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test.sym -# either cpp or js -SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp -SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_js -TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test -TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test.dat -TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.sym -# either cpp or js -TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp -TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js +zkeys/ +zkeys/TallyVotes_10-1-2_test/ +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.sym +zkeys/TallyVotes_10-1-2_test/groth16_vkey.json +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.r1cs +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/ +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/calcwit.cpp +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/circom.hpp +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/fr.o +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test.o +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/main.o +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/calcwit.o +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/fr.hpp +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/Makefile +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/fr.asm +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test.dat +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/fr_asm.o +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/main.cpp +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test.cpp +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/fr.cpp +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/calcwit.hpp +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js/ +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js/generate_witness.js +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js/witness_calculator.js +zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js/TallyVotes_10-1-2_test.wasm +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test.0.zkey +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/ +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/calcwit.cpp +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/circom.hpp +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/fr.o +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/ProcessMessagesNonQv_10-2-1-2_test.dat +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/ProcessMessagesNonQv_10-2-1-2_test +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/ProcessMessagesNonQv_10-2-1-2_test.o +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/main.o +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/calcwit.o +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/fr.hpp +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/Makefile +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/fr.asm +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/fr_asm.o +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/main.cpp +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/fr.cpp +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/calcwit.hpp +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_cpp/ProcessMessagesNonQv_10-2-1-2_test.cpp +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test.sym +zkeys/ProcessMessagesNonQv_10-2-1-2_test/groth16_vkey.json +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test.r1cs +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_js/ +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_js/generate_witness.js +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_js/witness_calculator.js +zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_js/ProcessMessagesNonQv_10-2-1-2_test.wasm +zkeys/processMessages_6-8-2-3/ +zkeys/powersOfTau28_hez_final_19.ptau +zkeys/TallyVotesNonQv_10-1-2_test/ +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/ +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/calcwit.cpp +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/circom.hpp +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/fr.o +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/main.o +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/calcwit.o +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/fr.hpp +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/TallyVotesNonQv_10-1-2_test +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/Makefile +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/fr.asm +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/TallyVotesNonQv_10-1-2_test.o +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/fr_asm.o +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/TallyVotesNonQv_10-1-2_test.cpp +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/main.cpp +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/TallyVotesNonQv_10-1-2_test.dat +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/fr.cpp +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_cpp/calcwit.hpp +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_js/ +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_js/TallyVotesNonQv_10-1-2_test.wasm +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_js/generate_witness.js +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_js/witness_calculator.js +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test.sym +zkeys/TallyVotesNonQv_10-1-2_test/groth16_vkey.json +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test.r1cs +zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test.0.zkey +zkeys/ProcessMessages_10-2-1-2_test/ +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js/ +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js/ProcessMessages_10-2-1-2_test.wasm +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js/generate_witness.js +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js/witness_calculator.js +zkeys/ProcessMessages_10-2-1-2_test/groth16_vkey.json +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.r1cs +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.sym +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/calcwit.cpp +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/circom.hpp +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/fr.o +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test.o +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test.cpp +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/main.o +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/calcwit.o +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/fr.hpp +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/Makefile +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/fr.asm +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/fr_asm.o +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/main.cpp +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test.dat +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/fr.cpp +zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/calcwit.hpp +zkeys/powersOfTau28_hez_final_17.ptau +zkeys/SubsidyPerBatch_10-1-2_test/ +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test.sym +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test.0.zkey +zkeys/SubsidyPerBatch_10-1-2_test/groth16_vkey.json +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test.r1cs +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_js/ +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_js/generate_witness.js +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_js/witness_calculator.js +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_js/SubsidyPerBatch_10-1-2_test.wasm +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/ +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/calcwit.cpp +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/circom.hpp +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/fr.o +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/SubsidyPerBatch_10-1-2_test.dat +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/main.o +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/SubsidyPerBatch_10-1-2_test.cpp +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/calcwit.o +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/fr.hpp +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/Makefile +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/fr.asm +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/fr_asm.o +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/main.cpp +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/fr.cpp +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/SubsidyPerBatch_10-1-2_test.o +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/calcwit.hpp +zkeys/SubsidyPerBatch_10-1-2_test/SubsidyPerBatch_10-1-2_test_cpp/SubsidyPerBatch_10-1-2_test ``` **generate zkeys** @@ -170,6 +290,12 @@ To run e2e with subsidy: pnpm run test:e2e-subsidy ``` +To run e2e tests with normal voting (not quadratic voting): + +```bash +pnpm run test:e2e-non-qv +``` + ### Run integration tests You can find the tests in `maci/integrationTests/`. @@ -344,156 +470,3 @@ Please do not use in production. These artifacts have not undergone a trusted se | State tree depth | 6 | Allows 15,625 signups. | | State leaf batch depth | 3 | Allows 125 user's votes to be processed per batch. | | Vote option tree depth | 2 | Allows 25 vote options. | - -### contents of `*.tar.gz` - -It contains compiled result of the circuit: - -``` -zkeys/ -zkeys/ProcessMessages_7-9-3-4_test.sym -zkeys/ProcessMessages_7-9-3-4_test.circom -zkeys/ProcessMessages_7-9-3-4_test.dat -zkeys/TallyVotes_7-3-4_test_js/ -zkeys/TallyVotes_7-3-4_test_js/TallyVotes_7-3-4_test.wasm -zkeys/TallyVotes_7-3-4_test_js/witness_calculator.js -zkeys/TallyVotes_7-3-4_test_js/TallyVotes_7-3-4_test.wat -zkeys/TallyVotes_7-3-4_test_js/generate_witness.js -zkeys/TallyVotes_7-3-4_test.sym -zkeys/TallyVotes_7-3-4_test.dat -zkeys/ProcessMessages_7-9-3-4_test.r1cs -zkeys/ProcessMessages_7-9-3-4_test -zkeys/ProcessMessages_7-9-3-4_test_cpp/ -zkeys/ProcessMessages_7-9-3-4_test_cpp/fr.asm -zkeys/ProcessMessages_7-9-3-4_test_cpp/calcwit.cpp -zkeys/ProcessMessages_7-9-3-4_test_cpp/fr.hpp -zkeys/ProcessMessages_7-9-3-4_test_cpp/ProcessMessages_7-9-3-4_test.o -zkeys/ProcessMessages_7-9-3-4_test_cpp/calcwit.o -zkeys/ProcessMessages_7-9-3-4_test_cpp/main.o -zkeys/ProcessMessages_7-9-3-4_test_cpp/main.cpp -zkeys/ProcessMessages_7-9-3-4_test_cpp/ProcessMessages_7-9-3-4_test.cpp -zkeys/ProcessMessages_7-9-3-4_test_cpp/fr.o -zkeys/ProcessMessages_7-9-3-4_test_cpp/circom.hpp -zkeys/ProcessMessages_7-9-3-4_test_cpp/calcwit.hpp -zkeys/ProcessMessages_7-9-3-4_test_cpp/fr.cpp -zkeys/ProcessMessages_7-9-3-4_test_cpp/Makefile -zkeys/ProcessMessages_7-9-3-4_test_cpp/fr_asm.o -zkeys/ProcessMessages_7-9-3-4_test_js/ -zkeys/ProcessMessages_7-9-3-4_test_js/witness_calculator.js -zkeys/ProcessMessages_7-9-3-4_test_js/ProcessMessages_7-9-3-4_test.wasm -zkeys/ProcessMessages_7-9-3-4_test_js/ProcessMessages_7-9-3-4_test.wat -zkeys/ProcessMessages_7-9-3-4_test_js/generate_witness.js -zkeys/TallyVotes_7-3-4_test_cpp/ -zkeys/TallyVotes_7-3-4_test_cpp/fr.asm -zkeys/TallyVotes_7-3-4_test_cpp/calcwit.cpp -zkeys/TallyVotes_7-3-4_test_cpp/TallyVotes_7-3-4_test.cpp -zkeys/TallyVotes_7-3-4_test_cpp/fr.hpp -zkeys/TallyVotes_7-3-4_test_cpp/calcwit.o -zkeys/TallyVotes_7-3-4_test_cpp/main.o -zkeys/TallyVotes_7-3-4_test_cpp/main.cpp -zkeys/TallyVotes_7-3-4_test_cpp/fr.o -zkeys/TallyVotes_7-3-4_test_cpp/circom.hpp -zkeys/TallyVotes_7-3-4_test_cpp/calcwit.hpp -zkeys/TallyVotes_7-3-4_test_cpp/fr.cpp -zkeys/TallyVotes_7-3-4_test_cpp/TallyVotes_7-3-4_test.o -zkeys/TallyVotes_7-3-4_test_cpp/Makefile -zkeys/TallyVotes_7-3-4_test_cpp/fr_asm.o -zkeys/TallyVotes_7-3-4_test.r1cs -zkeys/TallyVotes_7-3-4_test.circom -zkeys/TallyVotes_7-3-4_test -``` - ---- - -### Contribution Hash - -- [ProcessMessages_4-6-3-4_test.0.zkey](#ProcessMessages_4-6-3-4_test0zkey) -- [TallyVotes_4-3-4_test.0.zkey](#TallyVotes_4-3-4_test0zkey) -- [ProcessMessages_7-9-3-4_test.0.zkey](#ProcessMessages_7-9-3-4_test0zkey) -- [TallyVotes_7-3-3_test.0.zkey](#TallyVotes_7-3-4_test0zkey) -- [ProcessMessages_10-2-1-2_test.0.zkey](#ProcessMessages_10-2-1-2_test0zkey) -- [TallyVotes_10-1-2_test.0.zkey](#TallyVotes_10-1-2_test0zkey) -- [SubsidyPerBatch_10-1-2_test.0.zkey](#SubsidyPerBatch_10-1-2_test0zkey) -- [ProcessMessages_7-7-3-3_test.0.zkey](#ProcessMessages_7-7-3-3_test0zkey) -- [TallyVotes_7-3-3_test.0.zkey](#TallyVotes_7-3-3_test0zkey) - -#### ProcessMessages_4-6-3-4_test.0.zkey - -``` -2d29ddba 11e5292e b20f681d 3ade88cd -5c93852b 52f400b0 779e9413 03a49e35 -55b27b66 db5fec74 c8e01b0a c407b08f -325cfc06 cb1ac909 38b2e5ff 22b34333 -``` - -#### TallyVotes_4-3-4_test.0.zkey - -``` -d2d88532 c2e1e7bd 3c7be3fb f85da2e2 -897d11d3 d1231639 25f557e4 e5dda0fd -454eb84a 04bf7d6d 525895fd 8168b14b -f3a8a155 cd338e2c 5f364836 bfd7913d -``` - -#### ProcessMessages_7-9-3-4_test.0.zkey - -``` -75256709 6e8a034e a067ea67 16192fb2 -57bd982a e202b12f 4a1381ac 362ca197 -07ca0d33 c1ca2438 2c283eca 463c3c4d -b1094e74 b8aaa9a3 9af75b22 0d9229e6 -``` - -#### TallyVotes_7-3-4_test.0.zkey - -``` -f44cf32e 1709e2c4 c8dbe8dc 5b6de4be -30b9a60c 0ddefacc af33a1d0 f54f57a2 -6eed2430 87d00e29 5bf068fd 9d89c323 -9b6ced66 c970a87d 745d35e4 5f47d7f9 -``` - -#### ProcessMessages_10-2-1-2_test.0.zkey - -``` -23eb4980 d584c7ef 647478b9 dea49a6d -2c595cd0 43a0e9f2 e83fbfb7 b2fd7617 -6fbe4b6f ba7f1f82 566c443d a8f0fec6 -1c2c2662 20e0df3d 12a057f3 2a071937 -``` - -#### TallyVotes_10-1-2_test.0.zkey - -``` -ae12edd2 6f7f1d25 530177ab 27483fe0 -ce9a8c26 9f015c49 203376da 911e295c -3f205792 5d661350 da391f34 16986d6a -61be4031 56220ca7 06ed3b9f e8504f11 -``` - -#### SubsidyPerBatch_10-1-2_test.0.zkey - -``` -16dfc388 eda0bfd7 ff529e42 505ed6b7 -cbffbb79 9218b09b cfa2fe29 0806097a -52f4839f 58ff692b 2f572309 980f218b -c84bb980 a1346082 fb00a947 3c97d99e -``` - -#### ProcessMessages_7-7-3-3_test.0.zkey - -``` -e688264b e1326553 b58492d4 7c2028bc -cda175f9 b786c4eb 44453080 369ab861 -590816fe 257c1fe1 e079415b e4e1b626 -a0f752f8 413a81ba f481d335 187e0091 -``` - -#### TallyVotes_7-3-3_test.0.zkey - -``` -6869646d 1faf2aec d8c70c85 0021858f -8c17db02 ede8be90 9a49924c 665c931f -66673899 095159c8 2a236903 4774f42b -225e270f b446f8ec 33545826 3e9444b9 -```