---
# System prepended metadata

title: Trabajo Práctico - Módulo 3

---

# 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.