WEB3DEV Español

Cover image for Construye tu propio protocolo de préstamos descentralizados
Juliana Cabeza
Juliana Cabeza

Posted on

Construye tu propio protocolo de préstamos descentralizados

Los protocolos de préstamos descentralizados permiten a los usuarios prestar y tomar prestadas criptomonedas directamente en la blockchain, mediante contratos inteligentes sin necesidad de intermediarios, como bancos. En este tutorial, aprenderás a crear tu propio protocolo de préstamos descentralizados desde cero utilizando Solidity.

Al final de este tutorial, tendrás una comprensión sólida de los principios fundamentales detrás de los protocolos de préstamos descentralizados, incluyendo cómo agregar liquidez, pedir fondos prestados y reembolsar préstamos. También obtendrás experiencia práctica en la escritura e implementación de contratos inteligentes en la blockchain de Ethereum.

¡Comencemos!

Prerrequisitos

Antes de comenzar, asegúrate de tener instalados en tu sistema los siguientes requisitos previos:

Primeros pasos

Para empezar, dirígete al repositorio de scaffold-eth x BuildBear.

Aquí te explicamos por qué recomendamos usar scaffold-eth x BuildBear:

  1. Te permite bifurcar fácilmente cadenas compatibles con EVM (Ethereum Virtual Machine o Máquina Virtual Ethereum) - como Ethereum, Polygon, Binance Smart Chain, Fantom, Optimism y Arbitrum Mainnet -directamente desde la línea de comandos (CLI), ahorrándote tiempo valioso que de otra manera gastarías buscando RPC (Remote Procedure Call o Llamada de Procedimiento Remoto) funcionales.

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

Para empezar, haz clic en el botón "Fork" para crear una copia del repositorio en tu propia cuenta de GitHub. Espera a que se complete el proceso de bifurcación antes de continuar.

A continuación, abre una terminal y clona el repositorio bifurcado, el cual incluye todos los componentes necesarios para crear 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 necesarios, ejecuta el siguiente comando:

yarn fork-bb
Enter fullscreen mode Exit fullscreen mode

Image description

Desplegando los contratos

yarn deploy
Enter fullscreen mode Exit fullscreen mode

Image description

Comenzando el front-end

yarn start
Enter fullscreen mode Exit fullscreen mode

´´´
Una vez que la aplicación se esté ejecutando, puedes acceder a ella en http://localhost:3000 y verás lo siguiente:

Image description

Antes de profundizar en el contrato inteligente, vamos a explorar las funcionalidades del Lending. Para comenzar, dirígete a la página Lending.

Image description

Para solicitar ETH gratis, conecta tu cartera y haz clic en "grab funds from the faucet".

Image description

Agregando liquidez

  1. Ingresa el valor del token deseado.
  2. Después de ingresar el valor del token, haz clic en "aprobar token" y luego procede sumando liquidez.
  3. Aprueba la transacción en Metamask: se mostrará una ventana emergente de Metamask solicitándola. La liquidez total y la liquidez proporcionada se actualizarán.

Image description

Retirar liquidez

  1. Ingresa el valor que deseas retirar.
  2. Después de ingresar el valor del token, haz clic en "Withdraw" (Retirar).
  3. Aprueba la transacción en Metamask: se mostrará una ventana emergente de Metamask solicitando tu aprobación. La liquidez total y la liquidez proporcionada se actualizarán.

Image description

Préstamo de liquidez

  1. Ingresa la cantidad que deseas pedir prestada.
  2. Una vez que hayas ingresado la cantidad de tokens, haz clic en "Borrow" (Pedir prestado).
  3. Aprueba la transacción en Metamask: se mostrará una ventana emergente de Metamask solicitando tu aprobación. La liquidez total, la liquidez proporcionada y la cantidad prestada se actualizarán.

Image description

Pagar Préstamo

  1. Ingresa la cantidad que deseas pagar.
  2. Una vez que hayas ingresado la cantidad de tokens, haz clic en "Repay" (Pagar).
  3. Aprueba la transacción en Metamask: se mostrará una ventana emergente de Metamask solicitando tu aprobación. La liquidez total, la liquidez proporcionada y la cantidad prestada se actualizarán.

Image description

Vamos a profundizar en el contrato inteligente

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

Image description

  1. El contrato utiliza la versión Solidity pragma ^0.8.0 y está licenciado bajo la licencia MIT.

  2. El contrato importa un contrato externo: IERC20.sol de la biblioteca OpenZeppelin. Estos contratos proporcionan una funcionalidad de token ERC20 estandarizada.

  3. addLiquidity(uint256 _amount): Esa función permite que los usuarios depositen tokens de garantía en el contrato. El parámetro_amount especifica la cantidad de tokens de garantía que se depositarán. La función transfiere, inicialmente, los tokens de garantía del usuario al contrato y luego, agrega los tokens de garantía a la liquidez del contrato. Esta función emite el evento LiquidityAdded.

  4. borrow(uint256 _amount): Esta función permite a los usuarios pedir prestados tokens de préstamo desde el contrato, utilizando sus tokens de garantía depositados como garantía. El parámetro _amount especifica la cantidad de tokens de préstamo a pedir prestados. La función primero calcula la cantidad de garantía requerida en base a la proporción de garantía y la cantidad de tokens de préstamo, luego asegura que el usuario haya enviado suficiente ETH para cubrir la garantía y la tarifa. Después, la función transfiere los tokens de préstamo al usuario y actualiza la cantidad prestada para ese usuario. Esta función emite el evento Borrow.

  5. repay(uint256 _amount): Esta función permite a los usuarios reembolsar los tokens de préstamo tomados y recuperar sus tokens de garantía. El parámetro_amount especifica la cantidad de tokens de préstamo a reembolsar. La función primero transfiere los tokens de préstamo del usuario al contrato y luego disminuye la liquidez del contrato en la cantidad de tokens de garantía que el usuario debe recuperar. Finalmente, la función transfiere los tokens de garantía del contrato al usuario. Esta función emite el evento Repay.

  6. withdraw(uint256 _amount): Esta función permite a los usuarios retirar los tokens de garantía depositados en el contrato. El parámetro _amount especifica la cantidad de tokens de garantía a retirar. La función verifica primero si la cantidad solicitada está disponible en el contrato y si el usuario tiene suficiente saldo. Luego, transfiere los tokens de garantía del contrato al usuario y, finalmente, disminuye la liquidez del contrato en la cantidad de tokens de garantía retirados. Esta función emite el evento Withdrawal.

  7. getLiquidity(): Esta función devuelve la cantidad actual de tokens de garantía que mantiene el contrato.

  8. getCollateralRatio(): Esta función devuelve la proporción de garantía actual exigida por el contrato, que es la cantidad de tokens de garantía requeridos por cada token de préstamo tomado.

  9. getCollateralToken(): Esta función devuelve la dirección del contrato de tokens de garantía utilizado por el contrato.

  10. getOwner(): Esta función devuelve la dirección del propietario del contrato.

  11. getBorrowAmount(address _user): Esta función devuelve la cantidad actual de tokens de préstamo tomados por el _user especificado.

  12. getBalance(address _user): Esta función devuelve el saldo actual de tokens de garantía depositados por el _user especificado.

Felicidades

Hemos desarrollado con éxito, un protocolo básico de préstamos que permite a los usuarios realizar préstamos y prestar fondos.

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

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

Y, por favor, apláudenos 👏 si te gusta nuestro trabajo.

Repositorio en Github: Buildbear Tutorials

Sobre BuildBear:

BuildBear es una plataforma para probar dApps a gran escala para equipos. Proporciona a los usuarios su propia Testnet privada para probar sus contratos inteligentes y dApps, los cuales pueden ser bifurcados en cualquier cadena EVM. También ofrece un Faucet (Grifo), Explorer y RPC para propósitos de prueba.

El objetivo de BuildBear es crear un ecosistema de herramientas para probar dApps a gran escala para equipos.

Lea nuestros artículos anteriores y siga aprendiendo:

Este artículo fue escrito por BuildBear Team y traducido al español por Juliana Cabeza.

Puedes leer el artículo original en inglés aquí.

Discussion (0)