Welcome to CursedTakes - where controversial opinions become valuable assets in a high-stakes prediction market. This isn't your typical prediction platform; it's a battleground for the hottest takes, wildest opinions, and most divisive debates on the internet.
๐ฅ A prediction market for the bold, the controversial, and the cursed
In this unique ecosystem, you don't just predict outcomesโyou bet on the court of public opinion. From food debates to pop culture controversies, every hot take has a price, and every opinion could be your ticket to rewards.
- Contract Address:
0xbA9Ce58c037413919E99d3c8fBef4b286A35Ab02 - Solidity: For writing smart contracts
- Foundry: For development and testing
- Hardhat: Alternative development environment
- Opinion-Based Markets: Trade on subjective, controversial, and often humorous debates
- Simple Yes/No Format: No complex options, just pure binary predictions
- Winner-Takes-Most: The majority opinion splits the pot from the losing side
- Fixed Entry Fee: Equal stakes for all participants
- Time-Limited Debates: Quick, engaging prediction windows keep the action fresh
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Foundry consists of:
- Forge: Ethereum testing framework (like Truffle, Hardhat and DappTools).
- Cast: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
- Anvil: Local Ethereum node, akin to Ganache, Hardhat Network.
- Chisel: Fast, utilitarian, and verbose solidity REPL.
CursedTakes is a prediction market game where players can stake on the outcome of various events, from crypto prices to pop culture moments. It's a fun, engaging way to test your predictive skills against others in the community.
-
Create a Poll
- Pose a yes/no question (e.g., "Will Bitcoin hit $100K by 2025?")
- Set a duration for the poll (how long voting will be open)
- Define a voting fee (the amount users need to pay to vote)
-
Vote on Predictions
- Browse active polls
- Stake your ETH to vote 'Yes' or 'No'
- The more you stake, the higher your potential rewards
-
Earn Rewards
- When a poll ends, the winning side shares the prize pool
- Your rewards are proportional to your stake
- The earlier you vote, the higher your potential multiplier
-
Special Features
- Cursed Mode: Double-or-nothing side bets
- Streaks: Consecutive correct predictions earn bonus rewards
- Leaderboards: Compete with other players for the top spot
- Earn ETH by making accurate predictions
- Prove your knowledge in various topics
- Engage with the community through discussions and debates
- No minimum stake - play with as little as you want
- Quick Takes: Short-term predictions (hours/days)
- Seasonal Events: Special themed prediction events
- High Stakes: For the bold - higher risks, higher rewards
- Community Challenges: User-created prediction contests
- Create Polls: Users can create prediction polls with custom questions, duration, and voting fees
- Vote with Stakes: Participants can vote on active polls by staking ETH
- Earn Rewards: Win rewards by correctly predicting outcomes
- Decentralized: Fully on-chain with smart contract logic
- Responsive UI: Mobile-friendly interface built with Tailwind CSS
- Solidity: For writing smart contracts
- Foundry: For development and testing
- Hardhat: Alternative development environment
- Next.js: React framework for server-rendered applications
- TypeScript: For type-safe code
- wagmi: React Hooks for Ethereum
- RainbowKit: For wallet connection
- Tailwind CSS: For styling
- viem: TypeScript interface for Ethereum
- Node.js (v18 or later)
- npm or yarn
- Foundry (for smart contract development)
- MetaMask or any Web3 wallet
-
Install Foundry:
curl -L https://foundry.paradigm.xyz | bash foundryup -
Install dependencies:
forge install
-
Compile contracts:
forge build
-
Run tests:
forge test
-
Navigate to the frontend directory:
cd cursed-takes-frontend -
Install dependencies:
npm install # or yarn install -
Create a
.env.localfile in the frontend directory with:NEXT_PUBLIC_CONTRACT_ADDRESS=your_contract_address_here NEXT_PUBLIC_RPC_URL=your_ethereum_rpc_url -
Start the development server:
npm run dev # or yarn dev -
Open http://localhost:3000 in your browser
- createPoll: Create a new prediction poll
- vote: Vote on an active poll
- finalizePoll: Finalize a poll after it ends
- claimWinnings: Claim rewards from a finalized poll
- extendPoll: Extend the duration of a poll
/app: Next.js app router pages/components: Reusable React components/contracts: Contract ABIs and addresses/hooks: Custom React hooks/styles: Global styles and Tailwind configuration
Run tests with:
forge test -vvvRun tests with:
npm test
# or
yarn test- Deploy to a testnet:
forge script script/Deploy.s.sol --rpc-url $RPC_URL --private-key $PRIVATE_KEY --broadcast
Deploy to Vercel or Netlify with environment variables set.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with โค๏ธ using Foundry and Next.js
- Inspired by prediction markets like Augur and Polymarket
$ forge build$ forge test$ forge fmt$ forge snapshot$ anvil$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>$ cast <subcommand>$ forge --help
$ anvil --help
$ cast --help