Qué es Uniswap, cómo funciona y tutorial (DEFI – Cryptos)

Descubre en este post qué es Uniswap, usos y ejemplos.

Qué es Uniswap

Uniswap es un sistema de intercambio (Exchange) descentralizado de Tokens con base ECR20 y ETH.

A nivel técnico lo definiríamos como un protocolo de liquidez automatiza y descentralizada catalogada dentro de la capa 3 de Ethereum como un servicio DEFI. Para conseguir su objetivo usa un conjunto de Ethereum Smart Contracts como veremos seguidamente.

Quién creó Uniswap

Uniswap nació de la mano del programador Hayden Adams quien empezó a trabajar en ello en 2017 y publicó la primera versión en 2018.

Hayden quien por entonces trabajaba como ingeniero mecánico para Siemens decidió entrar en el mundo Ethereum y se puso a desarrollar el protocolo inspirado en un post del referente Vilátik Buterin (uno de los creadores de Ethereum).

Puedes leer la historia completa en este post.

Tipo de operaciones en Uniswap

Operación de Swap

Swap simple ETH a ERC-20 (o viceversa)

El swap simple sería el intercambio de Ethereum por un token ERC-20, un Theter por ejemplo (o viceversa). En el intercambio se nos cobrará una comisión (fee) del 0,3%.

exchange contract eth usdt

Swap ERC-20 a ERC-20

En este caso queremos hacer un intercambio entre Tokens ERC-20, lo que nos obligará a pasar por ETH entremedio. Veamos un ejemplo, queremos cambiar DAI por Tether (USDT).

Primero se realizará el cambio de DAI por ETH y luego de ETH por USDT, pagando en cada intercambio un fee (comisión del 0,3%).

Operación de Pool

El usuario en este caso quiere darse de alta en un pool de liquidez para cobrar comisiones por mantener sus monedas en este. Para ello escogerá un par de monedas, usemos como ejemplo ETH y DAI.

uniswap pool par dai eth

El usuario ha de entregar la paridad de ambas cryptos en el pool a la tasa de cambio establecida en el mismo. Entonces el usuario recibe un token Uniswap (ETH-DAI) que representa su % de participación en el mismo y el interés acumulado generado. El usuario puede retirarse del pool en cualquier momento.

Puedes ver los pools con mayor liquidez en este buscador.

Pools con más liquidez Uniswap

Tipos de Smart Contracts en Uniswap

Exchange Contract (contrato de intercambio)

Es un Smart Contract por cada par de intercambio (ETH/DAI, UDST/USDC…) el cual contiene los fondos necesarios para ello a través de los respectivos pools.

Los tenedores del pool proveen al mismo de la liquidez necesaria a los contratos.

Tipos de Intercambio posibles:

  • ETH a Token ERC-20
  • Token ERC-20 a ETH
  • ERC20 a ERC-20

Factory Contract (contrato de creación)

Los Exchange Contracts los puede generar el usuario libremente, aun no existiendo previamente ningún pool, ello se genera a través del Factory Contract.

Tasas de Intercambio

Las tasas de intercambio entre pares se produce cuando el primer proveedor genera a través del Factory Contract el Exchange Contract. Esta tasa de liquidez será la que establezca el mercado en ese momento, siendo entonces la tasa de liquidez original.

La dificultad empieza cuando varía el precio de las mismas, es decir en cualquier momento excepto en su emisión inicial.

Para ello existen traders de arbitraje que ajustan las tasas de intercambio hasta reflejar el valor real del mercado.

Cómo asegura Uniswap la liquidez de un Pool

Se consigue con un precio exponencial que crece a medida que el pool se va secando. Es decir, a más nº de Tokens a cambiar mayores tasas a pagar.

La estabilidad del balance entre monedas se consigue mediante esta fórmula:

tokenA_balance(p) · tokenB_balance(p) = k

imagen original del post de Vitálik

Donde k es una constante y los dos primeros factores representan las cantidades de Tokens que conforman el par. La constante k se establece en el momento inicial de creación del Exchange Contract.

La mencionada fórmula obliga a que a mayor cantidad de Token solicitado más grande el precio a pagar por ello, garantizando por tanto que el pool mantiene liquidez.

Para cualquier detalle adicional puedes consultar el paper de Uniswap.

Ejemplos prácticos de uso de Uniswap

Lo primero que haremos será conectar nuestra wallet con Uniswap, en nuestro ejemplo usaremos Metamask. Por cierto, esta ya no funciona con el navegador Brave (no entraré a valorar los motivos, discusiones entre ambas partes …).

Cuando vayas a realizar un swap (intercambio) comprueba el resultado en ambas versiones V2 y V1, pues las comisiones cambian en función de la liquidez de cada pool, hasta donde sé la diferencia es que V1 solo trabaja en exclusiva con ERC-20, mientras V2 acepta alguna otra.

uniswap conectar wallet
uniswap conectar wallet metamask
uniswap conectar wallet cuenta metamask

Ejemplo de swap simple: ETH por DAI (ETH a ERC-20)

En este ejemplo simplemente cambiaremos ETH por DAI. Buscamos el par en la selección de Tokens y realizamos el intercambio. En este caso la búsqueda es sencilla porque son monedas muy estándar.

Uniswap ETH por DAI ejemplo

En este caso el fee pagado es el 0.3% como ya se mencionó más arriba.

¿Qué pasaría si se quiere una cantidad desorbitada? Pues que las fees se comerían la operación. Por ejemplo invertimos 20 millones de ETH y queremos DAI, vemos que el resultado es que pagamos más del 98% de tasas en esta operación, por tanto no tiene sentido, no la ejecutaremos y el pool mantiene la liquidez.

Uniswap ETH por DAI ejemplo limite

Ejemplo de swap ERC-20 a ERC-20: USDC por DAI (sin par preexistente)

Usemos ahora un ejemplo entre dos Tokens ERC-20 que no disponen de un pool propio. Entonces nos busca una ruta alternativa, en este caso es a través de Tether:

USCD a USDT a DAI

uniswap ejemplo cambio usdc por dai

Ejemplo de compra de Fondo de Inversión YFI

Ahora complicaremos un pelín el asunto. Compraremos un fondo de inversión que no nos aparece en la lista por defecto de Uniswap. Elegimos el fondo YFI pero puede ser cualquier otro basado en Ethereum.

Necesitaremos la dirección del contrato Ethereum del fondo (este proceso vale para cualquier otro Token no listado), por ejemplo en Etherscan.io, y quizás más fácil a través de Coingecko en su apartado de Defi.

Coingecko buscar defi
Identificamos nuestra Defi (en este caso la nº 4)
coingecko contrato eth defi
Copiamos el nº de contrato de Ethereum
Pegamos el nº de contrato en Uniswap

Selecionamos el fondo o Token deseado en cualquiera de los dos buscadores y copiamos el nº de contrato de Ethereum. Copiamos este en el selector de Token de Uniswap. Otra forma rápida de encontrarlo sería seleccionar el listado de Tokens de Coingecko dentro de Uniswap.

seleccion listado coingeck en uniswap

Ejemplo de entrada en pool de inversión ETH-BAT

Para entrar en un pool tenemos que clicar la opción Pool obviamente, y podríamos incluso generar un pool nuevo, pero veamos antes que opciones ofrece Uniswap.

Clica los 3 puntitos del extremo superior derecho y luego pulsa en el apartado Analytics.

identificar buen pool uniswap 1

Accedemos ahora al apartado Pairs (pares) en el menú de la izquierda, aquí puedes ver los pares existentes en Uniswap. Los puedes ordenar por liquidez, volumen,…. Te aconsejo pulsar la columna de la derecha para ordenar por rentabilidad y posteriormente la de liquidez.

identificar buen pool uniswap 2 pares

Verás que los proyectos con mayor rentabilidad son los relaciones con fondos de inversion (yield farming), pero que tienen algo más de riesgo. En mi opinión la selección perfecta es la referente a las Stablecoins, pues ofrecen una rentabilidad muy buena (sin ser exagerada como la de los fondos) y tienen un volumen diario enorme. A su vez tienes al menos una parte del par no sujeta a variaciones de precio en fiat (la stable coin).

Entremos ahora en el ejemplo. Vemos que el par ETH-BAT tiene una rentabilidad anual decente, luego veremos otra manera de comprobarlo.

ejemplo rentabilidad pool eth bat uniswap 1

Si entramos en el par nos dará cierto detalle, como la liquidez del pool, o lo que cobra de media en comisiones al día. Si dividimos ambas variables y proyectamos en el año vemos que de nuevo nos da de manera aproximada el rendimiento que nos anunciaba la plataforma.

485,52/1.425.646*365*100 = 12,43%

ejemplo rentabilidad pool eth bat uniswap 2

Ahora damos por echo que dispones tanto de Ethereum como de BAT en tu cartera, sino no podrás entrar en el pool. Ahora sí vamos al apartado Pool del menú principal. Introduce la cantidad de ETH y de BAT que quieres invertir, anota el porcentaje de participación en el pool (en este caso nos sale el 0.08%).

ejemplo pool uniswap ETH BAT

En el momento del ejemplo el ETH estaba a 364$ aproximadamente. Si invertimos 1.5 ETH necesitamos la misma cantidad en BAT, por lo tanto la inversión global equivale a 3 ETH (2pares x1.5) lo que es un monto equivalente a 1.092$ invertidos. Nuestro rendimiento anual debiera ser aproximadamente de 1.092*12,54% = 137$.

Comprobemos ahora el rendimiento por otro camino, sabemos que nos corresponde un 0.08% del pool y que el rendimiento diario es de 485,52$ de promedio, eso nos da unos beneficios anuales de 177.215$ para todo el pool, del cual el 0.08% sería 142$. Así que vemos que las cifras cuadran (teniendo en cuenta el baile de redondeo de decimales, etc.).

Recuerda que puedes salirte del pool en cualquier momento.

Cómo se ve nuestro pool en Uniswap y Metamask

Una vez validada la operación a través de las 2 operaciones de validación nuestro par debería aparecer en cartera en Uniswap. Te dejo pantallazo de la última operación en pool ETH-USDT para que te hagas una idea.

ejemplo pool eth-usdt uniswap

La última operación que realicé en Uniswap fue unirme al pool ETH-USDT y me costo poco más de 5$ en comisiones.

Seguimiento del ROI en Uniswap

Para hacer un seguimiento fácil de nuestros rendimientos en Uniswap una buena herramienta es la web:

https://uniswap-roi.herokuapp.com/

Conectamos nuestro metamask y detectará los pares invertidos en Uniswap.

rendimiento par ETH USDT

Destacar que las rentabilidades en Uniswap van evolucionando en función de la liquidez del pool. Por eso rentabilidades inicialmente estratosféricas rapidamente se normalizan. Y este es un buen ejemplo. En la 1a versión de este post el par ETH-USDT tenía un APY (Annual Profit Yearning) del 119%. Un par de semanas más tarde ya ha descendido a aproximadamente al 36%.

Puedo confirmar esta cifra con el ROI que me enseña la mencionada web. En 4 días de inversión tengo un ROI de Uniswap del 0,35% (ver columna de la derecha), lo que equivale aproximadamente al 36% que me indica la rentabilidad de pares de la página de Uniswap.

Dicho esto, revisa bien los fees de las operaciones, porque están actualmente por las nubes. El ejemplo anterior carece de ningún sentido desde el punto de vista de inversión, porque las comisiones exceden los beneficios. Simplemente se ha tomado a modo de referencia para comprobar como funciona el sistema.

Lanzamiento del Token UNI

Recientemente Uniswap ha lanzado el token UNI. La mayor parte de la distribución ha sido entre los usuarios, y sí soy el pringao que llegó dos semanas tarde y se quedó sin recompensa.

El lanzamiento del token se ha visto precipitado por como venía apretando la competencia, especialmente Sushiswap. Este último es una copia del anterior, aprovechandose del open source del primero; hasta la pantalla de intercambio es la misma. En este caso los dueños se apresuraron a vender su token, algo que ha espantado a los inversores como puedes comprobar por ti mismo en la prensa relacionada.

El tener un token propio entra dentro de la lógica del mercado, y por supuesto Uniswap no iba a ser el tonto de la clase, más siendo la plataforma con mayor potencial por el momento.

Conclusiones

Si has leído con detalle el post te habrás dados cuenta que Uniswap es probablemente la opción más barata para adquirir tokens y fondos con base ERC-20, y además una alternativa para sacar rendimiento a tus monedas en holding.

Eso sí, estos días la red Ethereum está bastante colapsada y esto hace encarecer las operaciones (es el coste de red, por lo que no depende del Exchange), revisa las comisiones para no llevarte una sorpresa.

Dedico el post a Pedro, quien me insistió hace tiempo en que publicara sobre Cryptos. Un abrazo amigo.