Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
As instruções de farm são específicas de versão. Um
Deposit na v6 não é executável em um farm v5 e vice-versa. O SDK faz o despacho lendo o proprietário do programa do farm; para CPI on-chain você deve escolher o ID do programa correto antecipadamente.Inventário de instruções
| Propósito | v3 | v5 | v6 |
|---|---|---|---|
| Criar um farm | CreateFarm | CreateFarm | CreateFarm |
| Adicionar um ledger de usuário (pode ser implícito) | CreateUserLedger | CreateAssociatedLedger | Implícito em Deposit |
| Fazer stake | Deposit | Deposit | Deposit |
| Remover stake | Withdraw | Withdraw | Withdraw |
| Reclamar apenas recompensas | N/A (use Deposit 0) | N/A (use Deposit 0) | Harvest |
| Adicionar um fluxo de recompensas após criação | N/A | AddReward | AddReward |
| Editar um fluxo de recompensas existente | N/A | SetRewards | SetRewards |
| Reiniciar uma recompensa após end_time | N/A | RestartRewards | RestartRewards |
| Retirar orçamento de recompensas não reclamadas (admin) | N/A | WithdrawReward | WithdrawReward |
Deposit com amount = 0. O programa trata isso como um liquidamento puro. A v6 introduziu um Harvest explícito para clareza.
O SDK abstrai tudo isso por trás de raydium.farm.deposit({ ... }) etc. As seções abaixo documentam as listas de contas subjacentes para integradores que precisam construir instruções manualmente (agregadores, ferramentas de monitoramento, extensões do SDK).
CreateFarm (v6)
Ativar um novo farm v6.
Argumentos
reward_info_count = 1)
| # | Nome | W | S | Notas |
|---|---|---|---|---|
| 1 | creator | W | S | Paga aluguel, possui o farm. |
| 2 | farm_state | W | Nova conta FarmState. | |
| 3 | farm_authority | PDA [farm_id]. | ||
| 4 | staking_mint | |||
| 5 | staking_vault | W | Criado como ATA da autoridade ou um vault PDA. | |
| 6 | staking_token_program | |||
| 7 | reward_mint | |||
| 8 | reward_vault | W | Receberá o orçamento inicial. | |
| 9 | reward_token_program | |||
| 10 | reward_sender_ata | W | ATA do criador no mint de recompensas; drenado por esta instrução. | |
| 11 | system_program | |||
| 12 | token_program | |||
| 13 | associated_token_program | |||
| 14 | rent |
open_time > now,end_time > open_time.- ATAs do
creatorpossuem pelo menosemission_per_second_x64 × (end_time − open_time) / 2^64do mint de recompensas. staking_mintnão tem autoridade de congelamento, ou ela está desabilitada.
FarmStateinicializado,total_staked = 0.- Vault(s) de recompensas financiados com o orçamento completo do fluxo.
- A ATA de recompensas do criador é drenada por essa quantidade.
Deposit (v6)
Fazer stake de amount do mint de staking.
Argumentos
| # | Nome | W | S |
|---|---|---|---|
| 1 | user | W | S |
| 2 | user_ledger | W | |
| 3 | farm_state | W | |
| 4 | farm_authority | ||
| 5 | staking_vault | W | |
| 6 | user_staking_ata | W | |
| 7..(7+n) | reward_vault_{i} | W | |
| … | user_reward_ata_{i} | W | |
| last−2 | system_program | ||
| last−1 | token_program | ||
| last | associated_token_program |
user_ledger não existe, o SDK antecede uma ix no estilo CreateAccount; o programa v6 também pode criá-la lazily dado a conta do system program. Padrão de contas restantes: para cada recompensa ativa, anexar (reward_vault, user_reward_ata) para que o liquidamento possa fazer pagamentos.
Efeito
- Atualizar
reward_per_share_x64[i]para cada fluxo de recompensas ativo usando a fórmula de atualização lazy. - Calcular
pending_i = user_ledger.deposited × reward_per_share_x64[i] / 2^64 − user_ledger.reward_debts[i]. - Transferir
pending_idereward_vault_{i}parauser_reward_ata_{i}. - Transferir
amountdo mint de staking deuser_staking_ataparastaking_vault. - Atualizar
user_ledger.deposited += amounte re-fazer snapshot dereward_debts[i]. - Atualizar
farm_state.total_staked += amount.
amount > 0para um stake verdadeiro (v6 proíbeamount = 0— useHarvestpara claim-only).user_staking_atacontém pelo menosamount.- Cada vault de recompensa ativo contém pelo menos o pendente devido a este usuário.
Withdraw (v6)
Remover stake de amount.
Argumentos
Deposit.
Efeito — mesmo liquidamento que Deposit, depois mover o mint de staking de volta para o usuário: staking_vault → user_staking_ata. Ambos total_staked e user_ledger.deposited diminuem.
Pré-condições
amount ≤ user_ledger.deposited.- Farm não está pausado.
Harvest (v6)
Reclamar recompensas pendentes sem alterar o stake.
Argumentos — nenhum.
Contas — mesmo que Deposit, sem movimento no lado do staking.
Efeito — atualizar reward_per_share_x64[i], fazer payout de pending_i, re-fazer snapshot de reward_debts[i]. Sem mudança em total_staked ou deposited.
AddReward (v5/v6)
Adicionar um novo fluxo de recompensas a um farm existente que tem um slot não usado.
Argumentos
- Existe um slot livre (
reward_info_count < 5na v6,< 2na v5). open_time ≥ now(pode estar no futuro) ouopen_time < nowé permitido apenas se a versão do programa permitir — v6 permite, v5 não.
- O novo fluxo é inicializado no índice
reward_info_count,reward_info_count++. - O vault de recompensas é creditado com o orçamento completo do fluxo a partir da ATA do chamador.
RewardAlreadyExists se o mint colide com um slot existente.
SetRewards (v5/v6)
Estender ou complementar um fluxo de recompensas existente. Não pode mudar o mint; não pode encurtar end_time; não pode reduzir emission_per_second_x64 uma vez em execução.
Argumentos
- O fluxo ainda está em execução (
reward_state == 1). new_end_time ≥ current end_time.- O orçamento adicional requerido
(new_emission × new_duration − already_emissioned)está presente na ATA do remetente e é transferido para o vault de recompensas pela instrução.
SetRewards com um conjunto de argumentos menor (sem mudanças por segundo em fluxos vivos).
RestartRewards (v5/v6)
Reiniciar um fluxo após seu end_time ter passado. Conceitualmente o mesmo que AddReward para um mint que já possui um slot.
Argumentos — forma idêntica a AddReward naquele índice.
Pré-condições
reward_state == 2(encerrado).- Chamador é
reward_senderdo slot (v6) ou farmowner(v5).
WithdrawReward (v5/v6)
Limpeza administrativa do saldo do vault de recompensas não reclamadas após um fluxo ter terminado e todos os stakers terem tido a chance de fazer harvest.
Argumentos
- Fluxo encerrado (
reward_state == 2). reward_total_emissioned == reward_claimed + vault_balance(nada está atualmente devido).
reward_sender_ata. O programa não impede retirar enquanto stakers ainda têm claims pendentes; espera-se que o admin faça harvest em nome de stakers lentos primeiro (ou deixe-os fazer harvest). Se você retirar cedo, os usuários perdem acesso às suas recompensas não reclamadas. Não chame isso cedo.
Variações v5
Deposit/Withdrawtêm a mesma forma que v6 mas usam até 2 slots de recompensas ereward_per_shareéu128(ponto fixo com um radicix diferente).CreateAssociatedLedgeré uma chamada separada obrigatória antes do primeiroDeposit; v6 a incorporou.AddRewardestá disponível,Harvestnão (useDeposit 0).
Variações v3
- Fluxo único de recompensas. Sem
AddReward, sem segundo slot. Deposit 0é a única forma de reclamar.CreateUserLedgerdeve ser chamado antes do primeiroDeposit.
Matriz de mudança de estado
| Instrução | total_staked | user.deposited | reward_per_share | Vaults de recompensas |
|---|---|---|---|---|
CreateFarm | 0 | — | 0 | financiados pelo criador |
Deposit(n) | +n | +n | atualizado | −pending (pago) |
Withdraw(n) | −n | −n | atualizado | −pending |
Harvest | — | — | atualizado | −pending |
AddReward | — | — | — | +novo orçamento |
SetRewards | — | — | — | +delta orçamento |
RestartRewards | — | — | — | +orçamento |
WithdrawReward | — | — | — | −restante |
Próximos passos
products/farm-staking/code-demos— exemplos TypeScript.products/farm-staking/accounts— layoutsFarmState/UserLedger/UserStake.reference/error-codes— enum de erros do farm.
- Módulo
Farmdo Raydium SDK v2 - Código-fonte do programa Raydium farm (v3 / v5 / v6)


