Skip to content

Proof of event attendance events using ZKEmail & ZKPassport in Noir

License

Notifications You must be signed in to change notification settings

trionlabs/mintmarks.fun

Repository files navigation

mintmarks.fun

Soulbound NFTs that prove you actually attended an event, using zk-proofs of DKIM-signed emails.

How It Works

Luma sends "Thanks for joining" emails only to people whose tickets were scanned at entry. Mintmarks verifies the DKIM signature of these emails in a ZK circuit, proving attendance without exposing any personal data. Optional ZKPassport integration prevents sybil attacks by tying each mint to a unique human identity.

Two verification tiers:

  • Email-only: Proved you attended
  • Passport-verified: Proved you're a unique human

Project Structure

mintmarks.fun/
├── circuits/          # Noir ZK circuits for email verification
├── contracts/         # Solidity smart contracts (ERC-1155 soulbound tokens)
└── web/               # React frontend with Coinbase Smart Wallet integration

Tech Stack

  • Circuits: Noir + ZK-Email for DKIM verification
  • Contracts: Solidity, Foundry, deployed on Ethereum Sepolia and Base Sepolia
  • Frontend: React, Vite, TailwindCSS
  • Wallets: Coinbase CDP (email login) + RainbowKit (EOA)
  • Identity: ZKPassport for sybil resistance

Prerequisites

Setup

# Clone with submodules
git clone --recursive https://github.com/trionlabs/mintmarks.fun.git
cd mintmarks.fun

# Install dependencies
pnpm install

# Copy environment variables
cp .env.example .env
# Fill in your values (RPC URLs, contract addresses, etc.)

Development

Circuits

cd circuits

# Compile the Noir circuit
pnpm build

# Run circuit tests
pnpm test

# Generate proof from an email
pnpm generate:proof path/to/email.eml

# Generate Solidity verifier
pnpm generate:verifier

Contracts

cd contracts

# Build contracts
pnpm build

# Run tests
pnpm test

# Deploy (requires PRIVATE_KEY and RPC_URL in .env)
forge script script/DeployMintmarks.s.sol --rpc-url $SEPOLIA_RPC_URL --broadcast

Web

cd web

# Start dev server
pnpm dev

# Build for production
pnpm build

Environment Variables

See .env.example for all required variables.

Architecture

┌─────────────┐     ┌──────────────┐     ┌─────────────────┐
│  Gmail API  │────▶│  ZK Circuit  │────▶│  Mintmarks.sol  │
│  (DKIM sig) │     │  (Noir/WASM) │     │  (ERC-1155)     │
└─────────────┘     └──────────────┘     └─────────────────┘
                           │
                    ┌──────┴──────┐
                    │  ZKPassport │
                    │  (optional) │
                    └─────────────┘

License

MIT

About

Proof of event attendance events using ZKEmail & ZKPassport in Noir

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •