Tatkal60 is a fast, fair, on-chain micro-market built on Hedera EVM. Every 60 seconds a round opens where users bet UP/DOWN on BTC/USD. Prices are secured by Pyth Network and pushed on-chain right before resolve to prevent stale data. Funding is native HBAR today, with a built-in Chainlink CCIP Receiver to accept deposits from Ethereum (Sepolia) → Hedera for cross-chain onboarding.
Why it matters
- Brings sub-minute prediction gameplay to Hedera with verifiable settlement.
- Eliminates oracle games: rounds resolve only after a fresh Pyth update is posted.
- Cross-chain UX: users on Ethereum can fund play on Hedera via CCIP (receiver live in contracts).
How it works
- EscrowGame.sol manages 60s rounds, pools, fees, and pro-rata payouts (or refunds on flat outcomes).
- OracleAdapter.sol reads BTC/USD from Pyth; UI can “Refresh Pyth” (Hermes → on-chain) to ensure a fresh update.
- CCIPReceiver.sol listens for approved CCIP messages (Sepolia) and credits the user on Hedera, enabling cross-chain funding.
- Frontend (React + Tailwind) shows live on-chain price with Hermes fallback, wallet balance, rounds list, and 1-click bet/claim with Hashscan links.
Tech & integrations
- Hedera EVM + optional HTS usage.
- Pyth BTC/USD feed (Hermes updates posted on-chain; freshness window set to 75s for 60s rounds).
- Chainlink CCIP (Sepolia → Hedera) for cross-chain deposits via our CCIP Receiver contract.
- Wallets: MetaMask (MVP).
Roadmap
- Enable CCIP withdrawals (Hedera → Sepolia) and multi-asset markets.
- Add native Hedera wallets (HashPack/Kabila) and MetaMask Snap.
- Expand to more Pyth symbols and HTS-hybrid rewards.
We built Tatkal60 on Hedera EVM with a small set of Solidity contracts:
- EscrowGame.sol – manages 60-second rounds, pools, fees, and pro-rata payouts (or refunds on flat outcomes).
- OracleAdapter.sol – reads BTC/USD from Pyth. We post fresh updates via Hermes → updatePriceFeeds before resolve so the read is never stale.
- CCIPReceiver.sol – Chainlink CCIP entrypoint to accept cross-chain deposits (Sepolia → Hedera) for funding rounds. (Receiver live; sender flow documented for next iteration.)
Frontend is React + Vite + Tailwind with ethers v6 and Zustand for a tiny wallet store (MetaMask for MVP). The UI shows a live on-chain price (fallback to Hermes if stale), wallet balance, round list,
and one-click bet/resolve/claim with toasts and Hashscan links.
Dev notes / hacks that helped:
- Hedera requires non-zero msg.value ≥ 1 tinybar; our Pyth helper auto-bumps the fee to pass node validation.
- We tuned a freshness window = 75s (60s round + buffer) and made it env-configurable.
- Read model loads nextRoundId() and getRound(id); if unavailable it reconstructs from events as a fallback.
- All addresses/ABIs are chain-scoped via env (e.g., _296 for testnet), which kept deploys painless
Stack: Hedera EVM (+ HTS ready), Solidity/Hardhat, Pyth (Hermes + on-chain program), Chainlink CCIP, React/TypeScript, Tailwind, Vite, ethers v6.