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 →
Banner de versión. Todas las demostraciones de TypeScript apuntan a @raydium-io/raydium-sdk-v2@0.2.42-alpha contra Solana mainnet-beta, verificado en 2026-04. El esqueleto de Rust CPI apunta a raydium-cp-swap en la rama master, Anchor 0.30.x. Los ID de programa se extraen mediante constantes de reference/program-addresses.

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 el config.ts.template del repositorio de demostración (fuente):
La instancia Raydium es la fachada del SDK — cada demostración a continuación la utiliza. Obtiene de forma perezosa 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

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

Swap (entrada base)

Fuente: src/cpmm/swap.ts
Nota: el SDK siempre vuelve a obtener el estado del pool desde un RPC dentro de getPoolInfoFromRpc. No cotes desde api-v3.raydium.io para una transacción que estés a punto de firmar — una cotización que está un bloque desactualizada puede deslizarse en ExceededSlippage en el momento de la ejecución.

Swap (salida base)

Fuente: src/cpmm/swapBaseOut.ts

Depositar liquidez

Fuente: 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

Fuente: src/cpmm/withdraw.ts

Cobrar comisiones de protocolo/fondo/creador

Fuente: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts La recopilación de protocolo y fondo permanece protegida por autoridad. Las comisiones del creador tienen dos caminos: el CollectCreatorFee firmado por creador existente, y el aditivo CollectCreatorFeePermissionless, que cualquier pagador puede invocar pero que solo puede transferir a las ATA canónicas del creador. El SDK fijado expone los constructores sin procesar existentes:
@raydium-io/raydium-sdk-v2@0.2.42-alpha aún no expone un constructor para CollectCreatorFeePermissionless. Hasta que una versión del SDK lo agregue, construye desde el IDL CPMM actualizado o invoca el programa directamente. No reutilices makeCollectCreatorFeeInstruction: la nueva instrucción tiene un discriminador diferente y reemplaza las posiciones del firmante del creador / amm_config con cuentas separadas de payer y creator sin firma.
Fuera de la cadena, puedes leer las comisiones acumuladas directamente desde PoolState:

Esqueleto de Rust CPI

Si deseas invocar CPMM desde tu propio programa Anchor — por ejemplo, una bóveda que realiza swaps en nombre de sus depositantes — el contexto de CPI se ve así. El orden 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 breve antes de abrir un ticket de soporte:
  • Mints ordenados. Si tu PDA poolState derivado no coincide con el pool en cadena, probablemente olvidaste ordenar los mints.
  • Cotización de API desactualizada. Nunca pases un valor de reserva de api-v3.raydium.io a CurveCalculator.swap. Obtén desde un RPC.
  • Programa de token incorrecto. El vault de un mint de 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 subestimado para mints con comisión de transferencia. Si cualquiera de los lados del pool es un mint de Token-2022 con comisión de transferencia, tu minimum_amount_out debe estar denominado en lo que el usuario realmente recibe, no en lo que el vault 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 bits de estado.

Dónde ir a continuación

Fuentes: