# Trabajo Final: Creación de un Exchange Descentralizado Simple con Pools de Liquidez
## Descripción del Proyecto:
Los estudiantes deben desplegar contratos inteligentes en la red de Scroll Sepolia (verificados y publicados) para implementar un exchange descentralizado simple que intercambie dos tokens ERC-20.
La solución debe permitir:
- Añadir liquidez: El owner puede depositar pares de tokens en el pool para proporcionar liquidez.
- Intercambiar tokens: Los usuarios pueden intercambiar uno de los tokens por el otro utilizando el pool de liquidez.
- Retirar liquidez: El owner puede retirar sus participaciones en el pool.
## Requisitos:
1. Crear dos tokens ERC-20 simples: Los contrato de los tokens deben tener obligatoriamente los nombres TokenA y TokenB.
2. Implementar un contrato de exchange (denominado obligatoriamente SimpleDEX) que:
* Mantenga un pool de liquidez para TokenA y TokenB.
* Utilice la fórmula del producto constante (x+dx)(y-dy) = xy para calcular los precios de intercambio.
* Permita añadir y retirar liquidez.
* Permita intercambiar TokenA por TokenB y viceversa.
3. El contrato SimpleDEX debe contar obligatoriamente y sin modificación de la interface con las siguientes funciones:
* `constructor(address _tokenA, address _tokenB)`
* `addLiquidity(uint256 amountA, uint256 amountB)`
* `swapAforB(uint256 amountAIn)`
* `swapBforA(uint256 amountBIn)`
* `removeLiquidity(uint256 amountA, uint256 amountB)`
* `getPrice(address _token)`
4. Incluir los eventos que consideren convenientes.
## Objetivos de Aprendizaje:
* Comprender cómo funcionan los exchanges descentralizados y los pools de liquidez.
* Practicar la creación de tokens ERC-20 en Solidity.
* Aprender a implementar mecanismos de mercado automatizados simples.
* Llamar a otros contratos inteligentes.