Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Informações de versão. Todos os exemplos visam
@raydium-io/raydium-sdk-v2@0.2.42-alpha contra Solana mainnet-beta, verificado em 2026-04. O SDK despacha v3 / v5 / v6 internamente com base no proprietário do programa do farm; os exemplos abaixo assumem um farm v6. Consulte reference/program-addresses para os três IDs de programa.Setup
Os exemplos aqui espelham arquivos emraydium-sdk-V2-demo/src/farm. O bootstrap segue o config.ts.template do repositório de demonstração:
Buscar um farm por ID
getFarmById obtém FarmState fora da cadeia, decodifica por versão de programa e normaliza a taxa de emissão de ponto fixo para um simples Decimal por segundo.
Fazer stake de tokens LP
Fonte:src/farm/stake.ts
Apenas coleta (harvest)
Fonte:src/farm/harvest.ts
harvestAllRewards aceita uma lista — para UIs mostrando uma visão de portfólio, agrupe a chamada. Cada farm é coletado em uma instrução separada em uma transação (sujeito ao limite de tamanho de 1232 bytes; para >~6 farms, divida em múltiplas transações).
Para um único farm em v6, você também pode usar o caminho Harvest explícito:
amount: 0 é necessário; o SDK o despacha corretamente.
Unstake
Fonte:src/farm/unstake.ts
Criar um farm v6
Fonte:src/farm/createAmmFarm.ts e editAmmFarm.ts
perSecondé a taxa de emissão inteira por segundo. O SDK a empacota em Q64.64 antes de enviar. Para uma taxa fracionária, escale e ajuste a duração.- O orçamento completo (
perSecond × duration) deve estar presente em seu ATA de recompensa —createo move para o vault de recompensa atomicamente. - Você pode semear até 5 recompensas em uma chamada
create. A lista de contas cresce por(reward_mint, reward_vault, sender_ata, token_program)por fluxo extra; esteja atento ao limite de tamanho de transação de 1232 bytes. Para 4+ recompensas, crie com 1–2 e useAddRewardem transações subsequentes.
Adicionar orçamento a um fluxo de recompensa existente
setRewards estende end_time e transfere o orçamento delta. A instrução não pode encurtar um fluxo, não pode baixar per_second em um fluxo ativo e não pode alterar o mint de recompensa. Para trocar mints, aguarde end_time e use AddReward em um slot liberado (se houver), ou crie um novo farm.
Reiniciar um fluxo terminado
reward_state == 2 (terminado) do slot alvo. O chamador deve ser o reward_sender do slot (v6) ou o proprietário do farm (v5).
Rust CPI
Diferentemente do AMM v4, o programa farm v6 vem com um crate Anchor (raydium_farm_v6) publicado junto com as fontes do frontend e SDK. Um esboço Deposit mínimo:
remaining_accounts deve corresponder 1 para 1 aos slots de recompensa ativos do farm (pares de reward_vault_i, user_reward_ata_i em ordem de índice). Omitir ou desordenar esses produz uma contabilização silenciosamente incorreta — o programa transferirá o valor incorreto.
Armadilhas comuns
- Esquecer de coletar antes de sacar. Inofensivo —
Withdrawliquida recompensas pendentes primeiro. Mas se sua UI mostrar “coletar” separadamente de “sacar”, o usuário pode pensar que ainda há algo a coletar após umWithdraw. Não há; tudo acumulado até aquele ponto foi pago. total_staked = 0durante emissões. Emissões acumuladas enquanto nada estava em stake são perdidas (a fórmula de atualizaçãoreward_per_sharedivide por 0 e o programa pula a atualização). Para programas comopen_timeagendado, execute um “seed stake” no open_time para evitar isso.- Taxas de transferência Token-2022. Em farms v6 com mints de recompensa Token-2022, a taxa de transferência se aplica na emissão (vault → usuário). Fatore isso em citações de APR.
- Pequeno
per_secondem v5. A taxau64do v5 significa que qualquerper_second < 1unidade de token por segundo (em mints com ≥9 decimais esta é frequentemente a taxa desejada) não pode ser expressa — a taxa do fluxo arredonda para 0 e o farm não emite nada. Use v6.
Próximos passos
products/farm-staking/instructions— referência de instrução subjacente.products/clmm/fees— comparar com fluxos de recompensa nativos do CLMM.user-flows/migrate-amm-v4-to-cpmm— frequentemente associado a iniciar um novo farm CPMM.
- Raydium SDK v2
- Farm v6 IDL agrupado em
raydium-io/raydium-sdk-V2sobsrc/raydium/farm/.

