PLONK-Based MACI

MACI has been a useful tool on DoraHacks.io. It makes community governance collusion resistant and makes grant DAO distributions fair.

Over the course of 2022, some major DoraHacks events adopted MACI, including ETHDenver22, OpenSea Hackathon judging, and Dora Grant DAO rounds. DoraHacks-MACI is the open source repository used to support these community governance events.

DoraHacks-MACI was built based on MACI 1.0, with several changes and simplifications. Both DoraHacks MACI and MACI 1.0 use Groth16 to create zero knowledge proofs. The security of Groth16 relies on the process creating Common Reference String (CRS) called trusted setup, which is not universal (i.e. if there is a circuit change, the CRS has to be produced again). In practice, we use a two-phase trusted setup. The first phase is circuit-independent (e.g. the perpetual powers of tau), and the second phase is circuit-dependent.

Using Groth16 based MACI means every time the circuit changes, we need to redo the second-stage trusted setup. In fact, circuits always change - big or small. There are high-level logic updates as well as small iterations including bug fix. On the other hand, rigorous trusted setup ceremonies are costly and time consuming. If a trusted setup is not publicly testified, the whole system cannot be fully trusted, therefore we cannot run high-stake MACI rounds. Therefore, Groth16 based MACI cannot scale.

PLONK offers succinct verification for universal circuits. With a one-phase trusted setup which produces a structured reference string (SRS), all circuits up to a certain bounded size can use the same SRS.

Moving DoraHacks-MACI from Groth16 to PLONK is not a difficult task. A recent ETH Research Grant round has already used MACI-PLONK to validate the votes. MACI-PLONK replaces the Groth16 proof-validation system with PLONK. As a result, PLONK trusted setup only requires one-phase SRS generation. Here is a comparison:

MACI scale: up to 5^4 users, 5^2 options, 25 messages per batch. Benchmarked on a PC w/h AMD Ryzen 5 5600X 6-Core Processor 3.70 GHz.

PLONK based MACI generates significantly larger proofs than Groth16 under the same conditions. However, MACI rounds usually span over days or weeks, the off-chain overhead to generate larger proofs can be tolerated. On the other hand, gas fees to validate messages only increase ~50%. So there is no hurdle to adopt PLONK based MACI on-chain.

For next step: (1) we can gradually adopt MACI-PLONK on DoraHacks.io so that many more communities and ecosystems can use MACI to make funding decisions or governance decisions in general; (2) prepare for one trusted setup ceremony and generate SRS for all MACI events (up to a certain circuit size).