Blockchain · Tarea de clase 2 — PaymentGateway en Sepolia
Plazo: antes de clase 3 (sábado 23/05).
Pre-requisito: la clase 2 completa —
PaymentGateway.sol,ProjectToken.sol, OpenZeppelin instalado, tests pasando.
Qué hay que entregar
Antes del próximo sábado, en el campus:
PaymentGatewaydeployado en Sepolia + verificado en Etherscan.- Entregable: la URL
https://sepolia.etherscan.io/address/<GATEWAY>#code.
- Entregable: la URL
- Hicieron al menos 2 pagos desde
castconactiondistintas (por ejemplo"primera-prueba"y"segunda-prueba").- Entregable: las 2 URLs de tx en Etherscan
(
https://sepolia.etherscan.io/tx/<TX_HASH>).
- Entregable: las 2 URLs de tx en Etherscan
(
- Tu address de
treasurymuestra el saldo USDC acumulado después de los pagos (verificable concast call ... balanceOf). - (Bonus) Escriban un test que intente
reentrancy contra
PaymentGatewayy comprueben que falla. Pista: hagan que_onPaidhaga algo arbitrario en una subclass de prueba que reentrepay().
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 |