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. Todos los ejemplos apuntan a
@raydium-io/raydium-sdk-v2@0.2.42-alpha contra Solana mainnet-beta, verificado 2026-04. El SDK distribuye v3 / v5 / v6 internamente según el propietario del programa de la farm; los ejemplos siguientes asumen una farm v6. Consulta reference/program-addresses para los tres IDs de programa.Setup
Los ejemplos aquí reflejan archivos enraydium-sdk-V2-demo/src/farm. El bootstrap sigue el config.ts.template del repositorio de ejemplos:
Obtener una farm por ID
getFarmById obtiene FarmState off-chain, decodifica según la versión del programa y normaliza la tasa de emisión de punto fijo en un simple Decimal por segundo.
Hacer stake de tokens LP
Fuente:src/farm/stake.ts
Solo reclamar (cosechar)
Fuente:src/farm/harvest.ts
harvestAllRewards acepta una lista — para interfaces de usuario que muestren una vista de cartera, agrupa la llamada. Cada farm se reclama en una instrucción separada dentro de una transacción (sujeto al límite de tamaño de 1232 bytes; para más de ~6 farms, divide en múltiples transacciones).
Para una sola farm en v6, también puedes usar la ruta explícita Harvest:
amount: 0 es obligatorio; el SDK lo distribuye correctamente.
Retirar stake
Fuente:src/farm/unstake.ts
Crear una farm v6
Fuente:src/farm/createAmmFarm.ts y editAmmFarm.ts
perSecondes la tasa de emisión entera por segundo. El SDK lo empaca en Q64.64 antes de enviar. Para una tasa fraccionaria, escala y ajusta la duración.- El presupuesto completo (
perSecond × duration) debe estar presente en tu ATA de recompensas —createlo mueve al vault de recompensas atómicamente. - Puedes sembrar hasta 5 recompensas en una sola llamada
create. La lista de cuentas crece por(reward_mint, reward_vault, sender_ata, token_program)por cada stream adicional; mantente atento al límite de tamaño de transacción de 1232 bytes. Para 4+ recompensas, crea con 1–2 y usaAddRewarden transacciones posteriores.
Añadir presupuesto a un stream de recompensas existente
setRewards extiende end_time y transfiere el presupuesto diferencial. La instrucción no puede acortar un stream, no puede bajar per_second en un stream activo, y no puede cambiar el mint de recompensas. Para intercambiar mints, espera a end_time y usa AddReward en un slot liberado (si hay), o crea una nueva farm.
Reiniciar un stream terminado
reward_state == 2 del slot objetivo (terminado). El llamador debe ser el reward_sender del slot (v6) o el propietario de la farm (v5).
CPI en Rust
A diferencia del AMM v4, el programa de farm v6 viene con un crate de Anchor (raydium_farm_v6) publicado junto a las fuentes del frontend y SDK. Un ejemplo mínimo de Deposit:
remaining_accounts debe coincidir 1-por-1 con los slots de recompensas activos de la farm (pares de reward_vault_i, user_reward_ata_i en orden de índice). Omitir o desordenar estos produce un mal registro silencioso — el programa transferirá la cantidad incorrecta.
Errores comunes
- Olvidar reclamar antes de retirar. Inofensivo —
Withdrawliquida las recompensas pendientes primero. Pero si tu UI muestra «reclamar» separado de «retirar», el usuario podría pensar que aún hay algo que reclamar después de unWithdraw. No es así; todo lo acumulado hasta ese punto fue pagado. total_staked = 0durante emisiones. Las emisiones acumuladas mientras nada fue marcado con stake se pierden (la fórmula de actualizaciónreward_per_sharedivide por 0 y el programa salta la actualización). Para programas conopen_timeprogramado, ejecuta un «seed stake» en open_time para evitar esto.- Comisiones de transferencia de Token-2022. En farms v6 con mints de recompensas Token-2022, la comisión de transferencia se aplica en la emisión (vault → usuario). Factoriza esto en tus cotizaciones de APR.
per_secondpequeño en v5. El tipou64de v5 significa que cualquierper_second < 1unidad de token por segundo (en mints con ≥9 decimales esta es frecuentemente la tasa deseada) no puede ser expresado — la tasa del stream se redondea a 0 y la farm no emite nada. Usa v6.
Próximos pasos
products/farm-staking/instructions— referencia de instrucción subyacente.products/clmm/fees— compara con los streams de recompensas nativos de CLMM.user-flows/migrate-amm-v4-to-cpmm— frecuentemente emparejado con lanzar una nueva farm CPMM.
- Raydium SDK v2
- Farm v6 IDL incluido en
raydium-io/raydium-sdk-V2bajosrc/raydium/farm/.

