Saltar al contenido principal

AMM y liquidez on-chain

El módulo x/amm es el creador de mercado automatizado (AMM) nativo y on-chain de QoreChain. Permite a cualquiera crear pools de liquidez, aportar liquidez e intercambiar activos nativos de QoreChain directamente a nivel de protocolo, sin necesidad de un libro de órdenes off-chain ni de un DEX de contrato inteligente externo. Es la capa de liquidación on-chain detrás de la experiencia Trade / DEX del Dashboard.

Los pools siguen curvas de fijación de precios de AMM conocidas:

  • constant_product — la curva x*y=k (pares de propósito general).
  • stable_swap — una curva de bajo deslizamiento para pares estrechamente vinculados, ajustada por un coeficiente de amplificación.

Todos los montos utilizan las unidades nativas de QoreChain. El token de staking y de comisiones es QOR, cuyo denom base es uqor (1 QOR = 10^6 uqor). Los participantes de los pools y las direcciones utilizan el prefijo bech32 qor.

nota

Los comandos a continuación utilizan qorechaind. Añade los indicadores de transacción habituales (--from, --chain-id, --gas, --fees, --node) según tu entorno; por ejemplo --chain-id qorechain-vladi contra mainnet.

Pools y participaciones LP

Un pool mantiene reservas de dos denoms (token_a, token_b, almacenados en orden ordenado) y acuña tokens LP que representan un derecho proporcional sobre esas reservas. Cada pool tiene un id numérico, un type, un status (active o paused) y su propio denom LP. Cuando aportas liquidez recibes tokens LP; cuando retiras liquidez los quemas para canjear tu parte de las reservas.

Crear un pool

create-pool toma un tipo de pool y los dos depósitos iniciales (como monedas). Para un par estable, establece el coeficiente de amplificación con --amp.

# Constant-product pool seeded with QOR and a bridged USD asset
qorechaind tx amm create-pool constant_product 1000000000uqor 1000000000uusdc \
--from qor1youraddr... --chain-id qorechain-vladi

# Stable-swap pool with an amplification coefficient
qorechaind tx amm create-pool stable_swap 1000000000uusdc 1000000000uusdt \
--amp 200 --from qor1youraddr... --chain-id qorechain-vladi

Aportar liquidez

add-liquidity deposita ambos lados en un pool y acuña tokens LP. El argumento final es el monto mínimo de LP que aceptarás: tu protección frente a que la proporción del pool cambie antes de que se confirme tu transacción.

qorechaind tx amm add-liquidity 1 500000000uqor 500000000uusdc 100000 \
--from qor1youraddr... --chain-id qorechain-vladi

Retirar liquidez

remove-liquidity quema tokens LP y retira reservas. Los dos argumentos min establecen el monto mínimo de cada lado que aceptarás recibir de vuelta.

qorechaind tx amm remove-liquidity 1 100000 490000000 490000000 \
--from qor1youraddr... --chain-id qorechain-vladi

Swaps

El AMM admite las dos direcciones de swap estándar.

Exact-in

swap-exact-in gasta un monto de entrada fijo y devuelve la cantidad de salida que produzca la curva, sujeto a un mínimo de salida (protección contra deslizamiento).

# Spend exactly 1,000,000 uqor for uusdc, refusing anything below 990,000 uusdc out
qorechaind tx amm swap-exact-in 1 1000000uqor uusdc 990000 \
--from qor1youraddr... --chain-id qorechain-vladi

Exact-out

swap-exact-out solicita un monto de salida fijo y gasta la cantidad de entrada necesaria, sujeto a un máximo de entrada.

# Receive exactly 1,000,000 uusdc, spending at most 1,010,000 uqor
qorechaind tx amm swap-exact-out 1 uqor 1000000uusdc 1010000 \
--from qor1youraddr... --chain-id qorechain-vladi

El argumento final min-out / max-in de cada swap es la protección contra deslizamiento: configúralo a partir de una cotización reciente (más abajo) más tu tolerancia, y la transacción se revierte si el precio ejecutado lo incumpliría.

Cotizaciones (vista previa de precios)

Las cotizaciones son de solo lectura: previsualizan un swap sin enviarlo, de modo que un cliente puede mostrar una salida y una comisión esperadas antes de que el usuario firme. Son el respaldo natural del campo de precio de una interfaz de Trade.

# Preview the output of spending 1,000,000 uqor into pool 1
qorechaind query amm quote-exact-in 1 uqor 1000000
# -> returns amount_out and fee

# Preview the input needed to receive 1,000,000 uusdc from pool 1
qorechaind query amm quote-exact-out 1 uusdc 1000000
# -> returns amount_in and fee

La fee devuelta es la comisión de swap que el AMM aplica a la operación. Los niveles de comisión y deslizamiento dependen del pool y de los parámetros; utiliza los endpoints de cotización para ver su efecto concreto en cualquier operación dada en lugar de calcularlos a mano.

Inspeccionar pools y saldos

Todas estas son consultas de solo lectura que cualquiera puede ejecutar.

# Module parameters
qorechaind query amm params

# A single pool by ID
qorechaind query amm pool 1

# Every pool
qorechaind query amm pools

# Resolve a pool from its denom pair (order-independent)
qorechaind query amm pool-by-denoms uqor uusdc

# An account's LP balance in a pool
qorechaind query amm lp-balance 1 qor1youraddr...

pool devuelve las reservas del pool, el suministro de LP, el tipo, el estado y un precio promedio ponderado continuo. lp-balance devuelve el balance de tokens LP que una cuenta posee en ese pool.

Pausar y reanudar un pool

Los pools pueden ser pausados y reanudados por la autoridad del pool (la dirección pasada mediante --from). Un pool pausado rechaza los swaps y los cambios de liquidez hasta que se reanude, lo que resulta útil para la respuesta a incidentes o el mantenimiento coordinado.

# Pause pool 1 with a human-readable reason
qorechaind tx amm pause-pool 1 "scheduled maintenance" \
--from qor1authority... --chain-id qorechain-vladi

# Resume pool 1
qorechaind tx amm resume-pool 1 \
--from qor1authority... --chain-id qorechain-vladi

Resumen de comandos

Transacciones (qorechaind tx amm …):

ComandoPropósito
create-poolCrear un pool constant_product o stable_swap
add-liquidityDepositar reservas y acuñar tokens LP
remove-liquidityQuemar tokens LP y retirar reservas
swap-exact-inIntercambiar un monto de entrada fijo
swap-exact-outIntercambiar hasta un monto de salida fijo
pause-poolPausar un pool (autoridad)
resume-poolReanudar un pool pausado (autoridad)

Consultas (qorechaind query amm …):

ComandoPropósito
paramsMostrar los parámetros del módulo
poolMostrar un pool por ID
poolsListar todos los pools
pool-by-denomsResolver un pool a partir de su par de denoms
lp-balanceEl saldo LP de una cuenta en un pool
quote-exact-inPrevisualizar la salida de un swap de entrada fija
quote-exact-outPrevisualizar la entrada de un swap de salida fija

Relacionado

  • Trade / DEX del Dashboard expone estos pools, cotizaciones y swaps en una interfaz gráfica para usuarios cotidianos.
  • Para saber cómo el suministro de QOR, las comisiones y el valor fluyen a través de la cadena, consulta Tokenómica.
  • Prueba los swaps tú mismo en la interfaz Trade / DEX.
  • Para llevar primero activos a QoreChain, consulta Puentear activos.