@maci-protocol/website 0.0.0-ci.2653bc0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +157 -0
- package/CHANGELOG.md +566 -0
- package/LICENSE +22 -0
- package/README.md +58 -0
- package/babel.config.js +3 -0
- package/blog/2021-10-12-maci-v1.md +100 -0
- package/blog/2022-09-22-maci-v1-technical-introduction.md +180 -0
- package/blog/2023-01-18-maci-v1.1.1.md +121 -0
- package/blog/2024-01-18-roadmap.md +106 -0
- package/blog/2024-02-28-maci-v1.2.0.md +121 -0
- package/blog/2024-04-10-roadmap-q2.md +96 -0
- package/blog/2024-05-08-ethdam.md +169 -0
- package/blog/2024-05-22-the-origins-of-maci.md +38 -0
- package/blog/2024-05-28-upcoming-grants.md +85 -0
- package/blog/2024-06-17-understanding-maci.md +63 -0
- package/blog/2024-06-21-deciphering-maci.md +48 -0
- package/blog/2024-06-28-revolusioning-public-goods-funding.md +32 -0
- package/blog/2024-07-23-q2-review.md +72 -0
- package/blog/2024-07-30-roadmap-q3.md +61 -0
- package/blog/2024-08-10-maci-v2.md +102 -0
- package/blog/2024-08-29-anonymous-poll-joining.md +47 -0
- package/blog/2024-10-29-q3-review.md +63 -0
- package/blog/2024-11-20-maci-platform.md +93 -0
- package/blog/2024-12-01-maci-getting-started.md +294 -0
- package/blog/2025-03-21-roadmap-2025.md +112 -0
- package/blog/assets/MACI_Bob_SignUp_1.png +0 -0
- package/blog/assets/MACI_Bob_SignUp_2.png +0 -0
- package/blog/assets/MACI_Complex_Message.png +0 -0
- package/blog/assets/MACI_Contracts.png +0 -0
- package/blog/assets/MACI_Sign_Up.png +0 -0
- package/blog/assets/MACI_Simple_Message.png +0 -0
- package/blog/assets/MACI_Verifier_1.png +0 -0
- package/blog/authors.yml +5 -0
- package/docusaurus.config.ts +213 -0
- package/package.json +65 -0
- package/src/components/ActionCard/index.tsx +30 -0
- package/src/components/ActionCard/styles.module.css +96 -0
- package/src/components/HomepageFeatures/index.tsx +91 -0
- package/src/components/HomepageFeatures/styles.module.css +17 -0
- package/src/components/ProjectCard/index.tsx +74 -0
- package/src/components/ProjectCard/styles.module.css +77 -0
- package/src/components/ProjectList/index.tsx +218 -0
- package/src/components/ProjectList/styles.module.css +180 -0
- package/src/content/projects.json +294 -0
- package/src/css/card.module.css +130 -0
- package/src/css/custom.css +91 -0
- package/src/icons/IconDiscord.tsx +16 -0
- package/src/icons/IconGithub.tsx +16 -0
- package/src/icons/IconWebsite.tsx +16 -0
- package/src/pages/blogs.tsx +58 -0
- package/src/pages/index.module.css +152 -0
- package/src/pages/index.tsx +66 -0
- package/src/pages/projects.tsx +44 -0
- package/src/pages/roadmap.md +150 -0
- package/src/pages/typedoc.tsx +11 -0
- package/src/plugins/blog-plugin/index.ts +86 -0
- package/src/react-app-env.d.ts +1 -0
- package/src/scripts/setupSolidityDocs.ts +67 -0
- package/src/scripts/setupTypedoc.ts +112 -0
- package/src/scripts/utils.ts +115 -0
- package/src/utils/getProjectsByFilter.ts +40 -0
- package/static/.nojekyll +0 -0
- package/static/audit_reports/20210922_Hashcloak_audit_report.pdf +0 -0
- package/static/audit_reports/202220930_Hashcloak_audit_report.pdf +0 -0
- package/static/audit_reports/20240223_PSE_Audit_audit_report.pdf +0 -0
- package/static/audit_reports/20240731_PSE_Audit_audit_report.pdf +0 -0
- package/static/fonts/DM_Sans.woff2 +0 -0
- package/static/fonts/Share_Tech_Mono.woff2 +0 -0
- package/static/img/box.png +0 -0
- package/static/img/box_dark.png +0 -0
- package/static/img/chain.png +0 -0
- package/static/img/chain_dark.png +0 -0
- package/static/img/chart.png +0 -0
- package/static/img/chart_dark.png +0 -0
- package/static/img/circuits/MACI-Circuits.excalidraw +39652 -0
- package/static/img/circuits/calculateTotal.svg +21 -0
- package/static/img/circuits/ecdh.svg +21 -0
- package/static/img/circuits/messageToCommand.svg +21 -0
- package/static/img/circuits/messageValidator.svg +21 -0
- package/static/img/circuits/poseidonHasher13.svg +21 -0
- package/static/img/circuits/privToPubkey.svg +21 -0
- package/static/img/circuits/processMessages.svg +21 -0
- package/static/img/circuits/processMessagesInputHasher.svg +21 -0
- package/static/img/circuits/processMessages_2_0.svg +21 -0
- package/static/img/circuits/processOne.svg +21 -0
- package/static/img/circuits/processTopup.svg +21 -0
- package/static/img/circuits/processingAfterPollEnds.svg +21 -0
- package/static/img/circuits/quinBatchLeavesExists.svg +21 -0
- package/static/img/circuits/quinCheckRoot.svg +21 -0
- package/static/img/circuits/quinGeneratePathIndices.svg +21 -0
- package/static/img/circuits/quinSelector.svg +21 -0
- package/static/img/circuits/resultsCommitmentVerifier.svg +21 -0
- package/static/img/circuits/splicer.svg +21 -0
- package/static/img/circuits/tallyInputHasher.svg +21 -0
- package/static/img/circuits/tallyVotes.svg +21 -0
- package/static/img/circuits/unpackElement.svg +21 -0
- package/static/img/circuits/verifySignature.svg +21 -0
- package/static/img/completingAPoll.svg +4 -0
- package/static/img/contracts.svg +16 -0
- package/static/img/coordinatorComponents.svg +21 -0
- package/static/img/favicon.ico +0 -0
- package/static/img/generateProofs.svg +4 -0
- package/static/img/hero.svg +9 -0
- package/static/img/maci-card.png +0 -0
- package/static/img/maci-rpgf-design.jpg +0 -0
- package/static/img/messageProcessingLocal.svg +21 -0
- package/static/img/offlineProcessing.svg +21 -0
- package/static/img/pse-logo-round.png +0 -0
- package/static/img/relayer-diagram.png +0 -0
- package/static/img/tallyCommitments.svg +4 -0
- package/static/img/voteTallyingLocal.svg +21 -0
- package/tsconfig.json +34 -0
- package/versioned_docs/version-v0.x/circuits.md +22 -0
- package/versioned_docs/version-v0.x/contract.md +186 -0
- package/versioned_docs/version-v0.x/faq.md +67 -0
- package/versioned_docs/version-v0.x/introduction.md +119 -0
- package/versioned_docs/version-v0.x/quadratic-vote-tallying-circuit.md +138 -0
- package/versioned_docs/version-v0.x/state-root-transition-circuit.md +230 -0
- package/versioned_docs/version-v1.2/audit.md +160 -0
- package/versioned_docs/version-v1.2/ci-pipeline.md +38 -0
- package/versioned_docs/version-v1.2/circuits.md +508 -0
- package/versioned_docs/version-v1.2/cli.md +689 -0
- package/versioned_docs/version-v1.2/contracts.md +445 -0
- package/versioned_docs/version-v1.2/contributing/code-of-conduct.md +91 -0
- package/versioned_docs/version-v1.2/contributing/contributing.md +129 -0
- package/versioned_docs/version-v1.2/coordinator-processing.md +46 -0
- package/versioned_docs/version-v1.2/deployment.md +122 -0
- package/versioned_docs/version-v1.2/installation.md +175 -0
- package/versioned_docs/version-v1.2/integrating.md +200 -0
- package/versioned_docs/version-v1.2/introduction.md +94 -0
- package/versioned_docs/version-v1.2/key-change.md +182 -0
- package/versioned_docs/version-v1.2/overview.md +47 -0
- package/versioned_docs/version-v1.2/poll-types.md +68 -0
- package/versioned_docs/version-v1.2/primitives.md +216 -0
- package/versioned_docs/version-v1.2/project-ideas.md +14 -0
- package/versioned_docs/version-v1.2/purpose.md +62 -0
- package/versioned_docs/version-v1.2/solidity-docs/MACI.md +345 -0
- package/versioned_docs/version-v1.2/solidity-docs/MessageProcessor.md +266 -0
- package/versioned_docs/version-v1.2/solidity-docs/MessageProcessorFactory.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/Poll.md +381 -0
- package/versioned_docs/version-v1.2/solidity-docs/PollFactory.md +50 -0
- package/versioned_docs/version-v1.2/solidity-docs/SignUpToken.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/Subsidy.md +218 -0
- package/versioned_docs/version-v1.2/solidity-docs/SubsidyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/Tally.md +311 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyNonQv.md +296 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyNonQvFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/TopupCredit.md +61 -0
- package/versioned_docs/version-v1.2/solidity-docs/VkRegistry.md +457 -0
- package/versioned_docs/version-v1.2/solidity-docs/benchmarks/HasherBenchmarks.md +44 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Hasher.md +125 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/IVerifier.md +11 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/MockVerifier.md +17 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Pairing.md +85 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT3.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT4.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT5.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT6.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkCommon.md +16 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkConstants.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Verifier.md +61 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/EASGatekeeper.md +121 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/FreeForAllSignUpGatekeeper.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpGatekeeper.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpTokenGatekeeper.md +93 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperBase.md +79 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperMultiple.md +48 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperSingle.md +42 -0
- package/versioned_docs/version-v1.2/solidity-docs/index.md +4 -0
- package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/ConstantInitialVoiceCreditProxy.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/InitialVoiceCreditProxy.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IEAS.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IHats.md +103 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMPFactory.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMessageProcessor.md +31 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPoll.md +217 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPollFactory.md +29 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallyFactory.md +28 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallySubsidyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVerifier.md +25 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVkRegistry.md +70 -0
- package/versioned_docs/version-v1.2/solidity-docs/mocks/MockHatsProtocol.md +133 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueue.md +464 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary.md +60 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary0.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinaryMaci.md +34 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary.md +75 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary0.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryBlankSl.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryMaci.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/EmptyBallotRoots.md +13 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/CommonUtilities.md +25 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/DomainObjs.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/Params.md +36 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/Utilities.md +79 -0
- package/versioned_docs/version-v1.2/spec.md +944 -0
- package/versioned_docs/version-v1.2/testing-in-detail.md +209 -0
- package/versioned_docs/version-v1.2/testing.md +472 -0
- package/versioned_docs/version-v1.2/topup.md +43 -0
- package/versioned_docs/version-v1.2/troubleshooting.md +51 -0
- package/versioned_docs/version-v1.2/trusted-setup.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/cli/index.md +15 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/AirdropArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployPollArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployedContracts.md +130 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenLocalStateArgs.md +168 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenProofsArgs.md +388 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IGenKeypairArgs.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IRegisteredUserArgs.md +63 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeMessagesArgs.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeSignupsArgs.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PollContracts.md +53 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/ProveOnChainArgs.md +128 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PublishArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SignupArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SubsidyData.md +73 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TallyData.md +166 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TopupArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/VerifyArgs.md +128 -0
- package/versioned_docs/version-v1.2/typedoc/cli/modules.md +556 -0
- package/versioned_docs/version-v1.2/typedoc/core/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/core/classes/MaciState.md +295 -0
- package/versioned_docs/version-v1.2/typedoc/core/classes/Poll.md +1098 -0
- package/versioned_docs/version-v1.2/typedoc/core/index.md +110 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/BatchSizes.md +50 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/IJsonMaciState.md +77 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/IProcessMessagesCircuitInputs.md +242 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/ISubsidyCircuitInputs.md +198 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/ITallyCircuitInputs.md +231 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/MaxValues.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/TreeDepths.md +63 -0
- package/versioned_docs/version-v1.2/typedoc/core/modules.md +289 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/AccQueue.md +770 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/G1Point.md +115 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/G2Point.md +140 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/IncrementalQuinTree.md +470 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/index.md +44 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Keypair.md +33 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/PoseidonFuncs.md +115 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Queue.md +33 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Signature.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/modules.md +913 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Ballot.md +274 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Keypair.md +181 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Message.md +244 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PCommand.md +409 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PrivKey.md +206 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PubKey.md +289 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/StateLeaf.md +340 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/TCommand.md +200 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/VerifyingKey.md +240 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/index.md +81 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/ICommand.md +104 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG1ContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG2ContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonBallot.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonCommand.md +32 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonKeyPair.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonPCommand.md +111 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonStateLeaf.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonTCommand.md +67 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IMessageContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeaf.md +39 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeafContractParams.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkContractParams.md +64 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkObjectParams.md +108 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/Proof.md +46 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/VoteOptionTreeLeaf.md +24 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/modules.md +110 -0
- package/versioned_docs/version-v1.2/typedoc/index.md +4 -0
- package/versioned_docs/version-v1.2/versioning.md +94 -0
- package/versioned_docs/version-v1.2/workflow.md +142 -0
- package/versioned_docs/version-v2.x/case-studies.md +35 -0
- package/versioned_docs/version-v2.x/contributing/_category_.json +4 -0
- package/versioned_docs/version-v2.x/contributing/code-of-conduct.md +92 -0
- package/versioned_docs/version-v2.x/contributing/contributing.md +149 -0
- package/versioned_docs/version-v2.x/contributing/project-ideas.md +78 -0
- package/versioned_docs/version-v2.x/core-concepts/_category_.json +4 -0
- package/versioned_docs/version-v2.x/core-concepts/ballot.md +19 -0
- package/versioned_docs/version-v2.x/core-concepts/coordinator-processing.md +46 -0
- package/versioned_docs/version-v2.x/core-concepts/hashing-and-encryption.md +45 -0
- package/versioned_docs/version-v2.x/core-concepts/key-change.md +179 -0
- package/versioned_docs/version-v2.x/core-concepts/maci-keys.md +84 -0
- package/versioned_docs/version-v2.x/core-concepts/maci-messages.md +44 -0
- package/versioned_docs/version-v2.x/core-concepts/merkle-trees.md +23 -0
- package/versioned_docs/version-v2.x/core-concepts/poll-types.md +106 -0
- package/versioned_docs/version-v2.x/core-concepts/spec.md +883 -0
- package/versioned_docs/version-v2.x/core-concepts/state-leaf.md +42 -0
- package/versioned_docs/version-v2.x/core-concepts/workflow.md +142 -0
- package/versioned_docs/version-v2.x/getting-started.md +313 -0
- package/versioned_docs/version-v2.x/guides/_category_.json +4 -0
- package/versioned_docs/version-v2.x/guides/compile-circuits.md +163 -0
- package/versioned_docs/version-v2.x/guides/frontend.md +99 -0
- package/versioned_docs/version-v2.x/guides/integrating.md +73 -0
- package/versioned_docs/version-v2.x/guides/maciWrapper.md +173 -0
- package/versioned_docs/version-v2.x/guides/subgraph.md +79 -0
- package/versioned_docs/version-v2.x/guides/testing/_category_.json +4 -0
- package/versioned_docs/version-v2.x/guides/testing/testing-in-detail.md +203 -0
- package/versioned_docs/version-v2.x/guides/testing/testing.md +163 -0
- package/versioned_docs/version-v2.x/guides/troubleshooting.md +161 -0
- package/versioned_docs/version-v2.x/introduction.md +146 -0
- package/versioned_docs/version-v2.x/processes/_category_.json +4 -0
- package/versioned_docs/version-v2.x/processes/ci-pipeline.md +38 -0
- package/versioned_docs/version-v2.x/processes/versioning.md +94 -0
- package/versioned_docs/version-v2.x/resources.md +33 -0
- package/versioned_docs/version-v2.x/security/_category_.json +4 -0
- package/versioned_docs/version-v2.x/security/audit.md +167 -0
- package/versioned_docs/version-v2.x/security/trusted-setup.md +166 -0
- package/versioned_docs/version-v2.x/supported-networks/_category_.json +4 -0
- package/versioned_docs/version-v2.x/supported-networks/deployed-contracts.md +1108 -0
- package/versioned_docs/version-v2.x/supported-networks/supported-networks.md +47 -0
- package/versioned_docs/version-v2.x/technical-references/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/AccQueue.md +21 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Gatekeepers.md +40 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/MACI.md +152 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Params.md +32 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Poll.md +104 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/PollFactory.md +43 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Tally.md +45 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/VkRegistry.md +57 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/_category_.json +8 -0
- package/versioned_docs/version-v2.x/technical-references/technical-references.md +47 -0
- package/versioned_docs/version-v2.x/technical-references/typescript-code/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/typescript-code/cli.md +699 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/processMessages.md +107 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/setup.md +101 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/utilities.md +131 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +37 -0
- package/versioned_docs/version-v2.x/use-cases/_category_.json +4 -0
- package/versioned_docs/version-v2.x/use-cases/governance.md +18 -0
- package/versioned_docs/version-v2.x/use-cases/polling.md +10 -0
- package/versioned_docs/version-v2.x/use-cases/public-goods.md +65 -0
- package/versioned_docs/version-v3.x/case-studies.md +35 -0
- package/versioned_docs/version-v3.x/contributing/_category_.json +4 -0
- package/versioned_docs/version-v3.x/contributing/code-of-conduct.md +92 -0
- package/versioned_docs/version-v3.x/contributing/contributing.md +149 -0
- package/versioned_docs/version-v3.x/contributing/project-ideas.md +78 -0
- package/versioned_docs/version-v3.x/core-concepts/_category_.json +4 -0
- package/versioned_docs/version-v3.x/core-concepts/ballot.md +19 -0
- package/versioned_docs/version-v3.x/core-concepts/coordinator-processing.md +46 -0
- package/versioned_docs/version-v3.x/core-concepts/coordinator-service.md +16 -0
- package/versioned_docs/version-v3.x/core-concepts/hashing-and-encryption.md +45 -0
- package/versioned_docs/version-v3.x/core-concepts/key-change.md +179 -0
- package/versioned_docs/version-v3.x/core-concepts/maci-keys.md +84 -0
- package/versioned_docs/version-v3.x/core-concepts/maci-messages.md +44 -0
- package/versioned_docs/version-v3.x/core-concepts/merkle-trees.md +16 -0
- package/versioned_docs/version-v3.x/core-concepts/offchain-voting.md +14 -0
- package/versioned_docs/version-v3.x/core-concepts/poll-types.md +58 -0
- package/versioned_docs/version-v3.x/core-concepts/polls.md +81 -0
- package/versioned_docs/version-v3.x/core-concepts/spec.md +883 -0
- package/versioned_docs/version-v3.x/core-concepts/state-leaf.md +42 -0
- package/versioned_docs/version-v3.x/core-concepts/workflow.md +149 -0
- package/versioned_docs/version-v3.x/guides/_category_.json +4 -0
- package/versioned_docs/version-v3.x/guides/compile-circuits.md +175 -0
- package/versioned_docs/version-v3.x/guides/integrating.md +137 -0
- package/versioned_docs/version-v3.x/guides/subgraph.md +79 -0
- package/versioned_docs/version-v3.x/guides/testing/_category_.json +4 -0
- package/versioned_docs/version-v3.x/guides/testing/testing-in-detail.md +191 -0
- package/versioned_docs/version-v3.x/guides/testing/testing-introduction.md +158 -0
- package/versioned_docs/version-v3.x/guides/troubleshooting.md +161 -0
- package/versioned_docs/version-v3.x/introduction.md +153 -0
- package/versioned_docs/version-v3.x/processes/_category_.json +4 -0
- package/versioned_docs/version-v3.x/processes/ci-pipeline.md +38 -0
- package/versioned_docs/version-v3.x/processes/versioning.md +94 -0
- package/versioned_docs/version-v3.x/quick-start.md +318 -0
- package/versioned_docs/version-v3.x/resources.md +33 -0
- package/versioned_docs/version-v3.x/security/_category_.json +4 -0
- package/versioned_docs/version-v3.x/security/audit.md +167 -0
- package/versioned_docs/version-v3.x/security/trusted-setup.md +172 -0
- package/versioned_docs/version-v3.x/supported-networks/_category_.json +4 -0
- package/versioned_docs/version-v3.x/supported-networks/deployed-contracts.md +112 -0
- package/versioned_docs/version-v3.x/supported-networks/supported-networks.md +53 -0
- package/versioned_docs/version-v3.x/technical-references/_category_.json +4 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/index.md +10 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/installation.md +43 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/index.md +51 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/installation.md +109 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/MACI.md +160 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Params.md +33 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Policies.md +39 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Poll.md +170 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/PollFactory.md +33 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Tally.md +43 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/VkRegistry.md +62 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/technical-references.md +48 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/_category_.json +4 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +53 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +106 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/setup.md +96 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/utilities.md +131 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +42 -0
- package/versioned_docs/version-v3.x/use-cases/_category_.json +4 -0
- package/versioned_docs/version-v3.x/use-cases/governance.md +18 -0
- package/versioned_docs/version-v3.x/use-cases/polling.md +10 -0
- package/versioned_docs/version-v3.x/use-cases/public-goods.md +65 -0
- package/versioned_sidebars/version-v0.x-sidebars.json +8 -0
- package/versioned_sidebars/version-v1.2-sidebars.json +8 -0
- package/versioned_sidebars/version-v2.x-sidebars.json +8 -0
- package/versioned_sidebars/version-v3.x-sidebars.json +8 -0
- package/versions.json +1 -0
|
@@ -0,0 +1,699 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MACI Command-line interface (CLI)
|
|
3
|
+
description: Introduction to the MACI CLI interface that allows for effective deployment and testing
|
|
4
|
+
sidebar_label: Command-line interface
|
|
5
|
+
sidebar_position: 3
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Command-line interface
|
|
9
|
+
|
|
10
|
+
MACI provides a command-line interface that allows for effective deployment and testing. Applications that build on top of MACI, such as [clr.fund](https://clr.fund/), implement their own web UIs.
|
|
11
|
+
|
|
12
|
+
Note that all the example commands default to a local Ethereum testnet at `http://localhost:8545`, and use the Ethereum private key `0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3`. Do not send any real funds to the address generated by this key.
|
|
13
|
+
|
|
14
|
+
For testing purposes, you can run:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# in maci/contracts
|
|
18
|
+
pnpm run hardhat
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
> Note that you will need a hardhat.config file in your current directory to be able to run the cli.
|
|
22
|
+
|
|
23
|
+
:::info
|
|
24
|
+
If you are looking to use MACI's cli to deploy the smart contracts, we recommend you instead use the smart contract tasks for a better experience. Please refer to the [deployment section](/docs/quick-start/deployment) for more information.
|
|
25
|
+
:::
|
|
26
|
+
|
|
27
|
+
## Subcommands
|
|
28
|
+
|
|
29
|
+
For a full list of MACI CLI's commands, please run the following:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
maci-cli --help
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
For detailed information about each command please run:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
maci-cli <command> --help
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
| Command | Description |
|
|
42
|
+
| -------------------- | ------------------------------------------------------------------ |
|
|
43
|
+
| `create` | Deploy the contracts |
|
|
44
|
+
| `deployVkRegistry` | Deploy a new VkRegistry contract |
|
|
45
|
+
| `setVerifyingKeys` | Set the verifying keys |
|
|
46
|
+
| `deployPoll` | Deploy a new poll |
|
|
47
|
+
| `checkVerifyingKeys` | Check that the verifying keys in the contract match the local ones |
|
|
48
|
+
| `genMaciPubKey` | Generate a new MACI public key |
|
|
49
|
+
| `genMaciKeyPair` | Generate a new MACI key pair |
|
|
50
|
+
| `show` | Show the deployed contract addresses |
|
|
51
|
+
| `publish` | Publish a new message to a MACI Poll contract |
|
|
52
|
+
| `mergeMessages` | Merge the message accumulator queue |
|
|
53
|
+
| `mergeSignups` | Merge the signups accumulator queue |
|
|
54
|
+
| `timeTravel` | Fast-forward the time (only works for local hardhat testing) |
|
|
55
|
+
| `extractVkToFile` | Extract verification keys (vKey) from zKey files |
|
|
56
|
+
| `signup` | Sign up to a MACI contract |
|
|
57
|
+
| `isRegisteredUser` | Checks if user is registered with public key |
|
|
58
|
+
| `fundWallet` | Fund a wallet with Ether |
|
|
59
|
+
| `verify` | Verify the results of a poll on-chain |
|
|
60
|
+
| `genProofs` | Generate the proofs for a poll |
|
|
61
|
+
| `proveOnChain` | Prove the results of a poll on chain |
|
|
62
|
+
|
|
63
|
+
## Public and private key format
|
|
64
|
+
|
|
65
|
+
MACI uses private keys in the BabyJub field for operations which occur within
|
|
66
|
+
zk-SNARKs, such as decrypting messages or signing commands. As MACI is deployed
|
|
67
|
+
on Ethereum, we seek to avoid confusing BabyJub private keys with Ethereum
|
|
68
|
+
private keys. To that end, users should pass serialized formats of public and
|
|
69
|
+
private keys to this CLI. We use `maci-domainobj`'s `PrivKey.serialize` and
|
|
70
|
+
`PubKey.serialize` functions to do so.
|
|
71
|
+
|
|
72
|
+
Examples of serialized public and private keys:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Public key: macipk.946c756cb8588f7169d37e23a98b92051359d64321cf7372a75757b5e9d5590d
|
|
76
|
+
Private key: macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Generate MACI keys
|
|
80
|
+
|
|
81
|
+
You can generate MACI keys using the following cli utility.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
node build/ts/index.js genMaciKeyPair
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Example output:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
[✓] Public key: macipk.946c756cb8588f7169d37e23a98b92051359d64321cf7372a75757b5e9d5590d
|
|
91
|
+
[✓] Private key: macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If you already have a MACI private key in serialized form, you can generate its corresponding public key using the following command:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
node build/ts/index.js genMaciPubKey -sk macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Example output:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
[✓] Public key: macipk.946c756cb8588f7169d37e23a98b92051359d64321cf7372a75757b5e9d5590d
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Coordinator: Deploy VkRegistry
|
|
107
|
+
|
|
108
|
+
This command deploys an instance of a VkRegistry contract. Multiple MACI
|
|
109
|
+
contracts can refer to the same VkRegistry as long as they are all owned (via
|
|
110
|
+
`Ownable.sol`) by the same account.
|
|
111
|
+
|
|
112
|
+
Example usage:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
node build/ts/index.js deployVkRegistry
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Example output:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
[✓] VkRegistry deployed at: 0x6b5A4751307F6751E265c194244552A9995B6B3D
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Coordinator: Set verifying keys
|
|
125
|
+
|
|
126
|
+
Note that the filename of the `.zkey` files must follow this format:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
ProcessMessages_<STATE_TREE_DEPTH>-<MSG_TREE_DEPTH>-<MSG_SUBTREE_DEPTH>-<VOTE_OPTION_TREE_DEPTH>_test.<CONTRIBUTION_NUM>.zkey
|
|
130
|
+
TallyVotes_<STATE_TREE_DEPTH>-<INT_STATE_TREE_DEPTH>-<VOTE_OPTION_TREE_DEPTH>>_test.<CONTRIBUTION_NUM>>.zkey
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Example usage:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
node build/ts/index.js setVerifyingKeys \
|
|
137
|
+
-s 10 -i 1 -m 2 -v 2 -b 1 \
|
|
138
|
+
-p ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \
|
|
139
|
+
-t ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Example output:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
[i] Setting verifying keys...
|
|
146
|
+
[i] Transaction hash: 0x6b5b2959ba5161497d5499a0f9d9c69f773cd5f9b82f80a79253797b066863e3
|
|
147
|
+
[✓] Verifying keys set successfully
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Coordinator: Create MACI instance
|
|
151
|
+
|
|
152
|
+
Example usage:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
node build/ts/index.js create -s 10
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Example output:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
[✓] MACI deployed at: 0xB08CEd0f34940a3E576Cf023b287f9Db2f306a1f
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Coordinator: Deploy poll
|
|
165
|
+
|
|
166
|
+
Example usage:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
node ./build/ts/index.js deployPoll \
|
|
170
|
+
-pk macipk.946c756cb8588f7169d37e23a98b92051359d64321cf7372a75757b5e9d5590d \
|
|
171
|
+
-t 300 -i 1 -m 2 -b 1 -v 2
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Example output:
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
[i] Poll ID: 0
|
|
178
|
+
[i] Poll contract: 0xB6389Da0285c7B1FC0ba352F5A1D5fb1A492a786
|
|
179
|
+
[i] Message processor contract: 0xE0bF6021e023a197DBb3fABE64efA880E13D3f4b
|
|
180
|
+
[i] Tally contract: 0x3f21BC64076e7c9ed8695d053DCCBE6D8d5E6f43
|
|
181
|
+
[i] Subsidy contract: 0xb848ef765E289762e9BE66a38006DDc4D23AeF24
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### User: sign up
|
|
185
|
+
|
|
186
|
+
Example usage:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
node ./build/ts/index.js signup \
|
|
190
|
+
-p macipk.182a49caec452e9966f5fef65363c3c795bf8cda482cae8289a4684c0f5bcb7b
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Example output:
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
[i] Transaction hash: 0x4c7c9f65187fcf6e243804b75555bda48cbae4c317bb312f1b9f95ac4b7697b1
|
|
197
|
+
[✓] State index: 1
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### User: publish message
|
|
201
|
+
|
|
202
|
+
Example usage:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
node build/ts/index.js publish \
|
|
206
|
+
-p macipk.182a49caec452e9966f5fef65363c3c795bf8cda482cae8289a4684c0f5bcb7b \
|
|
207
|
+
-sk macisk.569cf25e35654046ecd9f176d9e6e47115d767fabfe0e97a206dd62e7a3a8546 \
|
|
208
|
+
-i 1 -v 0 -w 9 -n 1 -o 0
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Example output:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
[i] Transaction hash: 0xa2ab91c821bf7fa73fedcf19a5371a0f0866ae0747d22f82f1685afca0e5db49
|
|
215
|
+
[i] Ephemeral private key: macisk.2631d585e46f059e4909ab35172451542ed7723a1ace120fcf49d68e27f935b0
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Coordinator: Time travel (Testing only)
|
|
219
|
+
|
|
220
|
+
Example usage:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
node build/ts/index.js timeTravel -s 300
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Example output:
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
[✓] Fast-forwarded 300 seconds
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Coordinator: merge state tree
|
|
233
|
+
|
|
234
|
+
Example usage:
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
node build/ts/index.js mergeSignups -o 0
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Example output:
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
[i] Merging state subroots 1 / 1
|
|
244
|
+
[i] Transaction hash: 0xd7e7312f70831ec05bb23f23f506ef37d6ce0c2056c1b72f7bb989653d1c8a42
|
|
245
|
+
[✓] Executed mergeMaciStateAqSubRoots(); gas used: 720061
|
|
246
|
+
[✓] All state subtrees have been merged.
|
|
247
|
+
[i] Merging subroots to a main state root...
|
|
248
|
+
[i] Transaction hash: 0xb5e98d328b066d91e1b7aa35775fe624be446b540a00bcb4b27a02477636b569
|
|
249
|
+
[✓] Executed mergeStateAq(); gas used: 1004720
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Coordinator: merge message tree
|
|
253
|
+
|
|
254
|
+
Example usage:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
node build/ts/index.js mergeMessages -o 0
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Example output:
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
[i] Merging message subroots 1 / 1
|
|
264
|
+
[✓] Executed mergeMessageAqSubRoots(); gas used: 602448
|
|
265
|
+
[i] Transaction hash: 0xdf9d11c6b35fcccff82dafa3aa15f760e3f7694a72b07007fbdb359d44df0bea
|
|
266
|
+
[✓] All message subtrees have been merged.
|
|
267
|
+
[i] Merging subroots to a main message root...
|
|
268
|
+
[✓] Executed mergeMessageAq(); gas used: 173346
|
|
269
|
+
[i] Transaction hash: 0x1f18ec08fd14db90a0d1d02d1ed27c0bfd3bc138701e812c4c3382572fc4d151
|
|
270
|
+
[✓] The message tree has been merged.
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Coordinator: generate Maci state offchain
|
|
274
|
+
|
|
275
|
+
Example usage to generate the state locally from the smart contracts events:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
node build/ts/index.js genLocalState \
|
|
279
|
+
--poll-id 0 \
|
|
280
|
+
--output localState.json \
|
|
281
|
+
--privkey macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c \
|
|
282
|
+
--blocks-per-batch 50
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Example output:
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
[i] Fetching logs from 0 till 228 and generating the offline maci state
|
|
289
|
+
[✓] The state has been written to localState.json
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Coordinator: generate proofs
|
|
293
|
+
|
|
294
|
+
Example usage:
|
|
295
|
+
|
|
296
|
+
**C++ witness parameters**
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
node build/ts/index.js genProofs -x 0x89962fa216d39fCcaaC11e1e462340d80ab6Cf4D \
|
|
300
|
+
-sk macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c \
|
|
301
|
+
-o 0 \
|
|
302
|
+
-t tally.json \
|
|
303
|
+
-f proofs \
|
|
304
|
+
-r ~/rapidsnark/build/prover \
|
|
305
|
+
-wp ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test \
|
|
306
|
+
-wt ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test \
|
|
307
|
+
-zp ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \
|
|
308
|
+
-zt ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**WASM Parameters**
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
node build/ts/index.js genProofs \
|
|
315
|
+
-sk macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c \
|
|
316
|
+
-o 0 \
|
|
317
|
+
-t tally.json \
|
|
318
|
+
-f proofs \
|
|
319
|
+
-zp ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \
|
|
320
|
+
-zt ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \
|
|
321
|
+
-tw ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js/TallyVotes_10-1-2_test.wasm \
|
|
322
|
+
-pw ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js/ProcessMessages_10-2-1-2_test.wasm \
|
|
323
|
+
-w true \
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
**Non Quadratic Voting**
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
node build/ts/index.js genProofs \
|
|
330
|
+
-sk macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c \
|
|
331
|
+
-o 0 \
|
|
332
|
+
-t tally.json \
|
|
333
|
+
-f proofs \
|
|
334
|
+
-zp ./zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test.0.zkey \
|
|
335
|
+
-zt ./zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test.0.zkey \
|
|
336
|
+
-tw ./zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test_js/TallyVotesNonQv_10-1-2_test.wasm \
|
|
337
|
+
-pw ./zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test_js/ProcessMessagesNonQv_10-2-1-2_test.wasm \
|
|
338
|
+
-w true \
|
|
339
|
+
-uq false
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
Example output:
|
|
343
|
+
|
|
344
|
+
```
|
|
345
|
+
[i] starting to fetch logs from block 0
|
|
346
|
+
[i] Generating proofs of message processing...
|
|
347
|
+
[i] Progress: 1 / 1
|
|
348
|
+
[i] gen processMessage proof took 17.322 seconds
|
|
349
|
+
|
|
350
|
+
[i] Generating proofs of vote tallying...
|
|
351
|
+
[i] Progress: 1 / 1
|
|
352
|
+
[✓] The tally commitment is correct
|
|
353
|
+
[i] gen tally proof took 4.951 seconds
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### Coordinator: generate proofs using a local state file
|
|
357
|
+
|
|
358
|
+
Example usage to generate the proofs locally from the local state file created with genLocalState:
|
|
359
|
+
|
|
360
|
+
**C++ witness parameters**
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
node build/ts/index.js genProofs \
|
|
364
|
+
--privkey macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c \
|
|
365
|
+
--poll-id 0 \
|
|
366
|
+
--rapidsnark ~/rapidsnark/build/prover \
|
|
367
|
+
--process-witnessgen ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_cpp/ProcessMessages_10-2-1-2_test \
|
|
368
|
+
--tally-witnessgen ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_cpp/TallyVotes_10-1-2_test \
|
|
369
|
+
--process-zkey /zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \
|
|
370
|
+
--tally-zkey ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \
|
|
371
|
+
--tally-file tally.json \
|
|
372
|
+
--output proofs/ \
|
|
373
|
+
--state-file localState.json
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
**WASM Params**
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
node build/ts/index.js genProofs \
|
|
380
|
+
--privkey macisk.08a06aef74c7f6a6f73704e30677418731bc738500f4e6c63dbfe41af8d6719c \
|
|
381
|
+
--poll-id 0 \
|
|
382
|
+
--process-zkey ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \
|
|
383
|
+
--tally-zkey ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \
|
|
384
|
+
--tally-file tally.json \
|
|
385
|
+
--output proofs/ \
|
|
386
|
+
--state-file localState.json \
|
|
387
|
+
-tw ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js/TallyVotes_10-1-2_test.wasm \
|
|
388
|
+
-pw ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js/ProcessMessages_10-2-1-2_test.wasm \
|
|
389
|
+
-w true
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Example output:
|
|
393
|
+
|
|
394
|
+
```
|
|
395
|
+
[i] Generating proofs of message processing...
|
|
396
|
+
[i] Progress: 1 / 1
|
|
397
|
+
[i] gen processMessage proof took 17.053 seconds
|
|
398
|
+
|
|
399
|
+
[i] Generating proofs of vote tallying...
|
|
400
|
+
[i] Progress: 1 / 1
|
|
401
|
+
[✓] The tally commitment is correct
|
|
402
|
+
[i] gen tally proof took 4.746 seconds
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### Coordinator: prove on chain
|
|
406
|
+
|
|
407
|
+
Example usage:
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
node build/ts/index.js proveOnChain \
|
|
411
|
+
-o 0 \
|
|
412
|
+
-f proofs/
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
Example output:
|
|
416
|
+
|
|
417
|
+
```
|
|
418
|
+
[i] Submitting proofs of message processing...
|
|
419
|
+
[i] Transaction hash: 0xa8acf67d6520ceaf5eef8acbf4cda7f5c2657122e2a72a092b9f4503282d70b9
|
|
420
|
+
[i] Progress: 1 / 1
|
|
421
|
+
[✓] All message processing proofs have been submitted.
|
|
422
|
+
[i] Submitting proofs of vote tallying...
|
|
423
|
+
[i] Progress: 1 / 1
|
|
424
|
+
[i] Transaction hash: 0x691687ab6fb504919859901f297cdb7d8c4d736756d2d4edf345d721bb82365b
|
|
425
|
+
[✓] All vote tallying proofs have been submitted.
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Anyone: verify tally
|
|
429
|
+
|
|
430
|
+
Example usage:
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
node build/ts/index.js verify \
|
|
434
|
+
-o 0 \
|
|
435
|
+
-t tally.json
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
Example output:
|
|
439
|
+
|
|
440
|
+
```
|
|
441
|
+
[i] on-chain tally commitment: 83601b7979c13506317b58e859950e9e92e1e6d326810d89332cc13909833ec
|
|
442
|
+
[✓] The on-chain tally commitment matches.
|
|
443
|
+
[i] The on-chain tally matches the off-chain tally.
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
## Demonstration
|
|
447
|
+
|
|
448
|
+
### Scenario:
|
|
449
|
+
|
|
450
|
+
1. Alice votes for Party A
|
|
451
|
+
2. Alice changes her key
|
|
452
|
+
3. Eve tries to bribe Alice to change her vote to Party B
|
|
453
|
+
4. Alice submits an invalid vote for Party B
|
|
454
|
+
5. The coordinator processes the votes, computes, and verifies the final tally
|
|
455
|
+
6. The expected result is: Party A has some votes and Party B has 0 votes.
|
|
456
|
+
|
|
457
|
+
Implication: Alice's invalid vote was not counted, and Eve had no way to tell.
|
|
458
|
+
|
|
459
|
+
### Examples of serialized public and private keys:
|
|
460
|
+
|
|
461
|
+
```
|
|
462
|
+
Coordinator:
|
|
463
|
+
Public key: macipk.281830024fb6d21a4c73a89a7139aff61fbbddad731ef2dc2db9516171fd390e
|
|
464
|
+
Private key: macisk.bf92af7614b07e2ba19dce65bb7fef2b93d83b84da2cf2e3af690104fbc52511
|
|
465
|
+
|
|
466
|
+
Alice:
|
|
467
|
+
Public key: macipk.1cac8e4e5b54d7dcce4aa06e71d8b9f324458756e7a9368383d005592719512a
|
|
468
|
+
Private key: macisk.63e796e4e5d18a5fcf4ccef1e74e83b807a165d6727bb89201782240458f7420
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
### Coordinator: Deploy VkRegistry
|
|
472
|
+
|
|
473
|
+
```bash
|
|
474
|
+
node build/ts/index.js deployVkRegistry
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
Output:
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
[✓] VkRegistry deployed at: 0x7607Cfe2fA0d62F725537e55d83C693Cc3C76EF2
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
### Coordinator: Set verifying keys
|
|
484
|
+
|
|
485
|
+
```bash
|
|
486
|
+
node build/ts/index.js setVerifyingKeys \
|
|
487
|
+
--state-tree-depth 10 \
|
|
488
|
+
--int-state-tree-depth 1 \
|
|
489
|
+
--msg-tree-depth 2 \
|
|
490
|
+
--vote-option-tree-depth 2 \
|
|
491
|
+
--msg-batch-depth 1 \
|
|
492
|
+
--process-messages-zkey ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \
|
|
493
|
+
--tally-votes-zkey ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
Output:
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
[i] Setting verifying keys...
|
|
500
|
+
[i] Transaction hash: 0xbd5d06935537fb59903c27b9bdb19a41d422f75e1dfd6eb61f028bf3a7b82c76
|
|
501
|
+
[✓] Verifying keys set successfully
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
### Coordinator: Create MACI instance
|
|
505
|
+
|
|
506
|
+
```bash
|
|
507
|
+
node build/ts/index.js create -s 10
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
Output:
|
|
511
|
+
|
|
512
|
+
```bash
|
|
513
|
+
[✓] MACI deployed at: 0xC131D3eeD9D6D410A7bfc200d81b9795f1bb5ed6
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Coordinator: Deploy poll
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
node ./build/ts/index.js deployPoll \
|
|
520
|
+
-pk macipk.281830024fb6d21a4c73a89a7139aff61fbbddad731ef2dc2db9516171fd390e \
|
|
521
|
+
-t 1000 -i 1 -m 2 -b 1 -v 2
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
Output:
|
|
525
|
+
|
|
526
|
+
```bash
|
|
527
|
+
[i] Poll ID: 0
|
|
528
|
+
[i] Poll contract: 0x2c3Adf2852788662148038511aD80962aaf631D7
|
|
529
|
+
[i] Message processor contract: 0xd3C3C6530fE4073292D6EAfdEAdEeAbf1A3DC19B
|
|
530
|
+
[i] Tally contract: 0x06c1939F6cBb68D42333F140CAE815cc36D341b0
|
|
531
|
+
[i] Subsidy contract: 0xCB74254716c96B07c812c73A5945e68aa1de4569
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
### Alice: sign up
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
node ./build/ts/index.js signup \
|
|
538
|
+
--pubkey macipk.1cac8e4e5b54d7dcce4aa06e71d8b9f324458756e7a9368383d005592719512a
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
Output:
|
|
542
|
+
|
|
543
|
+
```bash
|
|
544
|
+
[i] Transaction hash: 0x7ab4c2d23686049432d19bb64c8ee4e8776fff134d971dcf27e1f513b4fdb97f
|
|
545
|
+
[✓] State index: 1
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### Alice: votes for Party A (option index 0)
|
|
549
|
+
|
|
550
|
+
```bash
|
|
551
|
+
node build/ts/index.js publish \
|
|
552
|
+
--pubkey macipk.1cac8e4e5b54d7dcce4aa06e71d8b9f324458756e7a9368383d005592719512a \
|
|
553
|
+
--privkey macisk.63e796e4e5d18a5fcf4ccef1e74e83b807a165d6727bb89201782240458f7420 \
|
|
554
|
+
--state-index 1 \
|
|
555
|
+
--vote-option-index 0 \
|
|
556
|
+
--new-vote-weight 9 \
|
|
557
|
+
--nonce 1 \
|
|
558
|
+
--poll-id 0
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
Output:
|
|
562
|
+
|
|
563
|
+
```bash
|
|
564
|
+
[i] Transaction hash: 0x60936cfb0b25c8618d3cb8d0f5497106d5f6e3776f3212932975442d874eddbd
|
|
565
|
+
[i] Ephemeral private key: macisk.103b8c4c98700d06f47522892032fce54bd03cd197cee495ede3802730409910
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
### Alice: submits an invalid vote for Party B (option index 1) with different public key
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
node build/ts/index.js publish \
|
|
572
|
+
--pubkey macipk.1cac8e4e5b54d7dcce4aa06e71d8b9f324458756e7a9368383d005592719512a \
|
|
573
|
+
--privkey macisk.63e796e4e5d18a5fcf4ccef1e74e83b807a165d6727bb89201782240458f7420 \
|
|
574
|
+
--state-index 1 \
|
|
575
|
+
--vote-option-index 1 \
|
|
576
|
+
--new-vote-weight 9 \
|
|
577
|
+
--nonce 2 \
|
|
578
|
+
--poll-id 0
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
Output:
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
[i] Transaction hash: 0x73f74b13d276cd311ce5421a145debc71e97e48abc8be2f9a0a548b26f7920f9
|
|
585
|
+
[i] Ephemeral private key: macisk.1e490d67477b4c5f08806973fca2bea81e723c60deba6bdeacab56f7a4bd867b
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
### Coordinator: Time Travel
|
|
589
|
+
|
|
590
|
+
```bash
|
|
591
|
+
node build/ts/index.js timeTravel -s 1000
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
Output:
|
|
595
|
+
|
|
596
|
+
```
|
|
597
|
+
[✓] Fast-forwarded 1000 seconds
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
### Coordinator: merge state tree
|
|
601
|
+
|
|
602
|
+
```bash
|
|
603
|
+
node build/ts/index.js mergeSignups --poll-id 0
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
Output:
|
|
607
|
+
|
|
608
|
+
```bash
|
|
609
|
+
[i] Merging state subroots 1 / 1
|
|
610
|
+
[i] Transaction hash: 0xd01932e8dfad251f9b0d288290ac17f12bc449ea859a6921f63edf6b4b06f4c9
|
|
611
|
+
[✓] Executed mergeMaciStateAqSubRoots(); gas used: 720061
|
|
612
|
+
[✓] All state subtrees have been merged.
|
|
613
|
+
[i] Merging subroots to a main state root...
|
|
614
|
+
[i] Transaction hash: 0x25f60a9b5a24d11b87c41d8a4f681e3fd895b3bdf78ea86755b9800005662ce6
|
|
615
|
+
[✓] Executed mergeStateAq(); gas used: 1004720
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
### Coordinator: merge message tree
|
|
619
|
+
|
|
620
|
+
```bash
|
|
621
|
+
node build/ts/index.js mergeMessages --poll-id 0
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
Output:
|
|
625
|
+
|
|
626
|
+
```bash
|
|
627
|
+
[i] Merging message subroots 1 / 1
|
|
628
|
+
[✓] Executed mergeMessageAqSubRoots(); gas used: 600520
|
|
629
|
+
[i] Transaction hash: 0xac0e8a01277db1b6282f8fb3763a8a4aeeebb3e12a41dd0dee9fc2804a4c9e81
|
|
630
|
+
[✓] All message subtrees have been merged.
|
|
631
|
+
[i] Merging subroots to a main message root...
|
|
632
|
+
[✓] Executed mergeMessageAq(); gas used: 173346
|
|
633
|
+
[i] Transaction hash: 0x472f0fd515c7cd2a02c430189e4ee92a6843bd6b19807484ce454cb7dab0e931
|
|
634
|
+
[✓] The message tree has been merged.
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
### Coordinator: generate proofs
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
node build/ts/index.js genProofs \
|
|
641
|
+
--privkey macisk.bf92af7614b07e2ba19dce65bb7fef2b93d83b84da2cf2e3af690104fbc52511 \
|
|
642
|
+
--poll-id 0 \
|
|
643
|
+
--process-zkey ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test.0.zkey \
|
|
644
|
+
--tally-zkey ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test.0.zkey \
|
|
645
|
+
--tally-file tally.json \
|
|
646
|
+
--output proofs/ \
|
|
647
|
+
-tw ./zkeys/TallyVotes_10-1-2_test/TallyVotes_10-1-2_test_js/TallyVotes_10-1-2_test.wasm \
|
|
648
|
+
-pw ./zkeys/ProcessMessages_10-2-1-2_test/ProcessMessages_10-2-1-2_test_js/ProcessMessages_10-2-1-2_test.wasm \
|
|
649
|
+
-w true
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
Output:
|
|
653
|
+
|
|
654
|
+
```bash
|
|
655
|
+
[i] Generating proofs of message processing...
|
|
656
|
+
[i] Progress: 1 / 1
|
|
657
|
+
[i] gen processMessage proof took 16.644 seconds
|
|
658
|
+
|
|
659
|
+
[i] Generating proofs of vote tallying...
|
|
660
|
+
[i] Progress: 1 / 1
|
|
661
|
+
[✓] The tally commitment is correct
|
|
662
|
+
[i] gen tally proof took 4.809 seconds
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
### Coordinator: prove on chain
|
|
666
|
+
|
|
667
|
+
```bash
|
|
668
|
+
node build/ts/index.js proveOnChain \
|
|
669
|
+
--poll-id 0 \
|
|
670
|
+
--proof-dir proofs/
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
Output:
|
|
674
|
+
|
|
675
|
+
```bash
|
|
676
|
+
[i] Submitting proofs of message processing...
|
|
677
|
+
[i] Transaction hash: 0x9c3280af80de2436f9a886e4cd94218e01fe35ea3d3e671aad97b5aa5d6108ed
|
|
678
|
+
[i] Progress: 1 / 1
|
|
679
|
+
[✓] All message processing proofs have been submitted.
|
|
680
|
+
[i] Submitting proofs of vote tallying...
|
|
681
|
+
[i] Progress: 1 / 1
|
|
682
|
+
[i] Transaction hash: 0x3e82ae3ad04215d4f357455ab5a610eba082796d2abc698aad91b046d16b9350
|
|
683
|
+
[✓] All vote tallying proofs have been submitted.
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
### Anyone: verify
|
|
687
|
+
|
|
688
|
+
```bash
|
|
689
|
+
node build/ts/index.js verify \
|
|
690
|
+
--poll-id 0 \
|
|
691
|
+
--tally-file tally.json
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
Output:
|
|
695
|
+
|
|
696
|
+
```bash
|
|
697
|
+
[i] on-chain tally commitment: 1ed004ac21a5397a512cbe749e7110934a434837f4818265043fd2e2e9cbec91
|
|
698
|
+
[✓] The on-chain tally commitment matches.
|
|
699
|
+
```
|