@maci-protocol/website 0.0.0-ci.1e276ed
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +157 -0
- package/CHANGELOG.md +566 -0
- package/LICENSE +22 -0
- package/README.md +58 -0
- package/babel.config.js +3 -0
- package/blog/2021-10-12-maci-v1.md +100 -0
- package/blog/2022-09-22-maci-v1-technical-introduction.md +180 -0
- package/blog/2023-01-18-maci-v1.1.1.md +121 -0
- package/blog/2024-01-18-roadmap.md +106 -0
- package/blog/2024-02-28-maci-v1.2.0.md +121 -0
- package/blog/2024-04-10-roadmap-q2.md +96 -0
- package/blog/2024-05-08-ethdam.md +169 -0
- package/blog/2024-05-22-the-origins-of-maci.md +38 -0
- package/blog/2024-05-28-upcoming-grants.md +85 -0
- package/blog/2024-06-17-understanding-maci.md +63 -0
- package/blog/2024-06-21-deciphering-maci.md +48 -0
- package/blog/2024-06-28-revolusioning-public-goods-funding.md +32 -0
- package/blog/2024-07-23-q2-review.md +72 -0
- package/blog/2024-07-30-roadmap-q3.md +61 -0
- package/blog/2024-08-10-maci-v2.md +102 -0
- package/blog/2024-08-29-anonymous-poll-joining.md +47 -0
- package/blog/2024-10-29-q3-review.md +63 -0
- package/blog/2024-11-20-maci-platform.md +93 -0
- package/blog/2024-12-01-maci-getting-started.md +294 -0
- package/blog/2025-03-21-roadmap-2025.md +112 -0
- package/blog/assets/MACI_Bob_SignUp_1.png +0 -0
- package/blog/assets/MACI_Bob_SignUp_2.png +0 -0
- package/blog/assets/MACI_Complex_Message.png +0 -0
- package/blog/assets/MACI_Contracts.png +0 -0
- package/blog/assets/MACI_Sign_Up.png +0 -0
- package/blog/assets/MACI_Simple_Message.png +0 -0
- package/blog/assets/MACI_Verifier_1.png +0 -0
- package/blog/authors.yml +5 -0
- package/docusaurus.config.ts +213 -0
- package/package.json +65 -0
- package/src/components/ActionCard/index.tsx +30 -0
- package/src/components/ActionCard/styles.module.css +96 -0
- package/src/components/HomepageFeatures/index.tsx +91 -0
- package/src/components/HomepageFeatures/styles.module.css +17 -0
- package/src/components/ProjectCard/index.tsx +74 -0
- package/src/components/ProjectCard/styles.module.css +77 -0
- package/src/components/ProjectList/index.tsx +218 -0
- package/src/components/ProjectList/styles.module.css +180 -0
- package/src/content/projects.json +294 -0
- package/src/css/card.module.css +130 -0
- package/src/css/custom.css +91 -0
- package/src/icons/IconDiscord.tsx +16 -0
- package/src/icons/IconGithub.tsx +16 -0
- package/src/icons/IconWebsite.tsx +16 -0
- package/src/pages/blogs.tsx +58 -0
- package/src/pages/index.module.css +152 -0
- package/src/pages/index.tsx +66 -0
- package/src/pages/projects.tsx +44 -0
- package/src/pages/roadmap.md +150 -0
- package/src/pages/typedoc.tsx +11 -0
- package/src/plugins/blog-plugin/index.ts +86 -0
- package/src/react-app-env.d.ts +1 -0
- package/src/scripts/setupSolidityDocs.ts +67 -0
- package/src/scripts/setupTypedoc.ts +112 -0
- package/src/scripts/utils.ts +115 -0
- package/src/utils/getProjectsByFilter.ts +40 -0
- package/static/.nojekyll +0 -0
- package/static/audit_reports/20210922_Hashcloak_audit_report.pdf +0 -0
- package/static/audit_reports/202220930_Hashcloak_audit_report.pdf +0 -0
- package/static/audit_reports/20240223_PSE_Audit_audit_report.pdf +0 -0
- package/static/audit_reports/20240731_PSE_Audit_audit_report.pdf +0 -0
- package/static/fonts/DM_Sans.woff2 +0 -0
- package/static/fonts/Share_Tech_Mono.woff2 +0 -0
- package/static/img/box.png +0 -0
- package/static/img/box_dark.png +0 -0
- package/static/img/chain.png +0 -0
- package/static/img/chain_dark.png +0 -0
- package/static/img/chart.png +0 -0
- package/static/img/chart_dark.png +0 -0
- package/static/img/circuits/MACI-Circuits.excalidraw +39652 -0
- package/static/img/circuits/calculateTotal.svg +21 -0
- package/static/img/circuits/ecdh.svg +21 -0
- package/static/img/circuits/messageToCommand.svg +21 -0
- package/static/img/circuits/messageValidator.svg +21 -0
- package/static/img/circuits/poseidonHasher13.svg +21 -0
- package/static/img/circuits/privToPubkey.svg +21 -0
- package/static/img/circuits/processMessages.svg +21 -0
- package/static/img/circuits/processMessagesInputHasher.svg +21 -0
- package/static/img/circuits/processMessages_2_0.svg +21 -0
- package/static/img/circuits/processOne.svg +21 -0
- package/static/img/circuits/processTopup.svg +21 -0
- package/static/img/circuits/processingAfterPollEnds.svg +21 -0
- package/static/img/circuits/quinBatchLeavesExists.svg +21 -0
- package/static/img/circuits/quinCheckRoot.svg +21 -0
- package/static/img/circuits/quinGeneratePathIndices.svg +21 -0
- package/static/img/circuits/quinSelector.svg +21 -0
- package/static/img/circuits/resultsCommitmentVerifier.svg +21 -0
- package/static/img/circuits/splicer.svg +21 -0
- package/static/img/circuits/tallyInputHasher.svg +21 -0
- package/static/img/circuits/tallyVotes.svg +21 -0
- package/static/img/circuits/unpackElement.svg +21 -0
- package/static/img/circuits/verifySignature.svg +21 -0
- package/static/img/completingAPoll.svg +4 -0
- package/static/img/contracts.svg +16 -0
- package/static/img/coordinatorComponents.svg +21 -0
- package/static/img/favicon.ico +0 -0
- package/static/img/generateProofs.svg +4 -0
- package/static/img/hero.svg +9 -0
- package/static/img/maci-card.png +0 -0
- package/static/img/maci-rpgf-design.jpg +0 -0
- package/static/img/messageProcessingLocal.svg +21 -0
- package/static/img/offlineProcessing.svg +21 -0
- package/static/img/pse-logo-round.png +0 -0
- package/static/img/relayer-diagram.png +0 -0
- package/static/img/tallyCommitments.svg +4 -0
- package/static/img/voteTallyingLocal.svg +21 -0
- package/tsconfig.json +34 -0
- package/versioned_docs/version-v0.x/circuits.md +22 -0
- package/versioned_docs/version-v0.x/contract.md +186 -0
- package/versioned_docs/version-v0.x/faq.md +67 -0
- package/versioned_docs/version-v0.x/introduction.md +119 -0
- package/versioned_docs/version-v0.x/quadratic-vote-tallying-circuit.md +138 -0
- package/versioned_docs/version-v0.x/state-root-transition-circuit.md +230 -0
- package/versioned_docs/version-v1.2/audit.md +160 -0
- package/versioned_docs/version-v1.2/ci-pipeline.md +38 -0
- package/versioned_docs/version-v1.2/circuits.md +508 -0
- package/versioned_docs/version-v1.2/cli.md +689 -0
- package/versioned_docs/version-v1.2/contracts.md +445 -0
- package/versioned_docs/version-v1.2/contributing/code-of-conduct.md +91 -0
- package/versioned_docs/version-v1.2/contributing/contributing.md +129 -0
- package/versioned_docs/version-v1.2/coordinator-processing.md +46 -0
- package/versioned_docs/version-v1.2/deployment.md +122 -0
- package/versioned_docs/version-v1.2/installation.md +175 -0
- package/versioned_docs/version-v1.2/integrating.md +200 -0
- package/versioned_docs/version-v1.2/introduction.md +94 -0
- package/versioned_docs/version-v1.2/key-change.md +182 -0
- package/versioned_docs/version-v1.2/overview.md +47 -0
- package/versioned_docs/version-v1.2/poll-types.md +68 -0
- package/versioned_docs/version-v1.2/primitives.md +216 -0
- package/versioned_docs/version-v1.2/project-ideas.md +14 -0
- package/versioned_docs/version-v1.2/purpose.md +62 -0
- package/versioned_docs/version-v1.2/solidity-docs/MACI.md +345 -0
- package/versioned_docs/version-v1.2/solidity-docs/MessageProcessor.md +266 -0
- package/versioned_docs/version-v1.2/solidity-docs/MessageProcessorFactory.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/Poll.md +381 -0
- package/versioned_docs/version-v1.2/solidity-docs/PollFactory.md +50 -0
- package/versioned_docs/version-v1.2/solidity-docs/SignUpToken.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/Subsidy.md +218 -0
- package/versioned_docs/version-v1.2/solidity-docs/SubsidyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/Tally.md +311 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyNonQv.md +296 -0
- package/versioned_docs/version-v1.2/solidity-docs/TallyNonQvFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/TopupCredit.md +61 -0
- package/versioned_docs/version-v1.2/solidity-docs/VkRegistry.md +457 -0
- package/versioned_docs/version-v1.2/solidity-docs/benchmarks/HasherBenchmarks.md +44 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Hasher.md +125 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/IVerifier.md +11 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/MockVerifier.md +17 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Pairing.md +85 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT3.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT4.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT5.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT6.md +9 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkCommon.md +16 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkConstants.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/crypto/Verifier.md +61 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/EASGatekeeper.md +121 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/FreeForAllSignUpGatekeeper.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpGatekeeper.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpTokenGatekeeper.md +93 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperBase.md +79 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperMultiple.md +48 -0
- package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperSingle.md +42 -0
- package/versioned_docs/version-v1.2/solidity-docs/index.md +4 -0
- package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/ConstantInitialVoiceCreditProxy.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/InitialVoiceCreditProxy.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IEAS.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IHats.md +103 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMPFactory.md +26 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMessageProcessor.md +31 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPoll.md +217 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPollFactory.md +29 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallyFactory.md +28 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallySubsidyFactory.md +27 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVerifier.md +25 -0
- package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVkRegistry.md +70 -0
- package/versioned_docs/version-v1.2/solidity-docs/mocks/MockHatsProtocol.md +133 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueue.md +464 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary.md +60 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary0.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinaryMaci.md +34 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary.md +75 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary0.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryBlankSl.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryMaci.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/trees/EmptyBallotRoots.md +13 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/CommonUtilities.md +25 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/DomainObjs.md +40 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/Params.md +36 -0
- package/versioned_docs/version-v1.2/solidity-docs/utilities/Utilities.md +79 -0
- package/versioned_docs/version-v1.2/spec.md +944 -0
- package/versioned_docs/version-v1.2/testing-in-detail.md +209 -0
- package/versioned_docs/version-v1.2/testing.md +472 -0
- package/versioned_docs/version-v1.2/topup.md +43 -0
- package/versioned_docs/version-v1.2/troubleshooting.md +51 -0
- package/versioned_docs/version-v1.2/trusted-setup.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/cli/index.md +15 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/AirdropArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployPollArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployedContracts.md +130 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenLocalStateArgs.md +168 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenProofsArgs.md +388 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IGenKeypairArgs.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IRegisteredUserArgs.md +63 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeMessagesArgs.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeSignupsArgs.md +76 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PollContracts.md +53 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/ProveOnChainArgs.md +128 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PublishArgs.md +154 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SignupArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SubsidyData.md +73 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TallyData.md +166 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TopupArgs.md +89 -0
- package/versioned_docs/version-v1.2/typedoc/cli/interfaces/VerifyArgs.md +128 -0
- package/versioned_docs/version-v1.2/typedoc/cli/modules.md +556 -0
- package/versioned_docs/version-v1.2/typedoc/core/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/core/classes/MaciState.md +295 -0
- package/versioned_docs/version-v1.2/typedoc/core/classes/Poll.md +1098 -0
- package/versioned_docs/version-v1.2/typedoc/core/index.md +110 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/BatchSizes.md +50 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/IJsonMaciState.md +77 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/IProcessMessagesCircuitInputs.md +242 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/ISubsidyCircuitInputs.md +198 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/ITallyCircuitInputs.md +231 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/MaxValues.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/core/interfaces/TreeDepths.md +63 -0
- package/versioned_docs/version-v1.2/typedoc/core/modules.md +289 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/AccQueue.md +770 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/G1Point.md +115 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/G2Point.md +140 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/classes/IncrementalQuinTree.md +470 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/index.md +44 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Keypair.md +33 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/PoseidonFuncs.md +115 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Queue.md +33 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Signature.md +37 -0
- package/versioned_docs/version-v1.2/typedoc/crypto/modules.md +913 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/.nojekyll +1 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Ballot.md +274 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Keypair.md +181 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Message.md +244 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PCommand.md +409 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PrivKey.md +206 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PubKey.md +289 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/StateLeaf.md +340 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/TCommand.md +200 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/VerifyingKey.md +240 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/index.md +81 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/ICommand.md +104 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG1ContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG2ContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonBallot.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonCommand.md +32 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonKeyPair.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonPCommand.md +111 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonStateLeaf.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonTCommand.md +67 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IMessageContractParams.md +31 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeaf.md +39 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeafContractParams.md +42 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkContractParams.md +64 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkObjectParams.md +108 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/Proof.md +46 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/VoteOptionTreeLeaf.md +24 -0
- package/versioned_docs/version-v1.2/typedoc/domainobjs/modules.md +110 -0
- package/versioned_docs/version-v1.2/typedoc/index.md +4 -0
- package/versioned_docs/version-v1.2/versioning.md +94 -0
- package/versioned_docs/version-v1.2/workflow.md +142 -0
- package/versioned_docs/version-v2.x/case-studies.md +35 -0
- package/versioned_docs/version-v2.x/contributing/_category_.json +4 -0
- package/versioned_docs/version-v2.x/contributing/code-of-conduct.md +92 -0
- package/versioned_docs/version-v2.x/contributing/contributing.md +149 -0
- package/versioned_docs/version-v2.x/contributing/project-ideas.md +78 -0
- package/versioned_docs/version-v2.x/core-concepts/_category_.json +4 -0
- package/versioned_docs/version-v2.x/core-concepts/ballot.md +19 -0
- package/versioned_docs/version-v2.x/core-concepts/coordinator-processing.md +46 -0
- package/versioned_docs/version-v2.x/core-concepts/hashing-and-encryption.md +45 -0
- package/versioned_docs/version-v2.x/core-concepts/key-change.md +179 -0
- package/versioned_docs/version-v2.x/core-concepts/maci-keys.md +84 -0
- package/versioned_docs/version-v2.x/core-concepts/maci-messages.md +44 -0
- package/versioned_docs/version-v2.x/core-concepts/merkle-trees.md +23 -0
- package/versioned_docs/version-v2.x/core-concepts/poll-types.md +106 -0
- package/versioned_docs/version-v2.x/core-concepts/spec.md +883 -0
- package/versioned_docs/version-v2.x/core-concepts/state-leaf.md +42 -0
- package/versioned_docs/version-v2.x/core-concepts/workflow.md +142 -0
- package/versioned_docs/version-v2.x/getting-started.md +313 -0
- package/versioned_docs/version-v2.x/guides/_category_.json +4 -0
- package/versioned_docs/version-v2.x/guides/compile-circuits.md +163 -0
- package/versioned_docs/version-v2.x/guides/frontend.md +99 -0
- package/versioned_docs/version-v2.x/guides/integrating.md +73 -0
- package/versioned_docs/version-v2.x/guides/maciWrapper.md +173 -0
- package/versioned_docs/version-v2.x/guides/subgraph.md +79 -0
- package/versioned_docs/version-v2.x/guides/testing/_category_.json +4 -0
- package/versioned_docs/version-v2.x/guides/testing/testing-in-detail.md +203 -0
- package/versioned_docs/version-v2.x/guides/testing/testing.md +163 -0
- package/versioned_docs/version-v2.x/guides/troubleshooting.md +161 -0
- package/versioned_docs/version-v2.x/introduction.md +146 -0
- package/versioned_docs/version-v2.x/processes/_category_.json +4 -0
- package/versioned_docs/version-v2.x/processes/ci-pipeline.md +38 -0
- package/versioned_docs/version-v2.x/processes/versioning.md +94 -0
- package/versioned_docs/version-v2.x/resources.md +33 -0
- package/versioned_docs/version-v2.x/security/_category_.json +4 -0
- package/versioned_docs/version-v2.x/security/audit.md +167 -0
- package/versioned_docs/version-v2.x/security/trusted-setup.md +166 -0
- package/versioned_docs/version-v2.x/supported-networks/_category_.json +4 -0
- package/versioned_docs/version-v2.x/supported-networks/deployed-contracts.md +1108 -0
- package/versioned_docs/version-v2.x/supported-networks/supported-networks.md +47 -0
- package/versioned_docs/version-v2.x/technical-references/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/AccQueue.md +21 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Gatekeepers.md +40 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/MACI.md +152 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Params.md +32 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Poll.md +104 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/PollFactory.md +43 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/Tally.md +45 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/VkRegistry.md +57 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
- package/versioned_docs/version-v2.x/technical-references/smart-contracts/_category_.json +8 -0
- package/versioned_docs/version-v2.x/technical-references/technical-references.md +47 -0
- package/versioned_docs/version-v2.x/technical-references/typescript-code/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/typescript-code/cli.md +699 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/_category_.json +4 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/processMessages.md +107 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/setup.md +101 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/utilities.md +131 -0
- package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +37 -0
- package/versioned_docs/version-v2.x/use-cases/_category_.json +4 -0
- package/versioned_docs/version-v2.x/use-cases/governance.md +18 -0
- package/versioned_docs/version-v2.x/use-cases/polling.md +10 -0
- package/versioned_docs/version-v2.x/use-cases/public-goods.md +65 -0
- package/versioned_docs/version-v3.x/case-studies.md +35 -0
- package/versioned_docs/version-v3.x/contributing/_category_.json +4 -0
- package/versioned_docs/version-v3.x/contributing/code-of-conduct.md +92 -0
- package/versioned_docs/version-v3.x/contributing/contributing.md +149 -0
- package/versioned_docs/version-v3.x/contributing/project-ideas.md +78 -0
- package/versioned_docs/version-v3.x/core-concepts/_category_.json +4 -0
- package/versioned_docs/version-v3.x/core-concepts/ballot.md +19 -0
- package/versioned_docs/version-v3.x/core-concepts/coordinator-processing.md +46 -0
- package/versioned_docs/version-v3.x/core-concepts/coordinator-service.md +16 -0
- package/versioned_docs/version-v3.x/core-concepts/hashing-and-encryption.md +45 -0
- package/versioned_docs/version-v3.x/core-concepts/key-change.md +179 -0
- package/versioned_docs/version-v3.x/core-concepts/maci-keys.md +84 -0
- package/versioned_docs/version-v3.x/core-concepts/maci-messages.md +44 -0
- package/versioned_docs/version-v3.x/core-concepts/merkle-trees.md +16 -0
- package/versioned_docs/version-v3.x/core-concepts/offchain-voting.md +14 -0
- package/versioned_docs/version-v3.x/core-concepts/poll-types.md +58 -0
- package/versioned_docs/version-v3.x/core-concepts/polls.md +81 -0
- package/versioned_docs/version-v3.x/core-concepts/spec.md +883 -0
- package/versioned_docs/version-v3.x/core-concepts/state-leaf.md +42 -0
- package/versioned_docs/version-v3.x/core-concepts/workflow.md +149 -0
- package/versioned_docs/version-v3.x/guides/_category_.json +4 -0
- package/versioned_docs/version-v3.x/guides/compile-circuits.md +175 -0
- package/versioned_docs/version-v3.x/guides/integrating.md +137 -0
- package/versioned_docs/version-v3.x/guides/subgraph.md +79 -0
- package/versioned_docs/version-v3.x/guides/testing/_category_.json +4 -0
- package/versioned_docs/version-v3.x/guides/testing/testing-in-detail.md +191 -0
- package/versioned_docs/version-v3.x/guides/testing/testing-introduction.md +158 -0
- package/versioned_docs/version-v3.x/guides/troubleshooting.md +161 -0
- package/versioned_docs/version-v3.x/introduction.md +153 -0
- package/versioned_docs/version-v3.x/processes/_category_.json +4 -0
- package/versioned_docs/version-v3.x/processes/ci-pipeline.md +38 -0
- package/versioned_docs/version-v3.x/processes/versioning.md +94 -0
- package/versioned_docs/version-v3.x/quick-start.md +318 -0
- package/versioned_docs/version-v3.x/resources.md +33 -0
- package/versioned_docs/version-v3.x/security/_category_.json +4 -0
- package/versioned_docs/version-v3.x/security/audit.md +167 -0
- package/versioned_docs/version-v3.x/security/trusted-setup.md +172 -0
- package/versioned_docs/version-v3.x/supported-networks/_category_.json +4 -0
- package/versioned_docs/version-v3.x/supported-networks/deployed-contracts.md +112 -0
- package/versioned_docs/version-v3.x/supported-networks/supported-networks.md +53 -0
- package/versioned_docs/version-v3.x/technical-references/_category_.json +4 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/index.md +10 -0
- package/versioned_docs/version-v3.x/technical-references/coordinator-service/installation.md +43 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/index.md +51 -0
- package/versioned_docs/version-v3.x/technical-references/offchain-relayer/installation.md +109 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/MACI.md +160 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Params.md +33 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Policies.md +39 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Poll.md +170 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/PollFactory.md +33 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/Tally.md +43 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/VkRegistry.md +62 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
- package/versioned_docs/version-v3.x/technical-references/smart-contracts/_category_.json +8 -0
- package/versioned_docs/version-v3.x/technical-references/technical-references.md +48 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/_category_.json +4 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +53 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +106 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/setup.md +96 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/utilities.md +131 -0
- package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +42 -0
- package/versioned_docs/version-v3.x/use-cases/_category_.json +4 -0
- package/versioned_docs/version-v3.x/use-cases/governance.md +18 -0
- package/versioned_docs/version-v3.x/use-cases/polling.md +10 -0
- package/versioned_docs/version-v3.x/use-cases/public-goods.md +65 -0
- package/versioned_sidebars/version-v0.x-sidebars.json +8 -0
- package/versioned_sidebars/version-v1.2-sidebars.json +8 -0
- package/versioned_sidebars/version-v2.x-sidebars.json +8 -0
- package/versioned_sidebars/version-v3.x-sidebars.json +8 -0
- package/versions.json +1 -0
|
@@ -0,0 +1,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,150 @@
|
|
|
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 2024 MACI roadmap. Our roadmap is under constant discussion and evolution (e.g. see our [Q1](/blog/2024-team-roadmap) and [Q2](/blog/2024-q2-roadmap) updates) but we try our best to maintain this page to provide a high-level overview. Please join the conversation in our [latest GitHub discussion](https://github.com/privacy-scaling-explorations/maci/discussions/1381) if you have feedback!
|
|
12
|
+
|
|
13
|
+
**Last updated: 2024-04-16**
|
|
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 significant 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
|
|
33
|
+
4. 2025: MACI used by multiple DAOs for governance applications & QF integrations
|
|
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 Q1: release MACI v1.2, with revamped documentation & educational resource
|
|
42
|
+
4. 2026: build technical feasibility for 100K concurrent voters on the platform
|
|
43
|
+
5. 2028: build technical feasibility for 1M concurrent voters on the platform
|
|
44
|
+
|
|
45
|
+
# 2024 workstreams
|
|
46
|
+
|
|
47
|
+
_To achieve our mission, we’re focused on 4 major workstreams that comprise our roadmap._
|
|
48
|
+
|
|
49
|
+
## 1) MACI Developer Experience (DX)
|
|
50
|
+
|
|
51
|
+
~_50% of team’s total bandwidth_
|
|
52
|
+
|
|
53
|
+
We believe that MACI is only useful to the extent that people use MACI & build on MACI.
|
|
54
|
+
|
|
55
|
+
Despite the power of MACI, not a single project has yet integrated MACI v1.x in a production environment. We view this as a failure, and we want to fix this. **The goal of this workstream is to make MACI as easy to understand and easy to integrate as possible.**
|
|
56
|
+
|
|
57
|
+
### Initiatives within this workstream:
|
|
58
|
+
|
|
59
|
+
- Implement & release a MACI v1.2 ([#856](https://github.com/privacy-scaling-explorations/maci/issues/856))
|
|
60
|
+
- Refactor the codebase for improved quality, readability & modularity
|
|
61
|
+
- Add code comments (with [TypeDoc](https://typedoc.org/) & [NatSpec](https://docs.soliditylang.org/en/latest/natspec-format.html)) to improve productivity
|
|
62
|
+
- Improve tooling (e.g. cross-platform support) for ease of integration & performance
|
|
63
|
+
- Improve/create documentation for developer onboarding & education
|
|
64
|
+
- Revamp documentation stack (via Docusaurus) with versioning & additional resources
|
|
65
|
+
- Voter & coordinator guides to understand full poll lifecycle
|
|
66
|
+
- Build app templates & tutorials that can serve as reference implementations
|
|
67
|
+
|
|
68
|
+
**References**
|
|
69
|
+
|
|
70
|
+
- [MACI v1.2 Refactoring Plan](https://github.com/privacy-scaling-explorations/maci/issues/856)
|
|
71
|
+
- [MACI development team sprint board](https://github.com/orgs/privacy-scaling-explorations/projects/40)
|
|
72
|
+
- [MACI v1.1.1 refactor milestone](https://github.com/privacy-scaling-explorations/maci/milestone/5)
|
|
73
|
+
|
|
74
|
+
## 2) MACI Community Engagement
|
|
75
|
+
|
|
76
|
+
_~15% of team’s total bandwidth_
|
|
77
|
+
|
|
78
|
+
We want to proactively support adoption of MACI. **We’ll create an open source community where integrations & contributions are actively encouraged!**
|
|
79
|
+
|
|
80
|
+
This workstream relates closely to improving DX but focuses on areas that will require active maintenance, support & engagement from our team vs. improving code, documentation & educational resources that will be available online 24/7/365.
|
|
81
|
+
|
|
82
|
+
The hope here is that close interactions with integration developers & Ethereum community members will help us gather insightful user feedback so that we iterate faster to improve MACI as a product. We’ll be rolling out an agile scrum development workflow that should allow us to rapidly respond to input from the community to guide our roadmap & product direction.
|
|
83
|
+
|
|
84
|
+
### Initiatives within this workstream:
|
|
85
|
+
|
|
86
|
+
- Allocate team bandwidth to be available to respond to the community
|
|
87
|
+
- Support MACI integrations (starting with [clr.fund](http://clr.fund/) v1.x integration)
|
|
88
|
+
- Revamp GitHub repo maintenance ([MACI GH processes](https://github.com/privacy-scaling-explorations/maci/issues/757))
|
|
89
|
+
- Establish & respond to public channels ([Discord](https://discord.com/invite/sF5CT5rzrR), [Twitter](https://twitter.com/zkMACI))
|
|
90
|
+
- Proactively engage with the ecosystem to identify collaboration opportunities (conference talks, hackathon bounties, social media)
|
|
91
|
+
- Update our development processes to quickly react to user needs & input
|
|
92
|
+
|
|
93
|
+
## 3) Quadratic Funding Experiments
|
|
94
|
+
|
|
95
|
+
_~30% of team’s total bandwidth_
|
|
96
|
+
|
|
97
|
+
We’re building technical infrastructure, operational expertise & a network of communities to create a scalable way to enable community organizers to run QF rounds. The mission of our QF project has been to serve as a reference implementation on how to integrate MACI as well as support the practical adoption of this community-funding technology.
|
|
98
|
+
|
|
99
|
+
[Read more about our QF initiatives here](https://qf.pse.dev/about).
|
|
100
|
+
|
|
101
|
+
### 2024 goal
|
|
102
|
+
|
|
103
|
+
- Help run 12 QF/QV rounds
|
|
104
|
+
|
|
105
|
+
### Initiatives within this workstream:
|
|
106
|
+
|
|
107
|
+
- Build an evaluation framework of QF rounds, to increase our sophistication around how we measure success
|
|
108
|
+
- Landscape analysis of QF & capital-allocation projects to better understand how our efforts fit in within the broader ecosystem
|
|
109
|
+
- Update & expand our [QF website](https://qf.pse.dev/), with public launch to generate inbound interest
|
|
110
|
+
- Explore community collaboration opportunities (running QF rounds)
|
|
111
|
+
- Exploring project collaboration opportunities (supporting MACI/QF integrations)
|
|
112
|
+
|
|
113
|
+
**References**
|
|
114
|
+
|
|
115
|
+
- [GitHub](https://github.com/privacy-scaling-explorations/qf)
|
|
116
|
+
- [Website](https://qf.pse.dev/)
|
|
117
|
+
|
|
118
|
+
## Future R&D
|
|
119
|
+
|
|
120
|
+
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:
|
|
121
|
+
|
|
122
|
+
### MACI Coordinator Service
|
|
123
|
+
|
|
124
|
+
- The primary responsibility of the Coordinator Service will be to:
|
|
125
|
+
- offload and automate the tasks performed by the human coordinator
|
|
126
|
+
- minimize proving time by parallelizing SNARK proof generation and making MACI easier to adopt
|
|
127
|
+
- [GitHub repo](https://github.com/privacy-scaling-explorations/maci-coordinator)
|
|
128
|
+
|
|
129
|
+
### QF stack
|
|
130
|
+
|
|
131
|
+
- To serve as a reference implementation on how to integrate MACI as well as support the practical adoption of this community-funding technology.
|
|
132
|
+
- Improvements
|
|
133
|
+
- Support QF (as of now only supports QV functionality)
|
|
134
|
+
- Make it easier for operators to run rounds
|
|
135
|
+
- Make it easier for end users to use
|
|
136
|
+
- [GitHub repo](https://github.com/privacy-scaling-explorations/qf)
|
|
137
|
+
|
|
138
|
+
### MACI improvements
|
|
139
|
+
|
|
140
|
+
- Unconditional Voter Privacy (e.g. [ElGamal Key Change Mechanism](https://github.com/privacy-scaling-explorations/maci/issues/796))
|
|
141
|
+
- Scaling explorations, like SNARK Folding Schemes (e.g. [Nova integration](https://github.com/privacy-scaling-explorations/maci/issues/904))
|
|
142
|
+
- Different matching mechanisms (e.g. [Group Wise Matching in Quadratic Funding](https://github.com/privacy-scaling-explorations/maci/issues/905))
|
|
143
|
+
- Gas-less MACI for voters
|
|
144
|
+
- Gas efficiency
|
|
145
|
+
|
|
146
|
+
## Feedback
|
|
147
|
+
|
|
148
|
+
Questions? Concerns? Ideas? We’d love to hear from you!
|
|
149
|
+
|
|
150
|
+
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";
|