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 →
Tres programas, tres esquemas. Farm v3, v5 y v6 son programas separados con esquemas de estado distintos. Esta página documenta cada uno lado a lado. En la práctica, la mayoría de integraciones nuevas apuntan a v6; v3 y v5 son de solo lectura para la mayoría de integradores (el staking ya ocurrió hace mucho tiempo y los pools están en fase de liquidación).

Inventario de cuentas (por farm, cualquier versión)

El SDK devuelve el conjunto completo en raydium.farm.getFarmById. Para farms de terceros arbitrarios, el endpoint de API GET https://api-v3.raydium.io/main/farms/info?ids=<FARM_ID> también los devuelve.

Esquema FarmState — v6

v6 es la versión actual. Su estructura de cuenta es la más general.
Campos relevantes para integradores:
  • staking_mint, staking_vault — qué se apuesta y dónde se guarda.
  • total_staked — total actual. Necesario para calcular APR: reward_per_second × 86400 / total_staked.
  • reward_infos[i].emission_per_second_x64 — la tasa Q64.64. Divide entre 2^64 para obtener el conteo verdadero de tokens por segundo.
  • reward_infos[i].open_time / end_time — para pantallas de UI “X días restantes”.
  • reward_infos[i].reward_per_share_x64 — el contador del que UserLedger descuenta.

Esquema FarmState — v5

Diferencias respecto a v6:
  • Por slot, no por segundo. El bucle de actualización de v5 se ejecuta por slots en lugar de en reloj de pared. El SDK normaliza esto a “por segundo” para la UI pero en cadena la unidad es slots.
  • Tasa de emisión entera. reward_per_second es u64. Esto limita la tasa expresable mínima a 1 unidad por segundo, lo que es demasiado grueso para flujos de baja emisión en mints de 9 decimales. v6 lo arregló con la tasa Q64.64.
  • Sin reward_sender. En v5 el propietario es el remitente implícito; solo owner puede reabastecer.

Esquema FarmState — v3

Recompensa única. Basado en slots. La generación de programa más antigua, mantenida viva para los farms RAY-USDC y SOL-USDC que preceden a v5.

UserLedger (v6) / UserStake (v5/v3)

Estado por usuario, una cuenta por par (farm, usuario). PDA derivada:
(Las cadenas de semilla son los valores usados realmente por el SDK; las versiones de programa las han variado históricamente. Verifica contra la fuente v6 para cualquier cosa crítica en seguridad.)
El descuento por flujo es el desplazamiento de contabilidad descrito en la descripción general:
Después de cada Deposit, Withdraw o Harvest, el descuento se reinicia a deposited × reward_per_share_x64[i] / 2^64 actual.

PDAs de autoridad

Las tres versiones derivan la autoridad del farm por farm con una única semilla. Este PDA es la autoridad sobre la bóveda de staking y sobre cada bóveda de recompensas. Firma cada transferencia que realiza el farm.

Bóvedas

Las bóvedas de staking y recompensas son cuentas SPL Token estándar cuyo owner es el PDA de autoridad del farm. Las direcciones se almacenan en FarmState — no las re-derives; léelas del estado. Las autoridades de congelación deben estar deshabilitadas en el mint de staking para v5/v6 (el programa lo verifica). Notas sobre Token-2022:
  • v3: Solo SPL Token.
  • v5: Solo SPL Token.
  • v6: Compatible con Token-2022 en mints de staking y recompensas, controlado por campos staking_token_program / reward_token_program. Las comisiones de transferencia en mints de recompensas Token-2022 se cobran en emisión (bóveda → usuario).

Observación y APR

Los farms no almacenan APR en cadena. Para calcular:
Los consumidores típicamente extraen staking_mint_usd_price del pool al que pertenece el LP (vía api-v3.raydium.io/pools/info/ids) y reward_usd_price de cualquier oráculo de precios.

Qué hacer a continuación

Fuentes: