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 →
Las billeteras que integran Raydium típicamente necesitan responder cuatro preguntas por usuario: ¿en qué pools tiene este usuario LP? ¿qué posiciones (NFTs de CLMM) posee? ¿en qué granjas tiene apuestas? ¿cuánto vale todo? Esta página documenta cada una.
Detectar posiciones de Raydium
Tokens LP clásicos (CPMM, AMM v4)
Se ven como cualquier otro token SPL: la ATA del usuario contiene un saldo. Una billetera lo muestra como otro token por defecto. Para revelarlo como una posición LP de Raydium:- Enumera las cuentas de token del usuario:
connection.getParsedTokenAccountsByOwner(user, { programId: TOKEN_PROGRAM_ID }). - Para cada mint, verifica la lista de mints de Raydium:
GET https://api-v3.raydium.io/pools/info/lps?lps=<LP_MINT>,...(agrupa hasta ~50 mints LP por llamada). - Para los mints que coincidan, la API devuelve la referencia del pool. Úsala para calcular el valor de la posición denominado en tokens:
NFTs de posición CLMM
Las posiciones CLMM son NFTs. El PDAPersonalPositionState de cada posición se deriva del mint del NFT. Para detectar:
- Enumera los NFTs del usuario. Para NFTs Metaplex heredados: filtra cuentas de token a aquellas con suministro 1 y decimales 0.
- Para cada mint de NFT, intenta derivar el PDA de PersonalPositionState:
-
Enumera las posiciones de la billetera con
raydium.clmm.getOwnerPositionInfo({ programId })y coincide ennftMint(no haygetPositionInfo). Cada entrada te proporciona:poolId→ obtén el pool para resolver mintstickLower,tickUpper→ muestra el rangoliquidity,tokensOwedA/B→ calcula el valor de la posición + comisiones pendientesrewardInfos→ recompensas pendientes por stream
-
Para NFTs de posición emitidos bajo Token-2022 (
OpenPositionWithToken22Nft), el programa del mint del NFT es Token-2022 en lugar de SPL Token. Enumera ambos al escanear.
Apuestas en granjas
Farm v3 / v5 / v6 cada una tiene un PDA de libro mayor por usuario. Derivaciones:UserLedger hasheando el usuario con una lista curada de IDs de granja “probables”. Enumerar todos los IDs de granja exhaustivamente es impracticable (existen miles); usa la API.
Calcular el valor de la posición
LP CPMM / AMM v4
Los tres módulos no comparten una firma:liquidity.getPoolInfoFromRpc toma { poolId }, mientras que cpmm.getPoolInfoFromRpc y clmm.getPoolInfoFromRpc toman una cadena base58 posicional.
raydium.token u un oráculo de precios).
Posición CLMM
- Valor de liquidez (precio actual)
- Comisiones no cobradas
- Recompensas pendientes por stream
- Rango:
[tickLower_price, tickUpper_price]con una barra visual mostrando si el precio actual está dentro del rango
Apuesta en granja
reward_per_share_x64 con la fórmula de actualización perezosa antes de calcular (tiempo transcurrido × tasa de emisión ÷ total_staked).
Simulación de transacción para vista previa
Antes de que un usuario firme, las billeteras generalmente previsualizan los cambios de saldo. UsasimulateTransaction:
accounts le pide al validador que devuelva el estado de la cuenta posterior a la simulación para las direcciones listadas. Mucho más preciso que intentar predecir el cambio de saldo solo desde la forma de la instrucción.
Trampas de simulación
- Los swaps CLMM necesitan arrays de tick válidos. Si el tamaño de entrada del usuario cruzaría un array de tick no inicializado, la simulación se revierte (igual que la ejecución). Muestra esto claramente en la interfaz.
- Comisión de prioridad. La simulación se ejecuta sin las instrucciones de presupuesto de cómputo aplicadas. Para una transacción grande que excedería los 200k CU por defecto, la simulación falla pero la ejecución real con un límite de CU explícito tiene éxito. Siempre establece el límite de CU en la tx simulada también.
- Blockhash fresco. La simulación usa el blockhash actual; si la firma toma >60s la tx se vuelve inválida. Re-simula si el usuario duda.
Visualización de Token-2022
Los tokens bajo el programa Token-2022 deben etiquetarse como tales en la lista de tokens de la billetera, ya que tienen superficies de riesgo diferentes:- Mints con comisión de transferencia: muestra los
transferFeeBasisPointsactuales como “Comisión de transferencia: X%” junto al saldo. Advierte al recibir — los usuarios pueden no darse cuenta de que recibirán menos de lo que el remitente envió. - Mints con gancho de transferencia: muestra el ID del programa del gancho. Un gancho malicioso puede bloquear transferencias salientes; los usuarios deben verificar que el gancho sea el que esperan.
- Mints no transferibles: muestra “No transferible” y desactiva swap/envío. Estos son típicamente tokens vinculados al alma o credenciales.
- Mints que generan interés: el saldo de la interfaz derivado de
TokenAccount.amountno refleja el interés acumulado. UsaamountToUiAmountde@solana/spl-token(que aplica el factor de escala) para el valor mostrado.
Visualización de APR de granja
El APR mostrado a los usuarios debe combinar todos los streams de recompensas activos, convertidos a USD, y anualizados:APR: X.Y%. Si el mint de apuesta es un token LP, también calcula el APR de comisión base del LP subyacente y etiqueta la suma como “APR Total” o “APR + comisiones”.
Referencias
products/clmm/ticks-and-positions— derivación del valor de la posición.products/farm-staking/accounts— campos de estado de la granja.algorithms/token-2022-transfer-fees— semántica de visualización para tokens con comisión de transferencia.
- Raydium SDK v2 — ayudantes de posición/granja.
- Endpoints de posición de usuario en
api-v3.raydium.io.

