Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Drei Programme, drei Schemas. Farm v3, v5 und v6 sind separate Programme mit separaten State-Layouts. Diese Seite dokumentiert jede Version nebeneinander. In der Praxis zielen die meisten neuen Integrationen auf v6 ab; v3 und v5 sind für die meisten Integratoren schreibgeschützt (Staking fand dort vor langer Zeit statt und die Pools laufen aus).

Kontobestand (pro Farm, beliebige Version)

Das SDK gibt den vollständigen Satz auf raydium.farm.getFarmById zurück. Für beliebige Third-Party-Farms liefert auch der API-Endpunkt GET https://api-v3.raydium.io/main/farms/info?ids=<FARM_ID> diese zurück.

FarmState-Layout — v6

v6 ist die aktuelle Version. Ihre Kontostruktur ist die allgemeinste.
Für Integratoren relevante Felder:
  • staking_mint, staking_vault — was gestaked wird und wo es sitzt.
  • total_staked — aktuell gesamt. Erforderlich zur Berechnung der APR: reward_per_second × 86400 / total_staked.
  • reward_infos[i].emission_per_second_x64 — die Q64.64-Rate. Durch 2^64 teilen für die echte Token-Anzahl pro Sekunde.
  • reward_infos[i].open_time / end_time — für UI-Anzeigen „X Tage verbleibend”.
  • reward_infos[i].reward_per_share_x64 — der Zähler, dem das UserLedger entgegenrechnet.

FarmState-Layout — v5

Unterschiede zu v6:
  • Pro Slot, nicht pro Sekunde. v5’s Update-Schleife läuft auf Slots statt auf der Wanduhr. Das SDK normalisiert dies in der UI in „pro Sekunde”, aber on-chain ist die Einheit Slots.
  • Integer-Emissionsrate. reward_per_second ist u64. Dies begrenzt die minimal ausdrückbare Rate auf 1 Einheit pro Sekunde, was zu grob für Low-Emission-Streams auf 9-Dezimal-Mints ist. v6 behob dies mit der Q64.64-Rate.
  • Kein reward_sender. In v5 ist der Eigentümer der implizite Absender; nur owner kann aufstocken.

FarmState-Layout — v3

Single-Reward. Slot-basiert. Die älteste Programmgeneration, am Leben erhalten für die RAY-USDC und SOL-USDC Farms, die v5 vorausgehen.

UserLedger (v6) / UserStake (v5/v3)

Pro-Benutzer-State, ein Konto pro (farm, user) Paar. Seeded PDA:
(Seed-Strings sind die Werte, die tatsächlich vom SDK verwendet werden; Programmversionen haben sie historisch unterschiedlich gestaltet. Überprüfen Sie gegen die v6-Quelle für alles Sicherheitskritisches.)
Die Pro-Stream-Schuld ist der Accounting-Offset, der in der Übersicht beschrieben wird:
Nach jedem Deposit, Withdraw oder Harvest wird die Schuld auf den aktuellen deposited × reward_per_share_x64[i] / 2^64 zurückgesetzt.

Authority-PDAs

Alle drei Versionen leiten die Farm-Authority pro Farm mit einem einzelnen Seed ab. Diese PDA ist die Authority auf dem Staking-Vault und auf jedem Reward-Vault. Sie signiert jeden Transfer, den die Farm vornimmt.

Vaults

Staking- und Reward-Vaults sind Standard-SPL-Token-Konten, deren owner die Farm-Authority-PDA ist. Adressen werden auf FarmState gespeichert — nicht neu ableiten; aus dem State lesen. Freeze-Authorities müssen auf dem Staking-Mint für v5/v6 deaktiviert werden (das Programm überprüft dies). Token-2022-Hinweise:
  • v3: Nur SPL Token.
  • v5: Nur SPL Token.
  • v6: Unterstützt Token-2022 auf Staking- und Reward-Mints, gated auf staking_token_program / reward_token_program Felder. Transfergebühren auf Token-2022 Reward-Mints werden beim Emit berechnet (Vault → Benutzer).

Beobachtung und APR

Farms speichern keine APR on-chain. Zur Berechnung:
Consumer ziehen typischerweise staking_mint_usd_price aus dem Pool, zu dem die LP gehört (über api-v3.raydium.io/pools/info/ids) und reward_usd_price aus einem beliebigen Price-Oracle.

Nächste Schritte

Quellen: