A viral Ethereum-powered game where users pay 0.0005 ETH per shot for a 1% chance to win the jackpot.
ETH Shot is a decentralized gambling game built on Ethereum where players take shots at winning the jackpot. Each shot costs 0.0005 ETH with a 1% chance of winning the entire pot. The game features real-time updates, social sharing, sponsor integration, and a viral referral system with discount rewards.
- 🎯 Smart Contract Game: Built on Ethereum with provably fair 1% win probability
- 💰 Dynamic Jackpot: Pot grows with each shot, 90% goes to winner
- 🔒 Wallet Integration: Connect with MetaMask, WalletConnect, and other Web3 wallets
- ⚡ Real-time Updates: Live pot updates and winner announcements via Supabase
- ⏰ Cooldown System: 1-hour cooldown between shots per wallet address
- 🎪 Sponsor Rounds: Businesses can sponsor rounds for 0.001 ETH with custom branding
- 🎯 Referral System: Invite friends and earn discount rewards for viral growth
- 💰 Discount Rewards: 20% discounts on shots earned through referrals with 30-day expiration
- 📱 Social Sharing: Share wins and referral links on Twitter
- 🎨 Winner Animations: Confetti and celebration effects for jackpot wins
- 📊 Leaderboards: Track top players, recent winners, and referral champions
- 📱 Responsive Design: Optimized for desktop and mobile devices
- Solidity: Smart contract development
- OpenZeppelin: Security libraries (ReentrancyGuard, Pausable, Ownable)
- Hardhat: Development environment and testing
- SvelteKit: Modern web framework with SSR
- Vite: Fast build tool and dev server
- Tailwind CSS: Utility-first CSS framework
- Ethers.js v6: Ethereum interaction library
- Web3Modal: Multi-wallet connection
- Supabase: PostgreSQL database with real-time subscriptions
- Real-time subscriptions: Live updates for winners, shots, and sponsors
- Mocha + Chai: JavaScript testing framework
- Hardhat: Smart contract testing
- ESLint + Prettier: Code formatting and linting
- Sinon: Mocking and stubbing for tests
- Vercel: Frontend hosting and deployment
- Sepolia Testnet: Ethereum testnet for testing
- Node.js 20+
- pnpm (recommended) or npm
- MetaMask or other Web3 wallet
- Infura/Alchemy API key
- Supabase account
- Clone the repository:
git clone https://github.com/your-username/ethshot-web.git
cd ethshot-web
- Install dependencies:
pnpm install
- Set up environment variables:
cp .env.example .env
Edit .env
with your configuration:
# Smart Contract Configuration
VITE_CONTRACT_ADDRESS=0x1234567890123456789012345678901234567890
VITE_RPC_URL=https://sepolia.infura.io/v3/your-infura-key
# Supabase Configuration
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key
# Application Configuration
VITE_APP_URL=https://ethshot.io
VITE_NETWORK_NAME=Sepolia Testnet
VITE_CHAIN_ID=11155111
- Start the development server:
pnpm dev
- Open http://localhost:5173 in your browser.
The game is powered by a Solidity smart contract with the following specifications:
- Shot Cost: 0.0005 ETH per shot (0.0004 ETH with 20% referral discount)
- Win Probability: 1% chance to win the jackpot
- Payout Split: 90% to winner, 10% to contract owner
- Cooldown Period: 1 hour (3600 seconds) between shots per wallet
- Sponsor Cost: 0.001 ETH to sponsor a round with custom branding
- Referral Discounts: 20% discount for both referrer and referee
takeShot()
: Take a shot at the jackpot (payable)sponsorRound(string name, string logoUrl)
: Sponsor a round (payable)getCurrentPot()
: Get current jackpot amountgetPlayerStats(address)
: Get player statisticscanTakeShot(address)
: Check if player can take a shotgetCooldownRemaining(address)
: Get remaining cooldown time
- ReentrancyGuard: Prevents reentrancy attacks
- Pausable: Emergency pause functionality
- Ownable: Access control for admin functions
- Randomness: Uses block hash and timestamp for randomness
pnpm test:contracts
pnpm test
pnpm test:all
pnpm coverage
Deploy to Sepolia Testnet:
# Configure your private key in hardhat.config.js
pnpm deploy:testnet
Verify Contract on Etherscan:
pnpm verify:testnet
- Create a new Supabase project
- Run the SQL schema from
supabase/schema.sql
- Configure Row Level Security (RLS) policies
- Update environment variables with Supabase credentials
Deploy to Vercel:
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel --prod
Environment Variables in Vercel:
VITE_CONTRACT_ADDRESS
VITE_RPC_URL
VITE_SUPABASE_URL
VITE_SUPABASE_ANON_KEY
VITE_APP_URL
VITE_NETWORK_NAME
VITE_CHAIN_ID
The application uses Supabase PostgreSQL with the following tables:
- shots: Records all shot attempts with discount tracking
- winners: Tracks jackpot winners
- sponsors: Manages sponsorship rounds
- players: Player statistics and rankings
- referral_codes: User referral codes for viral growth
- referrals: Tracks referral relationships
- referral_discounts: Manages discount rewards and usage
Real-time subscriptions provide live updates for:
- New winners
- Shot attempts
- Sponsor activations
- GameButton: Main "Take the Shot" button with loading states
- PotDisplay: Real-time jackpot amount display
- WalletConnect: Multi-wallet connection interface
- WinnerAnimation: Confetti and celebration effects
- Leaderboard: Top players and statistics
- RecentWinners: Live winner feed
- SponsorBanner: Sponsor branding display
- ReferralSystem: Referral code management and sharing
- DiscountButton: Apply referral discounts to shots
- ReferralLeaderboard: Top referrers and statistics
- gameStore: Game state, contract interactions, database integration
- walletStore: Wallet connection and Web3 functionality
- toastStore: User notifications and feedback
# Development
pnpm dev # Start dev server
pnpm build # Build for production
pnpm preview # Preview production build
# Testing
pnpm test # Run frontend tests
pnpm test:contracts # Run smart contract tests
pnpm test:all # Run all tests
pnpm coverage # Generate test coverage
# Smart Contract
pnpm compile # Compile contracts
pnpm deploy:testnet # Deploy to Sepolia
pnpm verify:testnet # Verify on Etherscan
# Code Quality
pnpm lint # Run ESLint
pnpm format # Format with Prettier
- Audited Libraries: Uses OpenZeppelin's battle-tested contracts
- Reentrancy Protection: ReentrancyGuard prevents reentrancy attacks
- Access Control: Ownable pattern for admin functions
- Emergency Pause: Pausable functionality for emergency stops
- Input Validation: Proper validation of all inputs
- Environment Variables: Sensitive data stored in environment variables
- HTTPS Only: All production traffic over HTTPS
- Content Security Policy: Implemented via Vercel headers
- XSS Protection: Framework-level XSS protection
- Database Indexing: Optimized queries with proper indexes
- Real-time Subscriptions: Efficient WebSocket connections
- Caching: Strategic caching of contract calls
- Code Splitting: Lazy loading of components
- Image Optimization: Optimized assets and images
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes
- Add tests for new functionality
- Run the test suite:
pnpm test:all
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Submit a pull request
- Follow the existing code style
- Write tests for new features
- Update documentation as needed
- Use conventional commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
Important: This is a game of chance involving real cryptocurrency. Please consider the following:
- Gambling Risk: Only gamble with funds you can afford to lose
- Smart Contract Risk: Smart contracts may contain bugs or vulnerabilities
- Regulatory Compliance: Ensure compliance with local gambling laws
- No Guarantees: No guarantees of winnings or returns
- Educational Purpose: This project is primarily for educational purposes
- Documentation: Check this README and inline code comments
- Issues: Report bugs via GitHub Issues
- Discussions: Join discussions in GitHub Discussions
- Community: Follow updates on Twitter @profullstackinc
- Discord: Join our community on Discord
- Core game mechanics
- Smart contract deployment
- Frontend application
- Database integration
- Real-time updates
- Mobile app development
- Advanced analytics dashboard
- NFT rewards for winners
- Referral system with discount rewards
- Multiple game modes
- Layer 2 integration (Polygon, Arbitrum)
- DAO governance
- Tournament system
- Cross-chain compatibility
Built with ❤️ by the ETH Shot team