Este tutorial está diseñado para guiar a quienes desean aprender más acerca de Aave. Es ideal para un nivel avanzado.
Aave V3 es el protocolo de liquidez descentralizado líder en Web3, que permite a los usuarios prestar, tomar prestado y ganar intereses sobre criptoactivos de forma no custodial. Ofrece características de última generación como Flash Loans (préstamos sin colateral a nivel de bloque), modo de alta eficiencia (eMode), aislamiento de riesgo para nuevos activos y portal cross-chain. Esta guía abarca la integración de contratos inteligentes con IPool, el cálculo de factores de salud (Health Factor), la ejecución de liquidaciones atómicas y la arquitectura de préstamos instantáneos en redes de capa 2.
Contrato Solidity para solicitar y ejecutar un Flash Loan simple en Aave V3 utilizando la interfaz IFlashLoanSimpleReceiver.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {IFlashLoanSimpleReceiver} from "@aave/core-v3/contracts/flashloan/interfaces/IFlashLoanSimpleReceiver.sol";
import {IPoolAddressesProvider} from "@aave/core-v3/contracts/interfaces/IPoolAddressesProvider.sol";
import {IPool} from "@aave/core-v3/contracts/interfaces/IPool.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
contract AaveFlashLoanSimple is IFlashLoanSimpleReceiver {
IPoolAddressesProvider public immutable ADDRESSES_PROVIDER;
IPool public immutable POOL;
address public immutable owner;
constructor(address provider) {
ADDRESSES_PROVIDER = IPoolAddressesProvider(provider);
POOL = IPool(ADDRESSES_PROVIDER.getPool());
owner = msg.sender;
}
function executeOperation(
address asset,
uint256 amount,
uint256 premium,
address initiator,
bytes calldata params
) external override returns (bool) {
// 1. Ejecutar lógica personalizada (ej. arbitraje, liquidación, refinanciación)
uint256 totalOwing = amount + premium;
IERC20(asset).approve(address(POOL), totalOwing);
return true;
}
function requestFlashLoan(address asset, uint256 amount) external {
require(msg.sender == owner, "Solo owner");
POOL.flashLoanSimple(address(this), asset, amount, "", 0);
}
}
Resultado:
Transacción completada: Se prestan 100,000 USDC sin colateral, se ejecuta la lógica en memoria, se paga una prima del 0.05% y el préstamo se liquida atómicamente en el mismo bloque.
Familiarizarse con estos comandos es esencial para interactuar eficientemente con Aave:
(totalCollateralBase, totalDebtBase, availableBorrowsBase, currentLiquidationThreshold, ltv, healthFactor) = pool.getUserAccountData(userAddress);
IERC20(asset).approve(address(pool), amount);
pool.supply(asset, amount, onBehalfOf, 0);
pool.borrow(asset, amount, 2, 0, onBehalfOf);
IERC20(asset).approve(address(pool), amount);
pool.repay(asset, amount, 2, onBehalfOf);
pool.liquidationCall(collateralAsset, debtAsset, userToLiquidate, debtToCover, false);
forge install aave/aave-v3-core openzeppelin/openzeppelin-contracts
Comprender estos conceptos fundamentales te ayudará a dominar Aave de forma más organizada y eficiente:
Flash Loans:
Préstamos atómicos sin garantía que deben pedirse y devolverse dentro de la misma transacción de Ethereum, con un costo de tarifa mínimo (0.05% o 0.09% según la red).
Health Factor (Factor de Salud):
Representación numérica de la solvencia de una cuenta calculada a partir de los colaterales ponderados por su umbral de liquidación dividido por la deuda total.
aTokens:
Tokens de interés variable con paridad 1:1 con el activo subyacente cuyo balance en billetera aumenta continuamente en tiempo real según el rendimiento de los depósitos.
eMode (Efficiency Mode):
Modo de alta eficiencia que maximiza el LTV (hasta el 97%) cuando el colateral y la deuda están correlacionados en precio (ej. stablecoins USDC/USDT o pares LST como wstETH/ETH).
Isolation Mode (Modo de Aislamiento):
Mecanismo de mitigación de riesgo para listar nuevos activos como colateral con un techo máximo de deuda y permitiendo pedir prestadas únicamente stablecoins aprobadas.
Siloed Borrowing:
Característica que confina activos altamente volátiles para que no puedan tomarse prestados junto a otros activos en la misma cuenta.
Algunos ejemplos de aplicaciones prácticas donde se utiliza Aave:
Arbitraje Atómico MEV sin Capital Propio:
Utilizar préstamos Flash de Aave para equilibrar discrepancias de precios entre exchanges descentralizados sin inmovilizar fondos propios.
Liquidación Automática de Deudores:
Monitorear cuentas con Health Factor por debajo de 1.0 para liquidar deuda y capturar primas de liquidación del 5% al 10% en activos de alta liquidez.
Refinanciación de Deuda e Intercambio de Colateral:
Cambiar un colateral depositado por otro o migrar deudas a activos con menores tasas de interés en una sola transacción sin necesidad de pagar previamente la deuda.
Estrategias de Rendimiento Apalancado (Looper):
Depositar un activo yield-bearing (ej. wstETH), tomar prestado ETH, volver a comprar wstETH y depositarlo para multiplicar el rendimiento neto.
Aquí tienes algunas recomendaciones para facilitar tus inicios en Aave:
Monitorea constantemente el Health Factor en entornos volátiles:
Mantén siempre el Health Factor por encima de 1.5 para absorber fluctuaciones bruscas del mercado y evitar ser liquidado por bots automatizados.
Comprueba los límites de liquidez antes de solicitar Flash Loans:
Verifica que el pool disponga de suficiente liquidez no utilizada (availableLiquidity) antes de enviar la transacción para prevenir reversiones por falta de fondos.
Prueba en redes de prueba o forks locales con Foundry:
Simula llamadas a pools reales mediante 'forge test --fork-url <RPC>' para validar los balances y aprobaciones de tokens antes de desplegar en producción.
Calcula cuidadosamente el costo de gas en L1 y L2:
Asegúrate de que la ganancia de tu estrategia compense holgadamente el costo de gas total y la tarifa de comisión del Flash Loan (premium).
Si te interesa Aave, también podrías explorar estas herramientas:
Amplía tus conocimientos con estos enlaces y materiales:
Continúa aprendiendo con estos contenidos relacionados: