Skip to main content
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 →

Requisitos previos

Cada demostración en esta página refleja un archivo en raydium-sdk-V2-demo/src/cpmm; el enlace de GitHub se encuentra junto a cada sección. El arranque sigue la config.ts.template del repositorio de demostración (source):
La instancia Raydium es la fachada del SDK — todas las demostraciones de abajo la utilizan. Obtiene de forma lazy las listas de tokens y configuraciones de comisiones desde api-v3.raydium.io; puedes inicializarla con tus propios datos en entornos sin conexión.

Crear un pool CPMM

Origen: src/cpmm/createCpmmPool.ts
Algunas cosas que el SDK maneja silenciosamente:
  • Ordena los mints en el orden token0/token1 antes de derivar el PDA.
  • Paga la comisión única create_pool_fee a poolFeeAccount.
  • Crea las cuentas de tokens asociados del llamador si faltan.
  • Elige el programa de tokens correcto (SPL Token vs Token-2022) por lado.
Después de la confirmación puedes obtener el estado del pool activo con:

Swap (entrada base)

Origen: src/cpmm/swap.ts
Nota: el SDK siempre re-obtiene el estado del pool desde un RPC dentro de getPoolInfoFromRpc. No hagas cotizaciones desde api-v3.raydium.io para una transacción que estés a punto de firmar — una cotización que está un bloque anticuada puede resultar en ExceededSlippage en el momento de la ejecución.

Swap (salida base)

Origen: src/cpmm/swapBaseOut.ts

Depositar liquidez

Origen: src/cpmm/deposit.ts
El SDK convierte lpAmount en needed_token_0 y needed_token_1 usando las reservas actuales del pool, infla cada una por 1 + slippage para los argumentos maximum_* de la instrucción, y construye las creaciones de ATA si es necesario.

Retirar liquidez

Origen: src/cpmm/withdraw.ts

Recolectar comisiones de protocolo/fondo/creador

Origen: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Estas instrucciones están controladas por acceso de administrador o creador e invocadas típicamente desde un firmante tenido por el multisig de Raydium o el creador del pool. El SDK las expone como constructores crudos:
Fuera de cadena puedes leer las comisiones acumuladas directamente desde PoolState:

Esqueleto de Rust CPI

Si quieres invocar CPMM desde tu propio programa Anchor — por ejemplo, una bóveda que hace swap en nombre de sus depositantes — el contexto CPI se ve así. El ordenamiento de cuentas sigue products/cpmm/instructions.
Si tu CPI firma como un PDA (por ejemplo, administras una bóveda en nombre de depositantes), reemplaza CpiContext::new con CpiContext::new_with_signer y pasa tus semillas.

Errores comunes

Una lista de verificación corta antes de abrir un ticket de soporte:
  • Mints ordenados. Si tu PDA de poolState derivado no coincide con el pool en cadena, probablemente olvidaste ordenar los mints.
  • Cotización API anticuada. Nunca pases un valor de reserva desde api-v3.raydium.io a CurveCalculator.swap. Obtén desde un RPC.
  • Programa de tokens incorrecto. El bóveda de un mint Token-2022 es propiedad del programa Token-2022, no de SPL Token. Siempre usa los campos token_0_program / token_1_program del pool.
  • Slippage sub-denominado para mints con comisión de transferencia. Si algún lado del pool es un mint Token-2022 con comisión de transferencia, tu minimum_amount_out debe denominarse en lo que el usuario realmente recibe, no en lo que el bóveda envía.
  • NotApproved en un swap. Verifica PoolState.status — el administrador puede haber pausado los swaps en ese pool. Consulta products/cpmm/instructions para la máscara de estado.

A dónde ir a continuación

Fuentes: