Skip to Content
Overview

MACI Documentation

MACI (Minimal Anti-Collusion Infrastructure) is a cryptography-based on-chain voting system that provides privacy protection and anti-collusion capabilities through zero-knowledge proofs.

Quick Navigation

New to MACI? Read What is MACI to understand core concepts, then follow the Quick Start Guide to create your first vote.

Need to integrate into your app? Check out SDK Installation and Complete Examples.

Want to understand technical details? Start with Protocol Overview to learn how MACI works.

Learning by Role

Application Developers

You want to integrate MACI voting functionality into your application:

  1. What is MACI - Understand basic concepts
  2. Quick Start - Run your first example in five minutes
  3. SDK Installation - Configure development environment
  4. Create Round - Learn to create voting rounds
  5. Voting Guide - Implement user voting flow

Protocol Researchers

You want to understand MACI’s cryptographic mechanisms and design philosophy:

  1. Protocol Overview - Overall architecture
  2. Core Concepts - Key components and data structures
  3. Cryptography - EdDSA, Poseidon, ZK proofs
  4. Privacy Protection - Identity anonymization and anti-collusion design
  5. Message Flow - Lifecycle of voting messages

Contract Developers

You want to understand MACI contract implementation or perform secondary development:

  1. Architecture - Contract system architecture
  2. Registry Contract - Operator and round management
  3. AMACI Contract - Anonymous voting implementation
  4. Workflow - Complete voting lifecycle

Operators

You want to run a MACI Operator node:

  1. Protocol Overview - Understand operator responsibilities
  2. Message Flow - Learn message processing
  3. Workflow - Understand processing timing and requirements

Core Components

Smart Contracts

  • Registry - Manages operator registration and voting round creation
  • AMACI - Anonymous voting contract instance, handles user registration and voting

SDK and Tools

  • @dorafactory/maci-sdk - TypeScript client SDK
  • @dorafactory/maci-operator - Operator system
  • maci-crypto - Rust cryptography library

Zero-Knowledge Circuits

ZK circuits implemented using Circom, supporting Groth16 and PLONK proof systems.

Use Cases

  • DAO Governance - Community proposals and protocol parameter voting
  • Quadratic Funding - Gitcoin Grants-style public goods funding
  • Organization Elections - Internal elections and representative selection
  • Token Voting - Weighted voting based on token holdings

Technical Resources

Getting Help

Having issues? Check GitHub Issues  or submit a new issue.

Last updated on