Skip to content
Veto

Veto

Predict The Future - WIN REWARDS

Created on 8th January 2026

•

Veto

Veto

Predict The Future - WIN REWARDS

The problem Veto solves

1. Eliminating "Cheap Talk" in Polling

Traditional social media polls often suffer from spam, bots, or low-effort participation. By implementing a "skin in the game" mechanism where users must stake ETH to vote, VETO ensures that every vote carries weight and conviction. This results in higher-quality data and true sentiment analysis, leveraging the Keynesian Beauty Contest theory.

2. Decentralized & Transparent Trust

In centralized betting or polling platforms, users must trust the platform operator not to manipulate results or withhold funds. VETO runs entirely on the Lisk blockchain. The logic for determining winners, calculating result percentages, and distributing the reward pool is immutable and open-source. Funds are locked in a smart contract, ensuring winners are always paid out automatically.

3. SocialFi & Gamification

Communities need better ways to engage. VETO turns passive surveying into an active, competitive sport. It tracks:

  • Streaks for consecutive wins.
  • Leaderboards for top predictors.
  • Accuracy Rates for user reputation.

Challenges we ran into

1. Managing On-Chain Data Costs (Images)

One of the biggest hurdles was allowing users to add visual flair (images for each option) without bloating the blockchain or incurring massive gas fees. Storing images directly on Ethereum/Lisk is impractical.

How I got over it:
I integrated IPFS (via Pinata). The frontend uploads images to IPFS through a lightweight backend proxy (to secure API keys) and retrieves a Content Identifier (CID). The Smart Contract was optimized to store string[] optionImages arrays containing only these CIDs. This keeps gas costs low while maintaining decentralized storage.

2. Handling Dynamic Reward Distribution

Writing the logic to split a reward pool among an unknown number of winners was tricky. If 100 people win, the contract needs to distribute funds without hitting the block gas limit or suffering from rounding errors (dust).

How I got over it:
I implemented a robust distributeRewards functionality in Solidity that calculates the rewardPerWinner using precise integer division. I added frontend checks to ensure the pool state is synchronized before distribution to prevent failed transactions.

3. User Experience (ETH vs USD)

Web3 users often think in USD, but the blockchain works in ETH/Wei. Showing only ETH values made it hard for users to understand the real-world value of their bets.

How I got over it:
I built a global state system using Zustand that fetches the live ETH price via the CoinGecko API. I then implemented a "Currency Toggle" that instantly recalculates all input fields, pool sizes, and estimated winnings across the entire dApp into USD, significantly improving accessibility.

Tracks Applied (1)

Winner Classification

Why VETO fits the SocialFi Track VETO perfectly bridges the gap between Social interaction and Decentralized Finance. ...Read More

Discussion

Builders also viewed

See more projects on Devfolio