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.
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Farm-Anweisungen sind versionsspezifisch. Ein
Deposit auf v6 ist auf einer v5-Farm nicht aufrufbar und umgekehrt. Das SDK führt einen Dispatch durch, indem es den Programmbesitzer der Farm liest; für On-Chain-CPI müssen Sie die richtige Programm-ID im Voraus wählen.Anweisungsübersicht
| Zweck | v3 | v5 | v6 |
|---|---|---|---|
| Farm erstellen | CreateFarm | CreateFarm | CreateFarm |
| Benutzer-Ledger hinzufügen (kann implizit sein) | CreateUserLedger | CreateAssociatedLedger | Implizit in Deposit |
| Stake | Deposit | Deposit | Deposit |
| Unstake | Withdraw | Withdraw | Withdraw |
| Nur Belohnungen einfordern | N/A (verwenden Sie Deposit 0) | N/A (verwenden Sie Deposit 0) | Harvest |
| Belohnungsstrom nach Erstellung hinzufügen | N/A | AddReward | AddReward |
| Bestehenden Belohnungsstrom bearbeiten | N/A | SetRewards | SetRewards |
| Belohnung nach end_time neu starten | N/A | RestartRewards | RestartRewards |
| Nicht beanspruchtes Belohnungsbudget abheben (Admin) | N/A | WithdrawReward | WithdrawReward |
Deposit mit amount = 0. Das Programm behandelt dies als reine Abrechnung. v6 führte ein explizites Harvest zur Verdeutlichung ein.
Das SDK abstrahiert alle diese hinter raydium.farm.deposit({ ... }) usw. Die folgenden Abschnitte dokumentieren die zugrunde liegenden Kontolisten für Integrierer, die Anweisungen manuell erstellen müssen (Aggregatoren, Monitoring-Tools, SDK-Erweiterungen).
CreateFarm (v6)
Starten Sie eine neue v6-Farm.
Argumente
reward_info_count = 1)
| # | Name | W | S | Notizen |
|---|---|---|---|---|
| 1 | creator | W | S | Zahlt Miete, besitzt die Farm. |
| 2 | farm_state | W | Neues FarmState-Konto. | |
| 3 | farm_authority | PDA [farm_id]. | ||
| 4 | staking_mint | |||
| 5 | staking_vault | W | Erstellt als ATA der Autorität oder ein PDA-Vault. | |
| 6 | staking_token_program | |||
| 7 | reward_mint | |||
| 8 | reward_vault | W | Erhält das Anfangsbudget. | |
| 9 | reward_token_program | |||
| 10 | reward_sender_ata | W | ATA des Erstellers auf der Belohnungs-Mint; wird durch diese Anweisung geleert. | |
| 11 | system_program | |||
| 12 | token_program | |||
| 13 | associated_token_program | |||
| 14 | rent |
open_time > now,end_time > open_time.- Creator-ATAs halten mindestens
emission_per_second_x64 × (end_time − open_time) / 2^64der Belohnungs-Mint. staking_minthat keine Gefrierautorität oder die Gefrierautorität ist deaktiviert.
FarmStateinitialisiert,total_staked = 0.- Belohnungsvaults mit dem vollständigen Stream-Budget finanziert.
- Die Belohnungs-ATA des Erstellers wird um diesen Betrag geleert.
Deposit (v6)
Setzen Sie amount der Staking-Mint.
Argumente
| # | Name | 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 nicht vorhanden ist, stellt das SDK eine CreateAccount-ähnliche Anweisung voran; das v6-Programm kann es auch faul erstellen, wenn es das Systemprogrammkonto erhält. Remaining-Accounts-Muster: Fügen Sie für jeden aktiven Belohnungsstrom (reward_vault, user_reward_ata) an, damit die Abrechnung auszahlen kann.
Effekt
- Aktualisieren Sie
reward_per_share_x64[i]für jeden aktiven Belohnungsstrom mit der Lazy-Update-Formel. - Berechnen Sie
pending_i = user_ledger.deposited × reward_per_share_x64[i] / 2^64 − user_ledger.reward_debts[i]. - Übertragen Sie
pending_ivonreward_vault_{i}zuuser_reward_ata_{i}. - Übertragen Sie
amountStaking-Mint vonuser_staking_atazustaking_vault. - Aktualisieren Sie
user_ledger.deposited += amountund erstellen Sie einen neuen Snapshot vonreward_debts[i]. - Aktualisieren Sie
farm_state.total_staked += amount.
amount > 0für einen echten Stake (v6 verbietetamount = 0— verwenden SieHarvestnur für Anspruchsforderungen).user_staking_atahält mindestensamount.- Jeder aktive Belohnungsvault hält mindestens das Ausstehende, das diesem Benutzer geschuldet wird.
Withdraw (v6)
Unstake amount.
Argumente
Deposit.
Effekt — gleiche Abrechnung wie Deposit, dann Staking-Mint zurück zum Benutzer: staking_vault → user_staking_ata. Sowohl total_staked als auch user_ledger.deposited nehmen ab.
Vorbedingungen
amount ≤ user_ledger.deposited.- Farm ist nicht pausiert.
Harvest (v6)
Fordern Sie ausstehende Belohnungen an, ohne den Stake zu ändern.
Argumente — keine.
Konten — wie Deposit, keine Bewegung auf der Staking-Seite.
Effekt — aktualisieren Sie reward_per_share_x64[i], zahlen Sie pending_i aus, erstellen Sie einen neuen Snapshot von reward_debts[i]. Keine Änderung an total_staked oder deposited.
AddReward (v5/v6)
Fügen Sie einen neuen Belohnungsstrom zu einer bestehenden Farm hinzu, die einen ungenutzten Slot hat.
Argumente
- Ein freier Slot existiert (
reward_info_count < 5auf v6,< 2auf v5). open_time ≥ now(kann in der Zukunft liegen) oderopen_time < nowist nur zulässig, wenn die Programmversion dies erlaubt — v6 tut es, v5 nicht.
- Der neue Strom wird bei Index
reward_info_countinitialisiert,reward_info_count++. - Der Belohnungsvault wird mit dem vollständigen Stream-Budget aus der ATA des Aufrufers gutgeschrieben.
RewardAlreadyExists, wenn die Mint mit einem bestehenden Slot kollidiert.
SetRewards (v5/v6)
Erweitern oder auffüllen Sie einen bestehenden Belohnungsstrom. Kann die Mint nicht ändern; kann end_time nicht verkürzen; kann emission_per_second_x64 nicht senken, während der Betrieb läuft.
Argumente
- Der Strom läuft noch (
reward_state == 1). new_end_time ≥ current end_time.- Das erforderliche zusätzliche Budget
(new_emission × new_duration − already_emissioned)ist in der ATA des Absenders vorhanden und wird durch die Anweisung in den Belohnungsvault übertragen.
SetRewards mit einem kleineren Argumentsatz (keine Pro-Sekunden-Änderungen in aktiven Streams).
RestartRewards (v5/v6)
Starten Sie einen Stream neu, nachdem end_time vergangen ist. Konzeptionell dasselbe wie AddReward für eine Mint, die bereits einen Slot hat.
Argumente — identische Form wie AddReward bei diesem Index.
Vorbedingungen
reward_state == 2(beendet).- Aufrufer ist
reward_senderdes Slots (v6) oder Farm-owner(v5).
WithdrawReward (v5/v6)
Admin-Entfernung nicht beanspruchter Belohnungsvault-Restbeträge nach Beendigung eines Streams und nachdem alle Staker die Möglichkeit hatten zu harvesten.
Argumente
- Stream ist beendet (
reward_state == 2). reward_total_emissioned == reward_claimed + vault_balance(es ist nichts mehr geschuldet).
reward_sender_ata. Das Programm verhindert nicht das Abheben, während Staker noch ausstehende Ansprüche haben; vom Admin wird erwartet, dass er zuerst im Auftrag von nachzügigen Stakern harvested (oder lässt sie harvesten). Wenn Sie frühzeitig abheben, verlieren Benutzer den Zugriff auf ihre nicht beanspruchten Belohnungen. Rufen Sie dies nicht frühzeitig auf.
v5-Variationen
Deposit/Withdrawhaben die gleiche Form wie v6, aber verwenden bis zu 2 Belohnungsslots undreward_per_shareistu128(Festkomma mit einer anderen Radix).CreateAssociatedLedgerist ein erforderlicher separater Aufruf vor dem erstenDeposit; v6 hat das zusammengeführt.AddRewardist verfügbar,Harvestist nicht (verwenden SieDeposit 0).
v3-Variationen
- Einzelner Belohnungsstrom. Kein
AddReward, kein zweiter Slot. Deposit 0ist die einzige Möglichkeit, Ansprüche geltend zu machen.CreateUserLedgermuss vor dem erstenDepositaufgerufen werden.
Zustandsänderungsmatrix
| Anweisung | total_staked | user.deposited | reward_per_share | Belohnungsvaults |
|---|---|---|---|---|
CreateFarm | 0 | — | 0 | vom Ersteller finanziert |
Deposit(n) | +n | +n | aktualisiert | −pending (ausbezahlt) |
Withdraw(n) | −n | −n | aktualisiert | −pending |
Harvest | — | — | aktualisiert | −pending |
AddReward | — | — | — | +neues Budget |
SetRewards | — | — | — | +Delta-Budget |
RestartRewards | — | — | — | +Budget |
WithdrawReward | — | — | — | −Restbetrag |
Nächste Schritte
products/farm-staking/code-demos— TypeScript-Beispiele.products/farm-staking/accounts—FarmState/UserLedger/UserStakeLayouts.reference/error-codes— Farm-Error-Enum.
- Raydium SDK v2
FarmModul - Raydium-Farm-Programmquelle (v3 / v5 / v6)


