Volver al índice
Modo oscuro
Aave

Aave por Santiago Soñora

star star star star star (5.0 de 5 estrellas, basado en 1 reseña)

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.

“Hola, mundo” en Aave

Contrato Solidity para solicitar y ejecutar un Flash Loan simple en Aave V3 utilizando la interfaz IFlashLoanSimpleReceiver.

📋 Copiar
// 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:

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

Comandos básicos

Familiarizarse con estos comandos es esencial para interactuar eficientemente con Aave:

Conceptos Clave

Comprender estos conceptos fundamentales te ayudará a dominar Aave de forma más organizada y eficiente:

Casos de uso

Algunos ejemplos de aplicaciones prácticas donde se utiliza Aave:

Consejos para Principiantes

Aquí tienes algunas recomendaciones para facilitar tus inicios en Aave:

Herramientas relacionadas

Si te interesa Aave, también podrías explorar estas herramientas:

Recursos útiles

Amplía tus conocimientos con estos enlaces y materiales:

También te puede interesar

Continúa aprendiendo con estos contenidos relacionados: