Deposit USDC. Earn yield. Battle with your upside. Never risk your deposit.
DeFi yields exist but nobody uses them -- the UX is hostile. Prediction markets exist but people risk real money. No product combines passive earning with risk-free engagement where you can only play with what you've already earned.
-
Deposit USDC -- Your money is supplied to MORE Markets (Aave V3 fork on Flow) and starts earning 4%+ APY immediately.
-
Yield accumulates -- Interest compounds automatically via Flow's native scheduled transactions. No keepers, no bots.
-
Battle with yield -- Wager your earned interest on daily predictions (crypto prices, sports, events). Only yield is at risk. Your deposit is always safe.
-
Win and compound -- Winnings are added to your principal, so they earn yield too. Losing just means your yield goes to winners.
Float uses every Flow-native feature that makes consumer DeFi possible:
- Passkeys (FLIP-264) -- One-tap signup with Face ID/fingerprint. No seed phrase, no wallet extension.
- Gas sponsorship -- Three-role transaction model means users never see gas fees.
- Scheduled transactions -- Protocol-level cron jobs for auto-compounding and battle resolution. No keepers needed.
- Cross-VM (Cadence + EVM) -- Cadence handlers call Solidity contracts via COA for best of both worlds.
Frontend reads from EVM via viem (public client). Frontend writes go through Cadence -> COA -> EVM (FCL.mutate).
| Layer | Technology |
|---|---|
| Frontend | React, Vite, Tailwind CSS, FCL |
| Auth | WebAuthn passkeys (FLIP-264) |
| Contracts (EVM) | Solidity 0.8.20, Foundry |
| Contracts (Cadence) | FlowTransactionScheduler handlers |
| Yield | MORE Markets (Aave V3 fork on Flow) |
| Oracle | Band Protocol on Flow |
| Gas | Flow native sponsorship |
Testnet app: [coming soon — deploy to Vercel]
Deployed contracts (Flow EVM Testnet):
| Contract | Address |
|---|---|
| FloatVault | 0x65aA2d8aa386758CE4032E1628D80F6d4CF8EbbC |
| BattlePool | 0x807E68C074D761a0617cCDF2E61Db146F0a79Aad |
| MockUSDC | 0x5308C7C3f9A5D5242C9462B10C927AD73Cd7E7eE |
Cadence contracts: deployed to 0xf865549035cf159a on Flow Testnet.
# Install dependencies
npm install
# Run Solidity tests (19/19 passing)
cd contracts && forge test
# Start frontend (testnet)
npm run devFloatVault.sol -- Core vault managing user deposits and yield tracking:
deposit(amount)-- Supply USDC to lending pool, track principalwithdraw(amount)-- Withdraw principal (protected against battle underfunding)yieldOf(user)-- Calculate available yield (pro-rata, minus locked amounts)lockYield/unlockYield-- Battle pool integration for wageringcreditWinnings-- Add battle winnings to principal (compound effect)
BattlePool.sol -- Prediction battle system:
createBattle(...)-- Oracle-resolved crypto battlescreateEventBattle(...)-- Admin-resolved event battlesenter(battleId, side, amount)-- Wager yield on YES or NOresolve(battleId, actualPrice)-- Auto-resolved via scheduled handlerclaim(battleId)-- Winners collect proportional payout (5% protocol fee)
19/19 Foundry tests passing.
- 5% of losing side on every battle
- Yield spread -- 0.33% between protocol rate and user rate
- Premium battles (V2) -- sponsored battles with larger pools
float/
|-- src/ # React frontend
| |-- components/ # UI components
| |-- config/ # Flow + viem config
| '-- lib/ # Passkey auth, transactions, ABIs
|-- contracts/ # Foundry project
| |-- src/ # FloatVault.sol, BattlePool.sol
| |-- test/ # 19 tests
| '-- script/ # Deployment scripts
|-- cadence/
| |-- contracts/ # Scheduled tx handlers
| |-- transactions/ # COA setup, deployment, scheduling
| '-- scripts/ # Read helpers
'-- flow.json # Flow project config
MIT