Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →
Qué hace esto. Crea un nuevo pool CLMM en el nivel de comisión que elijas, luego abre una posición concentrada inicial. Dos transacciones, un script. El código está adaptado de los demos oficiales en
raydium-sdk-V2-demo/src/clmm en un único archivo ejecutable en Node.Configuración
Asegúrate de haber leído los requisitos previos de Inicio rápido y tengasRPC_URL, KEYPAIR e instaladas las dependencias.
La creación de un pool CLMM tiene una comisión única más renta por array de ticks para la posición inicial. También necesitarás ambas mints de semilla en tu billetera — abrir una posición cuando el precio está dentro del rango elegido requiere liquidez en ambos lados.
Paso 1 — config.ts
Guarda como config.ts. Tiene la misma estructura que el src/config.ts.template del repo demo — disableFeatureCheck se fuerza a true (recomendado para cualquier integración no trivial para que el SDK no se bloquee en su llamada de detección de características al inicio):
Paso 2 — createPool.ts
Guarda junto a config.ts. Fuente: src/clmm/createPool.ts.
Paso 3 — createPosition.ts
Fuente: src/clmm/createPosition.ts.
Paso 4 — utils.ts
Fuente: src/clmm/utils.ts.
Ejecutar
Qué acaba de suceder
Transacción 1 —raydium.clmm.createPool inicializó:
- el estado del pool en la PDA canónica para
(mint1, mint2, ammConfig), token_0_vaultytoken_1_vault(ordenados por byte de mint),- el búfer ring de
observation, - el bitmap de array de ticks inline,
sqrt_price_x64 inicial desde tu initialPrice.
Transacción 2 — raydium.clmm.openPositionFromBase abrió una posición concentrada:
- acuñó un NFT de posición en tu billetera (el NFT es la posición; transferirlo transfiere la posición),
- asignó arrays de ticks en los límites inferior y superior (renta única si es la primera posición en esos rangos; los arrays de ticks nunca se cierran por el programa, por lo que las posiciones posteriores en los mismos arrays no pagan renta adicional),
- depositó
inputAmountdemint1y el monto de par coincidente demint2(calculado porPoolUtils.getLiquidityAmountOutFromAmountIn), - acreditó la posición con liquidez proporcional al ancho del rango.
[0.000001, 100000]) es efectivamente rango completo; estréchalo para concentrar comisiones cerca del spot actual.
Elegir un nivel de comisión
clmmConfigs[0] es el nivel de comisión más bajo. El conjunto completo se publica en GET https://api-v3.raydium.io/main/clmm-config:
| Índice | tradeFeeRate | Espaciado de ticks | Usar cuando |
|---|---|---|---|
| 0 | 100 (1bp) | 1 | Estable / estable, pérdida impermanente muy baja esperada |
| 1 | 500 (5bp) | 10 | Activos altamente correlacionados (p. ej. staked-liquid vs subyacente) |
| 2 | 2_500 (25bp) | 60 | Par de token estándar, blue-chip + estable |
| 3 | 10_000 (1,00%) | 120 | Par volátil o delgado donde el riesgo de IL es alto |
user-flows/choosing-a-pool-type para una matriz de decisión completa.
Errores comunes
Pool already exists for this config— Ya existe un pool CLMM para este triple(mint1, mint2, ammConfig). Busca el ID del pool existente y salta el Paso 2.Insufficient funds for amount B— Tu billetera tiene el monto solicitado demintApero no elmintBcoincidente. Abrir una posición cuando el precio está dentro del rango requiere liquidez en ambos lados.Tick out of range— TulowerPriceoupperPricecae fuera del rango de precio representable. Usa un rango más razonable en relación al precio actual.- Precio obsoleto — Una cotización de la API puede estar 5–60 segundos obsoleta. Si
executePositionfalla por slippage, descomenta el bloquegetRpcClmmPoolInfoencreatePosition.tspara obtener el precio en vivo justo antes de firmar.
Advertencias
- El NFT de posición es tu único acceso. Pierde el NFT o transfierelo, pierde acceso a la posición. Trátalo como una llave.
- Las posiciones fuera de rango no ganan comisiones. Si el precio se mueve fuera de
[lowerPrice, upperPrice], tu posición está estacionada completamente en un activo y no gana nada hasta que reequilibres. - La renta de array de ticks es unidireccional. La primera posición que toca un array de ticks nunca inicializado paga su renta; el programa no expone una ruta para cerrar arrays de ticks, por lo que esa renta es permanente. Las posiciones posteriores en el mismo array son gratuitas.
Siguiente
products/clmm/overview— mecánica completa de CLMM.products/clmm/ticks-and-positions— las matemáticas detrás de los ticks.algorithms/impermanent-loss— cuantificando la amplificación de IL en CLMM.user-flows/create-clmm-pool— el mismo flujo a través de la interfaz de usuario de Raydium.

