Skip to main content
Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Três programas, três schemas. Farm v3, v5 e v6 são programas separados com layouts de estado distintos. Esta página documenta cada um lado a lado. Na prática, a maioria das novas integrações visa v6; v3 e v5 são somente leitura para a maioria dos integradores (staking já aconteceu ali há muito tempo e os pools estão em desativação).

Inventário de contas (por farm, qualquer versão)

O SDK retorna o conjunto completo em raydium.farm.getFarmById. Para farms de terceiros arbitrárias, o endpoint de API GET https://api-v3.raydium.io/main/farms/info?ids=<FARM_ID> também os retorna.

Layout FarmState — v6

v6 é a versão atual. Sua estrutura de conta é a mais genérica.
Campos relevantes para integradores:
  • staking_mint, staking_vault — o que é depositado em stake e onde fica armazenado.
  • total_staked — total atual. Necessário para calcular APR: reward_per_second × 86400 / total_staked.
  • reward_infos[i].emission_per_second_x64 — a taxa em Q64.64. Divida por 2^64 para obter a contagem real de tokens por segundo.
  • reward_infos[i].open_time / end_time — para exibições na UI “X dias restantes”.
  • reward_infos[i].reward_per_share_x64 — o contador do qual o UserLedger deduz.

Layout FarmState — v5

Diferenças em relação a v6:
  • Por slot, não por segundo. O loop de atualização v5 executa em slots em vez do relógio de parede. O SDK normaliza isso para “por segundo” na UI, mas on-chain a unidade é slots.
  • Taxa de emissão inteira. reward_per_second é u64. Isso limita a taxa mínima expressável a 1 unidade por segundo, o que é muito grosseiro para fluxos de baixa emissão em mints de 9 casas decimais. v6 corrigiu isso com a taxa Q64.64.
  • Sem reward_sender. Em v5, o owner é o remetente implícito; apenas owner pode aumentar o orçamento.

Layout FarmState — v3

Recompensa única. Baseado em slots. A geração de programa mais antiga, mantida viva para os farms RAY-USDC e SOL-USDC que antecedem v5.

UserLedger (v6) / UserStake (v5/v3)

Estado por usuário, uma conta por par (farm, user). PDA com seed:
(As strings de seed são os valores realmente usados pelo SDK; as versões de programa historicamente os variaram. Verifique contra a fonte v6 para qualquer coisa crítica em segurança.)
A dívida por fluxo é o offset de contabilidade descrito na visão geral:
Após cada Deposit, Withdraw ou Harvest, a dívida é redefinida para o deposited × reward_per_share_x64[i] / 2^64 atual.

PDAs de autoridade

Todas as três versões derivam a autoridade do farm por farm com uma única seed. Essa PDA é a autoridade no vault de staking e em cada vault de recompensas. Ela assina cada transferência que o farm realiza.

Vaults

Os vaults de staking e recompensas são contas padrão de SPL Token cujo owner é a PDA de autoridade do farm. Os endereços são armazenados em FarmState — não re-derive; leia do estado. As autoridades de congelamento devem estar desabilitadas no mint de staking para v5/v6 (o programa verifica). Notas sobre Token-2022:
  • v3: Apenas SPL Token.
  • v5: Apenas SPL Token.
  • v6: Suporta Token-2022 em mints de staking e recompensas, controlado pelos campos staking_token_program / reward_token_program. As taxas de transferência em mints de recompensas Token-2022 são cobradas na emissão (vault → usuário).

Observação e APR

Farms não armazenam APR on-chain. Para calcular:
Os consumidores normalmente obtêm staking_mint_usd_price do pool ao qual o LP pertence (via api-v3.raydium.io/pools/info/ids) e reward_usd_price de qualquer oráculo de preço.

Próximos passos

Fontes: