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)
- Creator sets up a Project → defines poll/survey, target audience, reward pool (ETH/ERC-20), eligibility rules, response window, and min-withdrawal threshold (optional).
- Respondent connects a wallet → passes eligibility checks (tokens, attestations, allowlist).
- Respondent submits answers → on-chain event and/or off-chain payload (IPFS/Arweave) with on-chain hash; gas-optimized pathways are available.
- Protocol validates entry → enforces uniqueness (per poll rules) and credits escrowed reward balance to the respondent.
- Withdrawal → when balance ≥ threshold, respondent withdraws in their preferred asset via auto-swap; otherwise, direct token withdrawal is always available.
- 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 — 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
- Create Poll/Survey — set title, questions, and reward pool (ETH/ERC-20).
- Respond — connect wallet, submit answer, and get credited a reward.
- Reward Distribution — every valid response earns a small token reward directly.
- 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.