Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Tiga program, tiga skema. Farm v3, v5, dan v6 adalah program terpisah dengan layout state terpisah. Halaman ini mendokumentasikan ketiganya secara berdampingan. Dalam praktik, sebagian besar integrasi baru menargetkan v6; v3 dan v5 adalah read-only untuk sebagian besar integrator (staking sudah terjadi di sana lama sekali dan pool sedang dalam fase wind-down).

Inventaris akun (per farm, semua versi)

SDK mengembalikan set lengkap pada raydium.farm.getFarmById. Untuk farm pihak ketiga arbitrer, endpoint API GET https://api-v3.raydium.io/main/farms/info?ids=<FARM_ID> juga mengembalikannya.

Layout FarmState — v6

v6 adalah versi terkini. Struktur akunnya paling umum.
Field yang relevan untuk integrator:
  • staking_mint, staking_vault — apa yang distaked dan di mana tempat penyimpanannya.
  • total_staked — total saat ini. Diperlukan untuk menghitung APR: reward_per_second × 86400 / total_staked.
  • reward_infos[i].emission_per_second_x64 — rate Q64.64. Bagikan dengan 2^64 untuk mendapatkan jumlah token per-detik yang sebenarnya.
  • reward_infos[i].open_time / end_time — untuk tampilan UI “X hari tersisa”.
  • reward_infos[i].reward_per_share_x64 — counter yang menjadi offset utang UserLedger.

Layout FarmState — v5

Perbedaan dari v6:
  • Per-slot, bukan per-detik. Loop update v5 berjalan pada slot daripada jam dinding. SDK menormalisasi ini menjadi “per-detik” untuk UI tetapi on-chain unitnya adalah slot.
  • Integer emission rate. reward_per_second adalah u64. Ini membatasi rate minimum yang dapat diekspresikan menjadi 1 unit per detik, yang terlalu kasar untuk stream emisi rendah pada mint 9-desimal. v6 memperbaikinya dengan rate Q64.64.
  • Tidak ada reward_sender. Pada v5 owner adalah pengirim implisit; hanya owner yang dapat top up.

Layout FarmState — v3

Single-reward. Berbasis slot. Generasi program tertua, dipertahankan untuk farm RAY-USDC dan SOL-USDC yang mendahului v5.

UserLedger (v6) / UserStake (v5/v3)

State per-user, satu akun per pasangan (farm, user). PDA seed:
(String seed adalah nilai yang benar-benar digunakan oleh SDK; versi program secara historis telah memvariasikannya. Verifikasi terhadap source v6 untuk apa pun yang bersifat kritis keamanan.)
Utang per-stream adalah offset akuntansi yang dijelaskan dalam ringkasan:
Setelah setiap Deposit, Withdraw, atau Harvest, utang diatur ulang ke deposited × reward_per_share_x64[i] / 2^64 yang sekarang.

Authority PDA

Ketiga versi menurunkan farm authority per-farm dengan seed tunggal. PDA ini adalah authority pada staking vault dan pada setiap reward vault. Ini menandatangani setiap transfer yang farm lakukan.

Vault

Staking dan reward vault adalah akun SPL Token standar yang owner-nya adalah farm authority PDA. Alamat disimpan pada FarmState — jangan re-derive; baca dari state. Freeze authority harus dinonaktifkan pada staking mint untuk v5/v6 (program memeriksa). Catatan Token-2022:
  • v3: SPL Token saja.
  • v5: SPL Token saja.
  • v6: Mendukung Token-2022 pada staking dan reward mint, gated pada field staking_token_program / reward_token_program. Transfer fee pada Token-2022 reward mint dikenakan saat emit (vault → user).

Observasi dan APR

Farm tidak menyimpan APR on-chain. Untuk menghitung:
Konsumen biasanya menarik staking_mint_usd_price dari pool yang LP milik (via api-v3.raydium.io/pools/info/ids) dan reward_usd_price dari oracle harga apa pun.

Langkah selanjutnya

Sumber: