@maci-protocol/website 0.0.0-ci.0bef05d → 0.0.0-ci.0c66f42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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
@@ -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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maci-protocol/website",
3
- "version": "0.0.0-ci.0bef05d",
3
+ "version": "0.0.0-ci.0c66f42",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -41,7 +41,7 @@
41
41
  "@docusaurus/module-type-aliases": "^3.7.0",
42
42
  "@docusaurus/tsconfig": "^3.7.0",
43
43
  "@docusaurus/types": "^3.7.0",
44
- "@types/node": "^22.14.1",
44
+ "@types/node": "^22.15.8",
45
45
  "@types/react": "^19.1.2",
46
46
  "ts-node": "^10.9.2",
47
47
  "typescript": "^5.8.3"
@@ -61,5 +61,5 @@
61
61
  "engines": {
62
62
  "node": ">=18.0"
63
63
  },
64
- "gitHead": "2b18e370edea4dfb301502ce357e2e9adeb8e4ca"
64
+ "gitHead": "fd9706322f18b8c738a757ca6184dc450c0d824e"
65
65
  }
@@ -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
 
@@ -1189,7 +1189,7 @@
1189
1189
  "textAlign": "center",
1190
1190
  "verticalAlign": "middle",
1191
1191
  "containerId": "Ka6q_sOFuLWnYbQS69ZUD",
1192
- "originalText": "currentPerVOSpentVoiceCredits",
1192
+ "originalText": "currentPerVoteOptionSpentVoiceCredits",
1193
1193
  "lineHeight": 1.25,
1194
1194
  "baseline": 43
1195
1195
  },
@@ -1259,7 +1259,7 @@
1259
1259
  "textAlign": "center",
1260
1260
  "verticalAlign": "middle",
1261
1261
  "containerId": "FFbwZ9KFPAsGY6MsR7hzw",
1262
- "originalText": "currentPerVOSpentVoiceCreditsRootSalt",
1262
+ "originalText": "currentPerVoteOptionSpentVoiceCreditsRootSalt",
1263
1263
  "lineHeight": 1.25,
1264
1264
  "baseline": 43
1265
1265
  },
@@ -1399,7 +1399,7 @@
1399
1399
  "textAlign": "center",
1400
1400
  "verticalAlign": "middle",
1401
1401
  "containerId": "P8MkdLX2TZ0mzOyGUENvn",
1402
- "originalText": "newPerVOSpentVoiceCreditsRootSalt",
1402
+ "originalText": "newPerVoteOptionSpentVoiceCreditsRootSalt",
1403
1403
  "lineHeight": 1.25,
1404
1404
  "baseline": 43
1405
1405
  },
@@ -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
  },
@@ -9103,7 +9103,7 @@
9103
9103
  "textAlign": "center",
9104
9104
  "verticalAlign": "middle",
9105
9105
  "containerId": "YmzPJYWprUZQljBOVqXpA",
9106
- "originalText": "currentPerVOSpentVoiceCredits (array of len 5 ** voteOptionTreeDepth)",
9106
+ "originalText": "currentPerVoteOptionSpentVoiceCredits (array of len 5 ** voteOptionTreeDepth)",
9107
9107
  "lineHeight": 1.25,
9108
9108
  "baseline": 93
9109
9109
  },
@@ -9173,7 +9173,7 @@
9173
9173
  "textAlign": "center",
9174
9174
  "verticalAlign": "middle",
9175
9175
  "containerId": "RhVKxQeKIVq3XFFbQdqOz",
9176
- "originalText": "currentPerVOSpentVoiceCreditsRootSalt",
9176
+ "originalText": "currentPerVoteOptionSpentVoiceCreditsRootSalt",
9177
9177
  "lineHeight": 1.25,
9178
9178
  "baseline": 43
9179
9179
  },
@@ -9243,7 +9243,7 @@
9243
9243
  "textAlign": "center",
9244
9244
  "verticalAlign": "middle",
9245
9245
  "containerId": "xJQ2p5b5ivfhgaFnfz4zB",
9246
- "originalText": "newPerVOSpentVoiceCreditsRootSalt",
9246
+ "originalText": "newPerVoteOptionSpentVoiceCreditsRootSalt",
9247
9247
  "lineHeight": 1.25,
9248
9248
  "baseline": 43
9249
9249
  },
@@ -9313,7 +9313,7 @@
9313
9313
  "textAlign": "center",
9314
9314
  "verticalAlign": "middle",
9315
9315
  "containerId": "0HQ9uPXuwUodD7cUlnZvz",
9316
- "originalText": "newPerVOSpentVoiceCredits (array of len 5 ** voteOptionTreeDepth)",
9316
+ "originalText": "newPerVoteOptionSpentVoiceCredits (array of len 5 ** voteOptionTreeDepth)",
9317
9317
  "lineHeight": 1.25,
9318
9318
  "baseline": 68
9319
9319
  },
@@ -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 currentPerVOSpentVoiceCredits",
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 currentPerVOSpentVoiceCredits",
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
  },