{
  "schema_version": "intent.v1",
  "slug": "build-private-smart-contract-app",
  "title": "build a private smart contract app",
  "audience": "agent",
  "prompt": "I want to build an app with private smart contracts and private state",
  "maps_to": [
    "privacy",
    "private smart contracts",
    "private state",
    "confidential transactions",
    "Aztec",
    "Noir"
  ],
  "stack": [
    {
      "slug": "aztec",
      "role": "settlement_or_execution",
      "reason": "Use Aztec for private smart contracts, private functions, private state, and hybrid private/public execution."
    },
    {
      "slug": "semaphore",
      "role": "wallet_and_identity",
      "reason": "Use Semaphore when the app also needs anonymous group membership or private access/signaling outside core Aztec contract state."
    },
    {
      "slug": "helios",
      "role": "indexing_and_data",
      "reason": "Use Helios or a user-controlled RPC strategy for privacy-sensitive Ethereum-side reads where local verification matters."
    }
  ],
  "excluded_candidates": [
    {
      "slug": "railgun",
      "reason": "Good for private token flows and private DeFi on existing EVM chains, but not for writing new private smart contracts."
    },
    {
      "slug": "maci",
      "reason": "Best for private voting, not general private application state."
    }
  ],
  "risks": [
    "Aztec is not EVM compatible; teams must learn Aztec.nr, aztec.js, PXE, and Aztec deployment flows.",
    "Private/public state boundaries need explicit design or metadata can leak through public calls, timing, events, or L1/L2 messages.",
    "Tooling and network status should be verified against current Aztec alpha/testnet documentation before production planning.",
    "Private UX needs account recovery, note management, proof generation, and user education beyond ordinary EVM app UX."
  ],
  "next_steps": [
    "Write the privacy model: which state is private, which state is public, and which metadata can still leak.",
    "Set up the Aztec local network and deploy a minimal token or counter contract to validate toolchain compatibility.",
    "Prototype private functions, public functions, and L1/L2 messaging separately before composing them into the app.",
    "Decide whether Semaphore is needed for anonymous membership/access outside Aztec contract state.",
    "Add tests that assert privacy boundaries, not only functional correctness."
  ],
  "why": "Aztec is the direct fit for private smart contracts because it provides a privacy-first L2 with private functions, private state, and hybrid public/private execution. Railgun and Privacy Pools are better for token shielding on existing EVM chains, while MACI is specialized for private voting.",
  "verified_at": "2026-06-04"
}