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 2 — PaymentGateway en Sepolia

Plazo: antes de clase 3 (sábado 23/05).

Pre-requisito: la clase 2 completaPaymentGateway.sol, ProjectToken.sol, OpenZeppelin instalado, tests pasando.


Qué hay que entregar

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

  1. PaymentGateway deployado en Sepolia + verificado en Etherscan.
    • Entregable: la URL https://sepolia.etherscan.io/address/<GATEWAY>#code.
  2. Hicieron al menos 2 pagos desde cast con action distintas (por ejemplo "primera-prueba" y "segunda-prueba").
    • Entregable: las 2 URLs de tx en Etherscan (https://sepolia.etherscan.io/tx/<TX_HASH>).
  3. Tu address de treasury muestra el saldo USDC acumulado después de los pagos (verificable con cast call ... balanceOf).
  4. (Bonus) Escriban un test que intente reentrancy contra PaymentGateway y comprueben que falla. Pista: hagan que _onPaid haga algo arbitrario en una subclass de prueba que reentre pay().

Cómo probar que está bien

Checklist de aceptación:


Si algo falla

Síntoma Causa probable Fix
Error: ERC20: insufficient allowance No aprobaste o aprobaste menos que el pay Re-aprobá con la cantidad correcta (paso 8.1 de la clase)
Error: ERC20: transfer amount exceeds balance No tenés USDC en tu wallet Pedí USDC al faucet de Circle
Error: gateway.pay reverted sin razón clara El allowance está en 0 (o expiró) Aprobá de nuevo
forge install falla Sin red, o submodules confundidos forge install --no-git o git submodule update --init --recursive
El test fuzz falla en algún input Posible bug Subir el rango con vm.assume o revisar lógica
verify-contract dice “Already Verified” Está OK, ya lo tenías verificado Ignorar — lo abrís y está bien
Etherscan no muestra el evento A veces tarda 30-60s Refrescar después de un minuto

Volver