Universidad Nacional de Luján
Departamento de Ciencias Básicas
Seminario de Integración Profesional 2026 Dr. David Petrocelli
📑 Índice del documento

Blockchain · Tarea de clase 3 — dApp en Vercel + onramp testnet

Plazo: antes de clase 4 (sábado 30/05).

Pre-requisito: la clase 3 completa — proyecto Next.js + wagmi + RainbowKit, TestnetOnramp.sol y MockUSDC.sol listos.


Qué hay que entregar

Antes del próximo sábado, en el campus, en su repo:

  1. dApp deployada en Vercel (URL pública), con:
    • Connect wallet funcionando.
    • Form de pago con approve + pay completos.
    • Feed de eventos Paid en vivo (useWatchContractEvent).
  2. TestnetOnramp + MockUSDC deployados y verificados en Sepolia (links a Etherscan de ambos).
  3. PaymentGateway redeployado apuntando al MockUSDC (no al de Circle), para que el ciclo cierre solo dentro de la dApp.
  4. Video de 90 segundos mostrando: connect → comprar 50 mUSDC con tarjeta → approve → pay → ver evento. Súbanlo al campus.

Lo que no hace falta esta semana: estilos lindos, mobile responsive, multi-cuenta. Eso lo pulen en la semana de clase 4.


Cómo probar que está bien

Checklist de aceptación:


Si algo falla

Síntoma Probable causa Fix
WalletConnect Project ID is not valid Variable mal pegada en .env.local Verificá con echo $NEXT_PUBLIC_WC_PROJECT_ID, reiniciá npm run dev
RainbowKit no abre el modal Falta import '@rainbow-me/rainbowkit/styles.css' Agregalo en providers.tsx
MetaMask dice “Wrong network” Wallet en mainnet o Goerli Click en el botón rojo de RainbowKit → “Switch network”
pay revierte con transfer failed No hiciste approve antes, o approve por menos El UI tiene que mostrar “Approve” antes que “Pay”
pay revierte con amount=0 parseUnits recibió string vacío Validá amount > 0 antes del click
El feed de eventos no muestra nada RPC público con rate limit Cambiá a un RPC de Alchemy (free tier alcanza)
Vercel build falla con “process is not defined” Variable sin prefijo NEXT_PUBLIC_ Todas las vars que usa el browser tienen que arrancar con NEXT_PUBLIC_
parseUnits da número raro USDC tiene 6 decimales, no 18 Usá parseUnits(x, 6), no parseEther(x)
useWatchContractEvent no dispara Address de contrato mal Verificá NEXT_PUBLIC_PAYGW_ADDRESS y reiniciá
Onramp revierte con OwnableUnauthorizedAccount Olvidaste transferOwnership del MockUSDC al onramp Re-deploy con el script que sí lo hace

Volver