Manual técnico · ChallengePool / OtterPot
Para desarrollo, depuración y demo. Datos de contratos desde .env.local / config — no inventamos ABI.
1. Objetivo
Usuario → MetaMask → Arbitrum Sepolia
→ USDC → ChallengePool → resultadoFuente de verdad del dinero = blockchain. Firebase = índice / UI / perfiles.
2. Redes
| Elemento | Arb Sepolia |
|---|---|
| Chain ID | 421614 |
| ChallengePool | Sí |
| Gas del pool | ETH Arb Sepolia |
Para ejecutar ChallengePool debes estar en Arbitrum Sepolia.
3. Contratos (reales del proyecto)
Pool: 0x7f02be32247ca5c32468d69ef059e4a9114e56d4
USDC: 0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d · decimals 6
4. Approve → Deposit
1) balanceOf(user) 2) allowance(user, pool) 3) si falta → USDC.approve(pool, amount) // amount = parseUsdc(human) 4) wait receipt 5) ChallengePool.deposit(challengeId) 6) verificar hash en Arbiscan
Frontend: parseUsdc / formatUsdc con 6 decimales fijos. Hooks: useChallengePool, useUsdcBalance.
5. Troubleshooting
| Insufficient funds | Falta ETH gas | Faucet Arb Sepolia |
| Wrong network | Chain ≠ 421614 | switchChain |
| User rejected | Canceló MM | Reintentar |
| USDC raro | Decimals ≠ 6 | Reimportar token |
| Deposit revert | Allowance/estado | Ver eventos / ABI |
6. Checklist demo (2–3 min)
- ☐ Problema / solución
- ☐ Conectar wallet · Chain 421614
- ☐ Mostrar ETH + USDC (6 dec)
- ☐ Crear o abrir reto
- ☐ Approve → Deposit
- ☐ Hash en Arbiscan
- ☐ Firebase índice (no custodia)
Arquitectura
Next.js → RainbowKit/wagmi/viem
→ Arbitrum Sepolia
→ USDC + ChallengePool (+ Treasury)
Firebase RTDB → users / challenges / activity
Worker Telegram → orquestación (sin firmar por el user)