Cómo funciona por dentro
Precios: la precompilada BBO
El Exchange lee los precios directamente del libro de órdenes de Hyperliquid mediante una precompilada de la EVM. Sin oráculo off-chain, sin bot de precios, sin firmante de precios.
Implementación técnica de la precompilada BBO
Un exchange de perpetuos necesita precios para dos tareas: ejecutar operaciones y decidir cuándo se liquidan las posiciones. En la mayoría de las cadenas eso significa confiar en un operador de oráculos, o en un feed descentralizado lento y caro, o convivir con el riesgo de que quien publica los precios pueda congelar el mercado con solo dejar de hacerlo.
HyperEVM ofrece otro camino. HyperCore, la capa que ejecuta los libros de órdenes de Hyperliquid, se puede leer desde los contratos de HyperEVM a través de precompiladas de lectura: contratos de sistema en direcciones fijas que devuelven el estado en vivo de HyperCore, precios incluidos. El Exchange usa la precompilada BBO en 0x000000000000000000000000000000000000080e. Dado un índice de activo de Hyperliquid (en mainnet, BTC es 0 y ETH es 1), devuelve el mejor precio de compra y el mejor precio de venta actuales de ese perpetuo:
(ok, bid, ask) = HyperCore.readBbo(assetIndex, precompileGas) // a static call with a fixed gas allowance
require(ok && bid != 0 && ask != 0 && ask >= bid) // an empty or crossed book reverts
El precio de ejecución es el punto medio, redondeado hacia abajo, en las unidades de precio brutas del mercado (el precio de Hyperliquid por una escala propia de cada mercado):
price = (bid + ask) / 2
Ese es todo el proceso de fijación de precios. Todas las lecturas de un bloque ven la misma foto, y el Exchange guarda en caché el precio de cada mercado durante el resto de la llamada, así que cada apertura, cierre y liquidación de un mercado en un bloque usa el mismo precio.
Qué se sacrifica y qué se gana
El costo es claro: solo se pueden listar mercados que ya operan en el libro de Hyperliquid. Nada que Hyperliquid no liste se puede operar aquí.
A cambio, la fijación de precios no tiene ninguna parte off-chain. El BBO es estado de HyperCore, verificado por el consenso de Hyperliquid igual que los saldos de su registro. No hay firmante de precios ni comité de oráculos; el precio que ve el Exchange es el que cotizan los market makers de Hyperliquid en ese bloque, y cualquier contrato puede leerlo.
Sin cortacircuitos por desviación
Alguien puede intentar mover el libro de Hyperliquid durante un bloque, ampliando el spread o desplazando las mejores cotizaciones, y operar aquí contra el precio medio distorsionado. Es un riesgo real de usar el BBO directamente.
Una lectura revierte la operación cuando la precompilada no responde, cuando alguno de los dos lados del libro es cero o cuando el libro está cruzado; un libro bloqueado, con la compra igual a la venta, se acepta. Los contratos también tienen protecciones de precio: un spread máximo y bandas que comparan el precio medio con los precios de marca y de oráculo de Hyperliquid. En la configuración desplegada están desactivadas, lo que mantiene a propósito las ejecuciones en el precio medio bruto, así que se acepta un libro manipulado pero distinto de cero y no cruzado. La zona muerta, la curva de impacto, los topes de interés abierto por lado y la breve retención del relayer sobre los cierres de posiciones recién abiertas (6 segundos) reducen algunas ganancias y limitan la exposición; no hacen que la manipulación deje de ser rentable ni acotan la pérdida del LP. Consulta Riesgos.
La única palanca en tiempo real: retirar un mercado
Hay una acción de administración sobre los precios que surte efecto de inmediato: retirar un mercado. El guardián llama a pauseMarket(instrumentId), que guarda el BBO actual como precios de compra y de venta congelados y marca el mercado como retirado. A partir de ahí:
- las nuevas aperturas en ese mercado se revierten;
- los cierres y las liquidaciones siguen funcionando, con el libro congelado en lugar del libro en vivo.
El retiro es permanente: nadie, ni siquiera el dueño, puede reabrir ese id de mercado. Si un mercado retirado pudiera volver, los tenedores podrían elegir entre el precio congelado y el posterior en vivo, y el propio momento de la reapertura se volvería algo explotable. Si el mercado vuelve, se lista de nuevo con un id nuevo. El precio congelado permite detener un mercado sin dejar atrapadas sus posiciones: todavía se pueden cerrar a un precio que tenía sentido en el momento de la intervención. El retiro es por mercado, así que un problema con un activo no detiene a los demás.
Si en ese momento el propio libro es inutilizable o poco fiable, el guardián puede en cambio retirar el mercado al precio de marca o de oráculo de Hyperliquid (retireMarket con esa fuente); una lectura fallida del BBO recurre automáticamente al precio de marca. El guardián también puede pausar el trading en todos los mercados con setTradingPaused(true), sin congelar precios: los cierres y las liquidaciones siguen usando el libro en vivo, y solo el dueño puede levantar la pausa.
Aparte de los topes de interés abierto y los mínimos de operación del keeper de mercados, la elección del keeper de fuera de horario entre las dos curvas de pago y la eliminación de un builder por parte del multisig de gobernanza, todas las demás acciones de administración (comisiones, parámetros de impacto, listados, keepers, actualizaciones) son acciones del dueño a través del timelock.