WEB3DEV Español

Cover image for Construye tu propio Intercambio Descentralizado
Delia Viloria T
Delia Viloria T

Posted on

Construye tu propio Intercambio Descentralizado

Image description

Este artículo fue originalmente publicado en: https://www.buildbear.io/resources/guides-and-tutorials/Build_your_own_Decentralized_Exchange

El concepto detrás de los intercambios descentralizados es directo: permitir a los usuarios intercambiar sus criptomonedas directamente en la blockchain a través de los contratos inteligentes mientras retiene control sobre sus claves privadas.

Al final de este tutorial, tendrás un entendimiento sólido sobre los principios fundamentales detrás de los intercambios descentralizados y ganarás experiencia práctica sobre construir uno.

¡Empecemos!

Prerrequisitos

Antes de comenzar, por favor asegúrate que tengas los siguientes prerrequisitos instalados en tu sistema:

Comenzando

Para comenzar, navega al repositorio scaffold-eth x BuildBear.

Aquí está por qué recomendamos usar scaffold-etc x BuildBear:

  1. Permite que hagas fork compatibles con los EVM de forma fácil (como Ethereum, Polygon, Binance Smart Chain, Fantom, Optimism y Arbitrum Mainnet) directamente desde el CLI. Salva tu valioso tiempo que, de otra forma, sería gastado buscando RPCs que funcionen.

  2. Puedes acuñar tokens nativos y ERC20 sin esfuerzo usando CLI, eliminando la necesidad de perder tiempo buscando faucets funcionales.

Para comenzar, haz click en el botón “Fork” para crear una copia del repositorio en tu propia cuenta de GitHub. Por favor espera que el proceso del forking se complete antes de continuar.

Luego, abre el terminal y clona el repositorio forked, el cual incluye todos los componentes necesarios para construir una aplicación descentralizada:

git clone <paste the URL you fork repo>
cd scaffold-eth
Enter fullscreen mode Exit fullscreen mode

Para instalar todos los paquetes requeridos, ejecuta el siguiente comando:

yarn install
Enter fullscreen mode Exit fullscreen mode

Para hacer el fork del Mainnet, usa el siguiente comando: elige tu blockchain deseada y entra el número del bloque desde el cual quieres hacer el fork. Alternativamente, puedes dejar el valor por defecto como está.

yarn fork-bb
Enter fullscreen mode Exit fullscreen mode

Image description

Despliega los contratos:

yarn deploy
Enter fullscreen mode Exit fullscreen mode

Image description

Inicia el frontend

yarn start
Enter fullscreen mode Exit fullscreen mode

Una vez que la aplicación está ejecutándose, puedes accederla en http://localhost:3000/ y deberías ver lo siguiente:

Image description

Antes de profundizar más aún en el contrato inteligente, empecemos explorando las funcionalidades de la DEX. Para comenzar, navega la página DEX.

Image description

Para reclamar los ETH gratuitos, conecta tu cartera y haz click en “grab funds from the faucet”.

Image description

Intercambio de Token

  1. Entra la cantidad de token deseada: mientras entras la cantidad, por favor toma en cuenta que el gráfico mostrará el número correspondiente de los token balloon que recibirás, junto a la tarifa asociada.

  2. Una vez que hayas entrado la cantidad de token, haz click en “💸” para continuar el intercambio.

  3. Aprueba la transacción en MetaMask: un prompt de MetaMask aparecerá, pidiéndote la aprobación para la transacción del intercambio de token.

Image description

Para revisar el saldo de tu token Baloon, copia y pega tu dirección y haz click en “read”.

Image description

Proporcionando Liquidez

  1. Entra la cantidad deseada que quieres proporcionar como liquidez.

  2. Una vez que hayas puesto la cantidad deseada, haz click en “📥”.

  3. Aprueba la transacción en MetaMask: un prompt de MetaMask aparecerá, pidiéndote permiso para la transacción de proporción de liquidez.

De la misma manera, también puedes retirar la liquidez que has proporcionado.

Image description

Una vez que la transacción se complete, la liquidez total será actualizada.

Image description

Profundicemos en el Contrato Inteligente

Podemos encontrar el contrato DEX.sol en packages/hardhat/contracts:

Image description

  1. El contrato usa la versión Soldity pragma >=0.8.0 <0.9.0 y está licenciado bajo la licencia MIT.

  2. El contrato importa dos contratos externos: IERC20.sol desde la biblioteca OpenZeppelin y SafeMath.sol desde la biblioteca OpenZeppelin. Estos contratos proporcionan la funcionalidad del token ERC20 estandarizado y las operaciones matemáticas seguras.

  3. Variables globales:

  • totalLiquidity: representa la cantidad total de tokens de proveedores de liquidez (liquidity provider tokens, LPTs) acuñados en tu DEX.

  • liquidity: almacena el saldo de liquidez de cada depositante.

  • token: una instancia del contrato IERC20 importado.

  1. Funciones principales en el contrato:

Image description

  • init(uint256 tokens): esta función inicializa el DEX con una cantidad de tokens transferidas al contrato. Establece la variable totalLiquidity al saldo actual de Ether en el contrato, establece el saldo de la liquidez del que llama (msg.sender) a la liquidez total, y transfiere el número de tokens especificado desde el que llama al contrato DEX.

Image description

  • ethToToken(): esta función permite a los usuarios intercambiar Ether para el token. Calcula la salida del token basado en las reservas actuales y realiza la transferencia del token al llamante. Emite un evento EthToTokenSwap.

Image description

  • tokenToEth(uint256 tokenInput): esta función permite a los usuarios intercambiar el token Ether. Calcula la salida del Ether basado en las reservas del intercambio y realiza transferencia del token desde el que llama al contrato DEX. Luego transfiere el Ether al que llama. Emite un evento TokenToEthSwap.

Image description

  • deposit(): esta función permite a los usuarios depositar tokens y Ether en la piscina (pool) de la liquidez. La cantidad de tokens depositada es determinada basada en la cantidad de Ether enviado con la función call y las reservas actuales. Acuña nueva liquidez para los tokens del proveedor (provider tokens, LPTs) y actualiza los saldos de la liquidez y la liquidez total. Emite un evento LiquidityProvided.

Image description

  • withdraw(uint256 amount): esta función permite a los usuarios retirar tokens y Ether desde la piscina de liquidez, basada en la cantidad de tokens líquidos proveídos (amount) qué quieren retirar. Calcula ambos los tokens y el ETH en la proporción correcta.

  • price(uint256 xInput, uint256 xReserves, uint256 yReserves): esta función calcula la cantidad de salida (yOutput) basado en la cantidad de entrada (xInput) y las reservas de los tokens (xReserves y yReserves). Y usa x * y = k donde x y y son las reservas de la piscina.

La fórmula (amount of ETH in DEX) * (amount of tokens in DEX) = k representa una invariante que permanece constante durante los intercambios (excepto cuando la liquidez es añadida). Hacer el gráfico de esta manera produce una curva como se muestra abajo:

Image description

Esta curva determina el “precio” en términos de cuánto producto recibiría un activo, poniendo una cantidad específica en el activo. Mientras la proporción se vuelve más desequilibrada, el intercambio es progresivamente menor del activo más débil. Si los contratos inteligentes mantienen el ETH excesivamente y le faltan tokens suficientes, el precio para intercambiar los tokens por el ETH debería volverse más favorable.

Felicitaciones

Hemos desarrollado exitosamente un intercambio descentralizado básico que permite a los usuarios proveer liquidez e intercambiar activos. Participando como proveedores de liquidez, los usuarios tienen la oportunidad de ganar tasas por sus contribuciones.

Comparte tu proyecto en Twitter y LinkedIn y etiqueta a BuildBear.

Si aprecias lo que estamos haciendo, por favor síguenos en Twitter y LinkedIn y Únete al grupo de Telegram si aún no lo has hecho.

Y por favor danos un aplauso 👏 si te gusta nuestro trabajo.

Repositorio de GitHub: Tutoriales de Buildbear

Sobre BuildBear:

BuildBear es una plataforma para probar las Dapps en escala, para equipos. Provee a los usuarios con su propia Testnet privada para probar sus contratos inteligentes y Dapps, los cuales pueden ser forked desde cualquier cadena EVM. También provee un Faucet, Explorador y para propósitos de probar RPC.

BuildBear apunta a construir un ecosistema de herramientas para probar las Dapps en escala, para equipos.

Lee nuestros artículos pasados y sigue aprendiendo:

Este artículo fue escrito por BuildBear Team y traducido por Delia Viloria T. Su original se puede leer aquí.

Sería genial escucharte en nuestro Discord, puedes contarnos tus ideas, comentarios, sugerencias y dejarnos saber lo que necesitas.
Si prefieres puedes escribirnos a @web3dev_eshttps://twitter.com/web3dev_es en Twitter.

Discussion (0)