@maci-protocol/website 0.0.0-ci.77d0530 → 0.0.0-ci.7a34e89

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 (90) hide show
  1. package/blog/2024-02-28-maci-v1.2.0.md +1 -1
  2. package/blog/2025-03-21-roadmap-2025.md +1 -1
  3. package/blog/2025-08-18-maci-aragon-plugin.md +107 -0
  4. package/docusaurus.config.ts +9 -3
  5. package/package.json +16 -15
  6. package/static/img/circuits/MACI-Circuits.excalidraw +44 -44
  7. package/static/img/circuits/processMessages.svg +1 -1
  8. package/static/img/circuits/processMessages_2_0.svg +1 -1
  9. package/static/img/circuits/processOne.svg +1 -1
  10. package/static/img/circuits/processTopup.svg +1 -1
  11. package/static/img/circuits/quinBatchLeavesExists.svg +1 -1
  12. package/static/img/circuits/quinCheckRoot.svg +1 -1
  13. package/static/img/circuits/quinGeneratePathIndices.svg +1 -1
  14. package/static/img/circuits/quinSelector.svg +1 -1
  15. package/static/img/circuits/resultsCommitmentVerifier.svg +1 -1
  16. package/static/img/circuits/splicer.svg +1 -1
  17. package/static/img/circuits/tallyVotes.svg +1 -1
  18. package/versioned_docs/version-v0.x/introduction.md +0 -4
  19. package/versioned_docs/version-v0.x/quadratic-vote-tallying-circuit.md +16 -16
  20. package/versioned_docs/version-v1.2/circuits.md +8 -8
  21. package/versioned_docs/version-v1.2/contributing/contributing.md +4 -4
  22. package/versioned_docs/version-v1.2/deployment.md +1 -1
  23. package/versioned_docs/version-v1.2/integrating.md +1 -1
  24. package/versioned_docs/version-v1.2/key-change.md +1 -1
  25. package/versioned_docs/version-v1.2/poll-types.md +1 -1
  26. package/versioned_docs/version-v1.2/testing-in-detail.md +3 -3
  27. package/versioned_docs/version-v1.2/testing.md +1 -1
  28. package/versioned_docs/version-v1.2/topup.md +1 -1
  29. package/versioned_docs/version-v1.2/typedoc/core/index.md +2 -2
  30. package/versioned_docs/version-v1.2/versioning.md +3 -3
  31. package/versioned_docs/version-v1.2/workflow.md +1 -1
  32. package/versioned_docs/version-v2.x/contributing/contributing.md +4 -4
  33. package/versioned_docs/version-v2.x/core-concepts/key-change.md +1 -1
  34. package/versioned_docs/version-v2.x/core-concepts/merkle-trees.md +1 -1
  35. package/versioned_docs/version-v2.x/core-concepts/poll-types.md +1 -1
  36. package/versioned_docs/version-v2.x/core-concepts/workflow.md +1 -1
  37. package/versioned_docs/version-v2.x/guides/integrating.md +1 -1
  38. package/versioned_docs/version-v2.x/guides/testing/testing-in-detail.md +3 -3
  39. package/versioned_docs/version-v2.x/guides/testing/testing.md +1 -1
  40. package/versioned_docs/version-v2.x/processes/versioning.md +3 -3
  41. package/versioned_docs/version-v2.x/supported-networks/deployed-contracts.md +7 -7
  42. package/versioned_docs/version-v2.x/technical-references/smart-contracts/AccQueue.md +1 -1
  43. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MACI.md +1 -1
  44. package/versioned_docs/version-v2.x/technical-references/smart-contracts/MessageProcessor.md +1 -1
  45. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Params.md +1 -1
  46. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Poll.md +1 -1
  47. package/versioned_docs/version-v2.x/technical-references/smart-contracts/PollFactory.md +1 -1
  48. package/versioned_docs/version-v2.x/technical-references/smart-contracts/Tally.md +1 -1
  49. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VkRegistry.md +1 -1
  50. package/versioned_docs/version-v2.x/technical-references/smart-contracts/VoiceCreditProxy.md +1 -1
  51. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/processMessages.md +4 -4
  52. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/tallyVotes.md +2 -2
  53. package/versioned_docs/version-v2.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +3 -3
  54. package/versioned_docs/version-v3.x/contributing/contributing.md +4 -4
  55. package/versioned_docs/version-v3.x/core-concepts/key-change.md +1 -1
  56. package/versioned_docs/version-v3.x/core-concepts/maci-keys.md +1 -1
  57. package/versioned_docs/version-v3.x/core-concepts/poll-types.md +31 -7
  58. package/versioned_docs/version-v3.x/core-concepts/polls.md +31 -7
  59. package/versioned_docs/version-v3.x/core-concepts/spec.md +8 -8
  60. package/versioned_docs/version-v3.x/core-concepts/workflow.md +2 -2
  61. package/versioned_docs/version-v3.x/guides/compile-circuits.md +31 -15
  62. package/versioned_docs/version-v3.x/guides/integrating.md +2 -2
  63. package/versioned_docs/version-v3.x/guides/sdk.md +121 -0
  64. package/versioned_docs/version-v3.x/guides/testing/testing-in-detail.md +3 -3
  65. package/versioned_docs/version-v3.x/guides/testing/testing-introduction.md +38 -6
  66. package/versioned_docs/version-v3.x/guides/troubleshooting.md +53 -8
  67. package/versioned_docs/version-v3.x/processes/versioning.md +3 -3
  68. package/versioned_docs/version-v3.x/quick-start.md +24 -16
  69. package/versioned_docs/version-v3.x/resources.md +1 -0
  70. package/versioned_docs/version-v3.x/security/audit.md +2 -2
  71. package/versioned_docs/version-v3.x/security/trusted-setup.md +36 -36
  72. package/versioned_docs/version-v3.x/supported-networks/costs.md +725 -0
  73. package/versioned_docs/version-v3.x/supported-networks/deployed-contracts.md +8 -8
  74. package/versioned_docs/version-v3.x/supported-networks/supported-networks.md +16 -0
  75. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MACI.md +2 -2
  76. package/versioned_docs/version-v3.x/technical-references/smart-contracts/MessageProcessor.md +1 -1
  77. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Params.md +2 -2
  78. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Policies.md +1 -1
  79. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Poll.md +1 -1
  80. package/versioned_docs/version-v3.x/technical-references/smart-contracts/PollFactory.md +1 -1
  81. package/versioned_docs/version-v3.x/technical-references/smart-contracts/Tally.md +2 -2
  82. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VkRegistry.md +4 -4
  83. package/versioned_docs/version-v3.x/technical-references/smart-contracts/VoiceCreditProxy.md +1 -1
  84. package/versioned_docs/version-v3.x/technical-references/technical-references.md +8 -8
  85. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/joinPoll.md +1 -1
  86. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/processMessages.md +69 -5
  87. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/setup.md +3 -3
  88. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/tallyVotes.md +4 -4
  89. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/utilities.md +8 -8
  90. package/versioned_docs/version-v3.x/technical-references/zk-snark-circuits/zk-snark-circuits.md +3 -3
@@ -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
 
@@ -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.77d0530",
3
+ "version": "0.0.0-ci.7a34e89",
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.1",
45
- "@types/react": "^19.1.2",
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": "0828c44f11f447e99a42ac35a2893ec48414fbae"
65
+ "gitHead": "e7c3f8f8bb1e0e427a0f6fce8a169f3592e41c91"
65
66
  }
@@ -2549,11 +2549,11 @@
2549
2549
  "locked": false,
2550
2550
  "fontSize": 20,
2551
2551
  "fontFamily": 1,
2552
- "text": "QuinCheckRoot",
2552
+ "text": "QuinaryCheckRoot",
2553
2553
  "textAlign": "center",
2554
2554
  "verticalAlign": "middle",
2555
2555
  "containerId": "_LzZ_0ySFRhMabKhKEY5g",
2556
- "originalText": "QuinCheckRoot",
2556
+ "originalText": "QuinaryCheckRoot",
2557
2557
  "lineHeight": 1.25,
2558
2558
  "baseline": 18
2559
2559
  },
@@ -6673,11 +6673,11 @@
6673
6673
  "locked": false,
6674
6674
  "fontSize": 20,
6675
6675
  "fontFamily": 1,
6676
- "text": "Create a component \n(QuinLeafExists) to \nbe used to verify if \na leaf exists in a \nquinary tree of \ndepth k",
6676
+ "text": "Create a component \n(QuinaryLeafExists) to \nbe used to verify if \na leaf exists in a \nquinary tree of \ndepth k",
6677
6677
  "textAlign": "center",
6678
6678
  "verticalAlign": "middle",
6679
6679
  "containerId": "U1TgqoQPYFJ-IpYJH1YPi",
6680
- "originalText": "Create a component (QuinLeafExists) to be used to verify if a leaf exists in a quinary tree of depth k",
6680
+ "originalText": "Create a component (QuinaryLeafExists) to be used to verify if a leaf exists in a quinary tree of depth k",
6681
6681
  "lineHeight": 1.25,
6682
6682
  "baseline": 143
6683
6683
  },
@@ -6743,11 +6743,11 @@
6743
6743
  "locked": false,
6744
6744
  "fontSize": 20,
6745
6745
  "fontFamily": 1,
6746
- "text": "Create a component \n(QuinGeneratePathIndices)\nto generate the indices of\nthe path from a leaf to \nthe root of a quinary \ntree with a depth of k",
6746
+ "text": "Create a component \n(QuinaryGeneratePathIndices)\nto generate the indices of\nthe path from a leaf to \nthe root of a quinary \ntree with a depth of k",
6747
6747
  "textAlign": "center",
6748
6748
  "verticalAlign": "middle",
6749
6749
  "containerId": "orVHz7nJqEs72nf3bbdnO",
6750
- "originalText": "Create a component (QuinGeneratePathIndices) to generate the indices of the path from a leaf to the root of a quinary tree with a depth of k",
6750
+ "originalText": "Create a component (QuinaryGeneratePathIndices) to generate the indices of the path from a leaf to the root of a quinary tree with a depth of k",
6751
6751
  "lineHeight": 1.25,
6752
6752
  "baseline": 143
6753
6753
  },
@@ -9449,11 +9449,11 @@
9449
9449
  "locked": false,
9450
9450
  "fontSize": 20,
9451
9451
  "fontFamily": 1,
9452
- "text": "use QuinCheckRoot and\npass all items in the \ncurrentResults array \nas leaves",
9452
+ "text": "use QuinaryCheckRoot and\npass all items in the \ncurrentResults array \nas leaves",
9453
9453
  "textAlign": "center",
9454
9454
  "verticalAlign": "middle",
9455
9455
  "containerId": "IX3IZOFFnhQHnB0YR0Bv_",
9456
- "originalText": "use QuinCheckRoot and pass all items in the currentResults array as leaves",
9456
+ "originalText": "use QuinaryCheckRoot and pass all items in the currentResults array as leaves",
9457
9457
  "lineHeight": 1.25,
9458
9458
  "baseline": 93
9459
9459
  },
@@ -9887,11 +9887,11 @@
9887
9887
  "locked": false,
9888
9888
  "fontSize": 20,
9889
9889
  "fontFamily": 1,
9890
- "text": "use QuinCheckRoot and\npass all items in \ncurrentPerVOSpentVoice\nCredits",
9890
+ "text": "use QuinaryCheckRoot and\npass all items in \ncurrentPerVOSpentVoice\nCredits",
9891
9891
  "textAlign": "center",
9892
9892
  "verticalAlign": "middle",
9893
9893
  "containerId": "UH_pzDK5btI67K5tIpJcD",
9894
- "originalText": "use QuinCheckRoot and pass all items in currentPerVoteOptionSpentVoiceCredits",
9894
+ "originalText": "use QuinaryCheckRoot and pass all items in currentPerVoteOptionSpentVoiceCredits",
9895
9895
  "lineHeight": 1.25,
9896
9896
  "baseline": 93
9897
9897
  },
@@ -10447,11 +10447,11 @@
10447
10447
  "locked": false,
10448
10448
  "fontSize": 20,
10449
10449
  "fontFamily": 1,
10450
- "text": "use QuinCheckRoot and\npass all items in \nnewResults",
10450
+ "text": "use QuinaryCheckRoot and\npass all items in \nnewResults",
10451
10451
  "textAlign": "center",
10452
10452
  "verticalAlign": "middle",
10453
10453
  "containerId": "t5C6u4jkasHqnjO2tWH5N",
10454
- "originalText": "use QuinCheckRoot and pass all items in newResults",
10454
+ "originalText": "use QuinaryCheckRoot and pass all items in newResults",
10455
10455
  "lineHeight": 1.25,
10456
10456
  "baseline": 68
10457
10457
  },
@@ -11103,11 +11103,11 @@
11103
11103
  "locked": false,
11104
11104
  "fontSize": 20,
11105
11105
  "fontFamily": 1,
11106
- "text": "use QuinCheckRoot and\npass all items in \ncurrentPerVOSpentVoice\nCredits",
11106
+ "text": "use QuinaryCheckRoot and\npass all items in \ncurrentPerVOSpentVoice\nCredits",
11107
11107
  "textAlign": "center",
11108
11108
  "verticalAlign": "middle",
11109
11109
  "containerId": "7r_7R5GsIuz_WZCd0FXJ-",
11110
- "originalText": "use QuinCheckRoot and pass all items in currentPerVoteOptionSpentVoiceCredits",
11110
+ "originalText": "use QuinaryCheckRoot and pass all items in currentPerVoteOptionSpentVoiceCredits",
11111
11111
  "lineHeight": 1.25,
11112
11112
  "baseline": 93
11113
11113
  },
@@ -26149,11 +26149,11 @@
26149
26149
  "locked": false,
26150
26150
  "fontSize": 20,
26151
26151
  "fontFamily": 1,
26152
- "text": "QuinSelector",
26152
+ "text": "QuinarySelector",
26153
26153
  "textAlign": "center",
26154
26154
  "verticalAlign": "middle",
26155
26155
  "containerId": "KM37UhqGRX02_32yEZ2Yd",
26156
- "originalText": "QuinSelector",
26156
+ "originalText": "QuinarySelector",
26157
26157
  "lineHeight": 1.25,
26158
26158
  "baseline": 18
26159
26159
  },
@@ -28203,11 +28203,11 @@
28203
28203
  "locked": false,
28204
28204
  "fontSize": 20,
28205
28205
  "fontFamily": 1,
28206
- "text": "3. use QuinSelector to \nget the item at position\ni - \nSafeGreaterThan.output",
28206
+ "text": "3. use QuinarySelector to \nget the item at position\ni - \nSafeGreaterThan.output",
28207
28207
  "textAlign": "center",
28208
28208
  "verticalAlign": "middle",
28209
28209
  "containerId": "ssreY_O_CPwIczz4kfc1O",
28210
- "originalText": "3. use QuinSelector to get the item at position i - SafeGreaterThan.output",
28210
+ "originalText": "3. use QuinarySelector to get the item at position i - SafeGreaterThan.output",
28211
28211
  "lineHeight": 1.25,
28212
28212
  "baseline": 93
28213
28213
  },
@@ -28603,7 +28603,7 @@
28603
28603
  "textAlign": "center",
28604
28604
  "verticalAlign": "middle",
28605
28605
  "containerId": "Z-HG6ZrP082-nOCFy1YgN",
28606
- "originalText": "4. Inner loop through all items and pass them to QuinSelector as inputs \nThe last item will be zero (position numItems)",
28606
+ "originalText": "4. Inner loop through all items and pass them to QuinarySelector as inputs \nThe last item will be zero (position numItems)",
28607
28607
  "lineHeight": 1.25,
28608
28608
  "baseline": 118
28609
28609
  },
@@ -28861,11 +28861,11 @@
28861
28861
  "locked": false,
28862
28862
  "fontSize": 20,
28863
28863
  "fontFamily": 1,
28864
- "text": "6. Use a Mux component to select either the output of\nthe QuinSelector component or the leaf, based on the \ncheck above (i == index)",
28864
+ "text": "6. Use a Mux component to select either the output of\nthe QuinarySelector component or the leaf, based on the \ncheck above (i == index)",
28865
28865
  "textAlign": "center",
28866
28866
  "verticalAlign": "middle",
28867
28867
  "containerId": "D8_CUeG0Uc4pAC4eGOc3i",
28868
- "originalText": "6. Use a Mux component to select either the output of the QuinSelector component or the leaf, based on the check above (i == index)",
28868
+ "originalText": "6. Use a Mux component to select either the output of the QuinarySelector component or the leaf, based on the check above (i == index)",
28869
28869
  "lineHeight": 1.25,
28870
28870
  "baseline": 68
28871
28871
  },
@@ -30065,11 +30065,11 @@
30065
30065
  "locked": false,
30066
30066
  "fontSize": 20,
30067
30067
  "fontFamily": 1,
30068
- "text": "pass leaves as input \nto QuinCheckRoot",
30068
+ "text": "pass leaves as input \nto QuinaryCheckRoot",
30069
30069
  "textAlign": "center",
30070
30070
  "verticalAlign": "middle",
30071
30071
  "containerId": "jKT_vEvWHQ69qEoDNFX-p",
30072
- "originalText": "pass leaves as input to QuinCheckRoot",
30072
+ "originalText": "pass leaves as input to QuinaryCheckRoot",
30073
30073
  "lineHeight": 1.25,
30074
30074
  "baseline": 43
30075
30075
  },
@@ -30135,11 +30135,11 @@
30135
30135
  "locked": false,
30136
30136
  "fontSize": 20,
30137
30137
  "fontFamily": 1,
30138
- "text": "2. Check whether the\n Merkle path is valid\nusing QuinLeafExists",
30138
+ "text": "2. Check whether the\n Merkle path is valid\nusing QuinaryLeafExists",
30139
30139
  "textAlign": "center",
30140
30140
  "verticalAlign": "middle",
30141
30141
  "containerId": "adR0SNf4bBfWWL43KZ-VF",
30142
- "originalText": "2. Check whether the Merkle path is valid using QuinLeafExists",
30142
+ "originalText": "2. Check whether the Merkle path is valid using QuinaryLeafExists",
30143
30143
  "lineHeight": 1.25,
30144
30144
  "baseline": 68
30145
30145
  },
@@ -30401,7 +30401,7 @@
30401
30401
  "textAlign": "center",
30402
30402
  "verticalAlign": "middle",
30403
30403
  "containerId": "jnCqO_Kng7pfOz-pguNHV",
30404
- "originalText": "wire each index and each element in the path to QuinLeafExists",
30404
+ "originalText": "wire each index and each element in the path to QuinaryLeafExists",
30405
30405
  "lineHeight": 1.25,
30406
30406
  "baseline": 93
30407
30407
  },
@@ -30527,11 +30527,11 @@
30527
30527
  "locked": false,
30528
30528
  "fontSize": 20,
30529
30529
  "fontFamily": 1,
30530
- "text": "QuinGeneratePathIndices",
30530
+ "text": "QuinaryGeneratePathIndices",
30531
30531
  "textAlign": "center",
30532
30532
  "verticalAlign": "middle",
30533
30533
  "containerId": "GW-hi-qav0ueA8sR-M5Ik",
30534
- "originalText": "QuinGeneratePathIndices",
30534
+ "originalText": "QuinaryGeneratePathIndices",
30535
30535
  "lineHeight": 1.25,
30536
30536
  "baseline": 18
30537
30537
  },
@@ -32253,7 +32253,7 @@
32253
32253
  "textAlign": "center",
32254
32254
  "verticalAlign": "middle",
32255
32255
  "containerId": "bSA55On1arxFx17gCZtu1",
32256
- "originalText": "pass the batch path indices generated using QuinGeneratePathIndices (index is the batchStartIndex)",
32256
+ "originalText": "pass the batch path indices generated using QuinaryGeneratePathIndices (index is the batchStartIndex)",
32257
32257
  "lineHeight": 1.25,
32258
32258
  "baseline": 118
32259
32259
  },
@@ -34681,7 +34681,7 @@
34681
34681
  "textAlign": "center",
34682
34682
  "verticalAlign": "middle",
34683
34683
  "containerId": "1fLeQ-eWvRjbp-sQ1_cB3",
34684
- "originalText": "5. Get the path indices (to locate the leaf in the quinary tree) using QuinGeneratePathIndices",
34684
+ "originalText": "5. Get the path indices (to locate the leaf in the quinary tree) using QuinaryGeneratePathIndices",
34685
34685
  "lineHeight": 1.25,
34686
34686
  "baseline": 93
34687
34687
  },
@@ -34751,7 +34751,7 @@
34751
34751
  "textAlign": "center",
34752
34752
  "verticalAlign": "middle",
34753
34753
  "containerId": "W3DYw37cCcJuxiN1FgpDq",
34754
- "originalText": "6. Generate a Merkle proof for the leaf using QuinTreeInclusionProof",
34754
+ "originalText": "6. Generate a Merkle proof for the leaf using QuinaryTreeInclusionProof",
34755
34755
  "lineHeight": 1.25,
34756
34756
  "baseline": 68
34757
34757
  },
@@ -34821,7 +34821,7 @@
34821
34821
  "textAlign": "center",
34822
34822
  "verticalAlign": "middle",
34823
34823
  "containerId": "JHcNIMtzJsmlJl0UNRBY7",
34824
- "originalText": "7. Extract the root from QuinTreeInclusionProof and wire to the output signal newStateRoot",
34824
+ "originalText": "7. Extract the root from QuinaryTreeInclusionProof and wire to the output signal newStateRoot",
34825
34825
  "lineHeight": 1.25,
34826
34826
  "baseline": 93
34827
34827
  },
@@ -37587,7 +37587,7 @@
37587
37587
  "textAlign": "center",
37588
37588
  "verticalAlign": "middle",
37589
37589
  "containerId": "DAdZGk6TuI5kqqPswL_r5",
37590
- "originalText": "4. Generate path indices for the state tree and the state index (QuinGeneratePathIndices)",
37590
+ "originalText": "4. Generate path indices for the state tree and the state index (QuinaryGeneratePathIndices)",
37591
37591
  "lineHeight": 1.25,
37592
37592
  "baseline": 143
37593
37593
  },
@@ -37735,7 +37735,7 @@
37735
37735
  "textAlign": "center",
37736
37736
  "verticalAlign": "middle",
37737
37737
  "containerId": "C6UUKyYdFcnudu5ifYFSE",
37738
- "originalText": "1. hash the state leaf\n2. pass the hash as leaf to QuinTreeInclusionProof\n3. pass the path indices and the path elements\n4. currentStateRoot == QuinTreeInclusionProof.root",
37738
+ "originalText": "1. hash the state leaf\n2. pass the hash as leaf to QuinaryTreeInclusionProof\n3. pass the path indices and the path elements\n4. currentStateRoot == QuinaryTreeInclusionProof.root",
37739
37739
  "lineHeight": 1.25,
37740
37740
  "baseline": 168
37741
37741
  },
@@ -37931,11 +37931,11 @@
37931
37931
  "locked": false,
37932
37932
  "fontSize": 20,
37933
37933
  "fontFamily": 1,
37934
- "text": "1. hash the ballot\n2. use QuinTreeInclusionProof to \ngenerate the root and proof by \npassing the hashed ballot, the path \nelements and the path indicess\n3. check that the currentBallotRoot\nmatches the output root of the \nabove steps",
37934
+ "text": "1. hash the ballot\n2. use QuinaryTreeInclusionProof to \ngenerate the root and proof by \npassing the hashed ballot, the path \nelements and the path indicess\n3. check that the currentBallotRoot\nmatches the output root of the \nabove steps",
37935
37935
  "textAlign": "center",
37936
37936
  "verticalAlign": "middle",
37937
37937
  "containerId": "90l8-9LYOX0ns9PTVavyf",
37938
- "originalText": "1. hash the ballot\n2. use QuinTreeInclusionProof to generate the root and proof by passing the hashed ballot, the path elements and the path indicess\n3. check that the currentBallotRoot matches the output root of the above steps",
37938
+ "originalText": "1. hash the ballot\n2. use QuinaryTreeInclusionProof to generate the root and proof by passing the hashed ballot, the path elements and the path indicess\n3. check that the currentBallotRoot matches the output root of the above steps",
37939
37939
  "lineHeight": 1.25,
37940
37940
  "baseline": 193
37941
37941
  },
@@ -38477,11 +38477,11 @@
38477
38477
  "locked": false,
38478
38478
  "fontSize": 20,
38479
38479
  "fontFamily": 1,
38480
- "text": "5. Generate root using QuinTreeInclusionProof\nleaf = currentVoteWeight\npass the path indices generated at the step\nabove\npass the pathElements which were the circuit \ninputs",
38480
+ "text": "5. Generate root using QuinaryTreeInclusionProof\nleaf = currentVoteWeight\npass the path indices generated at the step\nabove\npass the pathElements which were the circuit \ninputs",
38481
38481
  "textAlign": "center",
38482
38482
  "verticalAlign": "middle",
38483
38483
  "containerId": "AoZnLeeF6isDjqVc1garh",
38484
- "originalText": "5. Generate root using QuinTreeInclusionProof\nleaf = currentVoteWeight\npass the path indices generated at the step above\npass the pathElements which were the circuit inputs",
38484
+ "originalText": "5. Generate root using QuinaryTreeInclusionProof\nleaf = currentVoteWeight\npass the path indices generated at the step above\npass the pathElements which were the circuit inputs",
38485
38485
  "lineHeight": 1.25,
38486
38486
  "baseline": 143
38487
38487
  },
@@ -38787,11 +38787,11 @@
38787
38787
  "locked": false,
38788
38788
  "fontSize": 20,
38789
38789
  "fontFamily": 1,
38790
- "text": "use QuinTreeInclusionProof:\n- leaf will be newVoteweight if the \nmessage was valid or the current \nvoteWeight\n- path indices were calculated \nbefore in step 7.4\n- path elements are the inputs",
38790
+ "text": "use QuinaryTreeInclusionProof:\n- leaf will be newVoteweight if the \nmessage was valid or the current \nvoteWeight\n- path indices were calculated \nbefore in step 7.4\n- path elements are the inputs",
38791
38791
  "textAlign": "center",
38792
38792
  "verticalAlign": "middle",
38793
38793
  "containerId": "B4RctsUugu9ROp0z1fHxz",
38794
- "originalText": "use QuinTreeInclusionProof:\n- leaf will be newVoteweight if the message was valid or the current voteWeight\n- path indices were calculated before in step 7.4\n- path elements are the inputs",
38794
+ "originalText": "use QuinaryTreeInclusionProof:\n- leaf will be newVoteweight if the message was valid or the current voteWeight\n- path indices were calculated before in step 7.4\n- path elements are the inputs",
38795
38795
  "lineHeight": 1.25,
38796
38796
  "baseline": 168
38797
38797
  },
@@ -38913,7 +38913,7 @@
38913
38913
  "textAlign": "center",
38914
38914
  "verticalAlign": "middle",
38915
38915
  "containerId": "t_JxpP8YPj8nNbxhYpDZB",
38916
- "originalText": "if the message was valid then the root will be the output of the QuinTreeInclusionProof.root otherwise it will be the original root (decided using Mux1)",
38916
+ "originalText": "if the message was valid then the root will be the output of the QuinaryTreeInclusionProof.root otherwise it will be the original root (decided using Mux1)",
38917
38917
  "lineHeight": 1.25,
38918
38918
  "baseline": 118
38919
38919
  },
@@ -39163,11 +39163,11 @@
39163
39163
  "locked": false,
39164
39164
  "fontSize": 20,
39165
39165
  "fontFamily": 1,
39166
- "text": "generate the new root starting from \nthis leaf using QuinTreeInclusionProof",
39166
+ "text": "generate the new root starting from \nthis leaf using QuinaryTreeInclusionProof",
39167
39167
  "textAlign": "center",
39168
39168
  "verticalAlign": "middle",
39169
39169
  "containerId": "L5mW9SvPnDqoLTaGRA-81",
39170
- "originalText": "generate the new root starting from this leaf using QuinTreeInclusionProof",
39170
+ "originalText": "generate the new root starting from this leaf using QuinaryTreeInclusionProof",
39171
39171
  "lineHeight": 1.25,
39172
39172
  "baseline": 43
39173
39173
  },
@@ -39569,7 +39569,7 @@
39569
39569
  "textAlign": "center",
39570
39570
  "verticalAlign": "middle",
39571
39571
  "containerId": "4jJHqRtHbkjYY60KaoOne",
39572
- "originalText": "generate the new root starting from this leaf using QuinTreeInclusionProof",
39572
+ "originalText": "generate the new root starting from this leaf using QuinaryTreeInclusionProof",
39573
39573
  "lineHeight": 1.25,
39574
39574
  "baseline": 68
39575
39575
  },