# Trabalho Final: Criação de uma Exchange Descentralizada Simples com Pools de Liquidez ## Descrição do Projeto: Os estudantes devem implantar contratos inteligentes na rede Scroll Sepolia (verificados e publicados) para implementar uma exchange descentralizada simples que permita a troca de dois tokens ERC-20. A solução deve permitir: - **Adicionar liquidez**: O owner pode depositar pares de tokens no pool para fornecer liquidez. - **Trocar tokens**: Os usuários podem trocar um dos tokens pelo outro utilizando o pool de liquidez. - **Retirar liquidez**: O owner pode retirar sua participação no pool. ## Requisitos: 1. Criar dois tokens ERC-20 simples: Os contratos dos tokens devem obrigatoriamente ter os nomes **TokenA** e **TokenB**. 2. Implementar um contrato de exchange (obrigatoriamente chamado **SimpleDEX**) que: - Mantenha um pool de liquidez para TokenA e TokenB. - Utilize a fórmula do produto constante `(x + dx)(y - dy) = xy` para calcular os preços de troca. - Permita adicionar e retirar liquidez. - Permita a troca de TokenA por TokenB e vice-versa. 3. O contrato **SimpleDEX** deve conter obrigatoriamente, sem alteração na interface, as seguintes funções: - `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 os eventos que considerarem convenientes. ## Objetivos de Aprendizagem: - Compreender como funcionam as exchanges descentralizadas e os pools de liquidez. - Praticar a criação de tokens ERC-20 em Solidity. - Aprender a implementar mecanismos de mercado automatizados simples. - Chamar outros contratos inteligentes.