@maci-protocol/website 0.0.0-ci.9342f07 → 0.0.0-ci.9819a21

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 (100) hide show
  1. package/LICENSE +1 -2
  2. package/blog/2024-02-28-maci-v1.2.0.md +2 -2
  3. package/blog/2024-08-10-maci-v2.md +1 -1
  4. package/blog/2025-03-21-roadmap-2025.md +1 -1
  5. package/blog/2025-08-18-maci-aragon-plugin.md +107 -0
  6. package/docusaurus.config.ts +9 -3
  7. package/package.json +16 -15
  8. package/src/pages/roadmap.md +39 -80
  9. package/static/img/circuits/MACI-Circuits.excalidraw +79 -79
  10. package/static/img/circuits/ecdh.svg +1 -1
  11. package/static/img/circuits/messageToCommand.svg +1 -1
  12. package/static/img/circuits/messageValidator.svg +1 -1
  13. package/static/img/circuits/privToPubkey.svg +1 -1
  14. package/static/img/circuits/processMessages.svg +1 -1
  15. package/static/img/circuits/processMessagesInputHasher.svg +1 -1
  16. package/static/img/circuits/processMessages_2_0.svg +1 -1
  17. package/static/img/circuits/processOne.svg +1 -1
  18. package/static/img/circuits/processTopup.svg +1 -1
  19. package/static/img/circuits/quinBatchLeavesExists.svg +1 -1
  20. package/static/img/circuits/quinCheckRoot.svg +1 -1
  21. package/static/img/circuits/quinGeneratePathIndices.svg +1 -1
  22. package/static/img/circuits/quinSelector.svg +1 -1
  23. package/static/img/circuits/resultsCommitmentVerifier.svg +1 -1
  24. package/static/img/circuits/splicer.svg +1 -1
  25. package/static/img/circuits/tallyInputHasher.svg +1 -1
  26. package/static/img/circuits/tallyVotes.svg +1 -1
  27. package/static/img/circuits/verifySignature.svg +1 -1
  28. package/versioned_docs/version-v0.x/introduction.md +0 -4
  29. package/versioned_docs/version-v0.x/quadratic-vote-tallying-circuit.md +16 -16
  30. package/versioned_docs/version-v1.2/circuits.md +8 -8
  31. package/versioned_docs/version-v1.2/contributing/contributing.md +4 -4
  32. package/versioned_docs/version-v1.2/deployment.md +1 -1
  33. package/versioned_docs/version-v1.2/integrating.md +1 -1
  34. package/versioned_docs/version-v1.2/key-change.md +1 -1
  35. package/versioned_docs/version-v1.2/poll-types.md +1 -1
  36. package/versioned_docs/version-v1.2/testing-in-detail.md +3 -3
  37. package/versioned_docs/version-v1.2/testing.md +1 -1
  38. package/versioned_docs/version-v1.2/topup.md +1 -1
  39. package/versioned_docs/version-v1.2/typedoc/core/index.md +2 -2
  40. package/versioned_docs/version-v1.2/versioning.md +3 -3
  41. package/versioned_docs/version-v1.2/workflow.md +1 -1
  42. package/versioned_docs/version-v2.x/contributing/contributing.md +4 -4
  43. package/versioned_docs/version-v2.x/core-concepts/key-change.md +1 -1
  44. package/versioned_docs/version-v2.x/core-concepts/merkle-trees.md +1 -1
  45. package/versioned_docs/version-v2.x/core-concepts/poll-types.md +1 -1
  46. package/versioned_docs/version-v2.x/core-concepts/workflow.md +1 -1
  47. package/versioned_docs/version-v2.x/guides/integrating.md +1 -1
  48. package/versioned_docs/version-v2.x/guides/testing/testing-in-detail.md +3 -3
  49. package/versioned_docs/version-v2.x/guides/testing/testing.md +1 -1
  50. package/versioned_docs/version-v2.x/processes/versioning.md +3 -3
  51. package/versioned_docs/version-v2.x/supported-networks/deployed-contracts.md +7 -7
  52. package/versioned_docs/version-v2.x/technical-references/smart-contracts/AccQueue.md +1 -1
  53. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MACI.md +1 -1
  54. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MessageProcessor.md +1 -1
  55. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Params.md +1 -1
  56. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Poll.md +1 -1
  57. package/versioned_docs/version-v2.x/technical-references/smart-contracts/PollFactory.md +1 -1
  58. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Tally.md +1 -1
  59. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VkRegistry.md +1 -1
  60. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VoiceCreditProxy.md +1 -1
  61. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/processMessages.md +4 -4
  62. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/tallyVotes.md +2 -2
  63. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +3 -3
  64. package/versioned_docs/version-v3.x/contributing/contributing.md +11 -5
  65. package/versioned_docs/version-v3.x/core-concepts/key-change.md +29 -29
  66. package/versioned_docs/version-v3.x/core-concepts/maci-keys.md +1 -1
  67. package/versioned_docs/version-v3.x/core-concepts/poll-types.md +33 -9
  68. package/versioned_docs/version-v3.x/core-concepts/polls.md +34 -10
  69. package/versioned_docs/version-v3.x/core-concepts/spec.md +40 -106
  70. package/versioned_docs/version-v3.x/core-concepts/workflow.md +2 -2
  71. package/versioned_docs/version-v3.x/guides/compile-circuits.md +36 -20
  72. package/versioned_docs/version-v3.x/guides/integrating.md +10 -10
  73. package/versioned_docs/version-v3.x/guides/sdk.md +121 -0
  74. package/versioned_docs/version-v3.x/guides/testing/testing-in-detail.md +4 -4
  75. package/versioned_docs/version-v3.x/guides/testing/testing-introduction.md +38 -6
  76. package/versioned_docs/version-v3.x/guides/troubleshooting.md +64 -19
  77. package/versioned_docs/version-v3.x/processes/versioning.md +3 -3
  78. package/versioned_docs/version-v3.x/quick-start.md +29 -21
  79. package/versioned_docs/version-v3.x/resources.md +1 -0
  80. package/versioned_docs/version-v3.x/security/audit.md +2 -2
  81. package/versioned_docs/version-v3.x/security/trusted-setup.md +36 -36
  82. package/versioned_docs/version-v3.x/supported-networks/costs.md +725 -0
  83. package/versioned_docs/version-v3.x/supported-networks/deployed-contracts.md +9 -9
  84. package/versioned_docs/version-v3.x/supported-networks/supported-networks.md +16 -0
  85. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MACI.md +7 -7
  86. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MessageProcessor.md +1 -1
  87. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Params.md +2 -2
  88. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Policies.md +1 -1
  89. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Poll.md +8 -8
  90. package/versioned_docs/version-v3.x/technical-references/smart-contracts/PollFactory.md +1 -1
  91. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Tally.md +4 -4
  92. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VkRegistry.md +8 -8
  93. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VoiceCreditProxy.md +1 -1
  94. package/versioned_docs/version-v3.x/technical-references/technical-references.md +8 -8
  95. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +4 -4
  96. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +81 -17
  97. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/setup.md +3 -3
  98. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/tallyVotes.md +6 -6
  99. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/utilities.md +9 -9
  100. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +3 -3
package/LICENSE CHANGED
@@ -1,7 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 Barry WhiteHat, Kendrick Tan, Kobi Gurkan, Kirill Goncharov
4
- Cory Dickson, Han Jian, Chih-Cheng Liang, and Koh Wei Jie
3
+ Copyright (c) 2025 Ethereum Foundation
5
4
 
6
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
6
  of this software and associated documentation files (the "Software"), to deal
@@ -94,7 +94,7 @@ Following the successful completion of our [MACI trusted setup ceremony](https:/
94
94
 
95
95
  To accomplish this, we'll leverage the tooling of [P0tion](https://github.com/privacy-scaling-explorations/p0tion), which helps to streamline and automate Groth16 phase2 ceremonies.
96
96
 
97
- We'll update this page after the ceremony completes to include the production-ready zkey artifacts. In the meantime, the artifacts for v.1.1.1 can be found on our [website](/docs/security/trusted-setup), and the [`tallyVotes`](https://github.com/privacy-scaling-explorations/maci/blob/dev/circuits/circom/tallyVotes.circom) artifacts can still be used in production.
97
+ We'll update this page after the ceremony completes to include the production-ready zkey artifacts. In the meantime, the artifacts for v.1.1.1 can be found on our [website](/docs/security/trusted-setup), and the [`tallyVotes`](https://github.com/privacy-scaling-explorations/maci/blob/main/circuits/circom/tallyVotes.circom) artifacts can still be used in production.
98
98
 
99
99
  ## Get Involved
100
100
 
@@ -106,7 +106,7 @@ For those looking to contribute directly, report bugs, or offer feedback, our [G
106
106
 
107
107
  For practical implementation insights, review our docs as well as the [clr.fund](https://github.com/clrfund/monorepo/) and [QF](https://github.com/quadratic-gardens/qfi) repositories as reference implementations. Both are quadratic funding implementations, a mechanism which otherwise is highly susceptible to collusion and bribery. Most notably, clr.fund is already working on integrating MACI v1.2.0, after having used v0.x until now. You can follow their development effort under this [GitHub branch](https://github.com/clrfund/monorepo/tree/feat/maci-v1).
108
108
 
109
- For any other questions or feedback, please reach out to us via [PSE's Discord](https://discord.com/invite/sF5CT5rzrR), in our [`#🗳️-maci` channel](https://https//discord.com/channels/943612659163602974/1164613809730748507). We're excited to connect and collaborate with you!
109
+ For any other questions or feedback, please reach out to us via [PSE's Discord](https://discord.com/invite/sF5CT5rzrR), in our [`#🗳️-maci` channel](https://discord.com/channels/943612659163602974/1164613809730748507). We're excited to connect and collaborate with you!
110
110
 
111
111
  ## References
112
112
 
@@ -84,7 +84,7 @@ For those looking to contribute directly, report bugs, or offer feedback, our [G
84
84
 
85
85
  For practical implementation insights, review our docs as well as the [clr.fund](https://github.com/clrfund/monorepo/), [Allo Stack with MACI](https://github.com/gitcoinco/MACI_QF), and [maci-platform](https://github.com/privacy-scaling-explorations/maci-platform) repositories as reference implementations. The first two integrations are quadratic funding implementations, a mechanism which otherwise is highly susceptible to collusion and bribery.
86
86
 
87
- For any other questions or feedback, please reach out to us via [PSE's Discord](https://discord.com/invite/sF5CT5rzrR), in our [`#🗳️-maci` channel](https://https//discord.com/channels/943612659163602974/1164613809730748507). We're excited to connect and collaborate with you!
87
+ For any other questions or feedback, please reach out to us via [PSE's Discord](https://discord.com/invite/sF5CT5rzrR), in our [`#🗳️-maci` channel](https://discord.com/channels/943612659163602974/1164613809730748507). We're excited to connect and collaborate with you!
88
88
 
89
89
  ## References
90
90
 
@@ -26,7 +26,7 @@ We are happy to announce that we completed the work on developing a service to a
26
26
 
27
27
  This server exposes a REST API, as well as some Websocket endpoints (for proof generation only). We soon will publish a detailed guide on how to use, and how to integrate it via its SDK -stay tuned for a separate blog post.
28
28
 
29
- For anyone interested in the code, you can find it [here](https://github.com/privacy-scaling-explorations/maci/tree/dev/apps/coordinator).
29
+ For anyone interested in the code, you can find it [here](https://github.com/privacy-scaling-explorations/maci/tree/main/apps/coordinator).
30
30
 
31
31
  ### MACI Offchain voting support
32
32
 
@@ -0,0 +1,107 @@
1
+ ---
2
+ slug: maci-aragon-plugin
3
+ title: MACI Aragon Plugin
4
+ description: A MACI plugin for Aragon OSx to enable private voting in DAOs
5
+ authors:
6
+ - name: ctrlc03
7
+ title: MACI former team lead
8
+ url: https://x.com/ctrlc03
9
+ image_url: https://avatars.githubusercontent.com/u/93448202?v=4
10
+ - name: John Guilding
11
+ title: MACI team lead
12
+ url: https://x.com/john_guilding
13
+ image_url: https://pbs.twimg.com/profile_images/1629144990914945024/C6_xsK78_400x400.jpg
14
+ - name: NicoSerranoP
15
+ title: MACI team member
16
+ url: https://x.com/NicoSerranoP
17
+ image_url: https://avatars.githubusercontent.com/u/38594836?v=4
18
+ tags: [voting, security, anonymity, Aragon, MACI, development]
19
+ excerpt: "A MACI plugin for Aragon OSx to enable private voting in DAOs"
20
+ ---
21
+
22
+ Hey Anon,
23
+
24
+ Welcome to another MACI blogpost. Today we are going to be looking at a voting plugin we have been developing to work with the [Aragon OSx stack](https://www.aragon.org/osx).
25
+
26
+ As mentioned in our [latest roadmap blog post](https://maci.pse.dev/blog/2025-Roadmap#2025---what-will-we-focus-the-rest-of-the-year), our team decided to focus on supporting governance projects by integrating with tooling providers such as [Aragon](https://www.aragon.org/). Look out for further announcements over the next month. We're working on some exciting additions to the roadmap to accelerate private governance on Ethereum.
27
+
28
+ So why integrate MACI with Aragon OSx? Our thesis is simple: \***\*private voting will increase voter participation and protect those voting. It will also lead to more honest and accurate outcomes as people can vote more honestly.\*\***
29
+
30
+ Current public voting systems create barriers to honest participation. Voters face social pressure, fear of retaliation, and concerns about how their choices might affect future opportunities. Private voting removes these barriers, enabling DAOs to capture the true preferences of their communities.
31
+
32
+ We chose to integrate with Aragon because their OSx platform provides an excellent foundation for custom DAO governance, and as a reputable team building in the open, they're the perfect partner for this integration.
33
+
34
+ ### The real cost of public voting
35
+
36
+ While transparency is often celebrated in crypto, public voting creates serious barriers to honest participation that threaten the legitimacy of DAO governance.
37
+
38
+ **Fear of retaliation keeps voters silent.** Large token holders can pressure smaller voters by threatening to exclude them from future opportunities, airdrops, or partnerships. When voting records are public, retaliation becomes easy to execute, leading many to abstain rather than risk consequences.
39
+
40
+ **Social pressure distorts genuine preferences.** Voters often wait to see how others vote before casting their own ballot, leading to herding behavior that doesn't reflect genuine preferences. Some even [say](https://x.com/LefterisJP/status/1921562225333916094) governance voting has devolved into a game of politics. The "follow the whale" mentality and politics involved undermine the democratic ideals DAOs strive for.
41
+
42
+ **Vote verification enables problematic markets.** When votes are public, it also creates conditions where governance power can be openly [traded](https://www.tronweekly.com/arbitrum-vote-buying-scandal-how-5-eth-shook/), as buyers can verify they received what they paid for.
43
+
44
+ **Public real time results can enable whales intervention.** If the votes are public and visible in real time while the voting period is happening, whales (or users through token loans) could influence the decision by using their voting power to overpower the community decision.
45
+
46
+ ### Why MACI
47
+
48
+ MACI (Minimal Anti Collusion Infrastructure) is a private voting protocol that aims to reduce collusion and coercion with receipt freeness - this makes it the logical next step for DAOs that really care about the problems highlighted above.
49
+
50
+ In more detail, every vote is encrypted and can only be decrypted for tallying, by a trusted entity referred to as the coordinator. Voters can override their votes at any point during the voting period, and thus without a clear receipt for their vote, they are not able to prove beyond reasonable doubt that they actually voted for an option. This discourages bribers from buying votes and other voters from attempting to collude.
51
+
52
+ While the coordinator can decrypt votes, they cannot produce an incorrect tally or censor votes, thanks to zero knowledge proofs and smart contracts.
53
+
54
+ For more details about MACI and how it works, we recommend reading our other blogposts such as this introductory [article](https://maci.pse.dev/blog/maci-for-beginners) and our comprehensive documentation [website](https://maci.pse.dev/docs/introduction).
55
+
56
+ ### How does Aragon OSx work
57
+
58
+ Aragon OSx is a smart contract framework that works on EVM compatible chains. DAOs can easily deploy custom governance stacks using Aragon OSx, and can benefit from several plugins to extend their functionality over time. This plugin architecture allows DAOs to customise their governance without rebuilding from scratch.
59
+
60
+ A plugin is a smart contract with custom governance logic, limited in scope, and with single-purpose logic that can be used to extend OSx-based organisations. Examples include [token voting](https://docs.aragon.org/token-voting/1.x/index.html) and [multisig](https://docs.aragon.org/multisig/1.x/index.html), and now.. privacy-preserving voting through MACI.
61
+
62
+ ### How does the MACI plugin work
63
+
64
+ The plugin allows DAO members to create new proposals by calling a smart contract function: `createProposal`. The function checks that the caller has enough governance tokens - this minimum amount is set by the DAO at deployment time. The plugin creates a new MACI poll that hosts the encrypted private votes for that particular proposal.
65
+
66
+ The plugin then captures the current block number (minus one) as a snapshot to determine voter eligibility. Once they decide to vote, they can register their interest to vote via their DAO frontend (in MACI's context we call this process _join a poll_), and their voting power is determined by their token balance at the time of proposal creation. Voters can use their real wallet holding their tokens to register themselves by publishing a MACI public key created on their devices. After that, the voter can use any wallet to submit an encrypted message containing the registered public key and their selected option.
67
+
68
+ Voters are then able to vote using their full voting power by choosing one of the options available, which at this time are Yes, No or Abstain. Voting is completely handled by MACI’s smart contracts, therefore voters do not actually ever interact with the DAO plugin.
69
+
70
+ Once the proposal ends, MACI’s backend service (the [coordinator service](https://github.com/privacy-scaling-explorations/maci/tree/dev/apps/coordinator)), starts processing the votes, and generate zk-SNARK proofs to be validated on chain. Voters can be sure of the correct execution thanks to those proofs verifying on chain. Finally, the results are uploaded and the proposal execution can be triggered.
71
+
72
+ The full flow can be observed in the diagram below:
73
+
74
+ ![new-flow-maci](https://hackmd.io/_uploads/Sktza18Xge.png)
75
+
76
+ A proposal execution can range from transferring funds, calling a function on the DAO smart contract itself, calling out an external contract (for instance to initiate a token swap), or setting up a new plugin.
77
+
78
+ An example proposal shown below, with a proposal requesting users to vote on whether they are happy to convert part of the DAOs USDC reserves to ETH.
79
+
80
+ ![dao1](https://hackmd.io/_uploads/rk7C3dHXll.png)
81
+
82
+ The familiar voting interface makes privacy seamless - voters simply select their choice without needing to understand the cryptography running behind the scenes.
83
+
84
+ ![voting1](https://hackmd.io/_uploads/H1TR3OHXxg.png)
85
+
86
+ ### Implementation Considerations
87
+
88
+ - **Network Support:** Currently compatible with all EVM chains such as Ethereum, Arbitrum, Optimism, and some zkEVM networks such as Scroll and Linea. [Here](https://maci.pse.dev/docs/supported-networks/) is a list of all compatible networks.
89
+ - **Timeline:** Vote processing is not immediate due to the need to process votes offchain and to generate zk-SNARK proofs of correct execution. The time it takes to process votes can be reduced by using more powerful hardware.
90
+ - **Reliance on trusted coordinator:** MACI in its current form relies on a trusted coordinator entity which can decrypt the votes - this is an automated piece of software that can run on a server or a Trusted Execution Environment for more security. The team is working on decentralising the coordinator entity and will soon begin working on an upgraded version that uses homomorphic encryption and threshold encryption to distribute the responsibilities across multiple entities. Please note that while the coordinator can see the votes, they cannot censor users nor provide incorrect results.
91
+ - **Costs:** Using MACI can be more costly than traditional blockchain-based voting. While these costs are negligible in layer 2 networks, costs can increase in Ethereum mainnet. Please refer to our [costs](https://maci.pse.dev/docs/supported-networks/costs) section in the documentation website for more details on current benchmarks.
92
+
93
+ ### Next steps
94
+
95
+ As DAOs evolve from experimental communities to serious organisations managing significant resources, governance systems must evolve too. The current landscape presents an ideal opportunity for DAOs to pioneer MACI, thus we are looking for forward-thinking DAOs to pilot MACI’s governance plugin - especially those facing challenges around voter participation, sensitive decision-making, or community pressure. Ready to be among the first? Reach out at [maci@pse.dev](mailto:maci@pse.dev) or join our [Discord](https://discord.com/invite/sF5CT5rzrR). Governance on Ethereum needs a privacy shake up, stay in the loop if you're interested in hearing what else the team has been working on.
96
+
97
+ ### References and resources
98
+
99
+ - [MACI repo](https://github.com/privacy-scaling-explorations/maci)
100
+ - [MACI voting plugin](https://github.com/privacy-scaling-explorations/maci-voting-plugin-aragon)
101
+ - [MACI -Aragon sample frontend](https://github.com/privacy-scaling-explorations/maci-aragon-osx-gov-app)
102
+ - [Aragon OSx](https://github.com/aragon/osx)
103
+ - [Aragon docs](https://docs.aragon.org/)
104
+
105
+ ## Acknowledgements
106
+
107
+ Thanks to the Aragon team for review.
@@ -46,7 +46,7 @@ async function getConfig(): Promise<Config> {
46
46
  routeBasePath: "docs/",
47
47
  sidebarPath: "./sidebars.ts",
48
48
  editUrl: ({ versionDocsDirPath, docPath }) =>
49
- `${GITHUB_URL}/edit/dev/website/${versionDocsDirPath}/${docPath}`,
49
+ `${GITHUB_URL}/edit/dev/apps/website/${versionDocsDirPath}/${docPath}`,
50
50
  remarkPlugins: [remarkMath],
51
51
  rehypePlugins: [rehypeKatex],
52
52
  includeCurrentVersion: false,
@@ -59,7 +59,7 @@ async function getConfig(): Promise<Config> {
59
59
  blog: {
60
60
  showReadingTime: true,
61
61
 
62
- editUrl: ({ blogDirPath, blogPath }) => `${GITHUB_URL}/edit/dev/website/${blogDirPath}/${blogPath}`,
62
+ editUrl: ({ blogDirPath, blogPath }) => `${GITHUB_URL}/edit/dev/apps/website/${blogDirPath}/${blogPath}`,
63
63
  remarkPlugins: [remarkMath],
64
64
  rehypePlugins: [rehypeKatex],
65
65
  onUntruncatedBlogPosts: "ignore",
@@ -204,9 +204,15 @@ async function getConfig(): Promise<Config> {
204
204
  phpLoader: "matomo.php",
205
205
  jsLoader: "matomo.js",
206
206
  },
207
+ mermaid: {
208
+ theme: { light: "neutral", dark: "forest" },
209
+ },
207
210
  } satisfies Preset.ThemeConfig,
211
+ markdown: {
212
+ mermaid: true,
213
+ },
214
+ themes: ["@docusaurus/theme-mermaid"],
208
215
  };
209
-
210
216
  return config;
211
217
  }
212
218
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maci-protocol/website",
3
- "version": "0.0.0-ci.9342f07",
3
+ "version": "0.0.0-ci.9819a21",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -21,30 +21,31 @@
21
21
  "types": "tsc -p tsconfig.json --noEmit"
22
22
  },
23
23
  "dependencies": {
24
- "@docusaurus/core": "^3.7.0",
25
- "@docusaurus/preset-classic": "^3.7.0",
26
- "@docusaurus/theme-classic": "^3.7.0",
27
- "@docusaurus/theme-common": "^3.7.0",
28
- "@easyops-cn/docusaurus-search-local": "^0.49.1",
24
+ "@docusaurus/core": "^3.8.1",
25
+ "@docusaurus/preset-classic": "^3.8.1",
26
+ "@docusaurus/theme-classic": "^3.8.1",
27
+ "@docusaurus/theme-common": "^3.8.1",
28
+ "@docusaurus/theme-mermaid": "^3.8.1",
29
+ "@easyops-cn/docusaurus-search-local": "^0.52.1",
29
30
  "@mdx-js/react": "^3.1.0",
30
31
  "clsx": "^2.1.1",
31
32
  "docusaurus-plugin-image-zoom": "^3.0.1",
32
33
  "docusaurus-plugin-matomo": "^0.0.8",
33
34
  "gray-matter": "^4.0.3",
34
35
  "prism-react-renderer": "^2.4.1",
35
- "react": "^19.1.0",
36
- "react-dom": "^19.1.0",
36
+ "react": "^19.1.1",
37
+ "react-dom": "^19.1.1",
37
38
  "rehype-katex": "^7.0.1",
38
39
  "remark-math": "^6.0.0"
39
40
  },
40
41
  "devDependencies": {
41
- "@docusaurus/module-type-aliases": "^3.7.0",
42
- "@docusaurus/tsconfig": "^3.7.0",
43
- "@docusaurus/types": "^3.7.0",
44
- "@types/node": "^22.14.0",
45
- "@types/react": "^19.1.0",
42
+ "@docusaurus/module-type-aliases": "^3.8.1",
43
+ "@docusaurus/tsconfig": "^3.8.1",
44
+ "@docusaurus/types": "^3.8.1",
45
+ "@types/node": "^24.2.0",
46
+ "@types/react": "^19.1.9",
46
47
  "ts-node": "^10.9.2",
47
- "typescript": "^5.8.3"
48
+ "typescript": "^5.9.2"
48
49
  },
49
50
  "browserslist": {
50
51
  "production": [
@@ -61,5 +62,5 @@
61
62
  "engines": {
62
63
  "node": ">=18.0"
63
64
  },
64
- "gitHead": "3f090a839442932053d339f55a824dabbe75e0dc"
65
+ "gitHead": "43c06d952ebc6b9541c89ccab8df61bc8205794c"
65
66
  }
@@ -8,14 +8,14 @@ description: An outline of the 2024 MACI team & product roadmap
8
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
9
 
10
10
  :::info
11
- This document aims to outline the 2024 MACI roadmap. Our roadmap is under constant discussion and evolution (e.g. see our [Q1](/blog/2024-team-roadmap) and [Q2](/blog/2024-q2-roadmap) updates) but we try our best to maintain this page to provide a high-level overview. Please join the conversation in our [latest GitHub discussion](https://github.com/privacy-scaling-explorations/maci/discussions/1381) if you have feedback!
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
12
 
13
- **Last updated: 2024-04-16**
13
+ **Last updated: 2025-04-23**
14
14
  :::
15
15
 
16
16
  ## Team description
17
17
 
18
- The MACI core team is a small collaborative engineering team building various projects within [Privacy & Scaling Explorations (PSE)](https://pse.dev/). Our sustained focus is on MACI: an on-chain voting protocol that provides greatly increased collusion resistance & privacy. We also allocate a significant portion of our time to support the practical adoption of this technology by supporting community leaders to run democratic governance and public funding initiatives, like Quadratic Voting (QV), Quadratic Funding (QF), and Retroactive Public Goods Funding (RPGF) grant rounds.
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
19
 
20
20
  ## MACI mission & vision
21
21
 
@@ -29,8 +29,8 @@ Short term, our vision is to empower developers to build with MACI to create col
29
29
 
30
30
  1. ~~2021: MACI integrated by an ecosystem project~~ (✅, [clr.fund](https://github.com/clrfund/monorepo/))
31
31
  2. ~~2023: MACI integrated by a PSE project~~ (✅, [QF](https://github.com/privacy-scaling-explorations/qf))
32
- 3. 2024: MACI integrated by an additional external project
33
- 4. 2025: MACI used by multiple DAOs for governance applications & QF integrations
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
34
  5. 2028: MACI used in smaller municipal elections (counties, provinces, etc)
35
35
  6. 2030: MACI used in national elections
36
36
 
@@ -38,110 +38,69 @@ Short term, our vision is to empower developers to build with MACI to create col
38
38
 
39
39
  1. ~~2021: release MACI v1.0~~ (✅)
40
40
  2. ~~2023: build technical feasibility for 10K concurrent voters on the platform~~ (✅)
41
- 3. 2024 Q1: release MACI v1.2, with revamped documentation & educational resource
42
- 4. 2026: build technical feasibility for 100K concurrent voters on the platform
43
- 5. 2028: build technical feasibility for 1M concurrent voters on the platform
41
+ 3. 2024:
44
42
 
45
- # 2024 workstreams
43
+ - ~~Q1: release MACI v1.2, with revamped documentation & educational resource~~ (✅)
44
+ - ~~Q3: release MACI v2.0, with cleaner code and improved UX~~ (✅)
46
45
 
47
- _To achieve our mission, we’re focused on 4 major workstreams that comprise our roadmap._
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
48
49
 
49
- ## 1) MACI Developer Experience (DX)
50
+ # 2025 workstreams
50
51
 
51
- ~_50% of team’s total bandwidth_
52
+ In 2025, we are focusing on several initiatives to support the practical adoption of MACI.
52
53
 
53
- We believe that MACI is only useful to the extent that people use MACI & build on MACI.
54
+ ## 1) MACI v3.0
54
55
 
55
- Despite the power of MACI, not a single project has yet integrated MACI v1.x in a production environment. We view this as a failure, and we want to fix this. **The goal of this workstream is to make MACI as easy to understand and easy to integrate as possible.**
56
+ 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.
56
57
 
57
- ### Initiatives within this workstream:
58
+ At a high level, the new features/improvements are:
58
59
 
59
- - Implement & release a MACI v1.2 ([#856](https://github.com/privacy-scaling-explorations/maci/issues/856))
60
- - Refactor the codebase for improved quality, readability & modularity
61
- - Add code comments (with [TypeDoc](https://typedoc.org/) & [NatSpec](https://docs.soliditylang.org/en/latest/natspec-format.html)) to improve productivity
62
- - Improve tooling (e.g. cross-platform support) for ease of integration & performance
63
- - Improve/create documentation for developer onboarding & education
64
- - Revamp documentation stack (via Docusaurus) with versioning & additional resources
65
- - Voter & coordinator guides to understand full poll lifecycle
66
- - Build app templates & tutorials that can serve as reference implementations
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
67
64
 
68
- **References**
65
+ ## 2) Coordinator Service
69
66
 
70
- - [MACI v1.2 Refactoring Plan](https://github.com/privacy-scaling-explorations/maci/issues/856)
71
- - [MACI development team sprint board](https://github.com/orgs/privacy-scaling-explorations/projects/40)
72
- - [MACI v1.1.1 refactor milestone](https://github.com/privacy-scaling-explorations/maci/milestone/5)
67
+ The coordinator service is a service to automate MACI coordinator functionality. This includes:
73
68
 
74
- ## 2) MACI Community Engagement
69
+ - Contract deployment
70
+ - Subgraph deploying
71
+ - Proof generation
72
+ - Proof and results submission
75
73
 
76
- _~15% of team’s total bandwidth_
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.
77
75
 
78
- We want to proactively support adoption of MACI. **We’ll create an open source community where integrations & contributions are actively encouraged!**
76
+ ## 3) Integration with DAO's tooling provider
79
77
 
80
- This workstream relates closely to improving DX but focuses on areas that will require active maintenance, support & engagement from our team vs. improving code, documentation & educational resources that will be available online 24/7/365.
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.
81
79
 
82
- The hope here is that close interactions with integration developers & Ethereum community members will help us gather insightful user feedback so that we iterate faster to improve MACI as a product. We’ll be rolling out an agile scrum development workflow that should allow us to rapidly respond to input from the community to guide our roadmap & product direction.
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).
83
81
 
84
- ### Initiatives within this workstream:
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.
85
83
 
86
- - Allocate team bandwidth to be available to respond to the community
87
- - Support MACI integrations (starting with [clr.fund](http://clr.fund/) v1.x integration)
88
- - Revamp GitHub repo maintenance ([MACI GH processes](https://github.com/privacy-scaling-explorations/maci/issues/757))
89
- - Establish & respond to public channels ([Discord](https://discord.com/invite/sF5CT5rzrR), [Twitter](https://twitter.com/zkMACI))
90
- - Proactively engage with the ecosystem to identify collaboration opportunities (conference talks, hackathon bounties, social media)
91
- - Update our development processes to quickly react to user needs & input
84
+ ## 4) Coordinator decentralisation
92
85
 
93
- ## 3) Quadratic Funding Experiments
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:
94
87
 
95
- _~30% of team’s total bandwidth_
88
+ - Use Multi Party Computation (MPC)
89
+ - Use Homomorphic Encryption (HE)
90
+ - Use a Trusted Execution Environment (TEE)
96
91
 
97
- We’re building technical infrastructure, operational expertise & a network of communities to create a scalable way to enable community organizers to run QF rounds. The mission of our QF project has been to serve as a reference implementation on how to integrate MACI as well as support the practical adoption of this community-funding technology.
98
-
99
- [Read more about our QF initiatives here](https://qf.pse.dev/about).
100
-
101
- ### 2024 goal
102
-
103
- - Help run 12 QF/QV rounds
104
-
105
- ### Initiatives within this workstream:
106
-
107
- - Build an evaluation framework of QF rounds, to increase our sophistication around how we measure success
108
- - Landscape analysis of QF & capital-allocation projects to better understand how our efforts fit in within the broader ecosystem
109
- - Update & expand our [QF website](https://qf.pse.dev/), with public launch to generate inbound interest
110
- - Explore community collaboration opportunities (running QF rounds)
111
- - Exploring project collaboration opportunities (supporting MACI/QF integrations)
112
-
113
- **References**
114
-
115
- - [GitHub](https://github.com/privacy-scaling-explorations/qf)
116
- - [Website](https://qf.pse.dev/)
92
+ We plan to research the best approach and start the implementation within the year.
117
93
 
118
94
  ## Future R&D
119
95
 
120
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:
121
97
 
122
- ### MACI Coordinator Service
123
-
124
- - The primary responsibility of the Coordinator Service will be to:
125
- - offload and automate the tasks performed by the human coordinator
126
- - minimize proving time by parallelizing SNARK proof generation and making MACI easier to adopt
127
- - [GitHub repo](https://github.com/privacy-scaling-explorations/maci-coordinator)
128
-
129
- ### QF stack
130
-
131
- - To serve as a reference implementation on how to integrate MACI as well as support the practical adoption of this community-funding technology.
132
- - Improvements
133
- - Support QF (as of now only supports QV functionality)
134
- - Make it easier for operators to run rounds
135
- - Make it easier for end users to use
136
- - [GitHub repo](https://github.com/privacy-scaling-explorations/qf)
137
-
138
98
  ### MACI improvements
139
99
 
140
- - Unconditional Voter Privacy (e.g. [ElGamal Key Change Mechanism](https://github.com/privacy-scaling-explorations/maci/issues/796))
141
100
  - Scaling explorations, like SNARK Folding Schemes (e.g. [Nova integration](https://github.com/privacy-scaling-explorations/maci/issues/904))
142
101
  - Different matching mechanisms (e.g. [Group Wise Matching in Quadratic Funding](https://github.com/privacy-scaling-explorations/maci/issues/905))
143
- - Gas-less MACI for voters
144
- - Gas efficiency
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
145
104
 
146
105
  ## Feedback
147
106