Mientras que 2017 fue marcado por el boom de ICO y 2021 por el rápido crecimiento del sector DeFi y NFTs, en el ciclo actual, los tokens meme están tomando el liderazgo. En enero de 2024, el proyecto pump.fun fue lanzado en la blockchain de Solana, permitiendo a los usuarios crear tokens lo más rápido y barato posible. Sin embargo, la mayoría de los tokens meme experimentan un rápido crecimiento seguido de descensos aún más rápidos. Al transferir liquidez de la plataforma de lanzamiento a una DEX, y a medida que la comunidad crece, la evolución de los precios generalmente debe seguir este patrón: Pero en realidad, resulta así: En mi opinión, esto se debe al hecho de que el mercado opera en un principio de juego de suma cero. Sin embargo, con el uso de piscinas de liquidez en DEXs y la capacidad de vender sin una contraorden correspondiente, el equilibrio entre la oferta y la demanda se distorsiona. Las ideas sobre cómo mejorar esto me llegaron después de analizar los stablecoins algorítmicos, en particular Terra Luna. Para aquellos que no están familiarizados con este proyecto, aquí hay una breve explicación de cómo funciona: In the case of UST’s price falling below $1, the Debase algorithm was triggered, allowing traders to exchange 1 UST for 1 LUNA. During this process, UST was burned while new LUNA was minted. When UST’s price rose above $1, the Rebase algorithm activated, where LUNA was burned and, conversely, new UST was minted. Sin embargo, todo el ecosistema se enfrentó a la llamada "espiral de la muerte", enraizada en la naturaleza endógena (en cadena) de su garantía. A pesar de las diferencias en los algoritmos, proyectos como Basis Cash y Empty Set Dollar repetieron el mismo error - confiar en la garantía interna los llevó a problemas similares y eventual colapso. En contraste, el ejemplo de DAI muestra que los seguros exógenos (de fuera de la cadena) también pueden ser vulnerables: cuando el ETH se estrelló en casi el 50% en un solo día, el sistema se puso en riesgo. On-chain Off-chain Type of collateral Algorithmic issuance Collateral of crypto assets Exchange rate adjustment Arbitrage exchange Dynamic stability fees Risk Death spiral Liquidation of collateral Type of collateral Emisión algorítmica Crisis de los activos cripto Exchange rate adjustment Intercambio de arbitraje Tarifas de estabilidad dinámica Risk La espiral de la muerte Liquidación de collateral Después de comparar los dos tipos de garantía, llegué a la conclusión de que para apoyar el precio, es necesario crear un pool separado con liquidez corta, independiente del pool largo. Podría funcionar de la siguiente manera: junto con la transferencia de liquidez al DEX, la liquidez también se añade al protocolo específicamente para la apertura de posiciones cortas. A partir de ahí, varios escenarios son posibles: Both pools grow — which means someone is opening a short position. This is where the first advantage of the idea becomes evident: increased market transparency. If demand exceeds supply, that’s a natural market situation. Similarly, when supply exceeds demand, it’s also part of normal market dynamics. In the case of a sharp change in the long pool — so drastic that even the label doesn’t fit — a rebalancing algorithm can be activated. As a result, the price returns to equilibrium through the participation of the short pool, without an seller. Para que el algoritmo de reequilibrio funcione, se requiere lo siguiente: Definir qué porcentaje de cambio de precio durante un período de tiempo determinado se considerará una fluctuación "anormal" del mercado; Control continuo de los precios; Cuando se cumplan las condiciones especificadas, ejecutar el reequilibrio, limitando su tamaño a un único ciclo hasta un cierto porcentaje para proteger el sistema de la manipulación. En este artículo, echaré un vistazo más de cerca a uno de los componentes clave de este mecanismo - la creación de un pozo de liquidez corto para blockchains compatibles con EVM usando Solidity. Preparación El protocolo manejará los fondos de los usuarios, importaremos los de OpenZeppelin y contratos, así como un contrato para la obtención de precios de activos de Chainlink. Ownable ReentrancyGuard Por sencillez, usaremos tokens WBTC y WETH en la Ethereum Mainnet, aunque idealmente, la lista de tokens disponibles debe definirse al desplegar el contrato inteligente. Para que el contrato sea más extensible, añadiremos un para los tokens respaldados, donde la clave es la dirección del token y el valor es la dirección del correspondiente contrato de precio de alimentación de Chainlink. mapping Implementemos también una función de utilidad para agregar valores a la Para mejorar la seguridad, evitaremos actualizar la dirección de contrato de Oracle para un token que ya haya sido añadido. mapping Para realizar las tareas, utilizaremos un donde la clave es la dirección del usuario, y el valor es un conjunto de estructuras que contiene: mapping Dirección de Token Precios de apertura y cierre Tamaño de posición Estado actual (abierto, cerrado o liquidado) Abrir una posición En este protocolo, los precios se denominarán en USD, por lo que necesitaremos una función interna para la normalización del valor. Para obtener el precio de apertura en USD, primero consultamos el oráculo para el precio actual de ETH y el precio del token, normalizamos ambos valores y luego calculamos el tamaño de la posición. y transmitir un evento utilizando . mapping emit Cerrar una posición Para unificar la lógica para cerrar y liquidar posiciones, crearemos un modificador que compruebe el estado actual de la posición. También crearemos una función de ayuda para calcular el importe de retirada y el precio de cierre. A continuación, al cerrar una posición, hay dos escenarios posibles: If the user is eligible to receive funds back, we set the closing price and withdraw funds to the user. If the position must be liquidated (for example, due to insufficient collateral), the position is marked as liquidated without transferring funds. En caso de liquidación del precio de cierre, el máximo El valor puede ser utilizado. uint256 Esta implementación es simplificada, por lo que sería mejor añadir automatización utilizando Chainlink o Gelato para controles periódicos de precios y liquidación automática cuando sea necesario. Para apoyar esto, la función de liquidación debe aceptar la dirección del usuario como un parámetro para especificar qué posición debe ser liquidada. Conclusión En este artículo, he compartido una hipótesis sobre un pool de liquidez corto y propuso una implementación básica en Solidity para la blockchain de Ethereum. El código completo está disponible en . GitHub