Skip to content
B

Bounty App

bounty, fun

Created on 25th August 2025

•

B

Bounty App

bounty, fun

The problem Bounty App solves

Problem It Solves

  • Trust-minimized payouts: Escrows bounty funds on-chain and automates winner payouts, removing manual admin risk and disputes.
  • Transparent coordination: Emits verifiable events and indexes them into a queryable DB, creating an auditable history of bounties, claims, votes, and winners.
  • Scalable engagement: Makes it easy to run solo or multiplayer bounties, accept
    on-chain submissions, and reward contributors with tokens and NFTs.
  • Portable data: Exposes REST/GraphQL APIs so communities, apps, and dashboards can easily consume live bounty data.

Who It’s For

  • DAOs and communities: Run community challenges with verifiable payouts and on-
    chain governance (voting).
  • Open-source maintainers: Post tasks, accept claims, pay contributors, and main
    tain a public trail.
  • Brands/creators: Launch engagement quests with on-chain rewards and NFT badges
    .
  • Hackathons: Manage submissions, multi-winner prizes, and instant distribution
    at scale.

What You Can Do

  • Create bounties: Solo or open bounties, in ETH or supported ERC-20 tokens (USD
    C/ENB), with configurable max winners and fees.
  • Join and fund: Participants can join open bounties and add to the prize pool (
    multiplayer).
  • Submit claims: Contributors submit work with title/description/URI; issuers ac
    cept or send to vote.
  • Vote and resolve: Community voting on claims; resolve to pick winners and auto
    matically pay them.
  • NFT rewards: Accepted claims mint an ERC721 (proof of achievement) with royalty support.
  • Leaderboards: Track paid/earned amounts and NFTs held for reputation and insights.
  • Moderation: Admins/issuers can ban abusive bounties/claims using signed messages.
  • Idea generation: Built-in AI route to generate fun/creative bounty prompts.

Why It’s Safer/Better

  • On-chain escrow: Funds are locked in the contract; payouts happen only via acc
    epted claims/resolved votes.
  • Event-driven audit: Every lifecycle step (create, join, withdraw, claim, accept, vote) is emitted and indexed.
  • Typed data access: Prisma + Postgres schemas and TRPC reduce app-side errors; Ponder keeps DB in sync with chain.
  • Signature-gated moderation: Restricts ban actions to admins/issuers with verif
    iable signatures.
  • Multi-token awareness: Normalizes token amounts (decimals) for accurate sorting/analytics.

How It Works

  • Contracts: ENBBounty manages bounties, participants, claims, voting, and payouts; ENBBountyNft mints NFTs for accepted claims.
  • Indexer: Ponder listens to contract events, writes into Postgres tables (Bount
    ies, Claims, Votes, Winners, etc.), and serves REST/GraphQL.
  • App: Next.js + TRPC + Prisma read from the DB and call the indexer for aggregated data (winners, votes, supported tokens); Wagmi hooks execute contract calls
    from the UI.

Integrations & APIs

  • REST (Hono):
    • GET /bounty/:chainId (lists), /live/bounty/:chainId, /voting/bounty/:ch ainId, /past/bounty/:chainId
    • GET /bounty/:chainId/:bountyId (details), /bounty/:chainId/:bountyId/winners, /bounty/:chainId/:bountyId/votes, /bounty/:chainId/:bountyId/voting-stats
    • GET /claim/:chainId, /claim/:chainId/:claimId, /bounty/claims/:chainId/ :bountyId
    • GET /tokens/:chainId (supported tokens), /user/:address/wins/:chainId
    • /graphql for schema-backed queries, /swagger for docs.
  • App TRPC (selected):
    • supportedTokens, bounties (with pagination/sorting), bounty, bountyClaims, participations
    • bountyWinners, bountyVotes, userVotes
    • Moderation: banBounty, banClaim (signature-verified)
  • Web3 hooks (Wagmi):
    • Create: createSoloBounty, createOpenBounty, createTokenBounty, createOpenTokenBounty
    • Claims: createClaim, acceptClaim
    • Voting: submitClaimForVote, voteClaim, resolveVote, resetVotingPeriod

Quick Use Cases

  • Community challenge: Create an “open” bounty with 5 winners; members join and
    fund; contributors submit claims; the community votes; funds auto-split to 5 winners; each winner gets an NFT.
  • OSS issue bounty: Post a solo bounty in USDC, accept a claim, and the contributor is paid automatically with an on-chain audit trail.
  • Creator quests: Run weekly themed tasks; winners get ETH tips and collectible
    NFTs; leaderboards highlight top fans.

Challenges I ran into

Challenges & Fixes

1. Local Contract Address Mismatch

  • Issue: UI and indexer pointed to different contract addresses, so data didn’t align.
  • Fix: Synced contract addresses in .env.local and config.ts with Hardhat deployment outputs.

2. Prisma Schema Drift (Dev vs Prod)

  • Issue: Wrong schema (enbpublic vs default) caused missing tables/empty reads.
  • Fix: Created correct schema and used matching commands (dev:generate/migrate vs prod:generate/migrate). Kept DATABASE_URL consistent.

3. Silent Indexer Failures

  • Issue: TRPC proxy returned empty lists on indexer errors, masking misconfigs (bad INDEXER_URL, syncing delays).
  • Fix: Added health checks, logs, and surfaced errors/toasts to UI.

4. Signature Verification Hardcoded

  • Issue: Always checked Base chain, causing invalid signatures on other chains.
  • Fix: Made verification chain-aware (chains[input.chainName] or by chainId).

5. AI Route Inconsistencies

  • Issue: Docs said Gemini first, but code used Moonshot’s kimi-latest first; env vars mismatched.
  • Fix: Standardized provider order, env var names, and normalized JSON response handling.

6. Token Amount Normalization

  • Issue: Different token decimals (ETH/ENB = 18, USDC = 6) skewed analytics/sorting.
  • Fix: Normalized values in the indexer and added amountSort column for consistent ordering.

7. Event Race Conditions (Local)

  • Issue: Events processed out of order (join/withdraw before creation) caused null lookups.
  • Fix: Defensive checks, warnings, and guidance to reset DB or replay from block 0 after redeploys.

8. Direct DB Reads vs Indexer Reads

  • Issue: Divergent data between Prisma and indexer (claims vs winners).
  • Fix: Aligned Prisma schemas to indexer’s tables; used indexer for derived/aggregate views.

9. Docs/Repo Drift

  • Issue: README pointed to wrong indexer repo, causing mismatched endpoints and APIs.
  • Fix: Updated docs to point to in-repo indexer and aligned INDEXER_URL.

🔑 Summary

Most issues came from misaligned configs (addresses, schemas, env vars), inconsistent data views (DB vs indexer), and hidden errors (silent failures, hardcoded logic).
The fixes focused on alignment, normalization, explicit error handling, and repo standardization.

Other Onchain Proof

image

image

Tracks Applied (1)

Top 5 Live Consumer Apps

Why It’s Top-5 Consumer-Ready Bold, simple value: Lets anyone run fun, verifiable challenges with instant on -chain pay...Read More

Cheer Project

Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.

Discussion

Builders also viewed

See more projects on Devfolio