Los secretos de WayBank ¿Como Funciona?

WayBank, aprovechando la tecnología blockchain, emplea protocolos de liquidez automatizada para permitir intercambios de USDT y USDC dentro de la red Polygon de manera completamente descentralizada. Estos protocolos se basan en un conjunto de Smart Contracts diseñados por Hayden Adams, inspirados en ideas de Vitalik Buterin.

El funcionamiento de WayBank se centra en los Smart Contracts, que no solo operan en la red Polygon sino que también actúan como pools de intercambio. Por ejemplo, un pool entre USDT y USDC constituye un Smart Contract específico, alimentado por fondos de proveedores de liquidez (LP). En este contexto, un proveedor como el Usuario A (LP) suministra ambas criptomonedas en proporciones que reflejan su tasa de cambio actual.

A cambio de su aporte, el Usuario A (LP) recibe tokens en Uniswap (GAS: JBHC), simbolizando su participación en el pool y el interés acumulado, similar al funcionamiento de los pools en plataformas como Compound. Estos intereses provienen de las comisiones generadas por operaciones Swap realizadas por otros usuarios.

Además, WayBank utiliza dos tipos principales de Smart Contracts: Exchange Contracts y Factory Contracts. Los Exchange Contracts gestionan cada par de intercambio y albergan los fondos de los proveedores de liquidez, permitiendo así los intercambios directos sin intermediarios. Por otro lado, los Factory Contracts facilitan la creación de nuevos Exchange Contracts y juegan un papel crucial en el registro de tokens como JBHC.

El modelo «Constant Product Market Maker» (CPMM) es vital para asegurar la liquidez en todos los intercambios. Este modelo utiliza una fórmula matemática, 𝑋 * 𝑌 = 𝐾, donde 𝑋 y 𝑌 representan las cantidades de diferentes tokens en el pool, y 𝐾 es una constante. Esta relación garantiza que el pool nunca se quede sin fondos, ajustando la tasa de intercambio según la liquidez disponible, lo que es crucial especialmente en operaciones grandes que podrían alterar significativamente la balanza del pool.

Con este innovador enfoque, WayBank no solo facilita transacciones seguras y eficientes entre USDT y USDC, sino que también protege la inversión de los usuarios, asegurando una liquidez constante y una respuesta adaptable a las condiciones del mercado.

Para ello se utiliza UNISWAP y recientemente también QUIKSWAP para estas transacciones de WayBank. Plataformas que están operando desde 2018 para crear liquidez e intercambiar tokens. Es uno de los dos primeros exchanges descentralizados a nivel mundial. Esto significa que no tiene intermediarios y cualquiera puede operar de forma rápida y eficiente.

QuickSwap

Resultados destacados del Algoritmo WayBank
Actualmente, el algoritmo WayBank ha generado un retorno anual del 110% con un drawdown máximo del 3,5%. El análisis gráfico muestra una notable mejora en la estabilidad de las operaciones en 2024 comparada con 2023, siendo este último un año especialmente rentable.

Nuestro algoritmo continúa evolucionando, incorporando funciones avanzadas de inteligencia artificial para mejorar la seguridad y la eficiencia.

¿Qué es UniSwap?

Uniswap es una plataforma de intercambio descentralizada (DEX) que opera sobre la blockchain de Ethereum. Es fundamental en el ecosistema de las finanzas descentralizadas (DeFi) y permite a los usuarios intercambiar criptomonedas sin necesidad de un intermediario centralizado. Utiliza un modelo específico llamado «Automated Market Maker» (AMM) para facilitar el comercio y proporcionar liquidez.

En Uniswap, no hay libros de órdenes tradicionales ni intermediarios. En su lugar, los fondos se agregan a pools de liquidez por los propios usuarios, quienes depositan pares de tokens en contratos inteligentes. Cualquier par de tokens ERC-20 puede tener su propio pool, y los precios dentro de estos pools se determinan mediante una fórmula matemática que equilibra el valor de los tokens en el pool, manteniendo el producto de sus cantidades constante (la fórmula 𝑋×𝑌=𝐾).

Los proveedores de liquidez que depositan sus tokens en estos pools reciben tokens de proveedor de liquidez, también conocidos como LP tokens, que representan su parte del pool y les permiten reclamar una porción de las comisiones generadas por las operaciones de intercambio en ese pool. Esto incentiva a los usuarios a suministrar liquidez al sistema.

Uniswap es notable por su interfaz de usuario sencilla, su capacidad de facilitar un intercambio rápido y directo entre dos tokens, y por promover un sistema financiero más accesible y resistente a la censura.

 

¿Qué es la minería de liquidez?

La minería de liquidez, también conocida como cultivo de rendimiento (yield farming), es el acto de proporcionar liquidez a través de criptomonedas a intercambios descentralizados (DEX). Dado que el objetivo principal de un intercambio es ser líquido, los DEX buscan recompensar a los usuarios que estén dispuestos a aportar capital a su plataforma.

La mayoría de los DEX están descentralizados reemplazando los libros de pedidos con un Creador de Mercado Automático (AMM). Un AMM es un contrato inteligente (SmartContract) que regula el comercio. Dado que los contratos inteligentes están descentralizados, los usuarios no tienen que negociar la cartera de pedidos de un intercambio. En cambio, comercian efectivamente con otros usuarios.

La AMM recauda estas tarifas y las otorga a cada proveedor de liquidez (LP) como recompensa . Por tanto, el DEX ofrece un ecosistema simbiótico donde cada grupo de usuarios se ayuda entre sí. Mientras que el intercambiador de tokens paga una pequeña tarifa para operar en un intercambio descentralizado, el proveedor de liquidez gana dinero por proporcionar la liquidez que necesitará el primer usuario.

TrackRecord de WayBank

TrackRecord WayBank
TrackRecord WayBank
Structura de un SmartContract en WayBank
				
					// SPDX-License-Identifier: GPL-3.0

pragma solidity 0.8.25;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol";

contract WayBank is Pausable, Ownable, ERC20 {
    using SafeERC20 for IERC20;

    uint256 public fechaInicio;
    uint256 public fechaFin;
    uint256 public periodicidadLiquidacion;
    uint256 public porcentajeRendimiento;
    IERC20 public jbhcToken;
    INonfungiblePositionManager private positionManager;
    
    address public wallet1;
    address public wallet2;

    address constant weth = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270; // Polygon wMatic
    uint24 constant fee = 3000; // Fee de 0.3%
    uint160 constant sqrtPriceX96 = 79228162514264337593543950336; // ~ 1:1

    mapping(address => uint256) public balances;

    event Depositado(address indexed usuario, uint256 cantidad);
    event BeneficiosLiquidados(uint256 totalBeneficios);
    event Retirado(address indexed usuario, uint256 cantidad);

    constructor(
        uint256 _inicio,
        uint256 _fin,
        uint256 _periodicidad,
        uint256 _porcentaje,
        address _tokenAddress,
        address _positionManagerAddress,
        address _wallet1,
        address _wallet2
    ) ERC20("WayBank Token", "WAY") {
        fechaInicio = _inicio;
        fechaFin = _fin;
        periodicidadLiquidacion = _periodicidad;
        porcentajeRendimiento = _porcentaje;
        jbhcToken = IERC20(_tokenAddress);
        positionManager = INonfungiblePositionManager(_positionManagerAddress);
        wallet1 = _wallet1;
        wallet2 = _wallet2;
        transferOwnership(msg.sender);
    }

    function depositar(uint256 cantidad) public whenNotPaused {
        require(jbhcToken.transferFrom(msg.sender, address(this), cantidad), "Transferencia fallida");
        balances[msg.sender] += cantidad;
        emit Depositado(msg.sender, cantidad);
    }

    function liquidarBeneficios() public whenNotPaused onlyOwner {
        uint256 totalDep = totalDepositos();
        require(totalDep > 0, "No hay fondos depositados");
        uint256 beneficios = (totalDep * porcentajeRendimiento) / 100;

        // Dividir beneficios entre las dos wallets
        uint256 mitadBeneficios = beneficios / 2;

        // Transferir beneficios a las dos wallets
        jbhcToken.safeTransfer(wallet1, mitadBeneficios);
        jbhcToken.safeTransfer(wallet2, mitadBeneficios);

        emit BeneficiosLiquidados(beneficios);
    }

    function retirar() public whenNotPaused {
        uint256 cantidad = balances[msg.sender];
        require(cantidad > 0, "Saldo insuficiente");
        balances[msg.sender] = 0;
        jbhcToken.safeTransfer(msg.sender, cantidad);
        emit Retirado(msg.sender, cantidad);
    }

    function totalDepositos() public view returns (uint256) {
        return jbhcToken.balanceOf(address(this));
    }

    // Uniswap liquidity management
    function addLiquidity(
        address token0,
        address token1,
        uint24 fee,
        int24 tickLower,
        int24 tickUpper,
        uint256 amount0Desired,
        uint256 amount1Desired
    ) external onlyOwner {
        // Approve the position manager to spend tokens
        IERC20(token0).approve(address(positionManager), amount0Desired);
        IERC20(token1).approve(address(positionManager), amount1Desired);

        // Call to mint function in Position Manager
        positionManager.mint(INonfungiblePositionManager.MintParams({
            token0: token0,
            token1: token1,
            fee: fee,
            tickLower: tickLower,
            tickUpper: tickUpper,
            amount0Desired: amount0Desired,
            amount1Desired: amount1Desired,
            amount0Min: 0,
            amount1Min: 0,
            recipient: address(this),
            deadline: block.timestamp + 1200
        }));
    }
}

				
			

Cambios Realizados:

  1. SafeERC20: Utilización de la librería SafeERC20 para transferencias seguras de tokens.
  2. Variables de wallet: Añadidas las variables wallet1 y wallet2 para almacenar las direcciones de los wallets.
  3. Reparto de comisiones: Modificada la función liquidarBeneficios para repartir las comisiones entre wallet1 y wallet2.

Consideraciones de Seguridad:

  • Utilización de safeTransfer de SafeERC20 para prevenir errores de transferencia.
  • Mecanismo de Pausable para pausar el contrato en situaciones de emergencia.
  • onlyOwner en funciones críticas para asegurar que solo el propietario pueda ejecutarlas.
 

Estos cambios mejoran la seguridad y funcionalidad del contrato al permitir la distribución de comisiones de manera segura entre dos wallets.

 


Smart Contract de WayBank

Este contrato inteligente, denominado WayBank, sirve como una plataforma para la gestión de depósitos, la generación de rendimientos y la administración de liquidez en Uniswap. A continuación, se detallan las funcionalidades y el propósito de cada sección del contrato:

Funcionalidades Principales:

  1. Depósitos y Retiradas de Tokens:

    • Función depositar: Permite a los usuarios depositar tokens en el contrato. Los depósitos se registran en el balance del usuario.
    • Función retirar: Permite a los usuarios retirar sus tokens depositados. Los tokens se transfieren de vuelta al usuario y se actualiza su balance.
  2. Generación y Distribución de Rendimientos:

    • Función liquidarBeneficios: Calcula los rendimientos generados sobre los depósitos y los distribuye entre dos wallets predefinidos (wallet1 y wallet2). Los rendimientos se basan en un porcentaje (porcentajeRendimiento) del total de depósitos.
  3. Gestión de Liquidez en Uniswap:

    • Función addLiquidity: Permite al propietario del contrato añadir liquidez a un pool de Uniswap V3. Los tokens especificados se aprueban para ser utilizados por el INonfungiblePositionManager y se crean posiciones de liquidez en Uniswap.
  4. Seguridad y Control:

    • Modificadores whenNotPaused y onlyOwner: Aseguran que ciertas funciones solo puedan ejecutarse cuando el contrato no esté pausado y solo por el propietario del contrato.
    • Uso de SafeERC20: Garantiza transferencias seguras de tokens, evitando posibles errores en las transferencias.

 

Propósito y Beneficios:

  1. Facilitar la Inversión y Generación de Rendimientos:

    • Los usuarios pueden depositar tokens y beneficiarse de los rendimientos generados de manera automática según el porcentaje de rendimiento configurado.
    • Los rendimientos se distribuyen entre dos wallets, lo que puede ser útil para recompensar a los inversores, desarrolladores, o cualquier otra entidad definida por el contrato.
  2. Administración de Liquidez:

    • Permite al propietario del contrato gestionar y añadir liquidez a pools de Uniswap, lo que puede ayudar a mantener la liquidez y la estabilidad del token en el mercado.
  3. Seguridad y Control:

    • Funciones como Pausable y Ownable proporcionan mecanismos de control y seguridad, permitiendo al propietario pausar el contrato en situaciones críticas y limitar el acceso a funciones sensibles.

 

Detalle de Variables y Eventos:

  • Variables Clave:

    • fechaInicio, fechaFin: Fechas de inicio y fin del período de inversión.
    • periodicidadLiquidacion: Frecuencia con la que se liquidan los rendimientos.
    • porcentajeRendimiento: Porcentaje de rendimiento que se aplica a los depósitos.
    • jbhcToken: Dirección del token que se gestiona en el contrato.
    • positionManager: Dirección del gestor de posiciones de Uniswap V3.
    • wallet1, wallet2: Direcciones de las wallets que reciben los rendimientos.
  • Eventos:

    • Depositado: Emitido cuando un usuario realiza un depósito.
    • BeneficiosLiquidados: Emitido cuando se liquidan los rendimientos.
    • Retirado: Emitido cuando un usuario retira sus fondos.

 

Este contrato está diseñado para ser una solución integral para la gestión de depósitos y rendimientos, proporcionando a los usuarios una forma segura y controlada de invertir y generar beneficios, además de ofrecer capacidades avanzadas de gestión de liquidez en Uniswap.

 

Nuestra newsletter

Que no te lo cuenten. Sé el primero en estar al día en trading y criptomonedas.