Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
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 →
Soporte a nivel de programa
| Programa | ¿Mints base/quote de Token-2022? | Modo |
|---|---|---|
| CPMM | Sí — controlado | Lista blanca estricta de extensiones + lista blanca estática de 4 mints. |
| CLMM | Sí — controlado | Lista blanca estricta de extensiones + lista blanca estática de 6 mints + registro por mint del admin + detección Superstate. |
| AMM v4 | No | El programa es anterior a Token-2022; ambos mints deben ser Token SPL clásico. |
| Stable AMM | No | Las mismas restricciones que AMM v4. |
| Farm v6 | Sí, parcial | El mint de recompensa puede ser Token-2022 (sujeto a la misma lista blanca cuando una farm envuelve un LP de CPMM/CLMM); los mints de LP de stake del usuario heredan del pool envuelto. |
| LaunchLab | Sí, administrado por programa | El mint base puede ser Token-2022, pero solo mediante la instrucción dedicada initialize_with_token_2022; el programa mismo crea el mint con MetadataPointer (siempre) y opcionalmente TransferFeeConfig (tasa ≤ 5%). Los mints Token-2022 preexistentes con extensiones arbitrarias no se pueden usar como base. |
| Burn & Earn | Refleja el programa del pool | Hereda el control de CPMM / CLMM. |
- CPMM:
is_supported_mintenraydium-cp-swap/programs/cp-swap/src/utils/token.rs:178, llamado desdeInitialize. - CLMM:
is_supported_mintenraydium-clmm/programs/amm/src/util/token.rs:280, llamado desdeCreatePool. - LaunchLab:
initialize_with_token_2022enraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(el código fuente no está disponible públicamente).
Lista blanca de extensiones de CPMM y CLMM
Después de que los cortocircuitos de lista blanca estática (cubiertos más abajo), el programa itera las extensiones del mint y rechaza el mint si contiene cualquier extensión que no sea estas cinco:| Extensión | Razón por la que se permite |
|---|---|
TransferFeeConfig | Las matemáticas del pool restan la tarifa de entrada; el programa Token-2022 maneja la tarifa de salida. Ver algorithms/token-2022-transfer-fees. |
MetadataPointer | Decorativa — apunta a metadatos en cadena. |
TokenMetadata | Decorativa — metadatos en línea. |
InterestBearingConfig | El pool ve la cantidad principal; el multiplicador de UI es solo decorativo y el balance subyacente se preserva. |
ScaledUiAmount | La misma forma que interest-bearing — el factor de escala se aplica solo a la pantalla de UI. |
TransferHook, NonTransferable, ConfidentialTransferMint, PermanentDelegate, MintCloseAuthority, DefaultAccountState, GroupPointer, GroupMemberPointer, MemberPointer, Pausable, etc. — hace que is_supported_mint devuelva false y la creación del pool se revierta.
Las líneas relevantes (CPMM, forma idéntica en CLMM):
cp-swap/src/utils/token.rs:190–200
Rutas de bypass
Un mint de Token-2022 que no se ajusta a la lista blanca aún puede ser admitido a través de uno de tres bypasses explícitos. Se intentan en orden, antes de que se ejecute la iteración de extensiones.1. Lista blanca estática de mints
Un array constanteMINT_WHITELIST de strings en base58 se codifica en cada programa. Si la dirección del mint coincide, la función devuelve true inmediatamente y no se realiza ninguna verificación de extensión.
| Programa | Mints en la lista blanca |
|---|---|
| CPMM | HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM, Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g, FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4, 2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo |
| CLMM | Los mismos cuatro, más DAUcJBg4jSpVoEzASxYzdqHMUN8vuTpQyG2TvDcCHfZg, AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9 |
2. Registro por mint — solo CLMM
CLMM además consulta un PDASupportMintAssociated con seed [b"support_mint", mint]. Si ese PDA existe para el mint, se admite independientemente de su conjunto de extensiones.
El PDA se crea por CreateSupportMintAssociated (admin/create_support_mint_associated.rs). La instrucción se controla a dos firmantes:
crate::admin::ID— la autoridad estándar del admin de Raydium.crate::create_support_mint_associated_owner::ID— una autoridad dedicada para este propósito:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(mainnet),rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(devnet).
3. Detección Superstate — solo CLMM
CLMM tiene una tercera ruta específicamente para activos tokenizados de Superstate, que usan la extensiónScaledUiConfig que la versión de spl-token-2022 vinculada al programa CLMM no puede desempaquetar. En lugar de actualizar la dependencia, CLMM detecta tokens Superstate por su forma de autoridad:
raydium-clmm/programs/amm/src/util/token.rs:485
Un mint pasa esta rama si todos cuatro se cumplen:
- Su programa propietario es el programa Token-2022.
- Su autoridad de congelación es igual a
superstate_allowlist::ID. Mainnet:2Yq4T3mPNfjtEyTxSbRjRKqLf1pwbTasuCQrWe6QpM7x. Devnet:3TRuL3MFvzHaUfQAb6EsSAbQhWdhmYrKxEiViVkdQfXu. - Su extensión
DefaultAccountStateestá configurada enFrozen. - Su delegado permanente es también
superstate_allowlist::ID.
Lo que los bypasses no eximen
Los bypasses omiten la lista blanca de extensiones, pero el programa aún aplica:- El mint es propiedad de
TokenoToken-2022. Un programa de token personalizado se rechaza anteriormente. - Los vaults del pool se crean con las extensiones ATA correctas para pools de Token-2022 (
ImmutableOwner, etc.). - Todas las transferencias pasan por
transfer_checked— los mints con tarifa colocan la cantidad correcta en el vault.
TransferHook más tarde no obtiene una verificación en tiempo de swap; el hook simplemente se ejecutaría en cada transferencia y podría bloquear los swaps. Por lo tanto, la inclusión en la lista blanca es una acción de alto nivel de confianza.
Semántica de “bloqueado”
Cuandois_supported_mint devuelve false, la creación del pool se revierte con ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM). Ver reference/error-codes para los códigos numéricos.
Los pools existentes no pueden fallar retroactivamente en esta verificación — la puerta se ejecuta solo en la creación. Las extensiones de mint son inmutables para las categorías que Raydium rechaza (transfer hook, non-transferable, confidential transfer no se pueden agregar post-creación), por lo que la verificación estática es suficiente.
Por qué se excluye cada extensión
- TransferHook — invoca un programa personalizado en cada transferencia, con consumo de CU arbitrario, condiciones de fallo arbitrarias, y la capacidad de reentrar al programa que llama. No existe sandbox seguro. Algunos DEXes mantienen listas blancas de hooks; Raydium no.
- NonTransferable —
Transfersiempre falla. Un pool no puede tomar custodia. - ConfidentialTransfer — los montos de transferencia están cifrados; la curva no puede fijar el precio del swap.
- PermanentDelegate — un titular del delegado puede barrer cualquier cuenta de token, incluido el vault del pool. Permitido solo mediante la lista blanca estática para emisores de confianza (p. ej., monedas estables reguladas).
- MintCloseAuthority — el mint puede cerrarse; los pools existentes se vuelven inutilizables. Desallowado por defecto.
- DefaultAccountState (Frozen) — los ATAs del pool aterrizarían en estado
Frozeny requerirían descongelar por cuenta. Permitido solo mediante detección Superstate, que asume que el emisor descongela cuentas institucionales en la inscripción. - Punteros Group/Member — no son activamente dañinos, pero no revisados. Desallowado por defecto para mantener la superficie estrecha.
Contabilidad de tarifa de transferencia
Para mints que llevanTransferFeeConfig, cada swap, depósito y retiro mueve menos que la cantidad nominal. El SDK muestra ambas mitades del cálculo:
amountIn + token2022FeeIncomo “envías”amountOut - token2022FeeOutcomo “recibes”feeAmountcomo la tarifa del pool (LP + protocolo), que es separada de la tarifa de transferencia de Token-2022
amountIn → amountOut subestima los costos.
Tope maximumFee
Las tarifas de transferencia de Token-2022 se capping por transferencia. Para un mint del 1% con un tope de 10,000 tokens, una transferencia de 100,000,000 tokens paga solo 10,000 en tarifa. El computeSwapAmount del SDK aplica el tope; los llamadores diretos del programa deben replicarlo.
Transición de epoch
Una autoridad de mint puede programar un cambio de tasa de tarifa que se activa en el siguiente epoch. Durante la ventana de transición, dos configs (older, newer) viven en el mint a la vez y TransferChecked selecciona por epoch actual. Tanto CPMM SwapV2 como CLMM SwapV2 pasan la cuenta de mint completa en accounts, por lo que el programa lee la config correcta sin una búsqueda adicional.
Si cotizas más de un epoch en avance a través de la Trade API o SDK, la tarifa ejecutada puede diferir de la tarifa cotizada — limitada por maximum_fee_basis_points de la config anterior.
Interest-bearing y ScaledUiAmount
El pool tiene la cantidad principal; el “monto de UI” es la cantidad principal multiplicada por un factor de escala dependiente del tiempo o configurado por admin. Las matemáticas del swap operan sobre la cantidad principal:pool.token0Vault.amount como principal.
Definición de “pool de Token-2022”
Un pool es un pool de Token-2022 si cualquiera mint tieneprogramId == TokenzQdB.... La API muestra esto:
programId para despachar, y hasTransferFee para mostrar una advertencia de UI.
Helpers de SDK
Errores comunes de integración
- Pre-flighting solo el ID del programa. Un mint puede ser Token-2022 y no soportado. Camina la lista de extensiones contra la lista blanca (y la lista blanca estática) antes de permitir la creación del pool.
- Confiar en la cotización del SDK cuando el mint no se acepta en absoluto. La API de cotización no se niega a cotizar — la creación del pool es lo que se revierte. Confirma la semántica de
is_supported_mintfuera de cadena antes de exponer la creación del pool en tu UI. - Cotizar sin el corte de tarifa de transferencia. Un mint con tarifa de transferencia del 1% en ambos lados de un pool CPMM del 0.25% tiene una tarifa efectiva alrededor del 2.25%, no del 0.25%. Usa la cotización del SDK o la cotización de Trade API — nunca calcules la tarifa manualmente solo desde el tier de tarifa del pool.
- Llamar la instrucción
Swapheredada en un pool de Token-2022.Swapes anterior a Token-2022. UsaSwapV2siempre que cualquiera de los mints sea Token-2022. - Listar automáticamente nuevos mints de Token-2022. Las billeteras y agregadores deben verificar
TransferHookyNonTransferableantes de mostrar un mint a los usuarios; ambos son hostiles a Raydium.
Trabajo futuro
Elementos de hoja de ruta del protocolo y ecosistema de Solana que cambiarían esta matriz:- Programas de transfer-hook en lista blanca a nivel de Solana (convención del ecosistema evolucionando).
- AMMs compatibles con confidential-transfer (etapa de investigación).
- Registro por mint de CPMM más amplio (paridad con CLMM).
- Actualización de dependencia para que la decodificación de
ScaledUiConfigde CLMM funcione sin la heurística de Superstate.
Enlaces
algorithms/token-2022-transfer-fees— matemáticas de tarifa en swaps.products/cpmm/instructions—SwapV2,Initialize.products/clmm/instructions—SwapV2,CreatePool,CreateSupportMintAssociated.reference/error-codes— códigos numéricos deNotSupportMintpor programa.
raydium-cp-swap/programs/cp-swap/src/utils/token.rs—MINT_WHITELIST,is_supported_mint.raydium-clmm/programs/amm/src/util/token.rs—MINT_WHITELIST,superstate_allowlist,is_superstate_token,is_supported_mint.raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs— instrucción de registro por mint.raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs— creación de mint base Token-2022 de LaunchLab.


