Closed BoogerWooger closed 4 years ago
This is really cool!
A few questions:
Super excited about this!
Given our previous bad experience funding an anonymous voting Nest grant that also had a first stage which was pure research and deciding what route to take, I'd encourage you to present an in-depth technical spec/description of how your proposed solution will work.
There is a fair amount of 'uphill work' on a project like this, so it makes sense that research is an important part of the project, but the current feasibility study is quite shallow for a +100k USD grant.
Agreed. Lifting the restrictions and uncertainties of the solution demand a deep thorough research. We will inform you as soon as we find out the corresponding solution justification and a solid feasibility proof.
Closing this as there has not been any activity lately. Please feel free to re open the Issue if you have any updates.
Aragon Nest Proposal: Zero-knowledge approval voting module
Abstract
Issue
At present, there are no working well-known solutions for Ethereum-based smart contract anonymous voting. The existing prototypes are mostly at the R&D stage.
Solution
MixBytes team aims to build a zero-knowledge approval voting module, allowing users to vote “Yes/No” or “+/-” on some topic. Choices would remain undisclosed and the results could be publicly verified. We are planning to incorporate Aragon user identification and authorization modules to facilitate user account management and make the solution more user-friendly.
We consider zkSNARKS technology the most suitable option due to best practices and background research of other teams used in various dapp voting systems. We plan to implement the most recent library that supports ZKP generation in the browser using JavaScript.
Flow
Analyze the existing implementation options, their limitations and feasibility Choose the most effective algorithm for ZKPs, compliant with the existing requirements. Selection criteria include: ZK voting with minimum number of interactions with the contract Vote content anonymity and voter identity protection Easy ZK-voting setup procedure Implement a voting core (casting a ZK-vote and its verification in a smart contract) Build a module for creating a new voting, polling, voter registration and disclosure of results
Feasibility
We have been eager to get started and have conducted some basic feasibility research. We have found out the following: As algorithms using arithmetic circuits have a lot of constraints, we have chosen the simplest approval voting option in which 1 vote = 1 bit and the voting result is also 1 bit. That will allow to build a compact ZKP voting verification and/or combine it with other ZKPs. More effective zkSNARKS solutions are being built based on the existing ones, and we may change algorithms on the go. In case the intended logic is too complex for one ZKP, we might consider building several ZKPs for separate tasks: ZKP access to the given voting (e.g. ownership of a certain Aragon role) ZKP vote correctness verification ZKP for double-voting elimination There are certain implementation risks in Ethereum as some voting safety and transparency issues haven’t been resolved yet. However, we believe that zkSNARKs technology will allow to create a fully working module.
Value
This module could serve the basis for other voting modules (reputation systems for Aragon users, decision-making in DAOs, arbitration of deals, etc). Plus, the approval module integration will simplify ZK-voting creation and procedure for Aragon users.
Team
Sergey Prilutskiy, Head of R&D Links: LinkedIn/GitHub
Algys Ievlev, Lead Developer Links: LinkedIn/GitHub
Deliverables
Github public repository, containing:
Timeline
Milestone 1 (2-3 months) research and design a voting scheme using zkSNARKs choose the most suitable algorithms, circuits, and constraints system provide a document with R&D results
Milestone 2 (1-2 months) on-chain implementation of ZKP voting verification with tests
Milestone 3 (1-2 months) implement a full voting scheme as Aragon module
Grant size:
Required funding: $115 000 $ Milestone 1: $50 000 Milestone 2: $ 32 500 Milestone 3: $ 32 500
Success fee: 30 000 ANT