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 →
O que é um farm
Um farm é um programa on-chain independente que distribui um ou mais reward mints para contas que fazem stake de um staking mint. O staking mint é quase sempre um token LP emitido por CPMM, AMM v4 ou um pool legado, mas single-asset farms (fazer stake de SOL, RAY ou um token de projeto diretamente) são suportados e usados por um pequeno número de programas de longa duração. Propriedades principais:- Baseado em emissão, não em taxas. Diferentemente dos fluxos de recompensa built-in do CLMM, as recompensas do farm não estão vinculadas ao volume de swap ou atividade do pool. O orçamento de um farm é depositado antecipadamente pelo criador e é emitido a uma taxa constante por segundo até se esgotar.
- Independente do pool. O pool não sabe que o farm existe. Mover LP entre carteiras não notifica o farm; um usuário deve ativamente fazer
Withdrawdo farm primeiro. Da mesma forma, fazerWithdrawdo pool não faz withdraw do farm. - Ledger por usuário, por recompensa. Cada staker tem uma conta
UserStake(ou “Ledger”) por farm que rastreia seu montante em stake e seu snapshot do contador reward-per-share para cada um dos fluxos de recompensa do farm. - Multi-recompensa. Farm v5 suporta até 2 recompensas; v6 suporta até 5. Cada recompensa tem seu próprio vault, taxa por segundo, hora de início e hora de término.
As três versões ao vivo
Raydium lançou três versões do programa farm. Todas estão ativas e cada uma carreia seu próprio esquema PDA e conjunto de instruções. Integradores devem tratá-las como três programas distintos que compartilham um modelo conceitual.| Versão | Localização do Program ID | Max recompensas | Diferenças notáveis |
|---|---|---|---|
| v3 | veja reference/program-addresses | 1 | Schema mais antigo. Os farms mais antigos (RAY-USDC, SOL-USDC) ainda são roteados por aqui. |
| v5 | veja reference/program-addresses | 2 | Adicionou segundo slot de recompensa e top-ups estilo AddReward. |
| v6 | veja reference/program-addresses | 5 | Versão atual. Slots expandidos, admin mais limpo, suporta farming de posição CLMM via um adaptador específico da v6 (raro na prática). |
raydium.farm como uma única fachada — a versão é inferida do proprietário da conta farm. Ao construir integrações on-chain, você deve fazer dispatch manualmente.
Contagem reward-per-share
O programa farm usa o padrão “master-chef” padrão visto em contratos de yield do DeFi:reward_per_shareé armazenado na conta farm como um contador de ponto fixo (Q64.64 em v5+, Q56.8 em v3). Ele apenas cresce.user.reward_debté o snapshot dereward_per_sharena última interação do usuário. Não é uma dívida que o usuário deve; é um offset usado para calcular acréscimos futuros.- Em
DepositeWithdraw, o farm primeiro liquida recompensas pendentes (creditandouser.pending_rewardou enviando diretamente para a ATA do usuário, dependendo da versão), depois atualizauser.reward_debtpara o contador atual. - Em
Harvest, o farm pagapending_rewarde snapshotsreward_debtnovamente.
Deposit, Withdraw, Harvest, atualização admin). Farms sem atividade acumulam uma lacuna crescente que é fechada na próxima interação.
Staking mint vs reward mint
O staking mint é mantido em custódia, não é queimado. Quando um usuário faz stake de 100 LP, o farm move 100 LP da ATA do usuário para o vault de stake do farm. EmWithdraw, o farm move 100 LP de volta. O farm nunca chama o pool.
Reward mints são pagos a partir de vaults pré-financiados pelo criador. Quando um criador inicia um farm, ele deposita o orçamento completo de recompensa (digamos, 1.000.000 RAY + 500.000 USDC) nos dois vaults de recompensa. O programa farm não cunha novos tokens; simplesmente distribui o que está no vault durante a duração do fluxo. Se o vault se esgotar antes de end_time, as emissões param.
Cronogramas de emissão
Cada fluxo de recompensa tem três parâmetros de tempo:start_time— o timestamp UNIX em que as emissões começam. Antes disso, sem acréscimo.end_time— o timestamp em que as emissões param. Depois disso,reward_per_sharenão cresce mais a partir deste fluxo.per_second— a taxa de emissão enquantostart_time ≤ now < end_time.
end_time para frente, top up do vault) via AddReward / SetRewards em v5 / v6. Pode ser reiniciada após end_time via RestartRewards. Não pode ser encurtada sem cooperação admin.
O que farms não são
- Não um distribuidor de taxas. CPMM e CLMM coletam taxas de negociação diretamente no estado do pool. Farms não tocam em taxas de pool. O único caminho das taxas do pool para um token holder é redenção de LP ou CLMM’s
CollectFee. - Não automático. LP deve ser explicitamente feito stake para ganhar recompensas de farm. Detentores de LP que deixam seus tokens em sua carteira não ganham nada do farm.
- Não fungível. Cada conta
UserStakeestá vinculada a um par(farm, user). Você não pode transferir seu stake para outra carteira sem fazer unstake primeiro. - Não compatível com posições CLMM diretamente. Farm v6 introduziu um adaptador CLMM, mas na prática pools CLMM usam seus próprios fluxos de recompensa built-in (veja
products/clmm/fees) em vez de emissões de farm.
Quando farms são a ferramenta certa
Use um farm quando você deseja:- Incentivar LP para um de seus pools CPMM ou AMM v4 com um token externo (seu token de projeto, token de um parceiro, etc.).
- Executar um programa de staking em um mint single-asset (clássico “stake RAY, earn RAY”) sem implantar seu próprio contrato.
- Sobrepor recompensas adicionais em um pool existente sem precisar de acesso admin a esse pool.
Conteúdos do capítulo
accounts— layout de estado on-chain completo por versão.instructions— toda instrução farm com sua lista de contas e pré/pós-condições.code-demos— exemplos TypeScript para staking, harvesting e criação de um novo farm.
Onde ir a seguir
products/clmm/fees— compare emissões de farm com o modelo de recompensa built-in do CLMM.reference/program-addresses— os três IDs de programa farm.protocol-overview/versions-and-migration— quando usar cada versão de farm.
- Farm v6 IDL incluído no SDK:
raydium-io/raydium-sdk-V2emsrc/raydium/farm/. - Módulo
Farmdo Raydium SDK v2


