@maci-protocol/website 0.0.0-ci.00107eb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/.eslintrc.js +157 -0
  2. package/CHANGELOG.md +566 -0
  3. package/LICENSE +21 -0
  4. package/README.md +58 -0
  5. package/babel.config.js +3 -0
  6. package/blog/2021-10-12-maci-v1.md +100 -0
  7. package/blog/2022-09-22-maci-v1-technical-introduction.md +180 -0
  8. package/blog/2023-01-18-maci-v1.1.1.md +121 -0
  9. package/blog/2024-01-18-roadmap.md +106 -0
  10. package/blog/2024-02-28-maci-v1.2.0.md +121 -0
  11. package/blog/2024-04-10-roadmap-q2.md +96 -0
  12. package/blog/2024-05-08-ethdam.md +169 -0
  13. package/blog/2024-05-22-the-origins-of-maci.md +38 -0
  14. package/blog/2024-05-28-upcoming-grants.md +85 -0
  15. package/blog/2024-06-17-understanding-maci.md +63 -0
  16. package/blog/2024-06-21-deciphering-maci.md +48 -0
  17. package/blog/2024-06-28-revolusioning-public-goods-funding.md +32 -0
  18. package/blog/2024-07-23-q2-review.md +72 -0
  19. package/blog/2024-07-30-roadmap-q3.md +61 -0
  20. package/blog/2024-08-10-maci-v2.md +102 -0
  21. package/blog/2024-08-29-anonymous-poll-joining.md +47 -0
  22. package/blog/2024-10-29-q3-review.md +63 -0
  23. package/blog/2024-11-20-maci-platform.md +93 -0
  24. package/blog/2024-12-01-maci-getting-started.md +294 -0
  25. package/blog/2025-03-21-roadmap-2025.md +112 -0
  26. package/blog/2025-08-18-maci-aragon-plugin.md +107 -0
  27. package/blog/2025-09-05-maci-coordinator-service.md +167 -0
  28. package/blog/assets/MACI_Bob_SignUp_1.png +0 -0
  29. package/blog/assets/MACI_Bob_SignUp_2.png +0 -0
  30. package/blog/assets/MACI_Complex_Message.png +0 -0
  31. package/blog/assets/MACI_Contracts.png +0 -0
  32. package/blog/assets/MACI_Sign_Up.png +0 -0
  33. package/blog/assets/MACI_Simple_Message.png +0 -0
  34. package/blog/assets/MACI_Verifier_1.png +0 -0
  35. package/blog/authors.yml +5 -0
  36. package/docusaurus.config.ts +219 -0
  37. package/package.json +66 -0
  38. package/src/components/ActionCard/index.tsx +30 -0
  39. package/src/components/ActionCard/styles.module.css +96 -0
  40. package/src/components/HomepageFeatures/index.tsx +91 -0
  41. package/src/components/HomepageFeatures/styles.module.css +17 -0
  42. package/src/components/ProjectCard/index.tsx +74 -0
  43. package/src/components/ProjectCard/styles.module.css +77 -0
  44. package/src/components/ProjectList/index.tsx +218 -0
  45. package/src/components/ProjectList/styles.module.css +180 -0
  46. package/src/content/projects.json +294 -0
  47. package/src/css/card.module.css +130 -0
  48. package/src/css/custom.css +91 -0
  49. package/src/icons/IconDiscord.tsx +16 -0
  50. package/src/icons/IconGithub.tsx +16 -0
  51. package/src/icons/IconWebsite.tsx +16 -0
  52. package/src/pages/blogs.tsx +58 -0
  53. package/src/pages/index.module.css +152 -0
  54. package/src/pages/index.tsx +66 -0
  55. package/src/pages/projects.tsx +44 -0
  56. package/src/pages/roadmap.md +109 -0
  57. package/src/pages/typedoc.tsx +11 -0
  58. package/src/plugins/blog-plugin/index.ts +86 -0
  59. package/src/react-app-env.d.ts +1 -0
  60. package/src/scripts/setupSolidityDocs.ts +67 -0
  61. package/src/scripts/setupTypedoc.ts +112 -0
  62. package/src/scripts/utils.ts +115 -0
  63. package/src/utils/getProjectsByFilter.ts +40 -0
  64. package/static/.nojekyll +0 -0
  65. package/static/audit_reports/20210922_Hashcloak_audit_report.pdf +0 -0
  66. package/static/audit_reports/202220930_Hashcloak_audit_report.pdf +0 -0
  67. package/static/audit_reports/20240223_PSE_Audit_audit_report.pdf +0 -0
  68. package/static/audit_reports/20240731_PSE_Audit_audit_report.pdf +0 -0
  69. package/static/fonts/DM_Sans.woff2 +0 -0
  70. package/static/fonts/Share_Tech_Mono.woff2 +0 -0
  71. package/static/img/box.png +0 -0
  72. package/static/img/box_dark.png +0 -0
  73. package/static/img/chain.png +0 -0
  74. package/static/img/chain_dark.png +0 -0
  75. package/static/img/chart.png +0 -0
  76. package/static/img/chart_dark.png +0 -0
  77. package/static/img/circuits/MACI-Circuits.excalidraw +39652 -0
  78. package/static/img/circuits/calculateTotal.svg +21 -0
  79. package/static/img/circuits/ecdh.svg +21 -0
  80. package/static/img/circuits/messageToCommand.svg +21 -0
  81. package/static/img/circuits/messageValidator.svg +21 -0
  82. package/static/img/circuits/poseidonHasher13.svg +21 -0
  83. package/static/img/circuits/privToPubkey.svg +21 -0
  84. package/static/img/circuits/processMessages.svg +21 -0
  85. package/static/img/circuits/processMessagesInputHasher.svg +21 -0
  86. package/static/img/circuits/processMessages_2_0.svg +21 -0
  87. package/static/img/circuits/processOne.svg +21 -0
  88. package/static/img/circuits/processTopup.svg +21 -0
  89. package/static/img/circuits/processingAfterPollEnds.svg +21 -0
  90. package/static/img/circuits/quinBatchLeavesExists.svg +21 -0
  91. package/static/img/circuits/quinCheckRoot.svg +21 -0
  92. package/static/img/circuits/quinGeneratePathIndices.svg +21 -0
  93. package/static/img/circuits/quinSelector.svg +21 -0
  94. package/static/img/circuits/resultsCommitmentVerifier.svg +21 -0
  95. package/static/img/circuits/splicer.svg +21 -0
  96. package/static/img/circuits/tallyInputHasher.svg +21 -0
  97. package/static/img/circuits/tallyVotes.svg +21 -0
  98. package/static/img/circuits/unpackElement.svg +21 -0
  99. package/static/img/circuits/verifySignature.svg +21 -0
  100. package/static/img/completingAPoll.svg +4 -0
  101. package/static/img/contracts.svg +16 -0
  102. package/static/img/coordinatorComponents.svg +21 -0
  103. package/static/img/favicon.ico +0 -0
  104. package/static/img/generateProofs.svg +4 -0
  105. package/static/img/hero.svg +9 -0
  106. package/static/img/maci-card.png +0 -0
  107. package/static/img/maci-rpgf-design.jpg +0 -0
  108. package/static/img/messageProcessingLocal.svg +21 -0
  109. package/static/img/offlineProcessing.svg +21 -0
  110. package/static/img/pse-logo-round.png +0 -0
  111. package/static/img/relayer-diagram.png +0 -0
  112. package/static/img/tallyCommitments.svg +4 -0
  113. package/static/img/voteTallyingLocal.svg +21 -0
  114. package/tsconfig.json +34 -0
  115. package/versioned_docs/version-v0.x/circuits.md +22 -0
  116. package/versioned_docs/version-v0.x/contract.md +186 -0
  117. package/versioned_docs/version-v0.x/faq.md +67 -0
  118. package/versioned_docs/version-v0.x/introduction.md +115 -0
  119. package/versioned_docs/version-v0.x/quadratic-vote-tallying-circuit.md +138 -0
  120. package/versioned_docs/version-v0.x/state-root-transition-circuit.md +230 -0
  121. package/versioned_docs/version-v1.2/audit.md +160 -0
  122. package/versioned_docs/version-v1.2/ci-pipeline.md +38 -0
  123. package/versioned_docs/version-v1.2/circuits.md +508 -0
  124. package/versioned_docs/version-v1.2/cli.md +689 -0
  125. package/versioned_docs/version-v1.2/contracts.md +445 -0
  126. package/versioned_docs/version-v1.2/contributing/code-of-conduct.md +91 -0
  127. package/versioned_docs/version-v1.2/contributing/contributing.md +129 -0
  128. package/versioned_docs/version-v1.2/coordinator-processing.md +46 -0
  129. package/versioned_docs/version-v1.2/deployment.md +122 -0
  130. package/versioned_docs/version-v1.2/installation.md +175 -0
  131. package/versioned_docs/version-v1.2/integrating.md +200 -0
  132. package/versioned_docs/version-v1.2/introduction.md +94 -0
  133. package/versioned_docs/version-v1.2/key-change.md +182 -0
  134. package/versioned_docs/version-v1.2/overview.md +47 -0
  135. package/versioned_docs/version-v1.2/poll-types.md +68 -0
  136. package/versioned_docs/version-v1.2/primitives.md +216 -0
  137. package/versioned_docs/version-v1.2/project-ideas.md +14 -0
  138. package/versioned_docs/version-v1.2/purpose.md +62 -0
  139. package/versioned_docs/version-v1.2/solidity-docs/MACI.md +345 -0
  140. package/versioned_docs/version-v1.2/solidity-docs/MessageProcessor.md +266 -0
  141. package/versioned_docs/version-v1.2/solidity-docs/MessageProcessorFactory.md +26 -0
  142. package/versioned_docs/version-v1.2/solidity-docs/Poll.md +381 -0
  143. package/versioned_docs/version-v1.2/solidity-docs/PollFactory.md +50 -0
  144. package/versioned_docs/version-v1.2/solidity-docs/SignUpToken.md +27 -0
  145. package/versioned_docs/version-v1.2/solidity-docs/Subsidy.md +218 -0
  146. package/versioned_docs/version-v1.2/solidity-docs/SubsidyFactory.md +27 -0
  147. package/versioned_docs/version-v1.2/solidity-docs/Tally.md +311 -0
  148. package/versioned_docs/version-v1.2/solidity-docs/TallyFactory.md +27 -0
  149. package/versioned_docs/version-v1.2/solidity-docs/TallyNonQv.md +296 -0
  150. package/versioned_docs/version-v1.2/solidity-docs/TallyNonQvFactory.md +27 -0
  151. package/versioned_docs/version-v1.2/solidity-docs/TopupCredit.md +61 -0
  152. package/versioned_docs/version-v1.2/solidity-docs/VkRegistry.md +457 -0
  153. package/versioned_docs/version-v1.2/solidity-docs/benchmarks/HasherBenchmarks.md +44 -0
  154. package/versioned_docs/version-v1.2/solidity-docs/crypto/Hasher.md +125 -0
  155. package/versioned_docs/version-v1.2/solidity-docs/crypto/IVerifier.md +11 -0
  156. package/versioned_docs/version-v1.2/solidity-docs/crypto/MockVerifier.md +17 -0
  157. package/versioned_docs/version-v1.2/solidity-docs/crypto/Pairing.md +85 -0
  158. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT3.md +9 -0
  159. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT4.md +9 -0
  160. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT5.md +9 -0
  161. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT6.md +9 -0
  162. package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkCommon.md +16 -0
  163. package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkConstants.md +40 -0
  164. package/versioned_docs/version-v1.2/solidity-docs/crypto/Verifier.md +61 -0
  165. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/EASGatekeeper.md +121 -0
  166. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/FreeForAllSignUpGatekeeper.md +40 -0
  167. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpGatekeeper.md +26 -0
  168. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpTokenGatekeeper.md +93 -0
  169. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperBase.md +79 -0
  170. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperMultiple.md +48 -0
  171. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperSingle.md +42 -0
  172. package/versioned_docs/version-v1.2/solidity-docs/index.md +4 -0
  173. package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/ConstantInitialVoiceCreditProxy.md +40 -0
  174. package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/InitialVoiceCreditProxy.md +26 -0
  175. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IEAS.md +40 -0
  176. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IHats.md +103 -0
  177. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMPFactory.md +26 -0
  178. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMessageProcessor.md +31 -0
  179. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPoll.md +217 -0
  180. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPollFactory.md +29 -0
  181. package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallyFactory.md +28 -0
  182. package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallySubsidyFactory.md +27 -0
  183. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVerifier.md +25 -0
  184. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVkRegistry.md +70 -0
  185. package/versioned_docs/version-v1.2/solidity-docs/mocks/MockHatsProtocol.md +133 -0
  186. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueue.md +464 -0
  187. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary.md +60 -0
  188. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary0.md +40 -0
  189. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinaryMaci.md +34 -0
  190. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary.md +75 -0
  191. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary0.md +40 -0
  192. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryBlankSl.md +40 -0
  193. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryMaci.md +40 -0
  194. package/versioned_docs/version-v1.2/solidity-docs/trees/EmptyBallotRoots.md +13 -0
  195. package/versioned_docs/version-v1.2/solidity-docs/utilities/CommonUtilities.md +25 -0
  196. package/versioned_docs/version-v1.2/solidity-docs/utilities/DomainObjs.md +40 -0
  197. package/versioned_docs/version-v1.2/solidity-docs/utilities/Params.md +36 -0
  198. package/versioned_docs/version-v1.2/solidity-docs/utilities/Utilities.md +79 -0
  199. package/versioned_docs/version-v1.2/spec.md +944 -0
  200. package/versioned_docs/version-v1.2/testing-in-detail.md +209 -0
  201. package/versioned_docs/version-v1.2/testing.md +472 -0
  202. package/versioned_docs/version-v1.2/topup.md +43 -0
  203. package/versioned_docs/version-v1.2/troubleshooting.md +51 -0
  204. package/versioned_docs/version-v1.2/trusted-setup.md +76 -0
  205. package/versioned_docs/version-v1.2/typedoc/cli/.nojekyll +1 -0
  206. package/versioned_docs/version-v1.2/typedoc/cli/index.md +15 -0
  207. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/AirdropArgs.md +89 -0
  208. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployArgs.md +154 -0
  209. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployPollArgs.md +154 -0
  210. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployedContracts.md +130 -0
  211. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenLocalStateArgs.md +168 -0
  212. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenProofsArgs.md +388 -0
  213. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IGenKeypairArgs.md +37 -0
  214. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IRegisteredUserArgs.md +63 -0
  215. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeMessagesArgs.md +76 -0
  216. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeSignupsArgs.md +76 -0
  217. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PollContracts.md +53 -0
  218. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/ProveOnChainArgs.md +128 -0
  219. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PublishArgs.md +154 -0
  220. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SignupArgs.md +89 -0
  221. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SubsidyData.md +73 -0
  222. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TallyData.md +166 -0
  223. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TopupArgs.md +89 -0
  224. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/VerifyArgs.md +128 -0
  225. package/versioned_docs/version-v1.2/typedoc/cli/modules.md +556 -0
  226. package/versioned_docs/version-v1.2/typedoc/core/.nojekyll +1 -0
  227. package/versioned_docs/version-v1.2/typedoc/core/classes/MaciState.md +295 -0
  228. package/versioned_docs/version-v1.2/typedoc/core/classes/Poll.md +1098 -0
  229. package/versioned_docs/version-v1.2/typedoc/core/index.md +110 -0
  230. package/versioned_docs/version-v1.2/typedoc/core/interfaces/BatchSizes.md +50 -0
  231. package/versioned_docs/version-v1.2/typedoc/core/interfaces/IJsonMaciState.md +77 -0
  232. package/versioned_docs/version-v1.2/typedoc/core/interfaces/IProcessMessagesCircuitInputs.md +242 -0
  233. package/versioned_docs/version-v1.2/typedoc/core/interfaces/ISubsidyCircuitInputs.md +198 -0
  234. package/versioned_docs/version-v1.2/typedoc/core/interfaces/ITallyCircuitInputs.md +231 -0
  235. package/versioned_docs/version-v1.2/typedoc/core/interfaces/MaxValues.md +37 -0
  236. package/versioned_docs/version-v1.2/typedoc/core/interfaces/TreeDepths.md +63 -0
  237. package/versioned_docs/version-v1.2/typedoc/core/modules.md +289 -0
  238. package/versioned_docs/version-v1.2/typedoc/crypto/.nojekyll +1 -0
  239. package/versioned_docs/version-v1.2/typedoc/crypto/classes/AccQueue.md +770 -0
  240. package/versioned_docs/version-v1.2/typedoc/crypto/classes/G1Point.md +115 -0
  241. package/versioned_docs/version-v1.2/typedoc/crypto/classes/G2Point.md +140 -0
  242. package/versioned_docs/version-v1.2/typedoc/crypto/classes/IncrementalQuinTree.md +470 -0
  243. package/versioned_docs/version-v1.2/typedoc/crypto/index.md +44 -0
  244. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Keypair.md +33 -0
  245. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/PoseidonFuncs.md +115 -0
  246. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Queue.md +33 -0
  247. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Signature.md +37 -0
  248. package/versioned_docs/version-v1.2/typedoc/crypto/modules.md +913 -0
  249. package/versioned_docs/version-v1.2/typedoc/domainobjs/.nojekyll +1 -0
  250. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Ballot.md +274 -0
  251. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Keypair.md +181 -0
  252. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Message.md +244 -0
  253. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PCommand.md +409 -0
  254. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PrivKey.md +206 -0
  255. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PubKey.md +289 -0
  256. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/StateLeaf.md +340 -0
  257. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/TCommand.md +200 -0
  258. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/VerifyingKey.md +240 -0
  259. package/versioned_docs/version-v1.2/typedoc/domainobjs/index.md +81 -0
  260. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/ICommand.md +104 -0
  261. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG1ContractParams.md +31 -0
  262. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG2ContractParams.md +31 -0
  263. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonBallot.md +42 -0
  264. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonCommand.md +32 -0
  265. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonKeyPair.md +31 -0
  266. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonPCommand.md +111 -0
  267. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonStateLeaf.md +42 -0
  268. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonTCommand.md +67 -0
  269. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IMessageContractParams.md +31 -0
  270. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeaf.md +39 -0
  271. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeafContractParams.md +42 -0
  272. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkContractParams.md +64 -0
  273. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkObjectParams.md +108 -0
  274. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/Proof.md +46 -0
  275. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/VoteOptionTreeLeaf.md +24 -0
  276. package/versioned_docs/version-v1.2/typedoc/domainobjs/modules.md +110 -0
  277. package/versioned_docs/version-v1.2/typedoc/index.md +4 -0
  278. package/versioned_docs/version-v1.2/versioning.md +94 -0
  279. package/versioned_docs/version-v1.2/workflow.md +142 -0
  280. package/versioned_docs/version-v2.x/case-studies.md +35 -0
  281. package/versioned_docs/version-v2.x/contributing/_category_.json +4 -0
  282. package/versioned_docs/version-v2.x/contributing/code-of-conduct.md +92 -0
  283. package/versioned_docs/version-v2.x/contributing/contributing.md +149 -0
  284. package/versioned_docs/version-v2.x/contributing/project-ideas.md +78 -0
  285. package/versioned_docs/version-v2.x/core-concepts/_category_.json +4 -0
  286. package/versioned_docs/version-v2.x/core-concepts/ballot.md +19 -0
  287. package/versioned_docs/version-v2.x/core-concepts/coordinator-processing.md +46 -0
  288. package/versioned_docs/version-v2.x/core-concepts/hashing-and-encryption.md +45 -0
  289. package/versioned_docs/version-v2.x/core-concepts/key-change.md +179 -0
  290. package/versioned_docs/version-v2.x/core-concepts/maci-keys.md +84 -0
  291. package/versioned_docs/version-v2.x/core-concepts/maci-messages.md +44 -0
  292. package/versioned_docs/version-v2.x/core-concepts/merkle-trees.md +23 -0
  293. package/versioned_docs/version-v2.x/core-concepts/poll-types.md +106 -0
  294. package/versioned_docs/version-v2.x/core-concepts/spec.md +883 -0
  295. package/versioned_docs/version-v2.x/core-concepts/state-leaf.md +42 -0
  296. package/versioned_docs/version-v2.x/core-concepts/workflow.md +142 -0
  297. package/versioned_docs/version-v2.x/getting-started.md +313 -0
  298. package/versioned_docs/version-v2.x/guides/_category_.json +4 -0
  299. package/versioned_docs/version-v2.x/guides/compile-circuits.md +163 -0
  300. package/versioned_docs/version-v2.x/guides/frontend.md +99 -0
  301. package/versioned_docs/version-v2.x/guides/integrating.md +73 -0
  302. package/versioned_docs/version-v2.x/guides/maciWrapper.md +173 -0
  303. package/versioned_docs/version-v2.x/guides/subgraph.md +79 -0
  304. package/versioned_docs/version-v2.x/guides/testing/_category_.json +4 -0
  305. package/versioned_docs/version-v2.x/guides/testing/testing-in-detail.md +203 -0
  306. package/versioned_docs/version-v2.x/guides/testing/testing.md +163 -0
  307. package/versioned_docs/version-v2.x/guides/troubleshooting.md +161 -0
  308. package/versioned_docs/version-v2.x/introduction.md +146 -0
  309. package/versioned_docs/version-v2.x/processes/_category_.json +4 -0
  310. package/versioned_docs/version-v2.x/processes/ci-pipeline.md +38 -0
  311. package/versioned_docs/version-v2.x/processes/versioning.md +94 -0
  312. package/versioned_docs/version-v2.x/resources.md +33 -0
  313. package/versioned_docs/version-v2.x/security/_category_.json +4 -0
  314. package/versioned_docs/version-v2.x/security/audit.md +167 -0
  315. package/versioned_docs/version-v2.x/security/trusted-setup.md +166 -0
  316. package/versioned_docs/version-v2.x/supported-networks/_category_.json +4 -0
  317. package/versioned_docs/version-v2.x/supported-networks/deployed-contracts.md +1108 -0
  318. package/versioned_docs/version-v2.x/supported-networks/supported-networks.md +47 -0
  319. package/versioned_docs/version-v2.x/technical-references/_category_.json +4 -0
  320. package/versioned_docs/version-v2.x/technical-references/smart-contracts/AccQueue.md +21 -0
  321. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Gatekeepers.md +40 -0
  322. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MACI.md +152 -0
  323. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
  324. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Params.md +32 -0
  325. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Poll.md +104 -0
  326. package/versioned_docs/version-v2.x/technical-references/smart-contracts/PollFactory.md +43 -0
  327. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Tally.md +45 -0
  328. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VkRegistry.md +57 -0
  329. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
  330. package/versioned_docs/version-v2.x/technical-references/smart-contracts/_category_.json +8 -0
  331. package/versioned_docs/version-v2.x/technical-references/technical-references.md +47 -0
  332. package/versioned_docs/version-v2.x/technical-references/typescript-code/_category_.json +4 -0
  333. package/versioned_docs/version-v2.x/technical-references/typescript-code/cli.md +699 -0
  334. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/_category_.json +4 -0
  335. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/processMessages.md +107 -0
  336. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/setup.md +101 -0
  337. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
  338. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/utilities.md +131 -0
  339. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +37 -0
  340. package/versioned_docs/version-v2.x/use-cases/_category_.json +4 -0
  341. package/versioned_docs/version-v2.x/use-cases/governance.md +18 -0
  342. package/versioned_docs/version-v2.x/use-cases/polling.md +10 -0
  343. package/versioned_docs/version-v2.x/use-cases/public-goods.md +65 -0
  344. package/versioned_docs/version-v3.x/case-studies.md +35 -0
  345. package/versioned_docs/version-v3.x/contributing/_category_.json +4 -0
  346. package/versioned_docs/version-v3.x/contributing/code-of-conduct.md +92 -0
  347. package/versioned_docs/version-v3.x/contributing/contributing.md +155 -0
  348. package/versioned_docs/version-v3.x/contributing/project-ideas.md +78 -0
  349. package/versioned_docs/version-v3.x/core-concepts/_category_.json +4 -0
  350. package/versioned_docs/version-v3.x/core-concepts/ballot.md +19 -0
  351. package/versioned_docs/version-v3.x/core-concepts/coordinator-processing.md +46 -0
  352. package/versioned_docs/version-v3.x/core-concepts/coordinator-service.md +16 -0
  353. package/versioned_docs/version-v3.x/core-concepts/hashing-and-encryption.md +45 -0
  354. package/versioned_docs/version-v3.x/core-concepts/key-change.md +179 -0
  355. package/versioned_docs/version-v3.x/core-concepts/maci-keys.md +84 -0
  356. package/versioned_docs/version-v3.x/core-concepts/maci-messages.md +44 -0
  357. package/versioned_docs/version-v3.x/core-concepts/merkle-trees.md +16 -0
  358. package/versioned_docs/version-v3.x/core-concepts/offchain-voting.md +14 -0
  359. package/versioned_docs/version-v3.x/core-concepts/poll-types.md +82 -0
  360. package/versioned_docs/version-v3.x/core-concepts/polls.md +105 -0
  361. package/versioned_docs/version-v3.x/core-concepts/spec.md +817 -0
  362. package/versioned_docs/version-v3.x/core-concepts/state-leaf.md +42 -0
  363. package/versioned_docs/version-v3.x/core-concepts/workflow.md +149 -0
  364. package/versioned_docs/version-v3.x/guides/_category_.json +4 -0
  365. package/versioned_docs/version-v3.x/guides/compile-circuits.md +191 -0
  366. package/versioned_docs/version-v3.x/guides/integrating.md +137 -0
  367. package/versioned_docs/version-v3.x/guides/sdk.md +121 -0
  368. package/versioned_docs/version-v3.x/guides/subgraph.md +79 -0
  369. package/versioned_docs/version-v3.x/guides/testing/_category_.json +4 -0
  370. package/versioned_docs/version-v3.x/guides/testing/testing-in-detail.md +191 -0
  371. package/versioned_docs/version-v3.x/guides/testing/testing-introduction.md +190 -0
  372. package/versioned_docs/version-v3.x/guides/troubleshooting.md +206 -0
  373. package/versioned_docs/version-v3.x/introduction.md +153 -0
  374. package/versioned_docs/version-v3.x/processes/_category_.json +4 -0
  375. package/versioned_docs/version-v3.x/processes/ci-pipeline.md +38 -0
  376. package/versioned_docs/version-v3.x/processes/versioning.md +94 -0
  377. package/versioned_docs/version-v3.x/quick-start.md +326 -0
  378. package/versioned_docs/version-v3.x/resources.md +34 -0
  379. package/versioned_docs/version-v3.x/security/_category_.json +4 -0
  380. package/versioned_docs/version-v3.x/security/audit.md +167 -0
  381. package/versioned_docs/version-v3.x/security/trusted-setup.md +172 -0
  382. package/versioned_docs/version-v3.x/supported-networks/_category_.json +4 -0
  383. package/versioned_docs/version-v3.x/supported-networks/costs.md +725 -0
  384. package/versioned_docs/version-v3.x/supported-networks/deployed-contracts.md +112 -0
  385. package/versioned_docs/version-v3.x/supported-networks/supported-networks.md +69 -0
  386. package/versioned_docs/version-v3.x/technical-references/_category_.json +4 -0
  387. package/versioned_docs/version-v3.x/technical-references/coordinator-service/_category_.json +8 -0
  388. package/versioned_docs/version-v3.x/technical-references/coordinator-service/index.md +24 -0
  389. package/versioned_docs/version-v3.x/technical-references/coordinator-service/installation.md +15 -0
  390. package/versioned_docs/version-v3.x/technical-references/coordinator-service/usage.md +64 -0
  391. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/_category_.json +8 -0
  392. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/index.md +51 -0
  393. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/installation.md +109 -0
  394. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MACI.md +160 -0
  395. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
  396. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Params.md +33 -0
  397. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Policies.md +39 -0
  398. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Poll.md +170 -0
  399. package/versioned_docs/version-v3.x/technical-references/smart-contracts/PollFactory.md +33 -0
  400. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Tally.md +43 -0
  401. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VkRegistry.md +62 -0
  402. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
  403. package/versioned_docs/version-v3.x/technical-references/smart-contracts/_category_.json +8 -0
  404. package/versioned_docs/version-v3.x/technical-references/technical-references.md +48 -0
  405. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/_category_.json +4 -0
  406. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +52 -0
  407. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +170 -0
  408. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/setup.md +96 -0
  409. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
  410. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/utilities.md +131 -0
  411. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +42 -0
  412. package/versioned_docs/version-v3.x/use-cases/_category_.json +4 -0
  413. package/versioned_docs/version-v3.x/use-cases/governance.md +18 -0
  414. package/versioned_docs/version-v3.x/use-cases/polling.md +10 -0
  415. package/versioned_docs/version-v3.x/use-cases/public-goods.md +65 -0
  416. package/versioned_sidebars/version-v0.x-sidebars.json +8 -0
  417. package/versioned_sidebars/version-v1.2-sidebars.json +8 -0
  418. package/versioned_sidebars/version-v2.x-sidebars.json +8 -0
  419. package/versioned_sidebars/version-v3.x-sidebars.json +8 -0
  420. package/versions.json +1 -0
@@ -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
+ );
@@ -0,0 +1,112 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+
4
+ import { copyDirectory, fitFormat, generateSidebarString, generateToC, insertIndexPage } from "./utils";
5
+
6
+ const TYPEDOC_DIR = path.resolve(__dirname, "../../typedoc");
7
+
8
+ /**
9
+ * A function that remove the auto-generated navigator
10
+ * and the title at the top of the page,
11
+ * meanwhile adding sidebar configurations above the content.
12
+ * @param file - the file being updated
13
+ * @param sidebarInfo - sidebar infos, passed in as a string
14
+ */
15
+ function updateMdFiles(file: string, sidebarInfo: string) {
16
+ const content = fs.readFileSync(file).toString().split("\n");
17
+
18
+ if (content.length > 3) {
19
+ content.shift();
20
+ content.shift();
21
+ content.shift();
22
+ }
23
+
24
+ const writtenContent = content.join("\n").replaceAll("README.md", "index.md");
25
+ fs.writeFileSync(file, `${sidebarInfo}\n${writtenContent}`);
26
+ }
27
+
28
+ /**
29
+ * A function that parses a sub-directory of typedoc/,
30
+ * defines label for it and updates the markdown files.
31
+ * @param dir - the sub-directory being processed
32
+ */
33
+ function parseAndRenameDirectory(dir: string) {
34
+ const dirname = path.resolve(TYPEDOC_DIR, dir);
35
+ const label = fitFormat(dir);
36
+
37
+ // only do things if it's a directory
38
+ if (fs.statSync(dirname).isDirectory()) {
39
+ const readmeFile = path.resolve(dirname, "README.md");
40
+
41
+ if (fs.existsSync(readmeFile)) {
42
+ updateMdFiles(readmeFile, generateSidebarString({ title: label, label }));
43
+ fs.renameSync(readmeFile, path.resolve(dirname, "index.md"));
44
+ }
45
+
46
+ // remove the first two lines of navigator
47
+ const modulesFile = path.resolve(dirname, "modules.md");
48
+
49
+ if (fs.existsSync(modulesFile)) {
50
+ updateMdFiles(modulesFile, generateSidebarString({ title: `${label} Module`, label: "module", position: 1 }));
51
+ }
52
+
53
+ processDirectory(dirname);
54
+ }
55
+ }
56
+
57
+ /**
58
+ * A function that processes a directory and updates the markdown files.
59
+ * @param directory - the directory being processed
60
+ */
61
+ function processDirectory(directory: string) {
62
+ const items = fs.readdirSync(directory);
63
+ items.forEach((item) => {
64
+ const itemPath = path.resolve(directory, item);
65
+ if (fs.statSync(itemPath).isDirectory()) {
66
+ processDirectory(itemPath); // Recursively process subdirectories
67
+ } else if (fs.statSync(itemPath).isFile()) {
68
+ const itemLabel = item.split(".")[0];
69
+ updateMdFiles(itemPath, generateSidebarString({ title: itemLabel, label: itemLabel }));
70
+ }
71
+ });
72
+ }
73
+
74
+ /**
75
+ * A function that parses a sub-directory of typedoc/,
76
+ * defines label for it and updates the markdown files.
77
+ * @return target directory path for typedocs
78
+ */
79
+ function defineTargetDirectory() {
80
+ const versionFile = path.resolve(__dirname, "../../versions.json");
81
+
82
+ if (fs.existsSync(versionFile)) {
83
+ const versionContent = fs.readFileSync(versionFile, "utf8");
84
+ if (versionContent) {
85
+ const versionContentJson = JSON.parse(versionContent) as string[];
86
+ return path.resolve(
87
+ __dirname,
88
+ `../../versioned_docs/version-${versionContentJson[0]}/technical-references/typescript-code/typedoc`,
89
+ );
90
+ }
91
+ }
92
+
93
+ return path.resolve(__dirname, "../../docs/technical-references/typescript-code/typedoc");
94
+ }
95
+
96
+ if (fs.existsSync(TYPEDOC_DIR)) {
97
+ const directories = fs.readdirSync(TYPEDOC_DIR, "utf8");
98
+ directories.forEach((dir) => {
99
+ parseAndRenameDirectory(dir);
100
+ });
101
+
102
+ insertIndexPage(
103
+ TYPEDOC_DIR,
104
+ { title: "Typedoc", label: "Typedoc" },
105
+ `\nTypedoc API documentation.\n${generateToC(TYPEDOC_DIR)}\n`,
106
+ );
107
+
108
+ const versionDir = defineTargetDirectory();
109
+ copyDirectory(TYPEDOC_DIR, versionDir);
110
+
111
+ fs.rmSync(TYPEDOC_DIR, { recursive: true, force: true });
112
+ }