@maci-protocol/website 0.0.0-ci.00107eb
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 +21 -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/2025-08-18-maci-aragon-plugin.md +107 -0
- package/blog/2025-09-05-maci-coordinator-service.md +167 -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 +219 -0
- package/package.json +66 -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 +109 -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 +115 -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 +155 -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 +82 -0
- package/versioned_docs/version-v3.x/core-concepts/polls.md +105 -0
- package/versioned_docs/version-v3.x/core-concepts/spec.md +817 -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 +191 -0
- package/versioned_docs/version-v3.x/guides/integrating.md +137 -0
- package/versioned_docs/version-v3.x/guides/sdk.md +121 -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 +190 -0
- package/versioned_docs/version-v3.x/guides/troubleshooting.md +206 -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 +326 -0
- package/versioned_docs/version-v3.x/resources.md +34 -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/costs.md +725 -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 +69 -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 +24 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/installation.md +15 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/usage.md +64 -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 +52 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +170 -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,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: maci-coordinator-service
|
|
3
|
+
title: MACI Coordinator Service
|
|
4
|
+
description: Announcing our coordinator service for MACI
|
|
5
|
+
authors:
|
|
6
|
+
- name: ctrlc03
|
|
7
|
+
title: MACI former team lead
|
|
8
|
+
url: https://x.com/ctrlc03
|
|
9
|
+
image_url: https://avatars.githubusercontent.com/u/93448202?v=4c
|
|
10
|
+
- name: NicoSerranoP
|
|
11
|
+
title: MACI team member
|
|
12
|
+
url: https://x.com/NicoSerranoP
|
|
13
|
+
image_url: https://avatars.githubusercontent.com/u/38594836?v=4
|
|
14
|
+
tags: [voting, security, anonymity, MACI, coordinator]
|
|
15
|
+
excerpt: "A MACI plugin for Aragon OSx to enable private voting in DAOs"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
Hey Anon,
|
|
19
|
+
|
|
20
|
+
Welcome back to our MACI blog.
|
|
21
|
+
|
|
22
|
+
Today, we are excited to officially announce something we have referenced frequently: the Coordinator Service.
|
|
23
|
+
|
|
24
|
+
If you ever used MACI, for instance to run a Retroactive Public Goods Funding (RPGF) or Quadratic Funding (QF) round, you might be aware of how tedious it was to operate. The manual process of running scripts to finalise a round and calculate the tally as well as all of the zk-SNARK proofs could require some time and technical expertise. All these steps had to be done in the terminal and you needed to be familiar with MACI's inner workings to understand the process.
|
|
25
|
+
|
|
26
|
+
**Fear no more - the coordinator service is here to make your life easier.**
|
|
27
|
+
|
|
28
|
+
## The vision: MACI for everyone
|
|
29
|
+
|
|
30
|
+
Our goal is ambitious, yet simple: **completely eliminate the need for any technical knowledge to use MACI**. No more terminal commands, no more manual proof generation, no more complex scripts. Just configure once, run inside a Docker container on your server, and enjoy the full power of MACI's privacy-preserving voting infrastructure.
|
|
31
|
+
|
|
32
|
+
## Technical implementation
|
|
33
|
+
|
|
34
|
+
The service was built with the following technologies for reliability and scalability:
|
|
35
|
+
|
|
36
|
+
- TypeScript for type-safe, maintainable code
|
|
37
|
+
- Nest.js framework for enterprise-grade architecture
|
|
38
|
+
- REST API for standard CRUD operations
|
|
39
|
+
- WebSocket endpoints for real-time updates during intensive computations
|
|
40
|
+
- MACI SDK package to have all the logic and functions ready to use
|
|
41
|
+
- Docker-ready for simple deployment anywhere
|
|
42
|
+
|
|
43
|
+
The core functionalities of the service are as follows:
|
|
44
|
+
|
|
45
|
+
- Deploy a MACI [subgraph](https://github.com/privacy-scaling-explorations/maci/tree/dev/apps/coordinator/ts/subgraph) to query on-chain data easily
|
|
46
|
+
- [Deploy](https://github.com/privacy-scaling-explorations/maci/tree/dev/apps/coordinator/ts/deployer) the MACI smart contracts, including polls
|
|
47
|
+
- [Finalise](https://github.com/privacy-scaling-explorations/maci/tree/dev/apps/coordinator/ts/proof) polls by processing votes and tallying the results
|
|
48
|
+
- [Schedule](https://github.com/privacy-scaling-explorations/maci/tree/main/apps/coordinator/ts/scheduler) polls for automatic finalization when the voting period ends
|
|
49
|
+
- [Health](https://github.com/privacy-scaling-explorations/maci/tree/main/apps/coordinator/ts/health) endpoint to check everything is setup and working
|
|
50
|
+
|
|
51
|
+
Let's dive into more details in the following sections.
|
|
52
|
+
|
|
53
|
+
### Subraph deployment
|
|
54
|
+
|
|
55
|
+
The endpoint to deploy a subgraph requires some configuration in the `.env` file, as well as an HTTP request to the endpoint responsible for this `https://coordinator.maci.vote/v1/subgraph/deploy`. Make sure you have an account in [The Graph](https://thegraph.com/studio/) to setup your `.env` file before starting the coordinator service.
|
|
56
|
+
|
|
57
|
+
### Contracts deployment
|
|
58
|
+
|
|
59
|
+
There are two endpoints in this module: deploy maci (`https://coordinator.maci.vote/v1/deploy/maci`) and deploy poll (`https://coordinator.maci.vote/v1/deploy/poll`). This will take care of all contracts deployment and configuration. It is worth pointing out that you should read the [coordinator service API documentation](https://coordinator.maci.vote/api) and the [MACI guides](https://maci.pse.dev/docs/core-concepts/workflow) to understand the roles of each contract (MACI, poll, policy, initialVoiceCredit).
|
|
60
|
+
|
|
61
|
+
You can deploy one MACI contract (and its internal smart contracts) that will have one gatekeeper policy (e.g. FreeForAll) for all voters to sign up. After that you can deploy multiple polls with different settings (start date, end date, gatekeeper policy, etc). Each voter will have to join each poll to be eligible to participate in. The poll's gatekeeper will check the voter eligibility to join the poll.
|
|
62
|
+
|
|
63
|
+
### Finalisation
|
|
64
|
+
|
|
65
|
+
This step includes three separate actions:
|
|
66
|
+
|
|
67
|
+
1. Merge - calculate the state merkle tree root and store a commitment to its root (`https://coordinator.maci.vote/v1/proof/merge`)
|
|
68
|
+
2. Process - fetch all smart contracts events to reconstruct the state locally and process all votes. This includes decrypting votes, checking validity, and finally tallying them. zk-SNARK proofs are generated for each batch of votes processed (`https://coordinator.maci.vote/v1/proof/generate`)
|
|
69
|
+
3. Submit - submitting all of the zk-SNARK proofs on chain to prove that the poll was processed correctly. Finally, submit the tally results on chain so that they can be seen by everyone (`https://coordinator.maci.vote/v1/proof/submit`)
|
|
70
|
+
|
|
71
|
+
We chose to separate each action into its own endpoint to avoid long-running computations that could lead to network errors or timeouts.
|
|
72
|
+
|
|
73
|
+
### Schedule
|
|
74
|
+
|
|
75
|
+
After finishing up the finalisation module, we realized that it would be a lot easier for users to create polls and schedule the finalization process. This removes the need for users to manually call the finalization endpoints described above.
|
|
76
|
+
|
|
77
|
+
1. To schedule a deployed poll you can use `https://coordinator.maci.vote/v1/scheduler/register`.
|
|
78
|
+
2. To check if a poll is scheduled you can use `https://coordinator.maci.vote/v1/scheduler/status`
|
|
79
|
+
3. To delete a scheduled poll you can use `https://coordinator.maci.vote/v1/scheduler/delete`
|
|
80
|
+
|
|
81
|
+
## How to use
|
|
82
|
+
|
|
83
|
+
### Run it from source
|
|
84
|
+
|
|
85
|
+
1. Clone the MACI repository: [https://github.com/privacy-scaling-explorations/maci](https://github.com/privacy-scaling-explorations/maci)
|
|
86
|
+
2. Install dependencies and build the project
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
pnpm install
|
|
90
|
+
pnpm run build
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
3. Download the zkeys for the coordinator
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pnpm run download-zkeys:ceremony:coordinator
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
4. Generate a coordinator MACI keypair. Remember to store those values for later.
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
pnpm run generate-maci-keypair
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
5. Move to the coordinator service directory
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
cd apps/coordinator
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
6. Configure your `.env` file. Make sure to configure it with your own secure values. The coordinator MACI private key from the previous step should be set here
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
cp .env.example .env
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
7. Start the service
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pnpm run start
|
|
121
|
+
# or
|
|
122
|
+
pnpm run start:prod
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Run it with Docker
|
|
126
|
+
|
|
127
|
+
1. Clone the MACI repository: [https://github.com/privacy-scaling-explorations/maci](https://github.com/privacy-scaling-explorations/maci)
|
|
128
|
+
2. Go inside the project directory
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
cd maci
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
3. Build the docker image and run the container
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Build docker
|
|
138
|
+
docker compose -f apps/coordinator/docker-compose.yml build
|
|
139
|
+
|
|
140
|
+
# Run container detached
|
|
141
|
+
docker compose -f apps/coordinator/docker-compose.yml up -d
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Usage notes
|
|
145
|
+
|
|
146
|
+
1. You can check out the documentation while the service is running in [http://localhost:3001/api](http://localhost:3001/api)
|
|
147
|
+
|
|
148
|
+
2. We have a [e2e.deploy.test.ts](https://github.com/privacy-scaling-explorations/maci/blob/main/apps/coordinator/tests/e2e.deploy.test.ts) file that performs a complete process: deployment, voting and finalization. You can use it to guide yourself.
|
|
149
|
+
|
|
150
|
+
## Future work
|
|
151
|
+
|
|
152
|
+
We are researching about different cryptographic methods to decentralize the coordinator. The idea is to eliminate reliance on a single centralized service for finalizing polls. A group of people would be able to spin up their own coordinator services and finalize the poll in a multi-party computation. For more info check out our MACI v4 research.
|
|
153
|
+
|
|
154
|
+
## Conclusion
|
|
155
|
+
|
|
156
|
+
The MACI Coordinator Service represents a significant leap forward in making MACI accessible to everyone. Whether you're running a small community poll or a large-scale funding round, the coordinator service handles the complexity so you can focus on what matters - empowering your community with private, secure voting.
|
|
157
|
+
|
|
158
|
+
Ready to get started? Head over to our documentation and deploy your first MACI round today!
|
|
159
|
+
|
|
160
|
+
Please reach out if you would like to integrate the service into your frontend.
|
|
161
|
+
|
|
162
|
+
## References
|
|
163
|
+
|
|
164
|
+
- [MACI repo](https://github.com/privacy-scaling-explorations/maci)
|
|
165
|
+
- [Sample frontend](https://github.com/privacy-scaling-explorations/maci-aragon-osx-gov-app) using the coordinator service
|
|
166
|
+
- [Code examples](https://github.com/privacy-scaling-explorations/maci-aragon-osx-gov-app/blob/main/plugins/maciVoting/contexts/CoordinatorContext.tsx)
|
|
167
|
+
- [Documentation](https://maci.pse.dev/docs/category/coordinator-service)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/blog/authors.yml
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import rehypeKatex from "rehype-katex";
|
|
2
|
+
import remarkMath from "remark-math";
|
|
3
|
+
|
|
4
|
+
import type * as Preset from "@docusaurus/preset-classic";
|
|
5
|
+
import type { Config } from "@docusaurus/types";
|
|
6
|
+
|
|
7
|
+
import { loadContent } from "./src/plugins/blog-plugin/index";
|
|
8
|
+
|
|
9
|
+
const GITHUB_URL = "https://github.com/privacy-scaling-explorations/maci";
|
|
10
|
+
|
|
11
|
+
async function getConfig(): Promise<Config> {
|
|
12
|
+
const blogPosts = await loadContent();
|
|
13
|
+
|
|
14
|
+
const config: Config = {
|
|
15
|
+
title: "MACI",
|
|
16
|
+
tagline: "Minimal Anti-Collusion Infrastructure",
|
|
17
|
+
favicon: "img/favicon.ico",
|
|
18
|
+
|
|
19
|
+
// Set the production url of your site here
|
|
20
|
+
url: "https://maci.pse.dev",
|
|
21
|
+
// Set the /<baseUrl>/ pathname under which your site is served
|
|
22
|
+
// For GitHub pages deployment, it is often '/<projectName>/'
|
|
23
|
+
baseUrl: "/",
|
|
24
|
+
|
|
25
|
+
// GitHub pages deployment config.
|
|
26
|
+
// If you aren't using GitHub pages, you don't need these.
|
|
27
|
+
organizationName: "privacy-scaling-explorations", // Usually your GitHub org/user name.
|
|
28
|
+
projectName: "maci", // Usually your repo name.
|
|
29
|
+
|
|
30
|
+
onBrokenLinks: "warn",
|
|
31
|
+
onBrokenMarkdownLinks: "warn",
|
|
32
|
+
|
|
33
|
+
// Even if you don't use internationalization, you can use this field to set
|
|
34
|
+
// useful metadata like html lang. For example, if your site is Chinese, you
|
|
35
|
+
// may want to replace "en" with "zh-Hans".
|
|
36
|
+
i18n: {
|
|
37
|
+
defaultLocale: "en",
|
|
38
|
+
locales: ["en"],
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
presets: [
|
|
42
|
+
[
|
|
43
|
+
"classic",
|
|
44
|
+
{
|
|
45
|
+
docs: {
|
|
46
|
+
routeBasePath: "docs/",
|
|
47
|
+
sidebarPath: "./sidebars.ts",
|
|
48
|
+
editUrl: ({ versionDocsDirPath, docPath }) =>
|
|
49
|
+
`${GITHUB_URL}/edit/dev/apps/website/${versionDocsDirPath}/${docPath}`,
|
|
50
|
+
remarkPlugins: [remarkMath],
|
|
51
|
+
rehypePlugins: [rehypeKatex],
|
|
52
|
+
includeCurrentVersion: false,
|
|
53
|
+
versions: {
|
|
54
|
+
"v1.2": {
|
|
55
|
+
banner: "none",
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
blog: {
|
|
60
|
+
showReadingTime: true,
|
|
61
|
+
|
|
62
|
+
editUrl: ({ blogDirPath, blogPath }) => `${GITHUB_URL}/edit/dev/apps/website/${blogDirPath}/${blogPath}`,
|
|
63
|
+
remarkPlugins: [remarkMath],
|
|
64
|
+
rehypePlugins: [rehypeKatex],
|
|
65
|
+
onUntruncatedBlogPosts: "ignore",
|
|
66
|
+
},
|
|
67
|
+
theme: {
|
|
68
|
+
customCss: "./src/css/custom.css",
|
|
69
|
+
},
|
|
70
|
+
} satisfies Preset.Options,
|
|
71
|
+
],
|
|
72
|
+
],
|
|
73
|
+
|
|
74
|
+
plugins: [
|
|
75
|
+
[
|
|
76
|
+
"@easyops-cn/docusaurus-search-local",
|
|
77
|
+
{
|
|
78
|
+
hashed: true,
|
|
79
|
+
language: ["en"],
|
|
80
|
+
// If the `indexDocs` is set to `true`, Docusaurus will index docs.
|
|
81
|
+
// If the `indexBlog` is set to `true`, Docusaurus will index blogs.
|
|
82
|
+
indexDocs: true,
|
|
83
|
+
indexBlog: true,
|
|
84
|
+
// If the `indexPages` is set to `true`, Docusaurus will index pages.
|
|
85
|
+
indexPages: true,
|
|
86
|
+
// // Docs route base path, default to '/docs'.
|
|
87
|
+
// docsRouteBasePath: '/docs',
|
|
88
|
+
// Blog route base path, default to '/blog'.
|
|
89
|
+
blogRouteBasePath: "/blog",
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
"docusaurus-plugin-image-zoom",
|
|
93
|
+
"docusaurus-plugin-matomo",
|
|
94
|
+
],
|
|
95
|
+
stylesheets: [
|
|
96
|
+
{
|
|
97
|
+
href: "https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css",
|
|
98
|
+
type: "text/css",
|
|
99
|
+
integrity: "sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM",
|
|
100
|
+
crossorigin: "anonymous",
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
customFields: {
|
|
104
|
+
blogPosts: Array.isArray(blogPosts) ? blogPosts : [],
|
|
105
|
+
},
|
|
106
|
+
themeConfig: {
|
|
107
|
+
prism: {
|
|
108
|
+
additionalLanguages: ["bash"],
|
|
109
|
+
},
|
|
110
|
+
image: "img/maci-card.png",
|
|
111
|
+
navbar: {
|
|
112
|
+
title: "MACI",
|
|
113
|
+
items: [
|
|
114
|
+
{
|
|
115
|
+
label: "Documentation",
|
|
116
|
+
href: "/docs/introduction",
|
|
117
|
+
position: "left",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
to: "/blogs",
|
|
121
|
+
label: "Blog",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
to: "/roadmap",
|
|
125
|
+
label: "Roadmap",
|
|
126
|
+
position: "left",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
to: "/projects",
|
|
130
|
+
label: "Projects",
|
|
131
|
+
position: "left",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: "docsVersionDropdown",
|
|
135
|
+
position: "right",
|
|
136
|
+
dropdownActiveClassDisabled: true,
|
|
137
|
+
// TODO: add /versions page to explain major versions & link to blog posts
|
|
138
|
+
// dropdownItemsAfter: [
|
|
139
|
+
// {
|
|
140
|
+
// type: 'html',
|
|
141
|
+
// value: '<hr class="dropdown-separator">',
|
|
142
|
+
// },
|
|
143
|
+
// {
|
|
144
|
+
// to: '/versions',
|
|
145
|
+
// label: 'All versions',
|
|
146
|
+
// },
|
|
147
|
+
// ],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: "search",
|
|
151
|
+
position: "right",
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
href: GITHUB_URL,
|
|
155
|
+
label: "GitHub",
|
|
156
|
+
position: "right",
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
footer: {
|
|
161
|
+
links: [
|
|
162
|
+
{
|
|
163
|
+
title: "Docs",
|
|
164
|
+
items: [
|
|
165
|
+
{
|
|
166
|
+
label: "Documentation",
|
|
167
|
+
to: "/docs/introduction",
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
label: "GitHub",
|
|
171
|
+
href: GITHUB_URL,
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
title: "Community",
|
|
177
|
+
items: [
|
|
178
|
+
{
|
|
179
|
+
label: "Discord",
|
|
180
|
+
href: "https://discord.com/invite/sF5CT5rzrR",
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
label: "Twitter",
|
|
184
|
+
href: "https://twitter.com/zkMACI",
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
title: "More",
|
|
190
|
+
items: [
|
|
191
|
+
{
|
|
192
|
+
label: "Blog",
|
|
193
|
+
to: "/blog",
|
|
194
|
+
},
|
|
195
|
+
],
|
|
196
|
+
},
|
|
197
|
+
],
|
|
198
|
+
copyright: `Copyright © ${new Date().getFullYear().toString()} Privacy and Scaling Explorations`,
|
|
199
|
+
},
|
|
200
|
+
zoom: {},
|
|
201
|
+
matomo: {
|
|
202
|
+
matomoUrl: "https://psedev.matomo.cloud/",
|
|
203
|
+
siteId: "18",
|
|
204
|
+
phpLoader: "matomo.php",
|
|
205
|
+
jsLoader: "matomo.js",
|
|
206
|
+
},
|
|
207
|
+
mermaid: {
|
|
208
|
+
theme: { light: "neutral", dark: "forest" },
|
|
209
|
+
},
|
|
210
|
+
} satisfies Preset.ThemeConfig,
|
|
211
|
+
markdown: {
|
|
212
|
+
mermaid: true,
|
|
213
|
+
},
|
|
214
|
+
themes: ["@docusaurus/theme-mermaid"],
|
|
215
|
+
};
|
|
216
|
+
return config;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export default getConfig();
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@maci-protocol/website",
|
|
3
|
+
"version": "0.0.0-ci.00107eb",
|
|
4
|
+
"private": false,
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"setup-typedoc": "ts-node ./src/scripts/setupTypedoc.ts",
|
|
10
|
+
"setup-soliditydocs": "ts-node ./src/scripts/setupSolidityDocs.ts",
|
|
11
|
+
"docusaurus": "docusaurus",
|
|
12
|
+
"start": "docusaurus start",
|
|
13
|
+
"prebuild": "pnpm run setup-typedoc && pnpm run setup-soliditydocs",
|
|
14
|
+
"build": "docusaurus build",
|
|
15
|
+
"swizzle": "docusaurus swizzle",
|
|
16
|
+
"deploy": "docusaurus deploy",
|
|
17
|
+
"clear": "docusaurus clear",
|
|
18
|
+
"serve": "docusaurus serve",
|
|
19
|
+
"write-translations": "docusaurus write-translations",
|
|
20
|
+
"write-heading-ids": "docusaurus write-heading-ids",
|
|
21
|
+
"types": "tsc -p tsconfig.json --noEmit"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@docusaurus/core": "^3.8.1",
|
|
25
|
+
"@docusaurus/preset-classic": "^3.8.1",
|
|
26
|
+
"@docusaurus/theme-classic": "^3.8.1",
|
|
27
|
+
"@docusaurus/theme-common": "^3.8.1",
|
|
28
|
+
"@docusaurus/theme-mermaid": "^3.8.1",
|
|
29
|
+
"@easyops-cn/docusaurus-search-local": "^0.52.1",
|
|
30
|
+
"@mdx-js/react": "^3.1.0",
|
|
31
|
+
"clsx": "^2.1.1",
|
|
32
|
+
"docusaurus-plugin-image-zoom": "^3.0.1",
|
|
33
|
+
"docusaurus-plugin-matomo": "^0.0.8",
|
|
34
|
+
"gray-matter": "^4.0.3",
|
|
35
|
+
"prism-react-renderer": "^2.4.1",
|
|
36
|
+
"react": "^19.1.1",
|
|
37
|
+
"react-dom": "^19.1.1",
|
|
38
|
+
"rehype-katex": "^7.0.1",
|
|
39
|
+
"remark-math": "^6.0.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@docusaurus/module-type-aliases": "^3.8.1",
|
|
43
|
+
"@docusaurus/tsconfig": "^3.8.1",
|
|
44
|
+
"@docusaurus/types": "^3.8.1",
|
|
45
|
+
"@types/node": "^24.2.0",
|
|
46
|
+
"@types/react": "^19.1.9",
|
|
47
|
+
"ts-node": "^10.9.2",
|
|
48
|
+
"typescript": "^5.9.2"
|
|
49
|
+
},
|
|
50
|
+
"browserslist": {
|
|
51
|
+
"production": [
|
|
52
|
+
">0.5%",
|
|
53
|
+
"not dead",
|
|
54
|
+
"not op_mini all"
|
|
55
|
+
],
|
|
56
|
+
"development": [
|
|
57
|
+
"last 3 chrome version",
|
|
58
|
+
"last 3 firefox version",
|
|
59
|
+
"last 5 safari version"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"engines": {
|
|
63
|
+
"node": ">=18.0"
|
|
64
|
+
},
|
|
65
|
+
"gitHead": "a35d35aea039b6cd1abbe8d842ac2aa754661135"
|
|
66
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import styles from "./styles.module.css";
|
|
2
|
+
|
|
3
|
+
interface ActionCardProps {
|
|
4
|
+
title: string;
|
|
5
|
+
description: string;
|
|
6
|
+
buttonText: string;
|
|
7
|
+
buttonUrl: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const ActionCard: React.FC<ActionCardProps> = ({ buttonText, buttonUrl, description, title }: ActionCardProps) => (
|
|
11
|
+
<div className={styles.actionCard}>
|
|
12
|
+
<div className={styles.actionCardBody}>
|
|
13
|
+
<div className={styles.actionCardContent}>
|
|
14
|
+
<div className={styles.actionCardText}>
|
|
15
|
+
<h2 className={styles.actionCardTitle}>{title}</h2>
|
|
16
|
+
|
|
17
|
+
<p className={styles.actionCardDescription}>{description}</p>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div className={styles.actionCardButtonContainer}>
|
|
21
|
+
<a className={styles.actionCardButton} href={buttonUrl} rel="noopener noreferrer" target="_blank">
|
|
22
|
+
{buttonText}
|
|
23
|
+
</a>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export default ActionCard;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
.actionCard {
|
|
2
|
+
background-color: #1a202c; /* darkBlue */
|
|
3
|
+
color: white;
|
|
4
|
+
border-radius: 24px;
|
|
5
|
+
width: 100%;
|
|
6
|
+
padding: 64px 32px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.actionCardBody {
|
|
10
|
+
padding: 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.actionCardContent {
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
justify-content: space-between;
|
|
17
|
+
align-items: center;
|
|
18
|
+
gap: 2rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.actionCardText {
|
|
22
|
+
width: 100%;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.actionCardTitle {
|
|
26
|
+
font-size: 30px;
|
|
27
|
+
line-height: 44px;
|
|
28
|
+
font-weight: normal;
|
|
29
|
+
color: white;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.actionCardDescription {
|
|
33
|
+
margin-top: 1rem;
|
|
34
|
+
font-size: 16px;
|
|
35
|
+
line-height: 25px;
|
|
36
|
+
font-weight: normal;
|
|
37
|
+
color: #a0aec0; /* text.400 */
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.actionCardButtonContainer {
|
|
41
|
+
width: 100%;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.actionCardButton {
|
|
45
|
+
display: inline-block;
|
|
46
|
+
padding: 0.5rem 1rem;
|
|
47
|
+
background-color: #3182ce; /* primary */
|
|
48
|
+
color: white;
|
|
49
|
+
text-decoration: none;
|
|
50
|
+
border-radius: 0.25rem;
|
|
51
|
+
font-size: 1rem;
|
|
52
|
+
line-height: 1.5;
|
|
53
|
+
text-align: center;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@media (min-width: 768px) {
|
|
57
|
+
.actionCardContent {
|
|
58
|
+
flex-direction: row;
|
|
59
|
+
gap: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.actionCardText {
|
|
63
|
+
width: 522px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.actionCardTitle {
|
|
67
|
+
font-size: 40px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.actionCardDescription {
|
|
71
|
+
font-size: 20px;
|
|
72
|
+
line-height: 32px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.actionCardButtonContainer {
|
|
76
|
+
width: auto;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.actionCardButton {
|
|
80
|
+
padding: 0.75rem 1.5rem;
|
|
81
|
+
font-size: 1.125rem;
|
|
82
|
+
border-radius: 30px;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@media (min-width: 992px) {
|
|
87
|
+
.actionCard {
|
|
88
|
+
padding: 41px 80px;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@media (min-width: 1280px) {
|
|
93
|
+
.actionCard {
|
|
94
|
+
width: 1110px;
|
|
95
|
+
}
|
|
96
|
+
}
|