# build a privacy-first app on Ethereum mainnet

- Chain-scoped: ethereum (https://composewith.eth/chains/ethereum)

> Ethereum mainnet is where settlement, security, and the deepest privacy tooling live. A credible privacy stack assigns one protocol per privacy need — shielded transfers, anonymous proofs, private voting, and stealth receiving — using protocols the registry verifies for Ethereum.

## Recommended stack

- **RAILGUN** (supporting_protocol) — readiness 91/100, difficulty high — Shielded balances and private transfers via zero-knowledge proofs for value-bearing flows on mainnet.
- **Semaphore** (supporting_protocol) — readiness 85/100, difficulty medium — Anonymous membership and signaling proofs for private actions without revealing identity.
- **MACI** (supporting_protocol) — readiness 94/100, difficulty high — Collusion-resistant private voting when the app needs tamper-resistant governance.
- **Fluidkey** (wallet_and_identity) — readiness 93/100, difficulty medium — Stealth addresses so users can receive on Ethereum without linking activity to a public address.

## Considered and excluded

- privacy-pools — Association-set / compliance-oriented privacy; choose it when you specifically need proof-of-innocence semantics rather than general shielded transfers.

## Risks

- Mainnet gas costs make zk-heavy flows expensive; budget proving and verification costs per action.
- Privacy tooling has distinct trust and compliance assumptions — review each protocol's threat model before shipping.

## Next steps

- Decide which actions must be private (balances, membership, votes, receiving) and map each to one protocol.
- Benchmark proving/verification cost on mainnet before committing to an on-chain verification path.
- Document the privacy guarantees and limits you actually provide so claims stay defensible.

## What the agent receives

```json
{
  "intent": "I want to build a privacy-preserving app on Ethereum mainnet",
  "matched_intent": "ethereum-mainnet-privacy-app",
  "recommended_stack": [
    {
      "slug": "railgun",
      "name": "RAILGUN",
      "role": "supporting_protocol",
      "readiness_score": 91,
      "integration_difficulty": "high",
      "reason": "Shielded balances and private transfers via zero-knowledge proofs for value-bearing flows on mainnet."
    },
    {
      "slug": "semaphore",
      "name": "Semaphore",
      "role": "supporting_protocol",
      "readiness_score": 85,
      "integration_difficulty": "medium",
      "reason": "Anonymous membership and signaling proofs for private actions without revealing identity."
    },
    {
      "slug": "maci",
      "name": "MACI",
      "role": "supporting_protocol",
      "readiness_score": 94,
      "integration_difficulty": "high",
      "reason": "Collusion-resistant private voting when the app needs tamper-resistant governance."
    },
    {
      "slug": "fluidkey",
      "name": "Fluidkey",
      "role": "wallet_and_identity",
      "readiness_score": 93,
      "integration_difficulty": "medium",
      "reason": "Stealth addresses so users can receive on Ethereum without linking activity to a public address."
    }
  ],
  "excluded_candidates": [
    {
      "slug": "privacy-pools",
      "reason": "Association-set / compliance-oriented privacy; choose it when you specifically need proof-of-innocence semantics rather than general shielded transfers."
    }
  ],
  "risks": [
    "Mainnet gas costs make zk-heavy flows expensive; budget proving and verification costs per action.",
    "Privacy tooling has distinct trust and compliance assumptions — review each protocol's threat model before shipping."
  ],
  "next_steps": [
    "Decide which actions must be private (balances, membership, votes, receiving) and map each to one protocol.",
    "Benchmark proving/verification cost on mainnet before committing to an on-chain verification path.",
    "Document the privacy guarantees and limits you actually provide so claims stay defensible."
  ],
  "generated_with": "composewith.eth",
  "registry_version": "2026.06.10-8752c9d"
}
```

---
Canonical: https://composewith.eth/intents/ethereum-mainnet-privacy-app
