Volver al índice
Modo oscuro
SushiSwap

SushiSwap 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 SushiSwap. Es ideal para un nivel avanzado.

SushiSwap es un protocolo de exchange descentralizado (DEX) multicadena comunitario nacido de la evolución de los AMM clásicos. Opera a través de múltiples redes blockchain (Ethereum, Arbitrum, Base, Optimism, Polygon y más) combinando su motor clásico Sushi V2 (fórmula de producto constante x*y=k) con Sushi V3 (liquidez concentrada) y el enrutador inteligente RouteProcessor. SushiSwap ofrece un ecosistema completo para provisión de liquidez en pools automatizados, staking mediante SushiBar (xSUSHI), agregación de rutas con optimización de gas y soporte nativo para swaps atómicos entre DEXs. Esta guía cubre la integración de contratos con IUniswapV2Router02 y RouteProcessor, gestión de liquidez y mitigación de slippage.

“Hola, mundo” en SushiSwap

Contrato Solidity para ejecutar un intercambio exacto de tokens en SushiSwap utilizando la interfaz universal IUniswapV2Router02 con ruta personalizada.

📋 Copiar
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IUniswapV2Router02 {
    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
}

contract SushiSwapTrader {
    IUniswapV2Router02 public immutable sushiRouter;

    // SushiSwap Router en Ethereum / L2: 0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F
    constructor(address _sushiRouter) {
        sushiRouter = IUniswapV2Router02(_sushiRouter);
    }

    /// @notice Ejecuta un swap directo en SushiSwap V2 respetando el límite mínimo de salida
    function executeSushiSwap(
        address tokenIn,
        address tokenOut,
        uint256 amountIn,
        uint256 amountOutMin
    ) external returns (uint256 received) {
        IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);
        IERC20(tokenIn).approve(address(sushiRouter), amountIn);

        address[] memory path = new address[](2);
        path[0] = tokenIn;
        path[1] = tokenOut;

        uint256[] memory amounts = sushiRouter.swapExactTokensForTokens(
            amountIn,
            amountOutMin,
            path,
            msg.sender,
            block.timestamp
        );

        return amounts[1];
    }
}

Resultado:

Output
Transacción completada: Se transfieren 500 DAI, se aprueba el SushiSwap Router, se calcula la ruta óptima DAI -> WETH y se entregan 0.154 WETH al destinatario en una sola llamada atómica.

Comandos básicos

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

Conceptos Clave

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

Casos de uso

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

Consejos para Principiantes

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

Herramientas relacionadas

Si te interesa SushiSwap, 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: