MACI-RPGF uses EAS as backbone to run Retroactive Public Goods Funding to reward contributors (As used by the Optimism Collective) while adding a privacy layer to reduce bribery and collusion using MACI.
- Setup & Deployment
- Adding Projects & Approving
- Creating Badgeholders/Voters
- Voting
- Results
- Troubleshooting of MACI
All networks EAS is deployed to are supported. If a network is not supported, you can follow the EAS documentation to deploy the contracts to the network.
- Ethereum
- Optimism
- Base
- Arbitrum One & Nova
- Polygon
- Scroll
- Celo
- Linea
- Sepolia
- Optimism Sepolia
- Base Sepolia
- Polygon Mumbai
- Scroll Sepolia
To run locally follow these instructions:
git clone https://github.com/privacy-scaling-explorations/maci-rpgf
cp .env.example .env # and update .env variables
At the very minimum you need to configure a postgres database, nextauth, admin address, maci address and the voting periods. For more details head to Setup & Deployment. Once you have set everything run:
pnpm install
pnpm run dev
open localhost:3000
- EAS - Projects, profiles, etc are all stored on-chain in Ethereum Attestation Service
- Batched requests with tRPC - Multiple requests are batched into one (for example when the frontend requests the metadata for 24 projects they are batched into 1 request)
- Server-side caching of requests to EAS and IPFS - Immediately returns the data without calling EAS and locally serving ipfs cids.
- MACI - Minimal Anti-Collusion Infrastructure (MACI) is an open-source public good that serves as infrastructure for private on-chain voting, handles the rounds and private voting of the badgeholders.