User Journey
Complete user journey from sign-up to earning rewards on Money Race.
🚀 Getting Started
Step 1: Connect Your Account
Two options to get started — both gasless:

Google Login (zkLogin):
No wallet needed — one-click sign-in
Automatic keypair generation
Perfect for Web2 users
Wallet Connect:
Direct Sui wallet integration (dapp-kit)
Full control of your keys
Supports all major Sui wallets
All transactions are gasless — backend sponsors gas fees.
Step 2: Browse Savings Rooms
Explore available rooms on the dashboard:
Name
"Daily Savers Club"
Duration
14 days (minimum 7 days)
Deposit Amount
10 USDC
Period
Daily (or Weekly)
Participants
12/20
Strategy
Balanced (~8% APY)
Status
OPEN
Step 3: Join a Room
Select a room matching your savings goal
Review parameters (duration, amount, strategy)
Get AI recommendation (optional) → EigenAI analyzes your prompt
Make initial deposit (gasless!)
You're in! 🏁
No gas fees — just deposit USDC.
Step 4: Periodic Deposits
Make deposits each period to stay consistent:
Period Length: Daily or Weekly (set when room is created)
Important:
Miss a deposit → You get less yield share (NOT penalized on principal)
Your principal is always safe
Consistency = higher reward share
Step 5: Track Your Progress
Monitor performance on the dashboard:
Total Deposited — How much you've saved
Consistency — Deposits made / Total periods
Room Status — OPEN / ACTIVE / FINISHED
Your Share — Estimated % of yield pool
Yield Projection — Expected rewards based on current rate
Step 6: Claim Rewards 🏆
When room is FINISHED, claim your payout:
Claim is gasless — funds sent to your wallet instantly.
📊 Flow Diagram

How Yield is Distributed
Proportional to consistency:
Example: Room with 11 total deposits, 10 USDC yield
Alice (5 deposits) → 5/11 × 10 = 4.545 USDC
Bob (4 deposits) → 4/11 × 10 = 3.636 USDC
Carol (2 deposits) → 2/11 × 10 = 1.818 USDC
Everyone gets principal back 100%. Yield is the bonus for consistency.
Technical Flow
For developers:
1
Auth
zkLogin or wallet signature
N/A
2
Join Room
join_room() + first deposit
✅ Yes
3
Periodic Deposit
deposit() with USDC
✅ Yes
4
Admin Start
start_room() (admin)
✅ Yes
5
Admin Finalize
finalize_room() (admin)
✅ Yes
6
Claim Rewards
claim_all() → principal + yield
✅ Yes
How gasless works:
User signs transaction with their key
Backend adds sponsor signature (multi-sig)
Sponsor pays gas in SUI
User only needs USDC
Smart Contract Events
All actions emit events for transparency:
RoomCreated→ New room initializedPlayerJoined→ User joins with first depositDepositMade→ Periodic deposit recordedYieldAccrued→ Yield calculated and moved to reward poolRewardsClaimed→ User withdraws principal + yield
Last updated

