View demo | Discord (#🗳️-maci channel)
- Setup & Deployment
- Adding Projects & Approving
- Creating Badgeholders/Voters
- Voting
- Lists
- Results
- Distribute
All networks EAS is deployed to are supported
- Ethereum
- Optimism
- Base
- Arbitrum One
- Linea
- Sepolia
- Optimism Sepolia
- Base Goerli
- Arbitrum Goerli
- Polygon Mumbai
- Linea Goerli
To run locally follow these instructions:
git clone https://github.com/privacy-scaling-explorations/maci-rpgf
bun install # (or pnpm / yarn / npm)
cp .env.example .env # and update .env variables
bun run dev
bun run db:push # create database tables
open localhost:3000
- EAS - Projects, lists, 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.
- SQL database for ballots - Votes are stored privately in a Postgres database
- Could votes be stored on EAS as well? It would need to happen server-side from an admin signer to keep voters anonymous.