
ethPulse
Web3.0 decentralized and incentivized polls & surveys to power community-driven decisions.
Demo
About
# dPulse — Decentralized, Incentivized Polls & Surveys **dPulse** is a Web3-native toolkit that lets any project, DAO, or app **create polls and multi-question surveys**, **target the right respondents**, and **automatically reward participation** on-chain. It solves three persistent problems in community research: (1) low-quality, sybil-driven responses, (2) painful/manual reward distribution, and (3) poor interoperability with the rest of a project’s on-chain stack. ## What it is A modular, EVM-compatible protocol and dApp that: * **Creates “Projects”** (containers) that hold both **single-question polls** and **multi-question surveys**. * **Gates participation** with pluggable identity/reputation signals (e.g., token/NFT/POAP ownership, allowlists, EAS/Gitcoin-style attestations, off-chain credential proofs). * **Incentivizes responses** with native ETH or any ERC-20, using built-in **escrow + payout** flows. * **Automates reward swaps** (optional): respondents can **accumulate small rewards** and **withdraw once a minimum threshold (e.g., $10) is reached**, receiving **the token of their choice** via an aggregator/bridge (e.g., SideShift/DEX route), reducing dust payouts and gas waste. * **Prevents fraud & double voting** with flexible modes: open voting, **allowlisted voting**, **one-wallet/one-vote**, and an **anonymous mode** (commit-reveal now; ZK/Semaphore-style proofs on the roadmap). * **Streams results in real time** and exposes **clean APIs/ABIs** for dashboards, bots, and integrations. ## Why it matters * **Higher-quality insights:** You choose who can respond and how often, aligning incentives with proof of personhood, skin-in-the-game, or community tenure. * **Operational simplicity:** No more spreadsheets or manual airdrops—rewards and settlement are on autopilot. * **Composable by default:** Everything is on-chain or hash-anchored, so downstream tools (analytics, governance, CRM, Telegram bots) can subscribe and act. ## How it works (flow) 1. **Creator sets up a Project** → defines poll/survey, target audience, reward pool (ETH/ERC-20), eligibility rules, response window, and min-withdrawal threshold (optional). 2. **Respondent connects a wallet** → passes eligibility checks (tokens, attestations, allowlist). 3. **Respondent submits answers** → on-chain event and/or off-chain payload (IPFS/Arweave) with **on-chain hash**; gas-optimized pathways are available. 4. **Protocol validates entry** → enforces uniqueness (per poll rules) and credits **escrowed reward balance** to the respondent. 5. **Withdrawal** → when balance ≥ threshold, respondent **withdraws in their preferred asset** via auto-swap; otherwise, direct token withdrawal is always available. 6. **Results** → creator reads live tallies, filtered cohorts, and exports. ## Key features * **Projects, Polls & Surveys:** one space to manage all research. * **Flexible question types:** single/multiple choice, Likert scale, free-text (hashed), numeric. * **Targeting & gating:** ERC-20 balances, NFT/POAP holds, allowlists, attestations. * **Incentives engine:** per-response fixed reward, tiered rewards, or capped pools. * **Escrow + Auto-Swap (optional):** batch small earnings; withdraw as selected token. * **Anti-sybil modes:** per-wallet cap, per-identity cap, commit-reveal, anon mode roadmap. * **Developer-friendly:** ABI, REST/Graph endpoints, webhooks, and event indexes. * **Auditable & exportable:** all critical state verifiable on-chain; results export. ## Technical architecture (MVP) * **Smart contracts (Solidity, EVM):** * `ProjectsRegistry` (UUPS-upgradeable): create/manage Projects. * `PollsAndSurveys` (modular): store metadata refs (IPFS/Arweave), rules, and state. * `RewardsEscrow` (ERC-20 & ETH): credit balances; enforce min-withdraw; payout. * **Access/Gating module:** pluggable checks (token/NFT, allowlist, attestations). * **Event log** for indexing and analytics. * **Data model:** * **On-chain:** poll/survey config, rules, merkle roots/hashes, tallies, reward ledger. * **Off-chain (content):** question text, long answers, attachments → IPFS/Arweave, anchoring **content hash** on chain. * **Indexing & APIs:** a lightweight indexer + API/Graph layer for fast queries and dashboards. * **Wallet UX:** EOA support; **ERC-4337 account abstraction** (roadmap) for gas-sponsored flows. ## What’s novel * **Reward Auto-Swap + Threshold Withdrawals:** designed for micro-rewards without dust. * **Research-grade gating:** mix on-chain signals and attestations to target the right cohorts. * **Both polls and multi-question surveys** under one on-chain roof, grouped by Projects. ## Example use cases * **DAO governance temperature checks** with token-weighted or one-member-one-vote. * **Protocol UX research**: survey users who actually used a feature/NFT. * **Partner marketing**: pay qualified respondents in the asset they prefer. * **Hackathons & grants**: fast community feedback with verifiable participation. ## Current status (hackathon scope) * Core contract design (upgradeable, modular) and schema. * MVP flows for **create → respond → reward → withdraw**. * Minimal indexer and dashboard for live results. * Optional auto-swap integration path and min-withdraw mechanics. ## Roadmap * **v0 (Hackathon):** core contracts, Projects, polls/surveys, rewards escrow, basic gating, dashboard. * **v1:** auto-swap withdrawals, richer question types, analytics API, role-based team access. * **v2:** anonymous ZK voting mode, ERC-4337 gas sponsorship, advanced cohort targeting, integrations (Discord/Telegram bots, governance frameworks).
How it's made
# How it’s made — dPulse (Hackathon Version) **Core Goal:** Build a minimal but functional **decentralized polls & surveys dApp** where: * Creators can set up a poll/survey with a reward pool. * Respondents can answer and automatically earn small token rewards. * Results are visible on-chain and in a simple dashboard. --- ## Tech Stack * **Smart Contracts (Solidity, Hardhat)** * `PollsContract`: create polls/surveys, store metadata (IPFS link), and record responses. * `RewardsEscrow`: hold reward tokens (ETH or ERC-20) and distribute per valid response. * Simple **access control** (poll creator vs responder). * **Storage** * Poll & survey text/questions → stored on **IPFS**. * Only **hash + link** stored on-chain to keep gas low. * **Frontend** * **Next.js + React** for the web app. * **wagmi + RainbowKit** for wallet connections. * Basic flows: * Create Poll/Survey * Respond to Poll * View Results * **Indexing** * Minimal **Node.js listener** that reads contract events and pushes to frontend (optional; can also read directly from contract). --- ## Features Built 1. **Create Poll/Survey** — set title, questions, and reward pool (ETH/ERC-20). 2. **Respond** — connect wallet, submit answer, and get credited a reward. 3. **Reward Distribution** — every valid response earns a small token reward directly. 4. **Results Dashboard** — tallies displayed live from contract events. --- ## Hacky/Notable Bits * **Kept it lean:** only store what’s essential on-chain (hashes, tallies, rewards) and offload content to IPFS. * **Escrow payout logic:** simple balance ledger that transfers tokens immediately (no thresholding, no auto-swap for now). * **Gas-friendly design:** answers encoded compactly (multiple choice → numbers, free-text → hash). --- ✅ This stripped-down version is **MVP-ready for ETHGlobal**: * Shows **on-chain polls & surveys**. * Demonstrates **automatic incentives**. * Keeps contracts small, auditable, and deployable fast.