El reciente lanzamiento de dYdX V4 ha atraído mucha atención y participación en el intercambio de contratos perpetuos. dYdX ha aplicado con éxito ejemplos de operaciones con apalancamiento, y no solo debemos esperar con ansias el gran potencial de dYdX V4, sino también prestar más atención a la seguridad de los acuerdos con apalancamiento. A continuación, utilizaremos análisis y ejemplos de código específicos para guiarlo a través de las diferentes estrategias de apalancamiento y consideraciones de seguridad.
En finanzas, el apalancamiento es una estrategia que se basa en pedir prestado dinero para aumentar el rendimiento potencial de una inversión. Simplemente dicho, los inversores o traders piden prestado dinero para ampliar su exposición a tipos específicos de activos, proyectos o instrumentos mucho más de lo que podrían lograr confiando solo en su propio capital. A menudo, a través del uso de apalancamiento, los inversores pueden ampliar su poder adquisitivo en el mercado.
El uso del apalancamiento es una de las características más importantes y comunes del comercio de activos criptográficos. Poco después de la creación de intercambios descentralizados, el comercio con apalancamiento se volvió cada vez más popular, a pesar de que el mercado de criptomonedas ya mostraba una alta volatilidad.
Al igual que en las finanzas tradicionales, los traders utilizan apalancamiento ya sea para simplemente pedir prestado capital y aumentar su poder adquisitivo, o para aprovechar diversos derivados financieros, como futuros y opciones.
La relación de apalancamiento también ha aumentado de 3x y 5x a más de 100x. Un mayor apalancamiento significa un mayor riesgo, pero como se ha visto en la mayoría de los intercambios centralizados, este es un riesgo que los operadores agresivos buscan mayores rendimientos están dispuestos a asumir a medida que crece el volumen de operaciones con apalancamiento.
En lo que respecta a DeFi, los productos apalancados se dividen principalmente en cuatro tipos, y los mecanismos para generar apalancamiento son diferentes: préstamos apalancados, apalancamiento en operaciones con margen, apalancamiento en contratos perpetuos y tokens apalancados.
El préstamo y el préstamo DeFi es una de las primeras y más grandes aplicaciones DeFi. Gigantes como MakerDAO, Compound, AAVE y Venus ya están operando en el mercado. La lógica para obtener apalancamiento mediante el préstamo de activos criptográficos es simple.
Por ejemplo, si tienes $10,000 en Ether (ETH) y eres alcista, puedes depositar tu ETH como garantía en Compound, prestar $5,000 en USDC, y luego usar ese trato de $5,000 USDC a cambio de otros $5,000 en ETH. De esta manera, obtendrás un apalancamiento de 1.5 veces en ETH, y en comparación con tu capital inicial de $10,000, obtendrás $1.5 millones en exposición a ETH.
Del mismo modo, si eres bajista, puedes optar por depositar stablecoins y prestar ETH. Si el precio de ETH cae, puedes comprar ETH en el mercado a un precio más bajo y saldar tus deudas.
Ten en cuenta que, dado que estarás tomando prestado de un protocolo descentralizado, podrías ser liquidado si el valor del colateral disminuye o si el valor del activo que estás tomando prestado supera cierto umbral.
Con el préstamo DeFi, puedes hacer lo que quieras con estos activos digitales. El trading de margen DeFi se centra más en aumentar el tamaño de la posición (aumentar el poder adquisitivo) y se considera una verdadera “posición apalancada”. Sin embargo, hay una diferencia importante: mientras las posiciones de margen siguen abiertas, los activos de los traders actúan como garantía para los fondos prestados.
dYdX es una plataforma de trading de márgenes descentralizada bien conocida que permite un apalancamiento de hasta 5 veces. En el trading de márgenes de dYdX, los traders utilizan sus propios fondos como garantía, amplían su capital original varias veces y utilizan estos fondos amplificados para invertir a mayor escala.
Los traders deben pagar intereses y tarifas asociadas con la transacción. Esta posición no es ficticia; implica un préstamo real y compra/venta.
Si el mercado se mueve en una dirección desfavorable, es posible que los activos del trader no puedan reembolsar completamente el préstamo. Para evitar que esto suceda, el acuerdo liquidará sus posiciones antes de que se alcance cierta ratio de liquidación.
¿Cómo cambia el apalancamiento en el trading de margen——
Digamos que eres alcista en ETH 3 veces en el trading con margen, pero no quieres ajustar tu exposición todo el tiempo.
Tienes $100 en USDC y tomas prestados otros $200 en USDC para negociar $300 en ETH y establecer la posición larga de ETH que necesitas. El nivel de apalancamiento es $300/$100 = 3x.
Si el precio de ETH sube un 20%, tu beneficio sería de 300 (1 +20%) -300 = $60. Tu riesgo de ser liquidado es menor, mientras que el nivel de apalancamiento real se reduce a 360/ (360-200) = 2.25x. En otras palabras, reducirás automáticamente tu apalancamiento cuando el precio de ETH suba.
Si el precio de ETH cae un 20%, su pérdida sería de 300 (1-20%) -300 = -60 dólares. Cuando se trata de liquidación, se encuentra en una posición más peligrosa, y el nivel real de apalancamiento se incrementa automáticamente a 240/ (240-200) = 6x. En otras palabras, reequilibra su apalancamiento cuando el precio de ETH cae, lo que indica que se encuentra en una posición de mayor riesgo que antes.
Por lo tanto, aunque puedas pensar que puedes mantener un apalancamiento constante al operar con un margen fijo de 3x, el apalancamiento en tiempo real está cambiando constantemente.Por favor, compruebe el gráfico a continuación para ver cómo cambiará el apalancamiento dependiendo de los cambios de precio [1].
Los contratos perpetuos son similares a los contratos de futuros tradicionales, pero no tienen una fecha de vencimiento. Los contratos perpetuos imitan un mercado spot basado en márgenes, por lo que el comercio está cerca del precio del índice de referencia subyacente.
Hay muchos proyectos DeFi que ofrecen contratos perpetuos para traders, como dYdX, MCDEX, Perpetual Protocol, Incomplete, etc. Muchos traders pueden encontrar difícil diferenciar entre el trading con margen y los contratos perpetuos, de hecho, todos implican apalancamiento del usuario.
Sin embargo, existen algunas diferencias en los mecanismos de apalancamiento, las tarifas y los niveles de apalancamiento.
Un contrato perpetuo es un producto derivado que negocia activos sintéticos y tiene la característica de negociar con margen. El precio del activo subyacente se rastrea de manera sintética, sin necesidad de negociar el activo subyacente real. Sin embargo, el comercio con margen implica el préstamo real y la negociación de activos criptográficos reales.
Con la llegada de los contratos perpetuos, surgió el concepto de tasas de financiación. El propósito es mantener el precio de la transacción de un contrato perpetuo consistente con el precio de referencia subyacente. Si el precio del contrato es superior al precio al contado, entonces los alcistas pagarán a los bajistas. En otras palabras, los traders necesitan constantemente pagar comisiones por tomar prestado.
El apalancamiento en contratos perpetuos es generalmente mayor que en el comercio de margen, y puede ser tan alto como 100x. La liquidación y los mecanismos de apalancamiento reales son los mismos que en el comercio de margen.
Los tokens apalancados son derivados que brindan a los titulares una exposición apalancada al mercado de criptomonedas sin tener que preocuparse por administrar activamente las posiciones apalancadas. Si bien proporcionan a los titulares exposición al apalancamiento, no les exigen que se ocupen de los márgenes, la liquidación, las garantías o las tasas de financiación.
La mayor diferencia entre los tokens apalancados y el trading con margen/contratos perpetuos es que los tokens apalancados se reequilibrarán periódicamente o cuando se alcance un cierto umbral para mantener un nivel específico de apalancamiento.
Esto es claramente diferente del trading con margen y los contratos perpetuos; el apalancamiento real de estos productos está cambiando constantemente según las fluctuaciones de precios, incluso si el trader puede especificar inicialmente un nivel de apalancamiento.
Veamos cómo funciona el reequilibrio en el ejemplo de 3x ETH anterior:
Tienes $100 de USDC y compras un token apalancado ETHBULL (3x). El protocolo automáticamente pedirá prestados $200 en USDC y comerciará $200 en ETH.
Suponga que el precio de ETH ha subido un 20%, mientras que el precio del token ETHBULL (3x) sube a 300 * (1 +20%) -200 = $160 antes de reequilibrar. Su apalancamiento real es ahora de 2.25 (360/160), por debajo de su apalancamiento objetivo.
Como parte del proceso de reequilibrio, el protocolo tomará prestados más dólares del pool de stablecoins y comprará tokens ETH adicionales para devolver el apalancamiento a 3x. En nuestro ejemplo, el protocolo tomaría prestados $120 adicionales y los intercambiaría por ETH. Así, el apalancamiento total vuelve a ser (360+120) /160 = 3 veces.
Suponga que el precio de ETH ha caído un 20%, mientras que el precio del token ETHBULL (3x) cae a 300* (1-20%) -200 = $40 antes del rebalanceo. Ahora, su apalancamiento real será de 6 (240/40), por encima de su apalancamiento objetivo.
En este caso, el acuerdo vendería tokens de ETH y reembolsaría las deudas pendientes para reducir el apalancamiento. En este ejemplo, el protocolo vendería $120 en ETH para pagar al grupo. La deuda se convertirá en $80, y el apalancamiento total volverá a ser (240-120) /40 = 3x.
En otras palabras, los tokens apalancados se volverán a apalancar automáticamente en ganancias y se desapalancarán en pérdidas para restaurar su nivel objetivo de apalancamiento. Si este mecanismo funciona bien, incluso en tendencias de mercado adversas, los titulares de tokens apalancados no serán liquidados porque el mecanismo de desapalancamiento reducirá continuamente el nivel de apalancamiento efectivo de los usuarios.
Como resultado, el pool de préstamos en el modelo de token apalancado estará exento del riesgo de liquidación y es más seguro que el pool de préstamos en el trading con margen.
Ahora que hemos aprendido sobre algunos tipos comunes de protocolos DeFi de apalancamiento, discutamos la aplicación del apalancamiento en detalle en relación con protocolos DeFi específicos.
GMX [2]es un intercambio descentralizado de spot y perpetuo que ofrece a los traders la posibilidad de operar activos con un apalancamiento de hasta 50 veces. El acuerdo actualmente funciona en Arbitrum y Avalanche. En GMX, los traders están completamente al tanto de la situación de su contraparte, lo cual es completamente diferente de operar en CEX. A diferencia de otros acuerdos de contratos perpetuos como dYdX, GMX opera completamente en cadena y utiliza funcionalidades de AMM para permitir operaciones con apalancamiento.
Lo que distingue a GMX de otros servicios es que es un intercambio descentralizado que proporciona servicios de negociación con apalancamiento. En este sentido, combina una experiencia similar a otros intercambios DeFi como Uniswap con servicios de negociación con apalancamiento ofrecidos por Binance y otros.
GMX tiene una piscina de liquidez GLP, que es una piscina de activos múltiples que proporciona liquidez para el comercio de márgenes: los usuarios pueden abrir/cerrar posiciones y ejecutar operaciones mediante la creación y destrucción de tokens GLP. La piscina obtiene comisiones de LP de las operaciones y operaciones apalancadas, que se distribuyen a los titulares de GMX y GLP.
Para operar con apalancamiento, los traders depositan garantías en un acuerdo. Los traders pueden elegir un apalancamiento de hasta 50x. Cuanto mayor sea el apalancamiento, mayor será el precio de liquidación, que aumentará gradualmente a medida que aumenten los costos de endeudamiento.
Por ejemplo, al abrir una posición larga en ETH, los traders están “arrendando” el espacio al alza de ETH desde el grupo GLP; al abrir una posición corta en ETH, los traders están “alquilando” el espacio al alza de stablecoins contra ETH desde el grupo GLP. Sin embargo, los activos en el grupo GLP no se arriendan en realidad.
Al cerrar una posición, si el trader acierta, las ganancias se pagarán en forma de aumento de tokens del pool GLP; de lo contrario, las pérdidas se deducirán del colateral y se pagarán en el pool. GLP obtiene ganancias tanto de las pérdidas como de las ganancias de los traders.
En el proceso, los comerciantes pagan tarifas de transacción, tarifas de apertura/cierre y tarifas de préstamo a cambio de espacio alcista/bajista para tokens específicos (BTC, ETH, AVAX, UNI y LINK) frente al dólar estadounidense.
Comercio de Merkle[3]es una plataforma de trading descentralizada que ofrece trading de criptomonedas, forex y materias primas con un apalancamiento de hasta 1.000x y funciones avanzadas de trading centradas en el usuario. Merkle Trade está impulsado por la cadena de bloques Aptos y tiene un rendimiento y escalabilidad de primer nivel. En comparación con Gains Network, que ofrece el mismo alto apalancamiento, tiene menores retrasos y tarifas de transacción.
A diferencia de la mayoría de los intercambios, no hay un libro de órdenes en Merkle Trade. En cambio, Merkle LP actúa como contraparte de cada operación, y cuando los traders pierden dinero, toma el colateral y paga los beneficios en las operaciones cerradas con rendimientos positivos.
Merkle Trade fue diseñado desde el principio para ofrecer una amplia gama de pares de trading, incluyendo criptomonedas, divisas y materias primas, y algunos de los apalancamientos más altos en el mercado; hasta 150x en criptomonedas y hasta 1,000x en divisas.
Generar blockchain con Aptos, que tiene la latencia más baja hasta la fecha, puede proporcionar la experiencia de transacción más rápida en cadena. Para los traders, esto significa una experiencia comercial más rápida y menos deslizamiento de precios debido a retrasos en la ejecución.
Los traders operan con una piscina de liquidez (Merkle LP), que actúa como contraparte en cada transacción en el acuerdo. Todas las transacciones y liquidaciones son ejecutadas por contratos inteligentes, y en ningún momento se alojan fondos de usuarios.
Merkle Trade afirma tener una de las tarifas más bajas en el mercado hasta la fecha. En el lanzamiento, las tarifas para pares de criptomonedas eran tan bajas como 0.05%, y las tarifas para pares de divisas eran tan bajas como 0.0075%.
DYDX
dYdX[4]es un exchange descentralizado (DEX) que permite a los usuarios comerciar contratos perpetuos de forma eficiente manteniendo el control total sobre los activos. Desde su lanzamiento en 2021, dYdX V3 ha adoptado una solución de escalabilidad única de segundo nivel no custodial para implementar su exchange, aunque su libro de órdenes y motor de emparejamiento siguen siendo gestionados de forma centralizada.
Ahora, con dYdX V4, el protocolo está creciendo en su propia cadena, y todo el protocolo está siendo completamente reestructurado para lograr una descentralización completa mientras se aumenta la capacidad de procesamiento. dYdX también incluye tres funciones: préstamos, trading apalancado y contratos perpetuos. El trading apalancado viene con una función de préstamo. Los fondos depositados por los usuarios forman automáticamente un fondo común. Si hay capital insuficiente durante el trading, se presta e intereses se pagan automáticamente.
Hemos introducido los tipos comunes y las aplicaciones de apalancamiento en DeFi. Además, todavía existen muchas cuestiones de seguridad en el diseño de apalancamiento que merecen nuestra atención. Analizaremos los problemas de seguridad y los puntos de auditoría del apalancamiento DeFi basados en casos específicos de auditoría.
En la mayoría de las aplicaciones de intercambio apalancado, existen órdenes límite y órdenes de mercado. Es muy necesario diferenciar y verificar estrictamente las órdenes límite y las órdenes de mercado.A continuación, realizaremos un análisis detallado de los problemas que encontramos en la auditoría de Merkle Trade [5].
let now = timestamp: :now_seconds (); if (now - order.created_timestamp > 30) { cancel_order_internal( _order_id, order, T_CANCEL_ORDER_EXPIRED ); return };
Esta parte del código realiza las comprobaciones en la función de orden, donde verifica si han pasado más de 30 segundos desde que se creó la orden. Si se cumplen las condiciones, llame a cancel_order_internal() para cancelar la orden. Sin embargo, si la orden es una orden límite, significa que la orden tiene un precio específico establecido por el comerciante y están dispuestos a comprar o vender el activo a ese precio. No debería haber tal juicio al ejecutar órdenes límite; esto puede hacer que la mayoría de las órdenes límite no se ejecuten. Por lo tanto, es importante diferenciar estrictamente la lógica comercial entre órdenes límite y órdenes de mercado.
Los errores de cálculo siempre han sido un problema muy común en DeFi, y también son particularmente comunes en apalancamiento. Utilizaremos los problemas descubiertos por el protocolo Imparable [6] en auditorías de terceros para examinar a fondo los problemas de cálculo de apalancamiento.
Veamos el código para calcular el apalancamiento en Unstoppable:
def _calculate_calculation ( _position_value: uint256, _debt_value: uint256, _margin_value: uint256) -> uint256: if _position_value < = _debt_value: #bad debt Return max_value (uint256) Return ( precision * (_debt_value + _margin_value) /(_position_value - _debt_value) /PRECISION )
La función _calculate_margin causó que el apalancamiento se calculara incorrectamente mediante el uso de _debt_value + _margin_value como numerador en lugar del _position_value. Los tres parámetros de entrada de la función _position_value, _debt_value y _margin_value se determinan todos por información de precios proporcionada por los oráculos en cadena de Chainlink. Aquí, _debt_value indica el valor de convertir la participación de deuda de la posición en la cantidad de deuda en dólares. _margin_value indica el valor actual del monto de margen inicial de la posición (en dólares estadounidenses). _position_value indica el valor actual (en dólares estadounidenses) del monto inicial de la posición.
El problema con el cálculo anterior es que _debt_value + _margin_value no representa el valor de la posición. El apalancamiento es la relación entre el valor actual de la posición y el valor actual del margen. _position_value - _debt_value es correcto. Indica el valor actual del margen, pero _debt_value + _margin_value no representa el valor actual de la posición, porque no hay garantía de que los tokens de deuda y los tokens de posición tengan fluctuaciones de precio relacionadas.
Por ejemplo, el token de deuda es ETH, y el token de posición es BTC.
Alice utiliza 1 ETH como margen, toma prestados 14 ETH (2,000 dólares cada uno) y recibe 1 BTC (30,000 dólares cada uno) en tokens de posición. El apalancamiento es 14.
Al día siguiente, el precio de ETH se mantuvo en $2,000/ETH, pero el precio de BTC cayó de $30,000/BTC a $29,000/BTC. En este punto, el apalancamiento debería ser (_valor_posición == 29,000)/(_valor_posición == 29,000 - _valor_deuda == 28,000) = 29, no el valor calculado en el contrato: (_valor_deuda == 28,000 + _valor_margen == 2,000)/(_valor_posición == 29,000 - _valor_deuda == 28,000) = 30.
Por lo tanto, para solucionar esto, se debe utilizar la fórmula correcta mencionada anteriormente para calcular el apalancamiento en contratos inteligentes. Un cálculo erróneo del apalancamiento puede conducir a liquidaciones injustas o posiciones excesivamente apalancadas ante fluctuaciones de precios.
En contratos inteligentes, garantizar un cálculo adecuado de apalancamiento es fundamental para mantener la solidez del sistema y los intereses de los usuarios. El cálculo correcto del apalancamiento debe basarse en la proporción entre el valor actual de la posición y el valor actual del margen. Si se utiliza la fórmula de cálculo incorrecta, puede provocar que el sistema reaccione de manera incorrecta a los cambios de precio, liquidar posiciones que no deberían ser liquidadas o permitir que posiciones con apalancamiento excesivo sigan existiendo, aumentando así el riesgo del sistema y de los usuarios.
Error de lógica
Los errores de lógica requieren especial atención en las auditorías de contratos inteligentes, especialmente en lógica compleja como el trading apalancado DeFi.
Hablemos de los problemas lógicos a tener en cuenta en el apalancamiento DeFi utilizando los problemas descubiertos por Tigris[7](Tigris, una plataforma descentralizada de trading de apalancamiento sintético basada en Arbitrum y Polygon) en una auditoría de terceros.
Veamos la lógica de la función de cierre de límite de precio en Tigris:
Función limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) externo{ _checkDelay(_id, false); (uint _limitPrice, address _tigAsset) = tradingExtension._limitClose(_id, _tp, _priceData, _signature); _closePosition(_id, DIVISION_CONSTANT, _limitPrice, address(0), _tigAsset, true);}función _limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) externa vista devuelve (uint _limitPrice, address _TIGAsset) { _checkGas (); iPosition.trade memory _trade = position.trades (_id); _tigAsset = _trade.tigAsset; getVerifiedPrice (_trade.asset, _priceData, _signature, 0); uint256 _price = _priceData.price; if (_trade.orderType! = 0) revert (" 4 "); //isLimit if (_tp) { if (_trade.tpPrice == 0) revert (" 7 "); //limitNotSet if (_trade.direction) { if (_trade.tpPrice > _price) revert("6"); //LimitNotMet } else { if (_trade.tpPrice < _price) revert("6"); //LimitNotMet } _limitPrice = _trade.tpPrice; } else { if (_trade.slprice == 0) revert (" 7 "); //limitNotSet if (_trade.direction) { if (_trade.slPrice < _price) revert("6"); //LimitNotMet } else { if (_trade.slPrice > _price) revert("6"); //LimitNotMet } //@audit stop loss is closed at user specified price NOT market price _limitPrice = _trade.slprice; }}
Al utilizar el stop-loss para cerrar una posición, el precio de cierre del usuario es el precio de stop-loss establecido por el usuario, no el precio actual del activo. En el caso de mercados direccionales y alto apalancamiento, los usuarios pueden abusar de esto para lograr operaciones casi libres de riesgo. Los usuarios pueden abrir una posición larga y establecer un precio de stop-loss que sea $0.01 menor que el precio actual.
Si el precio cae inmediatamente en la próxima actualización, cerrarán su posición a su precio de entrada y solo pagarán las tarifas de apertura y cierre. Si los precios suben, es probable que ganen mucho dinero. Como resultado, los usuarios pueden abusar de los métodos de fijación de precios de stop-loss para abrir operaciones con un alto apalancamiento, un alto potencial al alza y un bajo riesgo a la baja.
Tubs de precios
La importancia de las fluctuaciones de precios en el apalancamiento DeFi es muy importante. Solo considerando siempre las fluctuaciones de precios podemos garantizar la seguridad de los acuerdos de apalancamiento. Utilicemos el DeFiner [8]protocol como ejemplo para un análisis detallado de los problemas descubiertos en una auditoría de terceros:
El protocolo DeFiner pasa por dos controles antes de procesar retiros.
Primero, el método verifica si la cantidad solicitada por el usuario para retirar excede el saldo de ese activo:
función de autorización (dirección _accountAddr, dirección _token, uint256 _amount) externo soloAutorizado devuelve (uint256) { // Compruebe si la cantidad suficiente es menor que el saldo del usuario require (_amount <= getDepositBalanceCurrent (_token, _accountAddr), "Saldo ganado."); uint256 borrowLtv = globalConfig.tokenInfoLogistry().getBorrowLtv(_token);
En segundo lugar, el método verifica si las retiradas harán que la relación de apalancamiento del usuario sea demasiado alta. La cantidad retirada se restará del "poder de préstamo" del precio actual del usuario. Si el valor total prestado del usuario supera el nuevo poder de préstamo, el método falla porque el usuario ya no tiene suficiente garantía para respaldar su posición prestada. Sin embargo, este requisito solo se verificará si el usuario no ha estado demasiado apalancado:
if (getBorrowEth (_accountAddr) < = getBorrowPower (_accountAddr)) require ( getBorrowEth (_accountAddr) < = getBorrowPower (_accountAddr) .sub ( _amount.mul (globalConfig.tokenInfoRegistry () .priceFromAddress (_token)) .mul (borrowLtv) .div (utils.getDivisor (address (globalConfig), _token)) .div (100) ), " Colloquium Collège when ");
Si los usuarios han prestado más de lo que les permite su “poder de préstamo”, pueden retirar dinero de todos modos. Esto puede suceder en varias situaciones, siendo la más común las fluctuaciones de precios. El acuerdo no consideró el impacto de las fluctuaciones de precios en el acuerdo, lo que causó este problema.
Además de los efectos de no distinguir entre órdenes limitadas y órdenes de mercado, errores de cálculo, errores de lógica y fluctuaciones de precios mencionados anteriormente, hay muchos puntos de seguridad relacionados con los acuerdos de apalancamiento que requieren nuestra atención. Esto incluye, pero no se limita a, problemas como ataques de préstamos rápidos, manipulación de precios, seguridad de los profetas, control de autoridad, comprobaciones de apalancamiento insuficientes o falta de comprobaciones. Estos factores deben ser cuidadosamente considerados al diseñar e implementar acuerdos de apalancamiento para garantizar la solidez del acuerdo y la seguridad de los activos del usuario. Las medidas preventivas, el monitoreo en tiempo real y los planes de respuesta de emergencia también son clave para reducir los riesgos potenciales y proteger los intereses de los usuarios.
Conclusión
La introducción del trading con apalancamiento en los protocolos DeFi ha proporcionado al mercado una mayor maniobrabilidad, al tiempo que ha traído mecanismos de trading más complejos. Aunque el trading con apalancamiento ofrece a los usuarios más oportunidades de inversión, sus riesgos potenciales y los desafíos para la seguridad del protocolo también se han vuelto más significativos.
A medida que el apalancamiento aumenta, la operación de los acuerdos se vuelve más flexible, pero como resultado, se vuelven más vulnerables y más susceptibles a diversas amenazas de seguridad. Esto incluye la posible falla en hacer una estricta distinción entre órdenes límite y órdenes de mercado, errores de cálculo, errores lógicos y extrema sensibilidad a factores como las fluctuaciones de precios. En este caso, debemos prestar más atención a la seguridad del protocolo para asegurar que los activos de los usuarios estén protegidos de manera efectiva.
Como equipo de seguridad blockchain líder en el campo de Web3, ScaleBit se distribuye en Silicon Valley, Singapur, Hong Kong, Taiwán, etc. Hemos proporcionado soluciones de seguridad blockchain a 200+ instituciones y proyectos en el sector global de Web3, acumulado 180,000+ líneas de código de auditoría y protegido más de $ 8 mil millones en activos de usuarios. ¡Haga que la seguridad sea accesible para todos! Si tiene alguna necesidad de auditoría de seguridad, no dude en ponerse en contacto con nosotros. Adaptaremos soluciones de seguridad detalladas, completas y profesionales para que te protejas a ti y al campo de la Web3 de forma segura.
Este artículo ha sido reimprimido de [ScaleBit]y los derechos de autor pertenecen al autor original [Polaris]. Si tiene alguna objeción a la reimpresión, por favor contacte al equipo de Gate Learn, y el equipo la resolverá tan pronto como sea posible de acuerdo con los procedimientos relevantes.
Descargo de responsabilidad: Las opiniones expresadas en este artículo representan únicamente las opiniones personales del autor y no constituyen ningún consejo de inversión.
Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
El reciente lanzamiento de dYdX V4 ha atraído mucha atención y participación en el intercambio de contratos perpetuos. dYdX ha aplicado con éxito ejemplos de operaciones con apalancamiento, y no solo debemos esperar con ansias el gran potencial de dYdX V4, sino también prestar más atención a la seguridad de los acuerdos con apalancamiento. A continuación, utilizaremos análisis y ejemplos de código específicos para guiarlo a través de las diferentes estrategias de apalancamiento y consideraciones de seguridad.
En finanzas, el apalancamiento es una estrategia que se basa en pedir prestado dinero para aumentar el rendimiento potencial de una inversión. Simplemente dicho, los inversores o traders piden prestado dinero para ampliar su exposición a tipos específicos de activos, proyectos o instrumentos mucho más de lo que podrían lograr confiando solo en su propio capital. A menudo, a través del uso de apalancamiento, los inversores pueden ampliar su poder adquisitivo en el mercado.
El uso del apalancamiento es una de las características más importantes y comunes del comercio de activos criptográficos. Poco después de la creación de intercambios descentralizados, el comercio con apalancamiento se volvió cada vez más popular, a pesar de que el mercado de criptomonedas ya mostraba una alta volatilidad.
Al igual que en las finanzas tradicionales, los traders utilizan apalancamiento ya sea para simplemente pedir prestado capital y aumentar su poder adquisitivo, o para aprovechar diversos derivados financieros, como futuros y opciones.
La relación de apalancamiento también ha aumentado de 3x y 5x a más de 100x. Un mayor apalancamiento significa un mayor riesgo, pero como se ha visto en la mayoría de los intercambios centralizados, este es un riesgo que los operadores agresivos buscan mayores rendimientos están dispuestos a asumir a medida que crece el volumen de operaciones con apalancamiento.
En lo que respecta a DeFi, los productos apalancados se dividen principalmente en cuatro tipos, y los mecanismos para generar apalancamiento son diferentes: préstamos apalancados, apalancamiento en operaciones con margen, apalancamiento en contratos perpetuos y tokens apalancados.
El préstamo y el préstamo DeFi es una de las primeras y más grandes aplicaciones DeFi. Gigantes como MakerDAO, Compound, AAVE y Venus ya están operando en el mercado. La lógica para obtener apalancamiento mediante el préstamo de activos criptográficos es simple.
Por ejemplo, si tienes $10,000 en Ether (ETH) y eres alcista, puedes depositar tu ETH como garantía en Compound, prestar $5,000 en USDC, y luego usar ese trato de $5,000 USDC a cambio de otros $5,000 en ETH. De esta manera, obtendrás un apalancamiento de 1.5 veces en ETH, y en comparación con tu capital inicial de $10,000, obtendrás $1.5 millones en exposición a ETH.
Del mismo modo, si eres bajista, puedes optar por depositar stablecoins y prestar ETH. Si el precio de ETH cae, puedes comprar ETH en el mercado a un precio más bajo y saldar tus deudas.
Ten en cuenta que, dado que estarás tomando prestado de un protocolo descentralizado, podrías ser liquidado si el valor del colateral disminuye o si el valor del activo que estás tomando prestado supera cierto umbral.
Con el préstamo DeFi, puedes hacer lo que quieras con estos activos digitales. El trading de margen DeFi se centra más en aumentar el tamaño de la posición (aumentar el poder adquisitivo) y se considera una verdadera “posición apalancada”. Sin embargo, hay una diferencia importante: mientras las posiciones de margen siguen abiertas, los activos de los traders actúan como garantía para los fondos prestados.
dYdX es una plataforma de trading de márgenes descentralizada bien conocida que permite un apalancamiento de hasta 5 veces. En el trading de márgenes de dYdX, los traders utilizan sus propios fondos como garantía, amplían su capital original varias veces y utilizan estos fondos amplificados para invertir a mayor escala.
Los traders deben pagar intereses y tarifas asociadas con la transacción. Esta posición no es ficticia; implica un préstamo real y compra/venta.
Si el mercado se mueve en una dirección desfavorable, es posible que los activos del trader no puedan reembolsar completamente el préstamo. Para evitar que esto suceda, el acuerdo liquidará sus posiciones antes de que se alcance cierta ratio de liquidación.
¿Cómo cambia el apalancamiento en el trading de margen——
Digamos que eres alcista en ETH 3 veces en el trading con margen, pero no quieres ajustar tu exposición todo el tiempo.
Tienes $100 en USDC y tomas prestados otros $200 en USDC para negociar $300 en ETH y establecer la posición larga de ETH que necesitas. El nivel de apalancamiento es $300/$100 = 3x.
Si el precio de ETH sube un 20%, tu beneficio sería de 300 (1 +20%) -300 = $60. Tu riesgo de ser liquidado es menor, mientras que el nivel de apalancamiento real se reduce a 360/ (360-200) = 2.25x. En otras palabras, reducirás automáticamente tu apalancamiento cuando el precio de ETH suba.
Si el precio de ETH cae un 20%, su pérdida sería de 300 (1-20%) -300 = -60 dólares. Cuando se trata de liquidación, se encuentra en una posición más peligrosa, y el nivel real de apalancamiento se incrementa automáticamente a 240/ (240-200) = 6x. En otras palabras, reequilibra su apalancamiento cuando el precio de ETH cae, lo que indica que se encuentra en una posición de mayor riesgo que antes.
Por lo tanto, aunque puedas pensar que puedes mantener un apalancamiento constante al operar con un margen fijo de 3x, el apalancamiento en tiempo real está cambiando constantemente.Por favor, compruebe el gráfico a continuación para ver cómo cambiará el apalancamiento dependiendo de los cambios de precio [1].
Los contratos perpetuos son similares a los contratos de futuros tradicionales, pero no tienen una fecha de vencimiento. Los contratos perpetuos imitan un mercado spot basado en márgenes, por lo que el comercio está cerca del precio del índice de referencia subyacente.
Hay muchos proyectos DeFi que ofrecen contratos perpetuos para traders, como dYdX, MCDEX, Perpetual Protocol, Incomplete, etc. Muchos traders pueden encontrar difícil diferenciar entre el trading con margen y los contratos perpetuos, de hecho, todos implican apalancamiento del usuario.
Sin embargo, existen algunas diferencias en los mecanismos de apalancamiento, las tarifas y los niveles de apalancamiento.
Un contrato perpetuo es un producto derivado que negocia activos sintéticos y tiene la característica de negociar con margen. El precio del activo subyacente se rastrea de manera sintética, sin necesidad de negociar el activo subyacente real. Sin embargo, el comercio con margen implica el préstamo real y la negociación de activos criptográficos reales.
Con la llegada de los contratos perpetuos, surgió el concepto de tasas de financiación. El propósito es mantener el precio de la transacción de un contrato perpetuo consistente con el precio de referencia subyacente. Si el precio del contrato es superior al precio al contado, entonces los alcistas pagarán a los bajistas. En otras palabras, los traders necesitan constantemente pagar comisiones por tomar prestado.
El apalancamiento en contratos perpetuos es generalmente mayor que en el comercio de margen, y puede ser tan alto como 100x. La liquidación y los mecanismos de apalancamiento reales son los mismos que en el comercio de margen.
Los tokens apalancados son derivados que brindan a los titulares una exposición apalancada al mercado de criptomonedas sin tener que preocuparse por administrar activamente las posiciones apalancadas. Si bien proporcionan a los titulares exposición al apalancamiento, no les exigen que se ocupen de los márgenes, la liquidación, las garantías o las tasas de financiación.
La mayor diferencia entre los tokens apalancados y el trading con margen/contratos perpetuos es que los tokens apalancados se reequilibrarán periódicamente o cuando se alcance un cierto umbral para mantener un nivel específico de apalancamiento.
Esto es claramente diferente del trading con margen y los contratos perpetuos; el apalancamiento real de estos productos está cambiando constantemente según las fluctuaciones de precios, incluso si el trader puede especificar inicialmente un nivel de apalancamiento.
Veamos cómo funciona el reequilibrio en el ejemplo de 3x ETH anterior:
Tienes $100 de USDC y compras un token apalancado ETHBULL (3x). El protocolo automáticamente pedirá prestados $200 en USDC y comerciará $200 en ETH.
Suponga que el precio de ETH ha subido un 20%, mientras que el precio del token ETHBULL (3x) sube a 300 * (1 +20%) -200 = $160 antes de reequilibrar. Su apalancamiento real es ahora de 2.25 (360/160), por debajo de su apalancamiento objetivo.
Como parte del proceso de reequilibrio, el protocolo tomará prestados más dólares del pool de stablecoins y comprará tokens ETH adicionales para devolver el apalancamiento a 3x. En nuestro ejemplo, el protocolo tomaría prestados $120 adicionales y los intercambiaría por ETH. Así, el apalancamiento total vuelve a ser (360+120) /160 = 3 veces.
Suponga que el precio de ETH ha caído un 20%, mientras que el precio del token ETHBULL (3x) cae a 300* (1-20%) -200 = $40 antes del rebalanceo. Ahora, su apalancamiento real será de 6 (240/40), por encima de su apalancamiento objetivo.
En este caso, el acuerdo vendería tokens de ETH y reembolsaría las deudas pendientes para reducir el apalancamiento. En este ejemplo, el protocolo vendería $120 en ETH para pagar al grupo. La deuda se convertirá en $80, y el apalancamiento total volverá a ser (240-120) /40 = 3x.
En otras palabras, los tokens apalancados se volverán a apalancar automáticamente en ganancias y se desapalancarán en pérdidas para restaurar su nivel objetivo de apalancamiento. Si este mecanismo funciona bien, incluso en tendencias de mercado adversas, los titulares de tokens apalancados no serán liquidados porque el mecanismo de desapalancamiento reducirá continuamente el nivel de apalancamiento efectivo de los usuarios.
Como resultado, el pool de préstamos en el modelo de token apalancado estará exento del riesgo de liquidación y es más seguro que el pool de préstamos en el trading con margen.
Ahora que hemos aprendido sobre algunos tipos comunes de protocolos DeFi de apalancamiento, discutamos la aplicación del apalancamiento en detalle en relación con protocolos DeFi específicos.
GMX [2]es un intercambio descentralizado de spot y perpetuo que ofrece a los traders la posibilidad de operar activos con un apalancamiento de hasta 50 veces. El acuerdo actualmente funciona en Arbitrum y Avalanche. En GMX, los traders están completamente al tanto de la situación de su contraparte, lo cual es completamente diferente de operar en CEX. A diferencia de otros acuerdos de contratos perpetuos como dYdX, GMX opera completamente en cadena y utiliza funcionalidades de AMM para permitir operaciones con apalancamiento.
Lo que distingue a GMX de otros servicios es que es un intercambio descentralizado que proporciona servicios de negociación con apalancamiento. En este sentido, combina una experiencia similar a otros intercambios DeFi como Uniswap con servicios de negociación con apalancamiento ofrecidos por Binance y otros.
GMX tiene una piscina de liquidez GLP, que es una piscina de activos múltiples que proporciona liquidez para el comercio de márgenes: los usuarios pueden abrir/cerrar posiciones y ejecutar operaciones mediante la creación y destrucción de tokens GLP. La piscina obtiene comisiones de LP de las operaciones y operaciones apalancadas, que se distribuyen a los titulares de GMX y GLP.
Para operar con apalancamiento, los traders depositan garantías en un acuerdo. Los traders pueden elegir un apalancamiento de hasta 50x. Cuanto mayor sea el apalancamiento, mayor será el precio de liquidación, que aumentará gradualmente a medida que aumenten los costos de endeudamiento.
Por ejemplo, al abrir una posición larga en ETH, los traders están “arrendando” el espacio al alza de ETH desde el grupo GLP; al abrir una posición corta en ETH, los traders están “alquilando” el espacio al alza de stablecoins contra ETH desde el grupo GLP. Sin embargo, los activos en el grupo GLP no se arriendan en realidad.
Al cerrar una posición, si el trader acierta, las ganancias se pagarán en forma de aumento de tokens del pool GLP; de lo contrario, las pérdidas se deducirán del colateral y se pagarán en el pool. GLP obtiene ganancias tanto de las pérdidas como de las ganancias de los traders.
En el proceso, los comerciantes pagan tarifas de transacción, tarifas de apertura/cierre y tarifas de préstamo a cambio de espacio alcista/bajista para tokens específicos (BTC, ETH, AVAX, UNI y LINK) frente al dólar estadounidense.
Comercio de Merkle[3]es una plataforma de trading descentralizada que ofrece trading de criptomonedas, forex y materias primas con un apalancamiento de hasta 1.000x y funciones avanzadas de trading centradas en el usuario. Merkle Trade está impulsado por la cadena de bloques Aptos y tiene un rendimiento y escalabilidad de primer nivel. En comparación con Gains Network, que ofrece el mismo alto apalancamiento, tiene menores retrasos y tarifas de transacción.
A diferencia de la mayoría de los intercambios, no hay un libro de órdenes en Merkle Trade. En cambio, Merkle LP actúa como contraparte de cada operación, y cuando los traders pierden dinero, toma el colateral y paga los beneficios en las operaciones cerradas con rendimientos positivos.
Merkle Trade fue diseñado desde el principio para ofrecer una amplia gama de pares de trading, incluyendo criptomonedas, divisas y materias primas, y algunos de los apalancamientos más altos en el mercado; hasta 150x en criptomonedas y hasta 1,000x en divisas.
Generar blockchain con Aptos, que tiene la latencia más baja hasta la fecha, puede proporcionar la experiencia de transacción más rápida en cadena. Para los traders, esto significa una experiencia comercial más rápida y menos deslizamiento de precios debido a retrasos en la ejecución.
Los traders operan con una piscina de liquidez (Merkle LP), que actúa como contraparte en cada transacción en el acuerdo. Todas las transacciones y liquidaciones son ejecutadas por contratos inteligentes, y en ningún momento se alojan fondos de usuarios.
Merkle Trade afirma tener una de las tarifas más bajas en el mercado hasta la fecha. En el lanzamiento, las tarifas para pares de criptomonedas eran tan bajas como 0.05%, y las tarifas para pares de divisas eran tan bajas como 0.0075%.
DYDX
dYdX[4]es un exchange descentralizado (DEX) que permite a los usuarios comerciar contratos perpetuos de forma eficiente manteniendo el control total sobre los activos. Desde su lanzamiento en 2021, dYdX V3 ha adoptado una solución de escalabilidad única de segundo nivel no custodial para implementar su exchange, aunque su libro de órdenes y motor de emparejamiento siguen siendo gestionados de forma centralizada.
Ahora, con dYdX V4, el protocolo está creciendo en su propia cadena, y todo el protocolo está siendo completamente reestructurado para lograr una descentralización completa mientras se aumenta la capacidad de procesamiento. dYdX también incluye tres funciones: préstamos, trading apalancado y contratos perpetuos. El trading apalancado viene con una función de préstamo. Los fondos depositados por los usuarios forman automáticamente un fondo común. Si hay capital insuficiente durante el trading, se presta e intereses se pagan automáticamente.
Hemos introducido los tipos comunes y las aplicaciones de apalancamiento en DeFi. Además, todavía existen muchas cuestiones de seguridad en el diseño de apalancamiento que merecen nuestra atención. Analizaremos los problemas de seguridad y los puntos de auditoría del apalancamiento DeFi basados en casos específicos de auditoría.
En la mayoría de las aplicaciones de intercambio apalancado, existen órdenes límite y órdenes de mercado. Es muy necesario diferenciar y verificar estrictamente las órdenes límite y las órdenes de mercado.A continuación, realizaremos un análisis detallado de los problemas que encontramos en la auditoría de Merkle Trade [5].
let now = timestamp: :now_seconds (); if (now - order.created_timestamp > 30) { cancel_order_internal( _order_id, order, T_CANCEL_ORDER_EXPIRED ); return };
Esta parte del código realiza las comprobaciones en la función de orden, donde verifica si han pasado más de 30 segundos desde que se creó la orden. Si se cumplen las condiciones, llame a cancel_order_internal() para cancelar la orden. Sin embargo, si la orden es una orden límite, significa que la orden tiene un precio específico establecido por el comerciante y están dispuestos a comprar o vender el activo a ese precio. No debería haber tal juicio al ejecutar órdenes límite; esto puede hacer que la mayoría de las órdenes límite no se ejecuten. Por lo tanto, es importante diferenciar estrictamente la lógica comercial entre órdenes límite y órdenes de mercado.
Los errores de cálculo siempre han sido un problema muy común en DeFi, y también son particularmente comunes en apalancamiento. Utilizaremos los problemas descubiertos por el protocolo Imparable [6] en auditorías de terceros para examinar a fondo los problemas de cálculo de apalancamiento.
Veamos el código para calcular el apalancamiento en Unstoppable:
def _calculate_calculation ( _position_value: uint256, _debt_value: uint256, _margin_value: uint256) -> uint256: if _position_value < = _debt_value: #bad debt Return max_value (uint256) Return ( precision * (_debt_value + _margin_value) /(_position_value - _debt_value) /PRECISION )
La función _calculate_margin causó que el apalancamiento se calculara incorrectamente mediante el uso de _debt_value + _margin_value como numerador en lugar del _position_value. Los tres parámetros de entrada de la función _position_value, _debt_value y _margin_value se determinan todos por información de precios proporcionada por los oráculos en cadena de Chainlink. Aquí, _debt_value indica el valor de convertir la participación de deuda de la posición en la cantidad de deuda en dólares. _margin_value indica el valor actual del monto de margen inicial de la posición (en dólares estadounidenses). _position_value indica el valor actual (en dólares estadounidenses) del monto inicial de la posición.
El problema con el cálculo anterior es que _debt_value + _margin_value no representa el valor de la posición. El apalancamiento es la relación entre el valor actual de la posición y el valor actual del margen. _position_value - _debt_value es correcto. Indica el valor actual del margen, pero _debt_value + _margin_value no representa el valor actual de la posición, porque no hay garantía de que los tokens de deuda y los tokens de posición tengan fluctuaciones de precio relacionadas.
Por ejemplo, el token de deuda es ETH, y el token de posición es BTC.
Alice utiliza 1 ETH como margen, toma prestados 14 ETH (2,000 dólares cada uno) y recibe 1 BTC (30,000 dólares cada uno) en tokens de posición. El apalancamiento es 14.
Al día siguiente, el precio de ETH se mantuvo en $2,000/ETH, pero el precio de BTC cayó de $30,000/BTC a $29,000/BTC. En este punto, el apalancamiento debería ser (_valor_posición == 29,000)/(_valor_posición == 29,000 - _valor_deuda == 28,000) = 29, no el valor calculado en el contrato: (_valor_deuda == 28,000 + _valor_margen == 2,000)/(_valor_posición == 29,000 - _valor_deuda == 28,000) = 30.
Por lo tanto, para solucionar esto, se debe utilizar la fórmula correcta mencionada anteriormente para calcular el apalancamiento en contratos inteligentes. Un cálculo erróneo del apalancamiento puede conducir a liquidaciones injustas o posiciones excesivamente apalancadas ante fluctuaciones de precios.
En contratos inteligentes, garantizar un cálculo adecuado de apalancamiento es fundamental para mantener la solidez del sistema y los intereses de los usuarios. El cálculo correcto del apalancamiento debe basarse en la proporción entre el valor actual de la posición y el valor actual del margen. Si se utiliza la fórmula de cálculo incorrecta, puede provocar que el sistema reaccione de manera incorrecta a los cambios de precio, liquidar posiciones que no deberían ser liquidadas o permitir que posiciones con apalancamiento excesivo sigan existiendo, aumentando así el riesgo del sistema y de los usuarios.
Error de lógica
Los errores de lógica requieren especial atención en las auditorías de contratos inteligentes, especialmente en lógica compleja como el trading apalancado DeFi.
Hablemos de los problemas lógicos a tener en cuenta en el apalancamiento DeFi utilizando los problemas descubiertos por Tigris[7](Tigris, una plataforma descentralizada de trading de apalancamiento sintético basada en Arbitrum y Polygon) en una auditoría de terceros.
Veamos la lógica de la función de cierre de límite de precio en Tigris:
Función limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) externo{ _checkDelay(_id, false); (uint _limitPrice, address _tigAsset) = tradingExtension._limitClose(_id, _tp, _priceData, _signature); _closePosition(_id, DIVISION_CONSTANT, _limitPrice, address(0), _tigAsset, true);}función _limitClose ( uint _id, bool _tp, priceData calldata _priceData, Bytes calldata _signature) externa vista devuelve (uint _limitPrice, address _TIGAsset) { _checkGas (); iPosition.trade memory _trade = position.trades (_id); _tigAsset = _trade.tigAsset; getVerifiedPrice (_trade.asset, _priceData, _signature, 0); uint256 _price = _priceData.price; if (_trade.orderType! = 0) revert (" 4 "); //isLimit if (_tp) { if (_trade.tpPrice == 0) revert (" 7 "); //limitNotSet if (_trade.direction) { if (_trade.tpPrice > _price) revert("6"); //LimitNotMet } else { if (_trade.tpPrice < _price) revert("6"); //LimitNotMet } _limitPrice = _trade.tpPrice; } else { if (_trade.slprice == 0) revert (" 7 "); //limitNotSet if (_trade.direction) { if (_trade.slPrice < _price) revert("6"); //LimitNotMet } else { if (_trade.slPrice > _price) revert("6"); //LimitNotMet } //@audit stop loss is closed at user specified price NOT market price _limitPrice = _trade.slprice; }}
Al utilizar el stop-loss para cerrar una posición, el precio de cierre del usuario es el precio de stop-loss establecido por el usuario, no el precio actual del activo. En el caso de mercados direccionales y alto apalancamiento, los usuarios pueden abusar de esto para lograr operaciones casi libres de riesgo. Los usuarios pueden abrir una posición larga y establecer un precio de stop-loss que sea $0.01 menor que el precio actual.
Si el precio cae inmediatamente en la próxima actualización, cerrarán su posición a su precio de entrada y solo pagarán las tarifas de apertura y cierre. Si los precios suben, es probable que ganen mucho dinero. Como resultado, los usuarios pueden abusar de los métodos de fijación de precios de stop-loss para abrir operaciones con un alto apalancamiento, un alto potencial al alza y un bajo riesgo a la baja.
Tubs de precios
La importancia de las fluctuaciones de precios en el apalancamiento DeFi es muy importante. Solo considerando siempre las fluctuaciones de precios podemos garantizar la seguridad de los acuerdos de apalancamiento. Utilicemos el DeFiner [8]protocol como ejemplo para un análisis detallado de los problemas descubiertos en una auditoría de terceros:
El protocolo DeFiner pasa por dos controles antes de procesar retiros.
Primero, el método verifica si la cantidad solicitada por el usuario para retirar excede el saldo de ese activo:
función de autorización (dirección _accountAddr, dirección _token, uint256 _amount) externo soloAutorizado devuelve (uint256) { // Compruebe si la cantidad suficiente es menor que el saldo del usuario require (_amount <= getDepositBalanceCurrent (_token, _accountAddr), "Saldo ganado."); uint256 borrowLtv = globalConfig.tokenInfoLogistry().getBorrowLtv(_token);
En segundo lugar, el método verifica si las retiradas harán que la relación de apalancamiento del usuario sea demasiado alta. La cantidad retirada se restará del "poder de préstamo" del precio actual del usuario. Si el valor total prestado del usuario supera el nuevo poder de préstamo, el método falla porque el usuario ya no tiene suficiente garantía para respaldar su posición prestada. Sin embargo, este requisito solo se verificará si el usuario no ha estado demasiado apalancado:
if (getBorrowEth (_accountAddr) < = getBorrowPower (_accountAddr)) require ( getBorrowEth (_accountAddr) < = getBorrowPower (_accountAddr) .sub ( _amount.mul (globalConfig.tokenInfoRegistry () .priceFromAddress (_token)) .mul (borrowLtv) .div (utils.getDivisor (address (globalConfig), _token)) .div (100) ), " Colloquium Collège when ");
Si los usuarios han prestado más de lo que les permite su “poder de préstamo”, pueden retirar dinero de todos modos. Esto puede suceder en varias situaciones, siendo la más común las fluctuaciones de precios. El acuerdo no consideró el impacto de las fluctuaciones de precios en el acuerdo, lo que causó este problema.
Además de los efectos de no distinguir entre órdenes limitadas y órdenes de mercado, errores de cálculo, errores de lógica y fluctuaciones de precios mencionados anteriormente, hay muchos puntos de seguridad relacionados con los acuerdos de apalancamiento que requieren nuestra atención. Esto incluye, pero no se limita a, problemas como ataques de préstamos rápidos, manipulación de precios, seguridad de los profetas, control de autoridad, comprobaciones de apalancamiento insuficientes o falta de comprobaciones. Estos factores deben ser cuidadosamente considerados al diseñar e implementar acuerdos de apalancamiento para garantizar la solidez del acuerdo y la seguridad de los activos del usuario. Las medidas preventivas, el monitoreo en tiempo real y los planes de respuesta de emergencia también son clave para reducir los riesgos potenciales y proteger los intereses de los usuarios.
Conclusión
La introducción del trading con apalancamiento en los protocolos DeFi ha proporcionado al mercado una mayor maniobrabilidad, al tiempo que ha traído mecanismos de trading más complejos. Aunque el trading con apalancamiento ofrece a los usuarios más oportunidades de inversión, sus riesgos potenciales y los desafíos para la seguridad del protocolo también se han vuelto más significativos.
A medida que el apalancamiento aumenta, la operación de los acuerdos se vuelve más flexible, pero como resultado, se vuelven más vulnerables y más susceptibles a diversas amenazas de seguridad. Esto incluye la posible falla en hacer una estricta distinción entre órdenes límite y órdenes de mercado, errores de cálculo, errores lógicos y extrema sensibilidad a factores como las fluctuaciones de precios. En este caso, debemos prestar más atención a la seguridad del protocolo para asegurar que los activos de los usuarios estén protegidos de manera efectiva.
Como equipo de seguridad blockchain líder en el campo de Web3, ScaleBit se distribuye en Silicon Valley, Singapur, Hong Kong, Taiwán, etc. Hemos proporcionado soluciones de seguridad blockchain a 200+ instituciones y proyectos en el sector global de Web3, acumulado 180,000+ líneas de código de auditoría y protegido más de $ 8 mil millones en activos de usuarios. ¡Haga que la seguridad sea accesible para todos! Si tiene alguna necesidad de auditoría de seguridad, no dude en ponerse en contacto con nosotros. Adaptaremos soluciones de seguridad detalladas, completas y profesionales para que te protejas a ti y al campo de la Web3 de forma segura.
Este artículo ha sido reimprimido de [ScaleBit]y los derechos de autor pertenecen al autor original [Polaris]. Si tiene alguna objeción a la reimpresión, por favor contacte al equipo de Gate Learn, y el equipo la resolverá tan pronto como sea posible de acuerdo con los procedimientos relevantes.
Descargo de responsabilidad: Las opiniones expresadas en este artículo representan únicamente las opiniones personales del autor y no constituyen ningún consejo de inversión.
Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.