@maci-protocol/website 0.0.0-ci.01622be
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/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 +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 +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 +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 +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 +326 -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 +52 -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,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
interface IconDiscordProps extends React.SVGProps<SVGSVGElement> {
|
|
4
|
+
size?: number;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const IconDiscord: React.FC<IconDiscordProps> = ({ size = 24, ...props }) => (
|
|
8
|
+
<svg fill="none" height={size} viewBox="0 0 24 19" width={size} xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
9
|
+
<path
|
|
10
|
+
d="M20.242 1.68563C18.7262 0.990122 17.1007 0.4777 15.4012 0.184215C15.3703 0.17855 15.3393 0.192705 15.3234 0.221016C15.1144 0.592826 14.8828 1.07788 14.7206 1.45913C12.8927 1.18547 11.0741 1.18547 9.28367 1.45913C9.12148 1.06941 8.88152 0.592826 8.67153 0.221016C8.65559 0.19365 8.62467 0.179495 8.59372 0.184215C6.89513 0.476762 5.26967 0.989184 3.75294 1.68563C3.73981 1.69129 3.72855 1.70074 3.72108 1.713C0.637926 6.31917 -0.206681 10.8121 0.207655 15.2494C0.20953 15.2711 0.221716 15.2919 0.23859 15.3051C2.27277 16.7989 4.24322 17.7058 6.17708 18.3069C6.20803 18.3164 6.24082 18.3051 6.26052 18.2796C6.71797 17.6549 7.12576 16.9962 7.47539 16.3035C7.49602 16.2629 7.47632 16.2148 7.43415 16.1987C6.78734 15.9534 6.17145 15.6542 5.57901 15.3145C5.53215 15.2871 5.5284 15.2201 5.57151 15.188C5.69618 15.0946 5.82088 14.9974 5.93993 14.8992C5.96147 14.8813 5.99148 14.8775 6.0168 14.8889C9.90891 16.6659 14.1226 16.6659 17.9688 14.8889C17.9941 14.8766 18.0241 14.8804 18.0466 14.8983C18.1656 14.9965 18.2903 15.0946 18.4159 15.188C18.459 15.2201 18.4562 15.2871 18.4094 15.3145C17.8169 15.6608 17.201 15.9534 16.5533 16.1978C16.5111 16.2138 16.4924 16.2629 16.513 16.3035C16.8701 16.9952 17.2779 17.6539 17.7269 18.2786C17.7457 18.3051 17.7794 18.3164 17.8104 18.3069C19.7536 17.7058 21.724 16.7989 23.7582 15.3051C23.776 15.2919 23.7873 15.272 23.7892 15.2503C24.285 10.1204 22.9586 5.66426 20.2729 1.71394C20.2663 1.70074 20.2551 1.69129 20.242 1.68563ZM8.05661 12.5476C6.88482 12.5476 5.9193 11.4718 5.9193 10.1506C5.9193 8.8294 6.86609 7.75361 8.05661 7.75361C9.25647 7.75361 10.2126 8.83884 10.1939 10.1506C10.1939 11.4718 9.24709 12.5476 8.05661 12.5476ZM15.959 12.5476C14.7872 12.5476 13.8217 11.4718 13.8217 10.1506C13.8217 8.8294 14.7684 7.75361 15.959 7.75361C17.1589 7.75361 18.115 8.83884 18.0963 10.1506C18.0963 11.4718 17.1589 12.5476 15.959 12.5476Z"
|
|
11
|
+
fill="currentColor"
|
|
12
|
+
/>
|
|
13
|
+
</svg>
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export default IconDiscord;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
interface IconGithubProps extends React.SVGProps<SVGSVGElement> {
|
|
4
|
+
size?: number;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const IconGithub: React.FC<IconGithubProps> = ({ size = 22, ...props }) => (
|
|
8
|
+
<svg fill="none" height={size} viewBox="0 0 22 23" width={size} xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
9
|
+
<path
|
|
10
|
+
d="M10.9997 2.69641C5.93509 2.69641 1.83301 6.79849 1.83301 11.8631C1.83197 13.7874 2.43692 15.6632 3.56204 17.2244C4.68716 18.7855 6.27531 19.9527 8.10118 20.5604C8.55951 20.6402 8.73093 20.3652 8.73093 20.1241C8.73093 19.9068 8.71901 19.1854 8.71901 18.4172C6.41634 18.8417 5.82051 17.8562 5.63718 17.3402C5.53359 17.0762 5.08718 16.2631 4.69759 16.0449C4.37676 15.8735 3.91843 15.4491 4.68568 15.4381C5.40801 15.4262 5.92318 16.1027 6.09551 16.3777C6.92051 17.7637 8.23868 17.3741 8.76484 17.1339C8.84551 16.5381 9.08568 16.1375 9.34968 15.9083C7.31009 15.6792 5.17884 14.8881 5.17884 11.3818C5.17884 10.3845 5.53359 9.56041 6.11843 8.91783C6.02676 8.68866 5.70593 7.74908 6.21009 6.48866C6.21009 6.48866 6.97734 6.24849 8.73093 7.42916C9.47715 7.22205 10.2482 7.11781 11.0226 7.11933C11.8018 7.11933 12.5809 7.22199 13.3143 7.42824C15.0669 6.23658 15.8351 6.48958 15.8351 6.48958C16.3393 7.74999 16.0184 8.68958 15.9268 8.91874C16.5107 9.56041 16.8663 10.3735 16.8663 11.3818C16.8663 14.9 14.7241 15.6792 12.6845 15.9083C13.0163 16.1943 13.3033 16.7443 13.3033 17.6042C13.3033 18.8297 13.2913 19.8152 13.2913 20.125C13.2913 20.3652 13.4637 20.6512 13.922 20.5595C15.7416 19.9451 17.3228 18.7757 18.4429 17.2156C19.5631 15.6556 20.1658 13.7836 20.1663 11.8631C20.1663 6.79849 16.0643 2.69641 10.9997 2.69641Z"
|
|
11
|
+
fill="currentColor"
|
|
12
|
+
/>
|
|
13
|
+
</svg>
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export default IconGithub;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
interface IconWebsiteProps extends React.SVGProps<SVGSVGElement> {
|
|
4
|
+
size?: number;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const IconWebsite: React.FC<IconWebsiteProps> = ({ size = 18, ...props }) => (
|
|
8
|
+
<svg fill="none" height={size} viewBox="0 0 18 18" width={size} xmlns="http://www.w3.org/2000/svg" {...props}>
|
|
9
|
+
<path
|
|
10
|
+
d="M9.00033 17.1963C4.39783 17.1963 0.666992 13.4655 0.666992 8.863C0.666992 4.2605 4.39783 0.529663 9.00033 0.529663C13.6028 0.529663 17.3337 4.2605 17.3337 8.863C17.3337 13.4655 13.6028 17.1963 9.00033 17.1963ZM7.09199 15.2522C6.26984 13.5083 5.79355 11.6215 5.68949 9.69633H2.38533C2.54748 10.9787 3.07859 12.1865 3.91413 13.1728C4.74967 14.159 5.85367 14.8814 7.09199 15.2522V15.2522ZM7.35866 9.69633C7.48449 11.7288 8.06533 13.638 9.00033 15.323C9.96059 13.5935 10.5215 11.6709 10.642 9.69633H7.35866V9.69633ZM15.6153 9.69633H12.3112C12.2071 11.6215 11.7308 13.5083 10.9087 15.2522C12.147 14.8814 13.251 14.159 14.0865 13.1728C14.9221 12.1865 15.4532 10.9787 15.6153 9.69633V9.69633ZM2.38533 8.02966H5.68949C5.79355 6.10448 6.26984 4.21773 7.09199 2.47383C5.85367 2.84456 4.74967 3.56696 3.91413 4.55324C3.07859 5.53953 2.54748 6.74725 2.38533 8.02966V8.02966ZM7.35949 8.02966H10.6412C10.521 6.05516 9.9603 4.13261 9.00033 2.403C8.04006 4.13254 7.47912 6.0551 7.35866 8.02966H7.35949ZM10.9087 2.47383C11.7308 4.21773 12.2071 6.10448 12.3112 8.02966H15.6153C15.4532 6.74725 14.9221 5.53953 14.0865 4.55324C13.251 3.56696 12.147 2.84456 10.9087 2.47383V2.47383Z"
|
|
11
|
+
fill="currentColor"
|
|
12
|
+
/>
|
|
13
|
+
</svg>
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
export default IconWebsite;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
|
2
|
+
import Layout from "@theme/Layout";
|
|
3
|
+
import LayoutProvider from "@theme/Layout/Provider";
|
|
4
|
+
import React from "react";
|
|
5
|
+
|
|
6
|
+
import styles from "../css/card.module.css";
|
|
7
|
+
|
|
8
|
+
interface BlogPost {
|
|
9
|
+
title: string;
|
|
10
|
+
date: string;
|
|
11
|
+
slug: string;
|
|
12
|
+
description: string;
|
|
13
|
+
authorName: string;
|
|
14
|
+
tags: string[];
|
|
15
|
+
excerpt: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Renders a list of blog posts.
|
|
20
|
+
*
|
|
21
|
+
* @returns {JSX.Element} The rendered blog page.
|
|
22
|
+
*/
|
|
23
|
+
const BlogPage: React.FC = () => {
|
|
24
|
+
const { siteConfig } = useDocusaurusContext();
|
|
25
|
+
const blogPosts: BlogPost[] = (siteConfig.customFields?.blogPosts ?? []) as BlogPost[];
|
|
26
|
+
|
|
27
|
+
if (blogPosts.length === 0) {
|
|
28
|
+
return <div>No blog posts available.</div>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<LayoutProvider>
|
|
33
|
+
<Layout title="Blog">
|
|
34
|
+
<div className={styles.blogContainer}>
|
|
35
|
+
<div className={styles.blogList}>
|
|
36
|
+
{blogPosts.map((post: BlogPost) => (
|
|
37
|
+
<a key={post.slug} className={styles.blogCard} href={`/blog/${post.slug}`}>
|
|
38
|
+
<h2 className={styles.blogTitle}>{post.title}</h2>
|
|
39
|
+
|
|
40
|
+
<p className={styles.blogDescription}>{post.description}</p>
|
|
41
|
+
|
|
42
|
+
<p className={styles.blogDate}>{post.date}</p>
|
|
43
|
+
|
|
44
|
+
<p className={styles.blogAuthors}>By {post.authorName}</p>
|
|
45
|
+
|
|
46
|
+
<p className={styles.blogExcerpt}>{post.excerpt}</p>
|
|
47
|
+
|
|
48
|
+
<span className={styles.blogReadMoreButton}>Read More</span>
|
|
49
|
+
</a>
|
|
50
|
+
))}
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</Layout>
|
|
54
|
+
</LayoutProvider>
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export default BlogPage;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS files with the .module.css suffix will be treated as CSS modules
|
|
3
|
+
* and scoped locally.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.heroBanner {
|
|
7
|
+
position: relative;
|
|
8
|
+
height: 427px;
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
background-image:
|
|
11
|
+
linear-gradient(to bottom, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.3) 100%), url("../../static/img/hero.svg");
|
|
12
|
+
background-position: 0% 75%;
|
|
13
|
+
background-repeat: no-repeat;
|
|
14
|
+
background-size: cover;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
align-items: start;
|
|
18
|
+
padding: 8rem;
|
|
19
|
+
color: var(--ifm-color-hero);
|
|
20
|
+
font-family: ShareTechMono;
|
|
21
|
+
gap: 1rem;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.heroTitle {
|
|
25
|
+
border: 2px solid white;
|
|
26
|
+
border-radius: 4px;
|
|
27
|
+
padding: 0rem 0.75rem;
|
|
28
|
+
font-size: 2.5rem;
|
|
29
|
+
line-height: 3.5rem;
|
|
30
|
+
letter-spacing: -0.1rem;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.heroTagline {
|
|
34
|
+
font-size: 4.5rem;
|
|
35
|
+
line-height: 5rem;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.buttons {
|
|
39
|
+
display: flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.introduction {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
padding: 4rem;
|
|
48
|
+
width: 100%;
|
|
49
|
+
font-size: 1.1rem;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.blue {
|
|
53
|
+
color: var(--ifm-link-color);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.borderBlue {
|
|
57
|
+
text-decoration: underline;
|
|
58
|
+
text-decoration-color: var(--ifm-link-color);
|
|
59
|
+
text-underline-offset: 0.5rem;
|
|
60
|
+
margin-bottom: 1rem;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.projectsPage {
|
|
64
|
+
width: 100%;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.heroSection {
|
|
68
|
+
padding-top: 170px;
|
|
69
|
+
padding-bottom: 56px;
|
|
70
|
+
width: 100%;
|
|
71
|
+
position: relative;
|
|
72
|
+
display: flex;
|
|
73
|
+
justify-content: flex-end;
|
|
74
|
+
align-items: flex-start;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.backgroundImage {
|
|
78
|
+
position: absolute;
|
|
79
|
+
top: 0;
|
|
80
|
+
left: 50%;
|
|
81
|
+
transform: translateX(-50%);
|
|
82
|
+
width: 100vw;
|
|
83
|
+
height: 100%;
|
|
84
|
+
overflow: hidden;
|
|
85
|
+
z-index: -1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.backgroundImage img {
|
|
89
|
+
width: 100%;
|
|
90
|
+
height: 100%;
|
|
91
|
+
object-fit: cover;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.heroContent {
|
|
95
|
+
padding-bottom: 64px;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.heroContent h1 {
|
|
99
|
+
font-size: 72px;
|
|
100
|
+
margin-bottom: 16px;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.heroContent p {
|
|
104
|
+
font-size: 20px;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.actionSection {
|
|
108
|
+
margin-top: 128px;
|
|
109
|
+
margin-bottom: 128px;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Responsive styles */
|
|
113
|
+
@media (max-width: 768px) {
|
|
114
|
+
.heroContent h1 {
|
|
115
|
+
font-size: 46px;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.heroContent p {
|
|
119
|
+
font-size: 18px;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@media (max-width: 480px) {
|
|
124
|
+
.heroContent h1 {
|
|
125
|
+
font-size: 40px;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.heroContent p {
|
|
129
|
+
font-size: 16px;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@media screen and (max-width: 996px) {
|
|
134
|
+
.heroBanner {
|
|
135
|
+
padding: 1.5rem;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.introduction {
|
|
139
|
+
padding: 1.5rem;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.heroTitle {
|
|
143
|
+
font-size: 1.5rem;
|
|
144
|
+
line-height: 2.25rem;
|
|
145
|
+
padding: 0rem 0.5rem;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.heroTagline {
|
|
149
|
+
font-size: 2.5rem;
|
|
150
|
+
line-height: 3rem;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
|
2
|
+
import Layout from "@theme/Layout";
|
|
3
|
+
import LayoutProvider from "@theme/Layout/Provider";
|
|
4
|
+
import clsx from "clsx";
|
|
5
|
+
|
|
6
|
+
import type { ReactElement } from "react";
|
|
7
|
+
|
|
8
|
+
import HomepageFeatures from "../components/HomepageFeatures";
|
|
9
|
+
|
|
10
|
+
import styles from "./index.module.css";
|
|
11
|
+
|
|
12
|
+
interface HomepageHeaderProps {
|
|
13
|
+
tagline: string;
|
|
14
|
+
title: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const HomepageHeader = ({ tagline, title }: HomepageHeaderProps) => (
|
|
18
|
+
<header className={clsx("hero hero--dark", styles.heroBanner)}>
|
|
19
|
+
<div className={styles.heroTitle}>{title}</div>
|
|
20
|
+
|
|
21
|
+
<div className={styles.heroTagline}>
|
|
22
|
+
{tagline}
|
|
23
|
+
|
|
24
|
+
<span className={styles.blue}>.</span>
|
|
25
|
+
</div>
|
|
26
|
+
</header>
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
const Home = (): ReactElement => {
|
|
30
|
+
const { siteConfig } = useDocusaurusContext();
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<LayoutProvider>
|
|
34
|
+
<Layout
|
|
35
|
+
description="Minimal Anti-Collusion Infrastructure (MACI) is an on-chain voting platform which protects privacy and minimizes the risk of collusion and bribery"
|
|
36
|
+
title={`Minimal Anti-Collusion Infrastructure (${siteConfig.title})`}
|
|
37
|
+
>
|
|
38
|
+
<HomepageHeader tagline={siteConfig.tagline} title={siteConfig.title} />
|
|
39
|
+
|
|
40
|
+
<main>
|
|
41
|
+
<section className={styles.introduction}>
|
|
42
|
+
<div className="container">
|
|
43
|
+
<h2 className={styles.borderBlue}>What is MACI?</h2>
|
|
44
|
+
|
|
45
|
+
<p>Minimal Anti-Collusion Infrastructure (MACI) is a private, on-chain, voting system.</p>
|
|
46
|
+
|
|
47
|
+
<p>
|
|
48
|
+
MACI is our attempt to build the most secure e-voting solution available. It enables on-chain voting
|
|
49
|
+
processes with significantly reduced risk of cheating, like bribery or collusion, through the use of
|
|
50
|
+
Ethereum smart contracts, encryption, and zero-knowledge proofs. Together these technologies provide a
|
|
51
|
+
set of guarantees including censorship resistance, correct execution, privacy, and a receipt-free voting
|
|
52
|
+
scheme, which ensures results are transparent but makes it impossible for outsiders to verify how any
|
|
53
|
+
specific user voted. We believe MACI is most beneficial for governance and funding events, when the
|
|
54
|
+
stakes are high and anti-collusion mechanisms are critical to help ensure fair and transparent outcomes.
|
|
55
|
+
</p>
|
|
56
|
+
</div>
|
|
57
|
+
</section>
|
|
58
|
+
|
|
59
|
+
<HomepageFeatures />
|
|
60
|
+
</main>
|
|
61
|
+
</Layout>
|
|
62
|
+
</LayoutProvider>
|
|
63
|
+
);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export default Home;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import Layout from "@theme/Layout";
|
|
2
|
+
import LayoutProvider from "@theme/Layout/Provider";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
|
|
5
|
+
import ProjectsList from "../components/ProjectList";
|
|
6
|
+
|
|
7
|
+
import styles from "./index.module.css";
|
|
8
|
+
|
|
9
|
+
interface ProjectspageHeaderProps {
|
|
10
|
+
tagline: string;
|
|
11
|
+
title: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const ProjectspageHeader = ({ tagline, title }: ProjectspageHeaderProps) => (
|
|
15
|
+
<header className={clsx("hero hero--dark", styles.heroBanner)}>
|
|
16
|
+
<div className={styles.heroTitle}>{title}</div>
|
|
17
|
+
|
|
18
|
+
<div className={styles.heroTagline}>
|
|
19
|
+
{tagline}
|
|
20
|
+
|
|
21
|
+
<span className={styles.blue}>.</span>
|
|
22
|
+
</div>
|
|
23
|
+
</header>
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const Projects: React.FC = () => (
|
|
27
|
+
<LayoutProvider>
|
|
28
|
+
<Layout description="A list of projects built with the MACI protocol" title="Projects built with MACI">
|
|
29
|
+
<div>
|
|
30
|
+
<ProjectspageHeader tagline="Explore the projects built by the MACI community" title="Projects" />
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<main>
|
|
34
|
+
<section className={styles.introduction}>
|
|
35
|
+
<div className="container">
|
|
36
|
+
<ProjectsList />
|
|
37
|
+
</div>
|
|
38
|
+
</section>
|
|
39
|
+
</main>
|
|
40
|
+
</Layout>
|
|
41
|
+
</LayoutProvider>
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
export default Projects;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MACI Product Roadmap
|
|
3
|
+
description: An outline of the 2024 MACI team & product roadmap
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# MACI Product Roadmap
|
|
7
|
+
|
|
8
|
+
_This public roadmap is part of our core team's efforts to make our work more accessible and to foster more collaboration from our open source community. We plan to re-assess & iterate on our roadmap over time, and will update this document when we do._
|
|
9
|
+
|
|
10
|
+
:::info
|
|
11
|
+
This document aims to outline the 2025 MACI roadmap. Our roadmap is under constant discussion and evolution (e.g. see our [high level 2025 roadmap](/blog/2025-roadmap) updates) but we try our best to maintain this page to provide a high-level overview. Please join the conversation in our [discord server](https://discord.com/invite/sF5CT5rzrR) if you have feedback!
|
|
12
|
+
|
|
13
|
+
**Last updated: 2025-04-23**
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
## Team description
|
|
17
|
+
|
|
18
|
+
The MACI core team is a small collaborative engineering team building various projects within [Privacy & Scaling Explorations (PSE)](https://pse.dev/). Our sustained focus is on MACI: an on-chain voting protocol that provides greatly increased collusion resistance & privacy. We also allocate a portion of our time to support the practical adoption of this technology by supporting community leaders to run democratic governance and public funding initiatives, like Quadratic Voting (QV), Quadratic Funding (QF), and Retroactive Public Goods Funding (RPGF) grant rounds.
|
|
19
|
+
|
|
20
|
+
## MACI mission & vision
|
|
21
|
+
|
|
22
|
+
MACI (Minimal Anti-Collusion Infrastructure) is a public good & a potential core piece of infrastructure for many Ethereum-based applications to support privacy-protecting on-chain governance. Using MACI, individual votes are private but final results are public, so no voter can reveal how they voted yet voting results are verifiable with cryptographic proofs to prevent censorship, bribery, collusion, and other forms of manipulation common in public polling processes.
|
|
23
|
+
|
|
24
|
+
**Long term, the MACI team’s vision is to build the most secure e-voting solution in the world.**
|
|
25
|
+
|
|
26
|
+
Short term, our vision is to empower developers to build with MACI to create collusion resistant & privacy-protecting voting applications, like quadratic funding platforms & DAO governance tools. Our goal is to provide an out-of-the-box solution for developers to quickly integrate into their applications & deploy. MACI aims to handle the voting infrastructure so you can focus on building the logic specific to your application.
|
|
27
|
+
|
|
28
|
+
### High-level MACI ecosystem goals
|
|
29
|
+
|
|
30
|
+
1. ~~2021: MACI integrated by an ecosystem project~~ (✅, [clr.fund](https://github.com/clrfund/monorepo/))
|
|
31
|
+
2. ~~2023: MACI integrated by a PSE project~~ (✅, [QF](https://github.com/privacy-scaling-explorations/qf))
|
|
32
|
+
3. ~~2024: MACI integrated by an additional external project~~ (✅, [PriVote](https://github.com/PriVote-Project), [Gitcoin](https://github.com/gitcoinco/MACI_QF))
|
|
33
|
+
4. 2025: MACI used by multiple DAOs for governance applications
|
|
34
|
+
5. 2028: MACI used in smaller municipal elections (counties, provinces, etc)
|
|
35
|
+
6. 2030: MACI used in national elections
|
|
36
|
+
|
|
37
|
+
### High-level MACI development goals
|
|
38
|
+
|
|
39
|
+
1. ~~2021: release MACI v1.0~~ (✅)
|
|
40
|
+
2. ~~2023: build technical feasibility for 10K concurrent voters on the platform~~ (✅)
|
|
41
|
+
3. 2024:
|
|
42
|
+
|
|
43
|
+
- ~~Q1: release MACI v1.2, with revamped documentation & educational resource~~ (✅)
|
|
44
|
+
- ~~Q3: release MACI v2.0, with cleaner code and improved UX~~ (✅)
|
|
45
|
+
|
|
46
|
+
4. 2025: release MACI v3.0, with new features for a more scalable and flexible platform
|
|
47
|
+
5. 2026: build technical feasibility for 100K concurrent voters on the platform
|
|
48
|
+
6. 2028: build technical feasibility for 1M concurrent voters on the platform
|
|
49
|
+
|
|
50
|
+
# 2025 workstreams
|
|
51
|
+
|
|
52
|
+
In 2025, we are focusing on several initiatives to support the practical adoption of MACI.
|
|
53
|
+
|
|
54
|
+
## 1) MACI v3.0
|
|
55
|
+
|
|
56
|
+
This new version comes with features that have been requested in the past, such as polls being more customisable, in terms of voice credits assigned to voters, and gatekeeping mechanisms.
|
|
57
|
+
|
|
58
|
+
At a high level, the new features/improvements are:
|
|
59
|
+
|
|
60
|
+
- Custom voice credits per poll
|
|
61
|
+
- Custom gatekeeping per poll
|
|
62
|
+
- Replacement of vote merkle trees for more efficient hash-chains
|
|
63
|
+
- Offchain voting via MACI's relayer service
|
|
64
|
+
|
|
65
|
+
## 2) Coordinator Service
|
|
66
|
+
|
|
67
|
+
The coordinator service is a service to automate MACI coordinator functionality. This includes:
|
|
68
|
+
|
|
69
|
+
- Contract deployment
|
|
70
|
+
- Subgraph deploying
|
|
71
|
+
- Proof generation
|
|
72
|
+
- Proof and results submission
|
|
73
|
+
|
|
74
|
+
This service exposes a REST API, as well as some Websocket endpoints (for proof generation only). Our goal is to release an efficient and easy to use service that can be used by any application that builds atop of MACI.
|
|
75
|
+
|
|
76
|
+
## 3) Integration with DAO's tooling provider
|
|
77
|
+
|
|
78
|
+
As an effort to support DAO governance, and help solve their issues with bribery and collusion, MACI is focusing on integrating with DAO's tooling providers.
|
|
79
|
+
|
|
80
|
+
To start with, MACI is integrating with [Aragon](https://aragon.org/) by building a voting [plugin](https://github.com/privacy-scaling-explorations/maci-voting-plugin).
|
|
81
|
+
|
|
82
|
+
In the future, we plan to continue working with other partners such as [Agora](https://www.agora.xyz/), and help them offer DAOs secure and private voting.
|
|
83
|
+
|
|
84
|
+
## 4) Coordinator decentralisation
|
|
85
|
+
|
|
86
|
+
It's no secret that one of MACI long standing issues has having a centralised coordinator. They are able to see all of the votes in cleartext, which allows them to collude with bribers themselves, as well as voters. As we look to tackle use cases such as DAO governance where large quantities of money are involved in proposals, we need to ensure that collusion between the coordinator and voters/bribers is reduced. This can be accomplished in several ways:
|
|
87
|
+
|
|
88
|
+
- Use Multi Party Computation (MPC)
|
|
89
|
+
- Use Homomorphic Encryption (HE)
|
|
90
|
+
- Use a Trusted Execution Environment (TEE)
|
|
91
|
+
|
|
92
|
+
We plan to research the best approach and start the implementation within the year.
|
|
93
|
+
|
|
94
|
+
## Future R&D
|
|
95
|
+
|
|
96
|
+
While not prioritized as an upcoming workstream, we think it’s worth calling out important areas of research & development that we’re excited to work on in the future:
|
|
97
|
+
|
|
98
|
+
### MACI improvements
|
|
99
|
+
|
|
100
|
+
- Scaling explorations, like SNARK Folding Schemes (e.g. [Nova integration](https://github.com/privacy-scaling-explorations/maci/issues/904))
|
|
101
|
+
- Different matching mechanisms (e.g. [Group Wise Matching in Quadratic Funding](https://github.com/privacy-scaling-explorations/maci/issues/905))
|
|
102
|
+
- Re-implementation of previously removed features such as [Topup](https://github.com/privacy-scaling-explorations/maci/issues/1384) and [Subsidy](https://github.com/privacy-scaling-explorations/maci/issues/1348)
|
|
103
|
+
- [Benchmarks](https://github.com/privacy-scaling-explorations/maci/issues/1197) for the whole stack
|
|
104
|
+
|
|
105
|
+
## Feedback
|
|
106
|
+
|
|
107
|
+
Questions? Concerns? Ideas? We’d love to hear from you!
|
|
108
|
+
|
|
109
|
+
Feel free to [create an issue on our GitHub](https://github.com/privacy-scaling-explorations/maci/issues) or reach out to our team in the [PSE Discord](https://discord.com/invite/sF5CT5rzrR) (`#maci` channel).
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Layout from "@theme/Layout";
|
|
2
|
+
|
|
3
|
+
import type { ReactElement } from "react";
|
|
4
|
+
|
|
5
|
+
const TypedocPage = (): ReactElement => (
|
|
6
|
+
<Layout description="Description for your Typedoc page" title="Typedoc">
|
|
7
|
+
<iframe src="/typedoc_output/index.html" style={{ width: "100%", height: "100vh" }} title="typedoc" />
|
|
8
|
+
</Layout>
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
export default TypedocPage;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import matter from "gray-matter";
|
|
2
|
+
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import path from "path";
|
|
5
|
+
|
|
6
|
+
import type { Plugin as DocusaurusPlugin } from "@docusaurus/types";
|
|
7
|
+
|
|
8
|
+
interface BlogPost {
|
|
9
|
+
title: string;
|
|
10
|
+
date: string;
|
|
11
|
+
slug: string;
|
|
12
|
+
description: string;
|
|
13
|
+
authorName: string;
|
|
14
|
+
tags: string[];
|
|
15
|
+
excerpt: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async function getAllFiles(dirPath: string, arrayOfFiles: string[] = []): Promise<string[]> {
|
|
19
|
+
const files = await fs.promises.readdir(dirPath);
|
|
20
|
+
|
|
21
|
+
const filePromises = files.map(async (file) => {
|
|
22
|
+
const filePath = path.join(dirPath, file);
|
|
23
|
+
const stat = await fs.promises.stat(filePath);
|
|
24
|
+
|
|
25
|
+
if (stat.isDirectory()) {
|
|
26
|
+
await getAllFiles(filePath, arrayOfFiles);
|
|
27
|
+
} else {
|
|
28
|
+
arrayOfFiles.push(filePath);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
await Promise.all(filePromises);
|
|
33
|
+
return arrayOfFiles;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { getAllFiles };
|
|
37
|
+
|
|
38
|
+
async function loadContent(): Promise<BlogPost[]> {
|
|
39
|
+
const blogDir = path.join(__dirname, "..", "..", "..", "blog");
|
|
40
|
+
const files = await getAllFiles(blogDir);
|
|
41
|
+
|
|
42
|
+
const posts = (
|
|
43
|
+
await Promise.all(
|
|
44
|
+
files.map(async (filePath): Promise<BlogPost | null> => {
|
|
45
|
+
const fileContent = await fs.promises.readFile(filePath, "utf-8");
|
|
46
|
+
const { data } = matter(fileContent);
|
|
47
|
+
|
|
48
|
+
if (!data.title) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const filename = path.basename(filePath);
|
|
53
|
+
const match = filename.match(/^(\d{4}-\d{2}-\d{2})/);
|
|
54
|
+
if (!match) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const date = match[1];
|
|
59
|
+
const authorName = ((data.authors as Record<string, unknown> | undefined)?.name as string) || "";
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
title: data.title as string,
|
|
63
|
+
description: data.description ? (data.description as string) : "",
|
|
64
|
+
date,
|
|
65
|
+
slug: data.slug ? (data.slug as string) : filename.replace(/\.md$/, ""), // Use slug from front matter if available
|
|
66
|
+
authorName,
|
|
67
|
+
tags: data.tags ? (data.tags as string[]) : [],
|
|
68
|
+
excerpt: data.excerpt ? (data.excerpt as string) : "",
|
|
69
|
+
};
|
|
70
|
+
}),
|
|
71
|
+
)
|
|
72
|
+
).filter((post): post is BlogPost => post !== null);
|
|
73
|
+
|
|
74
|
+
// Sort posts by date in descending order (newest first)
|
|
75
|
+
posts.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
|
76
|
+
|
|
77
|
+
return posts;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { loadContent };
|
|
81
|
+
|
|
82
|
+
export default function blogPlugin(): DocusaurusPlugin<undefined> {
|
|
83
|
+
return {
|
|
84
|
+
name: "blog-plugin",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare module "*.png";
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
|
|
4
|
+
import { copyDirectory, generateToC, insertIndexPage } from "./utils";
|
|
5
|
+
|
|
6
|
+
// where to move the solidity doc files over
|
|
7
|
+
const solidityDocDir = path.resolve(
|
|
8
|
+
__dirname,
|
|
9
|
+
"../../versioned_docs/version-v3.x/technical-references/smart-contracts/solidity-docs",
|
|
10
|
+
);
|
|
11
|
+
// the origin folder (from the contracts package)
|
|
12
|
+
const sourceDir = path.resolve(__dirname, "../../../../packages/contracts/docs");
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Currently, Solidity docgen generates the same heading for all files.
|
|
16
|
+
* We need to remove it and add the contract name as a heading.
|
|
17
|
+
* @param dir - the directory where the documentation files are located
|
|
18
|
+
*/
|
|
19
|
+
function updateHeadings(dir: string) {
|
|
20
|
+
const files = fs.readdirSync(dir);
|
|
21
|
+
|
|
22
|
+
files.forEach((file: string) => {
|
|
23
|
+
const absolutePath = path.join(dir, file);
|
|
24
|
+
const isDirectory = fs.statSync(absolutePath).isDirectory();
|
|
25
|
+
|
|
26
|
+
if (isDirectory) {
|
|
27
|
+
insertIndexPage(
|
|
28
|
+
absolutePath,
|
|
29
|
+
{ title: file, label: file },
|
|
30
|
+
`
|
|
31
|
+
Documentation for smart contracts inside the ${file} folder.\n
|
|
32
|
+
${generateToC(absolutePath)}\n
|
|
33
|
+
`,
|
|
34
|
+
);
|
|
35
|
+
updateHeadings(absolutePath);
|
|
36
|
+
} else {
|
|
37
|
+
// Read the content of the file
|
|
38
|
+
let fileContent = fs.readFileSync(absolutePath, "utf8");
|
|
39
|
+
|
|
40
|
+
// Remove the "# Solidity API" line
|
|
41
|
+
fileContent = fileContent.replace("# Solidity API\n", "");
|
|
42
|
+
|
|
43
|
+
// Replace the first "##" with "#"
|
|
44
|
+
fileContent = fileContent.replace("##", "#");
|
|
45
|
+
|
|
46
|
+
// Escape {...} by wrapping them in backticks
|
|
47
|
+
fileContent = fileContent.replace(/{(.*?)}/g, "`{$1}`");
|
|
48
|
+
|
|
49
|
+
// Write the modified content back to the file
|
|
50
|
+
fs.writeFileSync(absolutePath, fileContent, "utf8");
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// copy over the directory
|
|
56
|
+
copyDirectory(sourceDir, solidityDocDir);
|
|
57
|
+
// update the headings
|
|
58
|
+
updateHeadings(solidityDocDir);
|
|
59
|
+
// insert index page
|
|
60
|
+
insertIndexPage(
|
|
61
|
+
solidityDocDir,
|
|
62
|
+
{
|
|
63
|
+
title: "Solidity Docs",
|
|
64
|
+
label: "Solidity Docs",
|
|
65
|
+
},
|
|
66
|
+
"This is a collection of the Solidity documentation for the MACI protocol. It is autogenerated with solidity-docs and should serve as a good starting point for understanding the codebase.",
|
|
67
|
+
);
|