@maci-protocol/website 0.0.0-ci.2653bc0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/.eslintrc.js +157 -0
  2. package/CHANGELOG.md +566 -0
  3. package/LICENSE +22 -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/assets/MACI_Bob_SignUp_1.png +0 -0
  27. package/blog/assets/MACI_Bob_SignUp_2.png +0 -0
  28. package/blog/assets/MACI_Complex_Message.png +0 -0
  29. package/blog/assets/MACI_Contracts.png +0 -0
  30. package/blog/assets/MACI_Sign_Up.png +0 -0
  31. package/blog/assets/MACI_Simple_Message.png +0 -0
  32. package/blog/assets/MACI_Verifier_1.png +0 -0
  33. package/blog/authors.yml +5 -0
  34. package/docusaurus.config.ts +213 -0
  35. package/package.json +65 -0
  36. package/src/components/ActionCard/index.tsx +30 -0
  37. package/src/components/ActionCard/styles.module.css +96 -0
  38. package/src/components/HomepageFeatures/index.tsx +91 -0
  39. package/src/components/HomepageFeatures/styles.module.css +17 -0
  40. package/src/components/ProjectCard/index.tsx +74 -0
  41. package/src/components/ProjectCard/styles.module.css +77 -0
  42. package/src/components/ProjectList/index.tsx +218 -0
  43. package/src/components/ProjectList/styles.module.css +180 -0
  44. package/src/content/projects.json +294 -0
  45. package/src/css/card.module.css +130 -0
  46. package/src/css/custom.css +91 -0
  47. package/src/icons/IconDiscord.tsx +16 -0
  48. package/src/icons/IconGithub.tsx +16 -0
  49. package/src/icons/IconWebsite.tsx +16 -0
  50. package/src/pages/blogs.tsx +58 -0
  51. package/src/pages/index.module.css +152 -0
  52. package/src/pages/index.tsx +66 -0
  53. package/src/pages/projects.tsx +44 -0
  54. package/src/pages/roadmap.md +150 -0
  55. package/src/pages/typedoc.tsx +11 -0
  56. package/src/plugins/blog-plugin/index.ts +86 -0
  57. package/src/react-app-env.d.ts +1 -0
  58. package/src/scripts/setupSolidityDocs.ts +67 -0
  59. package/src/scripts/setupTypedoc.ts +112 -0
  60. package/src/scripts/utils.ts +115 -0
  61. package/src/utils/getProjectsByFilter.ts +40 -0
  62. package/static/.nojekyll +0 -0
  63. package/static/audit_reports/20210922_Hashcloak_audit_report.pdf +0 -0
  64. package/static/audit_reports/202220930_Hashcloak_audit_report.pdf +0 -0
  65. package/static/audit_reports/20240223_PSE_Audit_audit_report.pdf +0 -0
  66. package/static/audit_reports/20240731_PSE_Audit_audit_report.pdf +0 -0
  67. package/static/fonts/DM_Sans.woff2 +0 -0
  68. package/static/fonts/Share_Tech_Mono.woff2 +0 -0
  69. package/static/img/box.png +0 -0
  70. package/static/img/box_dark.png +0 -0
  71. package/static/img/chain.png +0 -0
  72. package/static/img/chain_dark.png +0 -0
  73. package/static/img/chart.png +0 -0
  74. package/static/img/chart_dark.png +0 -0
  75. package/static/img/circuits/MACI-Circuits.excalidraw +39652 -0
  76. package/static/img/circuits/calculateTotal.svg +21 -0
  77. package/static/img/circuits/ecdh.svg +21 -0
  78. package/static/img/circuits/messageToCommand.svg +21 -0
  79. package/static/img/circuits/messageValidator.svg +21 -0
  80. package/static/img/circuits/poseidonHasher13.svg +21 -0
  81. package/static/img/circuits/privToPubkey.svg +21 -0
  82. package/static/img/circuits/processMessages.svg +21 -0
  83. package/static/img/circuits/processMessagesInputHasher.svg +21 -0
  84. package/static/img/circuits/processMessages_2_0.svg +21 -0
  85. package/static/img/circuits/processOne.svg +21 -0
  86. package/static/img/circuits/processTopup.svg +21 -0
  87. package/static/img/circuits/processingAfterPollEnds.svg +21 -0
  88. package/static/img/circuits/quinBatchLeavesExists.svg +21 -0
  89. package/static/img/circuits/quinCheckRoot.svg +21 -0
  90. package/static/img/circuits/quinGeneratePathIndices.svg +21 -0
  91. package/static/img/circuits/quinSelector.svg +21 -0
  92. package/static/img/circuits/resultsCommitmentVerifier.svg +21 -0
  93. package/static/img/circuits/splicer.svg +21 -0
  94. package/static/img/circuits/tallyInputHasher.svg +21 -0
  95. package/static/img/circuits/tallyVotes.svg +21 -0
  96. package/static/img/circuits/unpackElement.svg +21 -0
  97. package/static/img/circuits/verifySignature.svg +21 -0
  98. package/static/img/completingAPoll.svg +4 -0
  99. package/static/img/contracts.svg +16 -0
  100. package/static/img/coordinatorComponents.svg +21 -0
  101. package/static/img/favicon.ico +0 -0
  102. package/static/img/generateProofs.svg +4 -0
  103. package/static/img/hero.svg +9 -0
  104. package/static/img/maci-card.png +0 -0
  105. package/static/img/maci-rpgf-design.jpg +0 -0
  106. package/static/img/messageProcessingLocal.svg +21 -0
  107. package/static/img/offlineProcessing.svg +21 -0
  108. package/static/img/pse-logo-round.png +0 -0
  109. package/static/img/relayer-diagram.png +0 -0
  110. package/static/img/tallyCommitments.svg +4 -0
  111. package/static/img/voteTallyingLocal.svg +21 -0
  112. package/tsconfig.json +34 -0
  113. package/versioned_docs/version-v0.x/circuits.md +22 -0
  114. package/versioned_docs/version-v0.x/contract.md +186 -0
  115. package/versioned_docs/version-v0.x/faq.md +67 -0
  116. package/versioned_docs/version-v0.x/introduction.md +119 -0
  117. package/versioned_docs/version-v0.x/quadratic-vote-tallying-circuit.md +138 -0
  118. package/versioned_docs/version-v0.x/state-root-transition-circuit.md +230 -0
  119. package/versioned_docs/version-v1.2/audit.md +160 -0
  120. package/versioned_docs/version-v1.2/ci-pipeline.md +38 -0
  121. package/versioned_docs/version-v1.2/circuits.md +508 -0
  122. package/versioned_docs/version-v1.2/cli.md +689 -0
  123. package/versioned_docs/version-v1.2/contracts.md +445 -0
  124. package/versioned_docs/version-v1.2/contributing/code-of-conduct.md +91 -0
  125. package/versioned_docs/version-v1.2/contributing/contributing.md +129 -0
  126. package/versioned_docs/version-v1.2/coordinator-processing.md +46 -0
  127. package/versioned_docs/version-v1.2/deployment.md +122 -0
  128. package/versioned_docs/version-v1.2/installation.md +175 -0
  129. package/versioned_docs/version-v1.2/integrating.md +200 -0
  130. package/versioned_docs/version-v1.2/introduction.md +94 -0
  131. package/versioned_docs/version-v1.2/key-change.md +182 -0
  132. package/versioned_docs/version-v1.2/overview.md +47 -0
  133. package/versioned_docs/version-v1.2/poll-types.md +68 -0
  134. package/versioned_docs/version-v1.2/primitives.md +216 -0
  135. package/versioned_docs/version-v1.2/project-ideas.md +14 -0
  136. package/versioned_docs/version-v1.2/purpose.md +62 -0
  137. package/versioned_docs/version-v1.2/solidity-docs/MACI.md +345 -0
  138. package/versioned_docs/version-v1.2/solidity-docs/MessageProcessor.md +266 -0
  139. package/versioned_docs/version-v1.2/solidity-docs/MessageProcessorFactory.md +26 -0
  140. package/versioned_docs/version-v1.2/solidity-docs/Poll.md +381 -0
  141. package/versioned_docs/version-v1.2/solidity-docs/PollFactory.md +50 -0
  142. package/versioned_docs/version-v1.2/solidity-docs/SignUpToken.md +27 -0
  143. package/versioned_docs/version-v1.2/solidity-docs/Subsidy.md +218 -0
  144. package/versioned_docs/version-v1.2/solidity-docs/SubsidyFactory.md +27 -0
  145. package/versioned_docs/version-v1.2/solidity-docs/Tally.md +311 -0
  146. package/versioned_docs/version-v1.2/solidity-docs/TallyFactory.md +27 -0
  147. package/versioned_docs/version-v1.2/solidity-docs/TallyNonQv.md +296 -0
  148. package/versioned_docs/version-v1.2/solidity-docs/TallyNonQvFactory.md +27 -0
  149. package/versioned_docs/version-v1.2/solidity-docs/TopupCredit.md +61 -0
  150. package/versioned_docs/version-v1.2/solidity-docs/VkRegistry.md +457 -0
  151. package/versioned_docs/version-v1.2/solidity-docs/benchmarks/HasherBenchmarks.md +44 -0
  152. package/versioned_docs/version-v1.2/solidity-docs/crypto/Hasher.md +125 -0
  153. package/versioned_docs/version-v1.2/solidity-docs/crypto/IVerifier.md +11 -0
  154. package/versioned_docs/version-v1.2/solidity-docs/crypto/MockVerifier.md +17 -0
  155. package/versioned_docs/version-v1.2/solidity-docs/crypto/Pairing.md +85 -0
  156. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT3.md +9 -0
  157. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT4.md +9 -0
  158. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT5.md +9 -0
  159. package/versioned_docs/version-v1.2/solidity-docs/crypto/PoseidonT6.md +9 -0
  160. package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkCommon.md +16 -0
  161. package/versioned_docs/version-v1.2/solidity-docs/crypto/SnarkConstants.md +40 -0
  162. package/versioned_docs/version-v1.2/solidity-docs/crypto/Verifier.md +61 -0
  163. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/EASGatekeeper.md +121 -0
  164. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/FreeForAllSignUpGatekeeper.md +40 -0
  165. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpGatekeeper.md +26 -0
  166. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/SignUpTokenGatekeeper.md +93 -0
  167. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperBase.md +79 -0
  168. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperMultiple.md +48 -0
  169. package/versioned_docs/version-v1.2/solidity-docs/gatekeepers/hatsGatekeepers/HatsGatekeeperSingle.md +42 -0
  170. package/versioned_docs/version-v1.2/solidity-docs/index.md +4 -0
  171. package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/ConstantInitialVoiceCreditProxy.md +40 -0
  172. package/versioned_docs/version-v1.2/solidity-docs/initialVoiceCreditProxy/InitialVoiceCreditProxy.md +26 -0
  173. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IEAS.md +40 -0
  174. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IHats.md +103 -0
  175. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMPFactory.md +26 -0
  176. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IMessageProcessor.md +31 -0
  177. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPoll.md +217 -0
  178. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IPollFactory.md +29 -0
  179. package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallyFactory.md +28 -0
  180. package/versioned_docs/version-v1.2/solidity-docs/interfaces/ITallySubsidyFactory.md +27 -0
  181. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVerifier.md +25 -0
  182. package/versioned_docs/version-v1.2/solidity-docs/interfaces/IVkRegistry.md +70 -0
  183. package/versioned_docs/version-v1.2/solidity-docs/mocks/MockHatsProtocol.md +133 -0
  184. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueue.md +464 -0
  185. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary.md +60 -0
  186. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinary0.md +40 -0
  187. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueBinaryMaci.md +34 -0
  188. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary.md +75 -0
  189. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinary0.md +40 -0
  190. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryBlankSl.md +40 -0
  191. package/versioned_docs/version-v1.2/solidity-docs/trees/AccQueueQuinaryMaci.md +40 -0
  192. package/versioned_docs/version-v1.2/solidity-docs/trees/EmptyBallotRoots.md +13 -0
  193. package/versioned_docs/version-v1.2/solidity-docs/utilities/CommonUtilities.md +25 -0
  194. package/versioned_docs/version-v1.2/solidity-docs/utilities/DomainObjs.md +40 -0
  195. package/versioned_docs/version-v1.2/solidity-docs/utilities/Params.md +36 -0
  196. package/versioned_docs/version-v1.2/solidity-docs/utilities/Utilities.md +79 -0
  197. package/versioned_docs/version-v1.2/spec.md +944 -0
  198. package/versioned_docs/version-v1.2/testing-in-detail.md +209 -0
  199. package/versioned_docs/version-v1.2/testing.md +472 -0
  200. package/versioned_docs/version-v1.2/topup.md +43 -0
  201. package/versioned_docs/version-v1.2/troubleshooting.md +51 -0
  202. package/versioned_docs/version-v1.2/trusted-setup.md +76 -0
  203. package/versioned_docs/version-v1.2/typedoc/cli/.nojekyll +1 -0
  204. package/versioned_docs/version-v1.2/typedoc/cli/index.md +15 -0
  205. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/AirdropArgs.md +89 -0
  206. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployArgs.md +154 -0
  207. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployPollArgs.md +154 -0
  208. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/DeployedContracts.md +130 -0
  209. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenLocalStateArgs.md +168 -0
  210. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/GenProofsArgs.md +388 -0
  211. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IGenKeypairArgs.md +37 -0
  212. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/IRegisteredUserArgs.md +63 -0
  213. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeMessagesArgs.md +76 -0
  214. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/MergeSignupsArgs.md +76 -0
  215. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PollContracts.md +53 -0
  216. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/ProveOnChainArgs.md +128 -0
  217. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/PublishArgs.md +154 -0
  218. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SignupArgs.md +89 -0
  219. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/SubsidyData.md +73 -0
  220. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TallyData.md +166 -0
  221. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/TopupArgs.md +89 -0
  222. package/versioned_docs/version-v1.2/typedoc/cli/interfaces/VerifyArgs.md +128 -0
  223. package/versioned_docs/version-v1.2/typedoc/cli/modules.md +556 -0
  224. package/versioned_docs/version-v1.2/typedoc/core/.nojekyll +1 -0
  225. package/versioned_docs/version-v1.2/typedoc/core/classes/MaciState.md +295 -0
  226. package/versioned_docs/version-v1.2/typedoc/core/classes/Poll.md +1098 -0
  227. package/versioned_docs/version-v1.2/typedoc/core/index.md +110 -0
  228. package/versioned_docs/version-v1.2/typedoc/core/interfaces/BatchSizes.md +50 -0
  229. package/versioned_docs/version-v1.2/typedoc/core/interfaces/IJsonMaciState.md +77 -0
  230. package/versioned_docs/version-v1.2/typedoc/core/interfaces/IProcessMessagesCircuitInputs.md +242 -0
  231. package/versioned_docs/version-v1.2/typedoc/core/interfaces/ISubsidyCircuitInputs.md +198 -0
  232. package/versioned_docs/version-v1.2/typedoc/core/interfaces/ITallyCircuitInputs.md +231 -0
  233. package/versioned_docs/version-v1.2/typedoc/core/interfaces/MaxValues.md +37 -0
  234. package/versioned_docs/version-v1.2/typedoc/core/interfaces/TreeDepths.md +63 -0
  235. package/versioned_docs/version-v1.2/typedoc/core/modules.md +289 -0
  236. package/versioned_docs/version-v1.2/typedoc/crypto/.nojekyll +1 -0
  237. package/versioned_docs/version-v1.2/typedoc/crypto/classes/AccQueue.md +770 -0
  238. package/versioned_docs/version-v1.2/typedoc/crypto/classes/G1Point.md +115 -0
  239. package/versioned_docs/version-v1.2/typedoc/crypto/classes/G2Point.md +140 -0
  240. package/versioned_docs/version-v1.2/typedoc/crypto/classes/IncrementalQuinTree.md +470 -0
  241. package/versioned_docs/version-v1.2/typedoc/crypto/index.md +44 -0
  242. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Keypair.md +33 -0
  243. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/PoseidonFuncs.md +115 -0
  244. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Queue.md +33 -0
  245. package/versioned_docs/version-v1.2/typedoc/crypto/interfaces/Signature.md +37 -0
  246. package/versioned_docs/version-v1.2/typedoc/crypto/modules.md +913 -0
  247. package/versioned_docs/version-v1.2/typedoc/domainobjs/.nojekyll +1 -0
  248. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Ballot.md +274 -0
  249. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Keypair.md +181 -0
  250. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/Message.md +244 -0
  251. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PCommand.md +409 -0
  252. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PrivKey.md +206 -0
  253. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/PubKey.md +289 -0
  254. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/StateLeaf.md +340 -0
  255. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/TCommand.md +200 -0
  256. package/versioned_docs/version-v1.2/typedoc/domainobjs/classes/VerifyingKey.md +240 -0
  257. package/versioned_docs/version-v1.2/typedoc/domainobjs/index.md +81 -0
  258. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/ICommand.md +104 -0
  259. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG1ContractParams.md +31 -0
  260. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IG2ContractParams.md +31 -0
  261. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonBallot.md +42 -0
  262. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonCommand.md +32 -0
  263. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonKeyPair.md +31 -0
  264. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonPCommand.md +111 -0
  265. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonStateLeaf.md +42 -0
  266. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IJsonTCommand.md +67 -0
  267. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IMessageContractParams.md +31 -0
  268. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeaf.md +39 -0
  269. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IStateLeafContractParams.md +42 -0
  270. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkContractParams.md +64 -0
  271. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/IVkObjectParams.md +108 -0
  272. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/Proof.md +46 -0
  273. package/versioned_docs/version-v1.2/typedoc/domainobjs/interfaces/VoteOptionTreeLeaf.md +24 -0
  274. package/versioned_docs/version-v1.2/typedoc/domainobjs/modules.md +110 -0
  275. package/versioned_docs/version-v1.2/typedoc/index.md +4 -0
  276. package/versioned_docs/version-v1.2/versioning.md +94 -0
  277. package/versioned_docs/version-v1.2/workflow.md +142 -0
  278. package/versioned_docs/version-v2.x/case-studies.md +35 -0
  279. package/versioned_docs/version-v2.x/contributing/_category_.json +4 -0
  280. package/versioned_docs/version-v2.x/contributing/code-of-conduct.md +92 -0
  281. package/versioned_docs/version-v2.x/contributing/contributing.md +149 -0
  282. package/versioned_docs/version-v2.x/contributing/project-ideas.md +78 -0
  283. package/versioned_docs/version-v2.x/core-concepts/_category_.json +4 -0
  284. package/versioned_docs/version-v2.x/core-concepts/ballot.md +19 -0
  285. package/versioned_docs/version-v2.x/core-concepts/coordinator-processing.md +46 -0
  286. package/versioned_docs/version-v2.x/core-concepts/hashing-and-encryption.md +45 -0
  287. package/versioned_docs/version-v2.x/core-concepts/key-change.md +179 -0
  288. package/versioned_docs/version-v2.x/core-concepts/maci-keys.md +84 -0
  289. package/versioned_docs/version-v2.x/core-concepts/maci-messages.md +44 -0
  290. package/versioned_docs/version-v2.x/core-concepts/merkle-trees.md +23 -0
  291. package/versioned_docs/version-v2.x/core-concepts/poll-types.md +106 -0
  292. package/versioned_docs/version-v2.x/core-concepts/spec.md +883 -0
  293. package/versioned_docs/version-v2.x/core-concepts/state-leaf.md +42 -0
  294. package/versioned_docs/version-v2.x/core-concepts/workflow.md +142 -0
  295. package/versioned_docs/version-v2.x/getting-started.md +313 -0
  296. package/versioned_docs/version-v2.x/guides/_category_.json +4 -0
  297. package/versioned_docs/version-v2.x/guides/compile-circuits.md +163 -0
  298. package/versioned_docs/version-v2.x/guides/frontend.md +99 -0
  299. package/versioned_docs/version-v2.x/guides/integrating.md +73 -0
  300. package/versioned_docs/version-v2.x/guides/maciWrapper.md +173 -0
  301. package/versioned_docs/version-v2.x/guides/subgraph.md +79 -0
  302. package/versioned_docs/version-v2.x/guides/testing/_category_.json +4 -0
  303. package/versioned_docs/version-v2.x/guides/testing/testing-in-detail.md +203 -0
  304. package/versioned_docs/version-v2.x/guides/testing/testing.md +163 -0
  305. package/versioned_docs/version-v2.x/guides/troubleshooting.md +161 -0
  306. package/versioned_docs/version-v2.x/introduction.md +146 -0
  307. package/versioned_docs/version-v2.x/processes/_category_.json +4 -0
  308. package/versioned_docs/version-v2.x/processes/ci-pipeline.md +38 -0
  309. package/versioned_docs/version-v2.x/processes/versioning.md +94 -0
  310. package/versioned_docs/version-v2.x/resources.md +33 -0
  311. package/versioned_docs/version-v2.x/security/_category_.json +4 -0
  312. package/versioned_docs/version-v2.x/security/audit.md +167 -0
  313. package/versioned_docs/version-v2.x/security/trusted-setup.md +166 -0
  314. package/versioned_docs/version-v2.x/supported-networks/_category_.json +4 -0
  315. package/versioned_docs/version-v2.x/supported-networks/deployed-contracts.md +1108 -0
  316. package/versioned_docs/version-v2.x/supported-networks/supported-networks.md +47 -0
  317. package/versioned_docs/version-v2.x/technical-references/_category_.json +4 -0
  318. package/versioned_docs/version-v2.x/technical-references/smart-contracts/AccQueue.md +21 -0
  319. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Gatekeepers.md +40 -0
  320. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MACI.md +152 -0
  321. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
  322. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Params.md +32 -0
  323. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Poll.md +104 -0
  324. package/versioned_docs/version-v2.x/technical-references/smart-contracts/PollFactory.md +43 -0
  325. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Tally.md +45 -0
  326. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VkRegistry.md +57 -0
  327. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
  328. package/versioned_docs/version-v2.x/technical-references/smart-contracts/_category_.json +8 -0
  329. package/versioned_docs/version-v2.x/technical-references/technical-references.md +47 -0
  330. package/versioned_docs/version-v2.x/technical-references/typescript-code/_category_.json +4 -0
  331. package/versioned_docs/version-v2.x/technical-references/typescript-code/cli.md +699 -0
  332. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/_category_.json +4 -0
  333. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/processMessages.md +107 -0
  334. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/setup.md +101 -0
  335. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
  336. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/utilities.md +131 -0
  337. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +37 -0
  338. package/versioned_docs/version-v2.x/use-cases/_category_.json +4 -0
  339. package/versioned_docs/version-v2.x/use-cases/governance.md +18 -0
  340. package/versioned_docs/version-v2.x/use-cases/polling.md +10 -0
  341. package/versioned_docs/version-v2.x/use-cases/public-goods.md +65 -0
  342. package/versioned_docs/version-v3.x/case-studies.md +35 -0
  343. package/versioned_docs/version-v3.x/contributing/_category_.json +4 -0
  344. package/versioned_docs/version-v3.x/contributing/code-of-conduct.md +92 -0
  345. package/versioned_docs/version-v3.x/contributing/contributing.md +149 -0
  346. package/versioned_docs/version-v3.x/contributing/project-ideas.md +78 -0
  347. package/versioned_docs/version-v3.x/core-concepts/_category_.json +4 -0
  348. package/versioned_docs/version-v3.x/core-concepts/ballot.md +19 -0
  349. package/versioned_docs/version-v3.x/core-concepts/coordinator-processing.md +46 -0
  350. package/versioned_docs/version-v3.x/core-concepts/coordinator-service.md +16 -0
  351. package/versioned_docs/version-v3.x/core-concepts/hashing-and-encryption.md +45 -0
  352. package/versioned_docs/version-v3.x/core-concepts/key-change.md +179 -0
  353. package/versioned_docs/version-v3.x/core-concepts/maci-keys.md +84 -0
  354. package/versioned_docs/version-v3.x/core-concepts/maci-messages.md +44 -0
  355. package/versioned_docs/version-v3.x/core-concepts/merkle-trees.md +16 -0
  356. package/versioned_docs/version-v3.x/core-concepts/offchain-voting.md +14 -0
  357. package/versioned_docs/version-v3.x/core-concepts/poll-types.md +58 -0
  358. package/versioned_docs/version-v3.x/core-concepts/polls.md +81 -0
  359. package/versioned_docs/version-v3.x/core-concepts/spec.md +883 -0
  360. package/versioned_docs/version-v3.x/core-concepts/state-leaf.md +42 -0
  361. package/versioned_docs/version-v3.x/core-concepts/workflow.md +149 -0
  362. package/versioned_docs/version-v3.x/guides/_category_.json +4 -0
  363. package/versioned_docs/version-v3.x/guides/compile-circuits.md +175 -0
  364. package/versioned_docs/version-v3.x/guides/integrating.md +137 -0
  365. package/versioned_docs/version-v3.x/guides/subgraph.md +79 -0
  366. package/versioned_docs/version-v3.x/guides/testing/_category_.json +4 -0
  367. package/versioned_docs/version-v3.x/guides/testing/testing-in-detail.md +191 -0
  368. package/versioned_docs/version-v3.x/guides/testing/testing-introduction.md +158 -0
  369. package/versioned_docs/version-v3.x/guides/troubleshooting.md +161 -0
  370. package/versioned_docs/version-v3.x/introduction.md +153 -0
  371. package/versioned_docs/version-v3.x/processes/_category_.json +4 -0
  372. package/versioned_docs/version-v3.x/processes/ci-pipeline.md +38 -0
  373. package/versioned_docs/version-v3.x/processes/versioning.md +94 -0
  374. package/versioned_docs/version-v3.x/quick-start.md +318 -0
  375. package/versioned_docs/version-v3.x/resources.md +33 -0
  376. package/versioned_docs/version-v3.x/security/_category_.json +4 -0
  377. package/versioned_docs/version-v3.x/security/audit.md +167 -0
  378. package/versioned_docs/version-v3.x/security/trusted-setup.md +172 -0
  379. package/versioned_docs/version-v3.x/supported-networks/_category_.json +4 -0
  380. package/versioned_docs/version-v3.x/supported-networks/deployed-contracts.md +112 -0
  381. package/versioned_docs/version-v3.x/supported-networks/supported-networks.md +53 -0
  382. package/versioned_docs/version-v3.x/technical-references/_category_.json +4 -0
  383. package/versioned_docs/version-v3.x/technical-references/coordinator-service/_category_.json +8 -0
  384. package/versioned_docs/version-v3.x/technical-references/coordinator-service/index.md +10 -0
  385. package/versioned_docs/version-v3.x/technical-references/coordinator-service/installation.md +43 -0
  386. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/_category_.json +8 -0
  387. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/index.md +51 -0
  388. package/versioned_docs/version-v3.x/technical-references/offchain-relayer/installation.md +109 -0
  389. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MACI.md +160 -0
  390. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MessageProcessor.md +13 -0
  391. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Params.md +33 -0
  392. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Policies.md +39 -0
  393. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Poll.md +170 -0
  394. package/versioned_docs/version-v3.x/technical-references/smart-contracts/PollFactory.md +33 -0
  395. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Tally.md +43 -0
  396. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VkRegistry.md +62 -0
  397. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VoiceCreditProxy.md +18 -0
  398. package/versioned_docs/version-v3.x/technical-references/smart-contracts/_category_.json +8 -0
  399. package/versioned_docs/version-v3.x/technical-references/technical-references.md +48 -0
  400. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/_category_.json +4 -0
  401. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +53 -0
  402. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +106 -0
  403. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/setup.md +96 -0
  404. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/tallyVotes.md +79 -0
  405. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/utilities.md +131 -0
  406. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +42 -0
  407. package/versioned_docs/version-v3.x/use-cases/_category_.json +4 -0
  408. package/versioned_docs/version-v3.x/use-cases/governance.md +18 -0
  409. package/versioned_docs/version-v3.x/use-cases/polling.md +10 -0
  410. package/versioned_docs/version-v3.x/use-cases/public-goods.md +65 -0
  411. package/versioned_sidebars/version-v0.x-sidebars.json +8 -0
  412. package/versioned_sidebars/version-v1.2-sidebars.json +8 -0
  413. package/versioned_sidebars/version-v2.x-sidebars.json +8 -0
  414. package/versioned_sidebars/version-v3.x-sidebars.json +8 -0
  415. package/versions.json +1 -0
@@ -0,0 +1,110 @@
1
+ ---
2
+ title: Domainobjs Module
3
+ sidebar_label: module
4
+ sidebar_position: 1
5
+ ---
6
+
7
+ ## Table of contents
8
+
9
+ ### Classes
10
+
11
+ - [Ballot](classes/Ballot.md)
12
+ - [Keypair](classes/Keypair.md)
13
+ - [Message](classes/Message.md)
14
+ - [PCommand](classes/PCommand.md)
15
+ - [PrivKey](classes/PrivKey.md)
16
+ - [PubKey](classes/PubKey.md)
17
+ - [StateLeaf](classes/StateLeaf.md)
18
+ - [TCommand](classes/TCommand.md)
19
+ - [VerifyingKey](classes/VerifyingKey.md)
20
+
21
+ ### Interfaces
22
+
23
+ - [ICommand](interfaces/ICommand.md)
24
+ - [IG1ContractParams](interfaces/IG1ContractParams.md)
25
+ - [IG2ContractParams](interfaces/IG2ContractParams.md)
26
+ - [IJsonBallot](interfaces/IJsonBallot.md)
27
+ - [IJsonCommand](interfaces/IJsonCommand.md)
28
+ - [IJsonKeyPair](interfaces/IJsonKeyPair.md)
29
+ - [IJsonPCommand](interfaces/IJsonPCommand.md)
30
+ - [IJsonStateLeaf](interfaces/IJsonStateLeaf.md)
31
+ - [IJsonTCommand](interfaces/IJsonTCommand.md)
32
+ - [IMessageContractParams](interfaces/IMessageContractParams.md)
33
+ - [IStateLeaf](interfaces/IStateLeaf.md)
34
+ - [IStateLeafContractParams](interfaces/IStateLeafContractParams.md)
35
+ - [IVkContractParams](interfaces/IVkContractParams.md)
36
+ - [IVkObjectParams](interfaces/IVkObjectParams.md)
37
+ - [Proof](interfaces/Proof.md)
38
+ - [VoteOptionTreeLeaf](interfaces/VoteOptionTreeLeaf.md)
39
+
40
+ ### Type Aliases
41
+
42
+ - [IJsonPrivateKey](modules.md#ijsonprivatekey)
43
+ - [IJsonPublicKey](modules.md#ijsonpublickey)
44
+
45
+ ### Variables
46
+
47
+ - [SERIALIZED_PRIV_KEY_PREFIX](modules.md#serialized_priv_key_prefix)
48
+ - [SERIALIZED_PUB_KEY_PREFIX](modules.md#serialized_pub_key_prefix)
49
+ - [blankStateLeaf](modules.md#blankstateleaf)
50
+ - [blankStateLeafHash](modules.md#blankstateleafhash)
51
+
52
+ ## Type Aliases
53
+
54
+ ### IJsonPrivateKey
55
+
56
+ Ƭ **IJsonPrivateKey**: `Pick`\<[`IJsonKeyPair`](interfaces/IJsonKeyPair.md), `"privKey"`\>
57
+
58
+ #### Defined in
59
+
60
+ [types.ts:33](https://github.com/privacy-scaling-explorations/maci/blob/6a905de08/domainobjs/ts/types.ts#L33)
61
+
62
+ ---
63
+
64
+ ### IJsonPublicKey
65
+
66
+ Ƭ **IJsonPublicKey**: `Pick`\<[`IJsonKeyPair`](interfaces/IJsonKeyPair.md), `"pubKey"`\>
67
+
68
+ #### Defined in
69
+
70
+ [types.ts:35](https://github.com/privacy-scaling-explorations/maci/blob/6a905de08/domainobjs/ts/types.ts#L35)
71
+
72
+ ## Variables
73
+
74
+ ### SERIALIZED_PRIV_KEY_PREFIX
75
+
76
+ • `Const` **SERIALIZED_PRIV_KEY_PREFIX**: `"macisk."`
77
+
78
+ #### Defined in
79
+
80
+ [privateKey.ts:5](https://github.com/privacy-scaling-explorations/maci/blob/6a905de08/domainobjs/ts/privateKey.ts#L5)
81
+
82
+ ---
83
+
84
+ ### SERIALIZED_PUB_KEY_PREFIX
85
+
86
+ • `Const` **SERIALIZED_PUB_KEY_PREFIX**: `"macipk."`
87
+
88
+ #### Defined in
89
+
90
+ [publicKey.ts:7](https://github.com/privacy-scaling-explorations/maci/blob/6a905de08/domainobjs/ts/publicKey.ts#L7)
91
+
92
+ ---
93
+
94
+ ### blankStateLeaf
95
+
96
+ • `Const` **blankStateLeaf**: [`StateLeaf`](classes/StateLeaf.md)
97
+
98
+ #### Defined in
99
+
100
+ [constants.ts:3](https://github.com/privacy-scaling-explorations/maci/blob/6a905de08/domainobjs/ts/constants.ts#L3)
101
+
102
+ ---
103
+
104
+ ### blankStateLeafHash
105
+
106
+ • `Const` **blankStateLeafHash**: `bigint`
107
+
108
+ #### Defined in
109
+
110
+ [constants.ts:4](https://github.com/privacy-scaling-explorations/maci/blob/6a905de08/domainobjs/ts/constants.ts#L4)
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Typedoc
3
+ sidebar_label: Typedoc
4
+ ---
@@ -0,0 +1,94 @@
1
+ ---
2
+ title: MACI versioning and release process
3
+ description: How MACI's versioning and release process works
4
+ sidebar_label: MACI versioning
5
+ sidebar_position: 20
6
+ ---
7
+
8
+ # MACI versioning and release process
9
+
10
+ This document outlines the approach to versioning and releasing the MACI project. The primary goal here is to set clear expectations and provide a consistent user experience for developers integrating MACI and its packages.
11
+
12
+ ## MACI code
13
+
14
+ MACI code consists 3 core parts: Circom circuits, Solidity contracts and JS (TS) libraries, from which we release a total of 7 NPM packages. See the [codebase overview](/docs/v1.2/overview) for more details.
15
+
16
+ ## MACI versioning
17
+
18
+ MACI follows the [Semantic Versioning Specification (SemVer)](https://semver.org/).
19
+
20
+ All MACI packages are organized in our monorepo and follow a global release approach, meaning that all packages have the same version.
21
+
22
+ Currently, MACI core team manually decides when to release and what the version should be. Packages are released [automatically via CI](https://github.com/privacy-scaling-explorations/maci/blob/dev/.github/workflows/release.yml) when a new tag is created in GitHub. [You can view our releases and tags in GitHub](https://github.com/privacy-scaling-explorations/maci/releases).
23
+
24
+ ## MACI Release Process
25
+
26
+ To release a new version of MACI, follow these steps:
27
+
28
+ :::warning
29
+ Version number '1.2.3' is used here as an example. You should replace the version number '1.2.3' with the version number you are planning to release
30
+ :::
31
+
32
+ 1. Verify that tests have passed on GitHub Actions
33
+
34
+ 2. Clone maci:
35
+
36
+ ```
37
+ git clone https://github.com/privacy-scaling-explorations/maci
38
+ ```
39
+
40
+ 3. Switch to the `dev` branch:
41
+
42
+ ```
43
+ git checkout dev
44
+ ```
45
+
46
+ 4. Install required dependencies:
47
+
48
+ ```
49
+ pnpm install
50
+ ```
51
+
52
+ 5. Run `lerna version` to update CHANGELOG and version numbers of sub-packages:
53
+
54
+ ```
55
+ pnpm exec lerna version --no-push --no-git-tag-version --conventional-commits 1.2.3
56
+ ```
57
+
58
+ 6. Commit changes:
59
+
60
+ ```
61
+ git commit --message "chore(release): publish 1.2.3"
62
+ ```
63
+
64
+ 7. Push changes and create a pull request
65
+
66
+ After the pull request has been merged:
67
+
68
+ 8. Retrieve merged commit
69
+
70
+ 9. Add a tag:
71
+
72
+ ```
73
+ git tag --sign v1.2.3 --message v1.2.3
74
+ ```
75
+
76
+ 10. Publish tag:
77
+
78
+ ```
79
+ git push v1.2.3
80
+ ```
81
+
82
+ Once the tag is pushed, GitHub Actions will automatically publish the packages to npm.js and create a release on GitHub.
83
+
84
+ ---
85
+
86
+ The following packages will be published on NPM:
87
+
88
+ - [`@maci-circuits`](https://www.npmjs.com/package/maci-circuits)
89
+ - [`@maci-contracts`](https://www.npmjs.com/package/maci-contracts)
90
+ - [`@maci-cli`](https://www.npmjs.com/package/maci-cli)
91
+ - [`@maci-core`](https://www.npmjs.com/package/maci-core)
92
+ - [`@maci-crypto`](https://www.npmjs.com/package/maci-crypto)
93
+ - [`@maci-domainobjs`](https://www.npmjs.com/package/maci-domainobjs)
94
+ - [`@maci-integrationtests`](https://www.npmjs.com/package/maci-integrationtests)
@@ -0,0 +1,142 @@
1
+ ---
2
+ title: MACI Workflow
3
+ description: Overview of the MACI workflow
4
+ sidebar_label: Workflow
5
+ sidebar_position: 3
6
+ ---
7
+
8
+ <!-- TODO: create flowcharts, similar to Kyle's (but make light/dark mode compatible) -->
9
+
10
+ # MACI Workflow
11
+
12
+ This article covers the high-level MACI workflow, which borrows heavily from our [Technical Introduction to MACI](/blog/maci-1-0-technical-introduction#system-overview).
13
+
14
+ ## Roles
15
+
16
+ There are two key roles that participate in MACI:
17
+
18
+ 1. Users, who vote on polls
19
+ 2. A trusted coordinator, who configures and launches polls, tallies up votes, and publishes the final results
20
+
21
+ ### User (voter)
22
+
23
+ A "User" is any voter in a MACI poll.
24
+
25
+ In order to participate in a MACI poll, a user will perform at least 2 on-chain transactions:
26
+
27
+ 1. Sign up with MACI
28
+ 2. Vote on a poll
29
+
30
+ <!-- TODO: add flowchart that demonstrates this (but show happy path, not key switching) -->
31
+ <!-- https://miro.medium.com/v2/resize:fit:1400/format:webp/0*whHfC8-xxAwSyaaO -->
32
+
33
+ ### Coordinator
34
+
35
+ The "Coordinator" helps set up and execute MACI polls. They are responsible for deploying the MACI smart contracts, initiating polls, tallying the final results of a vote, and finalizing polls by publishing the final results on-chain.
36
+
37
+ :::info
38
+ Note: it's possible for the contract deployer and the coordinator to be two separate accounts/entities, but for simplicity we'll start by assuming these functions are the same role.
39
+ :::
40
+
41
+ Once a voting poll has completed (i.e. the voting deadline has elapsed), the coordinator has the sole ability to decrypt all user votes and tally up the total results. The coordinator then publishes commitments and proofs of these results on chain to finalize a poll. The coordinators must use zk-SNARKs proofs to guarantee that their final tally result is valid, and this is accomplished without releasing the vote of every individual.
42
+
43
+ <!-- In order to execute a MACI poll, a coordinator will perform at least 3 types of on-chain transactions:
44
+
45
+ 1. deploy contracts
46
+ 2. -->
47
+
48
+ #### Trust assumptions
49
+
50
+ We say the coordinator is a "trusted" coordinator, because there are areas where a corrupt (or inept) coordinator could disrupt the "happy path" of the MACI workflow.
51
+
52
+ For instance, a coordinator can:
53
+
54
+ - Decrypt votes (in order to publish them, or to bribe individual voters)
55
+ - Halt a round (by never tallying results or never submitting the final proofs)
56
+
57
+ A coordinator cannot:
58
+
59
+ - Publish incorrect results (either by censoring valid votes or creating fraudulent votes)
60
+ - Change the parameters of a poll (e.g. by extending its voting deadline once it's been deployed)
61
+
62
+ Therefore, even if a coordinator is corrupt, they are unable to change a user’s vote or add extra votes themselves. A corrupt coordinator can stop a vote by never publishing the results, but they can’t publish false results.
63
+
64
+ ## Contracts
65
+
66
+ To explain the MACI workflow, let's give a quick overview of the key smart contracts.
67
+
68
+ See our [smart contract docs](/docs/v1.2/contracts) or our [contract source code](https://github.com/privacy-scaling-explorations/maci/tree/dev/contracts/contracts) for a more in-depth explanation of all smart contracts.
69
+
70
+ ### MACI.sol
71
+
72
+ The MACI contract is responsible for registering user signups by recording the initial public key for each user (via the [`signUp` function](/docs/v1.2/solidity-docs/MACI#signup-1)). To conduct a voting round, the coordinator can deploy a Poll via MACI (with the [`deployPoll` function](/docs/v1.2/solidity-docs/MACI#deploypoll)).
73
+
74
+ ### Poll.sol
75
+
76
+ The Poll contract is where users submit their votes (via the [`publishMessage` function](/docs/v1.2/typedoc/core/classes/Poll#publishmessage)). One MACI contract can be used for multiple Poll contracts. In other words, a user that signed up to the MACI contract can vote on multiple issues, with each issue represented by a distinct Poll contract.
77
+
78
+ ### MessageProcessor.sol and Tally.sol
79
+
80
+ The MessageProcessor and Tally contracts are used by the coordinator to process all user votes and to prove on-chain that they correctly tallied each vote.
81
+
82
+ ## Poll lifecycle
83
+
84
+ As described above, a core contract of MACI is a Poll. Coordinators can deploy polls and add vote options to polls, which users can then vote on. Although each instance of MACI can deploy multiple Polls, only one Poll can be active at a time.
85
+
86
+ In essence, each MACI Poll is a state machine which has 3 stages:
87
+
88
+ 1. Open
89
+ 2. Closed
90
+ 3. Finalized
91
+
92
+ ### 1) Open
93
+
94
+ When a Poll is deployed, its voting period starts immediately. As part of its deployment, the `duration` of the Poll is set, which determines how long the Poll is open for voting. A Poll is "open" until the duration of the Poll has elapsed.
95
+
96
+ During this stage, users can sign up and vote.
97
+
98
+ #### Sign up
99
+
100
+ Before a user can cast a vote, they must sign up by generating a MACI keypair and then sending the public key they wish to use to cast their vote to the MACI smart contract. This MACI public key (distinct from their Ethereum account public key) acts as their identity when voting. Users can vote from any Ethereum address, but their message must contain a signature from that MACI public key.
101
+
102
+ This registration process is necessary to fortify MACI against Sybil attacks. The particular criteria used to allow user signups is customizable, and can be configured using any [SignUpGatekeeper contract](https://github.com/privacy-scaling-explorations/maci/blob/v1.2.0/packages/contracts/contracts/gatekeepers/SignUpGatekeeper.sol). This contract dictates the criteria a user must pass in order to participate in a poll. For example, a user might need to prove ownership of a certain NFT, or that they've received some attestation on EAS, or prove that they have passed some sort of proof-of-personhood verification. Note that MACI presumes an identity system where each legitimate member
103
+ controls a unique private key - MACI does not specifically solve for this, but allows for customization on how this is configured.
104
+
105
+ #### Vote
106
+
107
+ Once a user has signed up with MACI, they are eligible to vote on open polls.
108
+
109
+ To cast a vote, a user will bundle a few variables — including a public key, their vote option, their vote amount, and a few others — into what is called a "command". Then, the user signs the command with the public key they originally used to sign up. After that, the user encrypts the signature and command together so that it is now considered a "message". If the command is properly signed by the user’s MACI public key, then the message is considered valid will be counted in the final tally. Therefore, the MACI public key can be thought of as the user’s voting username, and the signature is the voting password. If they provide the correct signature, they can submit a vote.
110
+
111
+ Before sending their vote on-chain, users encrypt their vote using a shared key that only the user and coordinator can know. This key scheme is designed so that every individual user shares a distinct key with the coordinator. This prevents any bribers from simply reading the transaction data to see which option a user voted for. It also allows the coordinator to decrypt user votes (so that they can tally the results).
112
+
113
+ ### 2) Closed
114
+
115
+ A Poll is "closed", when the voting period ends. At this point, no users may submit any more votes. The Poll remains closed until the coordinator tallies the final results.
116
+
117
+ At this point, the coordinator must process all the messages, tally the results, and publish the proofs on-chain.
118
+
119
+ #### Process Messages
120
+
121
+ Once the voting period has completed for a specific poll, the coordinator will use the `MessageProcessor` contract to first prove that they have correctly decrypted each message and applied them to correctly create an updated state tree. This state tree keeps an account of all the valid votes that should be counted. So, when processing the messages, the coordinator will not keep messages that are later overridden by a newer message inside the state tree. For example, if a user votes for option A, but then later sends a new message to vote for option B, the coordinator will only count the vote for option B.
122
+
123
+ The coordinator must process messages in batches so that proving on chain does not exceed the data limit. The coordinator then creates a zk-SNARK proving their state tree correctly contains only the valid messages. Once the proof is ready, the coordinator calls [`MessageProcessor.processMessages()`](/docs/v1.2/solidity-docs/MessageProcessor#processmessages), providing a hash of the state tree and the zk-SNARK proof as an input parameters.
124
+
125
+ The `MessageProcessor` contract will send the proof to a separate verifier contract. The verifier contract is specifically built to read MACI zk-SNARK proofs and tell if they are valid or not. So, if the verifier contract returns true, then everyone can see on-chain that the coordinator correctly processed that batch of messages. The coordinator repeats this process until all messages have been processed.
126
+
127
+ #### Tally Results
128
+
129
+ Finally, once all messages have been processed, the coordinator tallies the votes of the valid messages (off-chain). The coordinator creates a zk-SNARK proving that the valid messages in the state tree (proved in Process Messages step) contain votes that sum to the given tally result. Then, they call [`Tally.tallyVotes()`](/docs/v1.2/solidity-docs/Tally#tallyvotes) with a hash of the correct tally results and the zk-SNARK proof. Similarly to the processMessages function, the `tallyVotes` function will send the proof to a verifier contract to ensure that it is valid.
130
+
131
+ <!-- "hash of the correct tally results" - so are the final results actually put on chain? or just a hash?? -->
132
+
133
+ The `tallyVotes` function is only successful if the verifier contract returns that the proof is valid. Therefore, once the `tallyVotes` function succeeds, users can trust that the coordinator has correctly tallied all of the valid votes. After this step, anyone can see the final tally results and the proof that these results are a correct result of the messages sent to the Poll contract. The users won’t be able to see how any individual voted, but will be able to trust that these votes were properly processed and counted.
134
+
135
+ <!-- "After this step, anyone can see the final tally results" - how if only hash of results are published? -->
136
+ <!-- https://miro.medium.com/v2/resize:fit:1400/format:webp/0*7Le2odbX7e2etpxR -->
137
+
138
+ ### 3) Finalized
139
+
140
+ A poll is "finalized" after the coordinator processes all the messages, tallies the results, and publishes the on-chain proofs.
141
+
142
+ At this point, the final results of a poll can be announced, and anyone can verify that the results have been processed and calculated correctly by the coordinator.
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: Case Studies
3
+ description: Overview of what is quadratic funding
4
+ sidebar_label: Case Studies
5
+ sidebar_position: 12
6
+ ---
7
+
8
+ # Case Studies
9
+
10
+ View some of our previous collaborations below!
11
+
12
+ Public Good rounds come in different shapes in sizes. The hope is that these projects will provide inspiration for prospective organizers on how they may want to structure their QF round.
13
+
14
+ ## 2024
15
+
16
+ - [ETH Mexico](https://pse-team.notion.site/case-study-eth-mexico-24?pvs=74)
17
+ - [Cryptoversidad](https://pse-team.notion.site/Cryptoversidad-24-159d57e8dd7e80c88407cfaf6f538f3e?pvs=4)
18
+ - [Ethereum TGU: Trust Round](https://pse-team.notion.site/case-study-ethereum-tgu-24-trust-round?pvs=74)
19
+ - [Devcon Sea](https://pse-team.notion.site/case-study-devcon-sea-24?pvs=74)
20
+ - [Ethereum TGU: Academy Round](https://pse-team.notion.site/Ethereum-TGU-24-Academia-Round-17ad57e8dd7e804ab65be5b6f3e6d7c3?pvs=4)
21
+
22
+ ## 2023
23
+
24
+ - [ETH Honduras](https://www.notion.so/pse-team/ETH-Honduras-23-8a73c9ce00bf40e896bf6a1caf946710?pvs=4)
25
+ - [ETH Argentina](https://www.notion.so/pse-team/ETH-Argentina-23-4836cbac426e4e4cbc56af7b639aa47b?pvs=4)
26
+ - [ETHCon Korea](https://www.notion.so/pse-team/ETHCon-Korea-23-38a7c83ab66b4f5f8694141583da5c0a?pvs=4)
27
+
28
+ ## 2022
29
+
30
+ - [ETH Honduras](https://www.notion.so/pse-team/ETH-Honduras-22-d1790da6ea0a45f38fdf023a6d10ef46?pvs=4)
31
+ - [ETH LATAM](https://www.notion.so/pse-team/ETHLatam-22-6250f0f076984879aa38078d212a61f1?pvs=4)
32
+ - [ETH Barcelona](https://www.notion.so/pse-team/ETHBarcelona-22-15a5c2d1464c41429d0865b59a4e3242?pvs=4)
33
+ - [ETH Colombia](https://www.notion.so/pse-team/ETHColombia-22-af1faa11a6d24c36b7ec846e1f2bfc5d?pvs=4)
34
+ - [ETH Prague](https://www.notion.so/pse-team/ETHPrague-22-948c98e6e2fd4b509d44cfc7445bdff6?pvs=4)
35
+ - [ETH Dam](https://www.notion.so/pse-team/ETHDam-23-131c320619db4a75b9478bb39ad1d793?pvs=4)
@@ -0,0 +1,4 @@
1
+ {
2
+ "label": "Contributing",
3
+ "position": 10
4
+ }
@@ -0,0 +1,92 @@
1
+ ---
2
+ title: MACI Contributor Code of Conduct
3
+ description: The Contributor Covenant Code of Conduct for MACI
4
+ sidebar_label: Code of Conduct
5
+ sidebar_position: 2
6
+ ---
7
+
8
+ # Contributor Covenant Code of Conduct
9
+
10
+ Please see our guide on [contributing to MACI](/docs/contributing).
11
+
12
+ ## Our Pledge
13
+
14
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
15
+
16
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
17
+
18
+ ## Our Standards
19
+
20
+ Examples of behavior that contributes to a positive environment for our community include:
21
+
22
+ - Demonstrating empathy and kindness toward other people
23
+ - Being respectful of differing opinions, viewpoints, and experiences
24
+ - Giving and gracefully accepting constructive feedback
25
+ - Accepting responsibility and apologizing to those affected by our mistakes,
26
+ and learning from the experience
27
+ - Focusing on what is best not just for us as individuals, but for the
28
+ overall community
29
+
30
+ Examples of unacceptable behavior include:
31
+
32
+ - The use of sexualized language or imagery, and sexual attention or
33
+ advances of any kind
34
+ - Trolling, insulting or derogatory comments, and personal or political attacks
35
+ - Public or private harassment
36
+ - Publishing others' private information, such as a physical or email
37
+ address, without their explicit permission
38
+ - Other conduct which could reasonably be considered inappropriate in a
39
+ professional setting
40
+
41
+ ## Enforcement Responsibilities
42
+
43
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
44
+
45
+ Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
46
+
47
+ ## Scope
48
+
49
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
50
+
51
+ ## Enforcement
52
+
53
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement.
54
+ All complaints will be reviewed and investigated promptly and fairly.
55
+
56
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
57
+
58
+ ## Enforcement Guidelines
59
+
60
+ Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
61
+
62
+ ### 1. Correction
63
+
64
+ **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
65
+
66
+ **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
67
+
68
+ ### 2. Warning
69
+
70
+ **Community Impact**: A violation through a single incident or series of actions.
71
+
72
+ **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
73
+
74
+ ### 3. Temporary Ban
75
+
76
+ **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
77
+
78
+ **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
79
+
80
+ ### 4. Permanent Ban
81
+
82
+ **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
83
+
84
+ **Consequence**: A permanent ban from any sort of public interaction within the community.
85
+
86
+ ## Attribution
87
+
88
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.0, [available here](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html).
89
+
90
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
91
+
92
+ For answers to common questions about this code of conduct, see [the FAQ](https://www.contributor-covenant.org/faq). [Translations are available here](https://www.contributor-covenant.org/translations).
@@ -0,0 +1,149 @@
1
+ ---
2
+ title: Contributing to MACI
3
+ description: Instructions on how to contribute to MACI
4
+ sidebar_label: Contributing
5
+ sidebar_position: 1
6
+ ---
7
+
8
+ # Contributing
9
+
10
+ 🎉 Thank you for being interested in contributing to MACI! 🎉
11
+
12
+ Feel welcome and read the following sections in order to know how to ask questions and how to work on something.
13
+
14
+ All members of our community are expected to follow our [Code of Conduct](/docs/contributing/code-of-conduct). Please make sure you are welcoming and friendly in all of our spaces.
15
+
16
+ We're really glad you're reading this, because we need volunteer developers to help this project come to fruition. There is a lot we want to achieve, and this can only be made possible thanks to your support. 👏
17
+
18
+ **Disclaimer**: We do not accept minor grammatical fixes (e.g., correcting typos, rewording sentences) unless they significantly improve clarity in technical documentation. These contributions, while appreciated, are not a priority for merging. If there is a grammatical error feel free to message the team [here](https://discord.gg/akDcCB69).
19
+
20
+ ## How You Can Contribute
21
+
22
+ 1. **Report Bugs**: Identify and describe issues.
23
+ 2. **Suggest Features**: Share your ideas for improvements.
24
+ 3. **Code Contributions**: Fix bugs, add features, or refactor existing code.
25
+ 4. **Improve Documentation**: Help us keep the docs clear and up to date.
26
+ 5. **Engage with the Community**: Help answer questions or participate in discussions.
27
+
28
+ ## Issues
29
+
30
+ The best way to contribute to our projects is by opening a [new issue](https://github.com/privacy-scaling-explorations/maci/issues) or tackling one of the issues listed [here](https://github.com/privacy-scaling-explorations/maci/contribute).
31
+
32
+ Before submitting an issue:
33
+
34
+ - Search existing issues to avoid duplicates
35
+ - Check documentation/FAQ
36
+ - Test with the latest version
37
+
38
+ :::info
39
+ If you pick up an issue and are assigned to it by the maintaining team, please be advised that from time to time the team will reach out to check on the progress of the work. If you are working on the issue you are assigned but need more time or help, please let us know and we will be happy to assist you. We understand that contributors have other commitments too, and we appreciate every contribution, no matter the pace. If you fail to respond after 2 weeks, we will gently remind you to provide an update. If there is still no activity after that, we may reassign the issue to ensure project momentum, but we also welcome you to reengage with the project at any time when you are more available.
40
+ :::
41
+
42
+ ## Pull Requests
43
+
44
+ Pull requests are great if you want to add a feature or fix a bug. Here's a quick guide:
45
+
46
+ 1. Ensure there is an issue tracking your work.
47
+
48
+ 2. Fork the repo.
49
+
50
+ 3. Run the tests. We only take pull requests with passing tests.
51
+
52
+ 4. Add a test for your change. Only refactoring and documentation changes require no new tests.
53
+
54
+ 5. Make sure to check out the [Style Guide](#style-guide) and ensure that your code complies with the rules.
55
+
56
+ 6. Make sure you read our [GitHub processes](https://github.com/privacy-scaling-explorations/maci/discussions/847) documentation.
57
+
58
+ 7. Make the test pass.
59
+
60
+ 8. Commit your changes. Please make sure your forked `dev` branch is synced as well feature/fix branch and there are no "temp" commits (like wip, fix typo/lint/types and etc). We recommend to squash the feature/fix branch commits before creating PR. You can use this command for it:
61
+
62
+ ```bash
63
+ git reset $(git merge-base dev $(git rev-parse --abbrev-ref HEAD))
64
+ ```
65
+
66
+ 9. Push to your fork and submit a pull request on our `dev` branch. Please provide us with some explanation of why you made the changes you made. For new features make sure to explain a standard use case to us.
67
+
68
+ 10. Link any issues that the PR is addressing as described in our processes documentation.
69
+
70
+ ## CI (Github Actions) Tests
71
+
72
+ We use GitHub Actions to test each PR before it is merged.
73
+
74
+ When you submit your PR (or later change that code), a CI build will automatically be kicked off. A note will be added to the PR, and will indicate the current status of the build.
75
+
76
+ Please refer to our [testing guide](/docs/testing) for more details on how we run tests across the monorepo.
77
+
78
+ ## Style Guide
79
+
80
+ ### Code rules
81
+
82
+ We always use ESLint and Prettier. To check that your code follows the rules, simply run the pnpm script `pnpm run lint` and `pnpm run prettier`. When committing, `eslint` is run automatically, so you will be required to fix any error before being able to push a commit. We highly recommend to tackle warnings as well.
83
+
84
+ ### Commits rules
85
+
86
+ For commits it is recommended to use [Conventional Commits](https://www.conventionalcommits.org). You may install the [commitizen](https://commitizen-tools.github.io/commitizen/) tool to help you with this.
87
+
88
+ Each commit message consists of a **header**, a **body** and a **footer**. The **header** has a special format that includes a **type**, a **scope** and a **subject**:
89
+
90
+ ```
91
+ <type>(<scope>): <subject>
92
+ <BLANK LINE>
93
+ <body>
94
+ <BLANK LINE>
95
+ <footer>
96
+ ```
97
+
98
+ The **header** is mandatory and the **scope** of the header must contain the name of the component you are working on.
99
+
100
+ #### Type
101
+
102
+ The type must be one of the following:
103
+
104
+ - feat: A new feature
105
+ - fix: A bug fix
106
+ - docs: Documentation only changes
107
+ - style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
108
+ - refactor: A code change that neither fixes a bug nor adds a feature (improvements of the code structure)
109
+ - perf: A code change that improves the performance
110
+ - test: Adding missing or correcting existing tests
111
+ - build: Changes that affect the build system or external dependencies (example scopes: gulp, npm)
112
+ - ci: Changes to CI configuration files and scripts (example scopes: travis, circle)
113
+ - chore: Other changes that don't modify src or test files
114
+ - revert: Reverts a previous commit
115
+
116
+ #### Scope
117
+
118
+ The scope should be the name of the feature or package modified (as perceived by the person reading the changelog generated from commit messages).
119
+
120
+ #### Subject
121
+
122
+ The subject contains a succinct description of the change:
123
+
124
+ - Use the imperative, present tense: "change" not "changed" nor "changes"
125
+ - Don't capitalize the first letter
126
+ - No dot (.) at the end
127
+
128
+ #### Body
129
+
130
+ Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes". The body should include the motivation for the change and contrast this with previous behavior.
131
+
132
+ ### Branch rules
133
+
134
+ - Branches should generally be created off of the base branch (`dev` )
135
+ - Avoid long descriptive names for long-lived branches
136
+ - Use kebab-case (no CamelCase)
137
+ - Use grouping tokens (words) at the beginning of your branch names (in a similar way to the `type` of commit)
138
+ - Define and use short lead tokens to differentiate branches in a way that is meaningful to your workflow
139
+ - Use slashes to separate parts of your branch names
140
+ - Remove branch after merge if it is not important
141
+
142
+ Examples:
143
+
144
+ ```bash
145
+ git branch -b docs/readme
146
+ git branch -b test/a-feature
147
+ git branch -b feat/sidebar
148
+ git branch -b fix/b-feature
149
+ ```