MACI-RPGF

View demo | Discord (#🗳️-maci channel)

Documentation

MACI-RPGF docs

MACI docs

Supported Networks

All networks EAS is deployed to are supported

Mainnets

  • Ethereum
  • Optimism
  • Base
  • Arbitrum One
  • Linea

Testnets

  • Sepolia
  • Optimism Sepolia
  • Base Goerli
  • Arbitrum Goerli
  • Polygon Mumbai
  • Linea Goerli

Development

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

Technical details

  • 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.