Search projects, hackathons, sponsors and tech

    ← All projects

    About

    The problem it 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. Smart Contract Address(es) https://basescan.org/address/0x68c9cd893341220863e16e27800d81f01f6dfb83 https://basescan.org/token/0xfc3db3f829765d2d192f3d5c3aa6f24121068346 Other Onchain Proof ![image](https://assets.devfolio.co/content/e74eb8a174654b169025d7b93b3456de/4d58f91c-84e3-494b-bd7e-a1520374d2f6.png) ![image](https://assets.devfolio.co/content/e74eb8a174654b169025d7b93b3456de/178bbd4d-1874-4993-bd86-20a4b6954321.png)

    How it's made

    Challenges we 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**.