Saltar para o conteúdo principal

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ósitov3v5v6
Criar um farmCreateFarmCreateFarmCreateFarm
Adicionar um ledger de usuário (pode ser implícito)CreateUserLedgerCreateAssociatedLedgerImplícito em Deposit
Fazer stakeDepositDepositDeposit
Remover stakeWithdrawWithdrawWithdraw
Reclamar apenas recompensasN/A (use Deposit 0)N/A (use Deposit 0)Harvest
Adicionar um fluxo de recompensas após criaçãoN/AAddRewardAddReward
Editar um fluxo de recompensas existenteN/ASetRewardsSetRewards
Reiniciar uma recompensa após end_timeN/ARestartRewardsRestartRewards
Retirar orçamento de recompensas não reclamadas (admin)N/AWithdrawRewardWithdrawReward
Na v3 e v5, a forma canônica de reclamar recompensas sem alterar o stake é chamar 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: u8               // número de fluxos de recompensas na criação (1..=5)
reward_infos: [
  {
    open_time:            u64,
    end_time:             u64,
    emission_per_second_x64: u128,   // Q64.64
    mint:                 Pubkey,    // reward mint
    token_program:        Pubkey,    // SPL ou Token-2022
  }
]
Contas (abreviado, para reward_info_count = 1)
#NomeWSNotas
1creatorWSPaga aluguel, possui o farm.
2farm_stateWNova conta FarmState.
3farm_authorityPDA [farm_id].
4staking_mint
5staking_vaultWCriado como ATA da autoridade ou um vault PDA.
6staking_token_program
7reward_mint
8reward_vaultWReceberá o orçamento inicial.
9reward_token_program
10reward_sender_ataWATA do criador no mint de recompensas; drenado por esta instrução.
11system_program
12token_program
13associated_token_program
14rent
Pré-condições
  • open_time > now, end_time > open_time.
  • ATAs do creator possuem pelo menos emission_per_second_x64 × (end_time − open_time) / 2^64 do mint de recompensas.
  • staking_mint não tem autoridade de congelamento, ou ela está desabilitada.
Pós-condições
  • FarmState inicializado, 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
amount: u64
Contas
#NomeWS
1userWS
2user_ledgerW
3farm_stateW
4farm_authority
5staking_vaultW
6user_staking_ataW
7..(7+n)reward_vault_{i}W
user_reward_ata_{i}W
last−2system_program
last−1token_program
lastassociated_token_program
Se o 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
  1. Atualizar reward_per_share_x64[i] para cada fluxo de recompensas ativo usando a fórmula de atualização lazy.
  2. Calcular pending_i = user_ledger.deposited × reward_per_share_x64[i] / 2^64 − user_ledger.reward_debts[i].
  3. Transferir pending_i de reward_vault_{i} para user_reward_ata_{i}.
  4. Transferir amount do mint de staking de user_staking_ata para staking_vault.
  5. Atualizar user_ledger.deposited += amount e re-fazer snapshot de reward_debts[i].
  6. Atualizar farm_state.total_staked += amount.
Pré-condições
  • amount > 0 para um stake verdadeiro (v6 proíbe amount = 0 — use Harvest para claim-only).
  • user_staking_ata contém pelo menos amount.
  • Cada vault de recompensa ativo contém pelo menos o pendente devido a este usuário.

Withdraw (v6)

Remover stake de amount. Argumentos
amount: u64
Contas — idênticas a 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
reward_info: {
  open_time:            u64,
  end_time:             u64,
  emission_per_second_x64: u128,
  mint:                 Pubkey,
  token_program:        Pubkey,
}
Pré-condições
  • Existe um slot livre (reward_info_count < 5 na v6, < 2 na v5).
  • open_time ≥ now (pode estar no futuro) ou open_time < now é permitido apenas se a versão do programa permitir — v6 permite, v5 não.
Pós-condições
  • 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.
Erro comumRewardAlreadyExists 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
reward_index:         u8
new_open_time:        u64,
new_end_time:         u64,
new_emission_per_second_x64: u128,
Pré-condições
  • 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.
Na v5, a chamada equivalente é 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_sender do slot (v6) ou farm owner (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
reward_index: u8
Pré-condições
  • Fluxo encerrado (reward_state == 2).
  • reward_total_emissioned == reward_claimed + vault_balance (nada está atualmente devido).
Efeito — move o restante para 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 / Withdraw têm a mesma forma que v6 mas usam até 2 slots de recompensas e reward_per_share é u128 (ponto fixo com um radicix diferente).
  • CreateAssociatedLedger é uma chamada separada obrigatória antes do primeiro Deposit; v6 a incorporou.
  • AddReward está disponível, Harvest não (use Deposit 0).

Variações v3

  • Fluxo único de recompensas. Sem AddReward, sem segundo slot.
  • Deposit 0 é a única forma de reclamar.
  • CreateUserLedger deve ser chamado antes do primeiro Deposit.

Matriz de mudança de estado

Instruçãototal_stakeduser.depositedreward_per_shareVaults de recompensas
CreateFarm00financiados pelo criador
Deposit(n)+n+natualizado−pending (pago)
Withdraw(n)−n−natualizado−pending
Harvestatualizado−pending
AddReward+novo orçamento
SetRewards+delta orçamento
RestartRewards+orçamento
WithdrawReward−restante

Próximos passos

Fontes: