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.
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Instruksi farm bergantung pada versi.
Deposit pada v6 tidak dapat dipanggil pada farm v5 dan sebaliknya. SDK mengirimkan dengan membaca pemilik program farm; untuk CPI on-chain Anda harus memilih program ID yang tepat di awal.Inventaris instruksi
| Tujuan | v3 | v5 | v6 |
|---|---|---|---|
| Membuat farm | CreateFarm | CreateFarm | CreateFarm |
| Menambahkan ledger pengguna (mungkin implisit) | CreateUserLedger | CreateAssociatedLedger | Implisit dalam Deposit |
| Staking | Deposit | Deposit | Deposit |
| Unstaking | Withdraw | Withdraw | Withdraw |
| Klaim hadiah saja | N/A (gunakan Deposit 0) | N/A (gunakan Deposit 0) | Harvest |
| Tambahkan aliran hadiah setelah pembuatan | N/A | AddReward | AddReward |
| Ubah aliran hadiah yang ada | N/A | SetRewards | SetRewards |
| Mulai ulang hadiah setelah end_time | N/A | RestartRewards | RestartRewards |
| Tarik anggaran hadiah yang belum diklaim (admin) | N/A | WithdrawReward | WithdrawReward |
Deposit dengan amount = 0. Program memperlakukan ini sebagai penyelesaian murni. v6 memperkenalkan Harvest eksplisit untuk kejelasan.
SDK mengabstraksi semua ini di balik raydium.farm.deposit({ ... }) dll. Bagian di bawah mendokumentasikan daftar akun yang mendasar untuk integrator yang perlu membangun instruksi secara manual (agregator, alat pemantauan, ekstensi SDK).
CreateFarm (v6)
Jalankan farm v6 baru.
Argumen
reward_info_count = 1)
| # | Nama | W | S | Catatan |
|---|---|---|---|---|
| 1 | creator | W | S | Membayar rent, memiliki farm. |
| 2 | farm_state | W | Akun FarmState baru. | |
| 3 | farm_authority | PDA [farm_id]. | ||
| 4 | staking_mint | |||
| 5 | staking_vault | W | Dibuat sebagai ATA authority atau vault PDA. | |
| 6 | staking_token_program | |||
| 7 | reward_mint | |||
| 8 | reward_vault | W | Akan menerima anggaran awal. | |
| 9 | reward_token_program | |||
| 10 | reward_sender_ata | W | ATA creator pada reward mint; dikurangi oleh instruksi ini. | |
| 11 | system_program | |||
| 12 | token_program | |||
| 13 | associated_token_program | |||
| 14 | rent |
open_time > now,end_time > open_time.creatorATA memegang setidaknyaemission_per_second_x64 × (end_time − open_time) / 2^64dari reward mint.staking_minttidak memiliki freeze authority, atau freeze authority dinonaktifkan.
FarmStatediinisialisasi,total_staked = 0.- Vault hadiah didanai dengan anggaran aliran penuh.
- ATA hadiah creator dikurangi dengan jumlah tersebut.
Deposit (v6)
Staking amount dari staking mint.
Argumen
| # | Nama | 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 tidak ada, SDK menambahkan instruksi gaya CreateAccount; program v6 juga dapat membuat lazilynya diberikan akun system program. Pola remaining accounts: untuk setiap hadiah aktif, tambahkan (reward_vault, user_reward_ata) sehingga penyelesaian dapat membayar.
Efek
- Segarkan
reward_per_share_x64[i]untuk setiap aliran hadiah aktif menggunakan formula pembaruan lazy. - Hitung
pending_i = user_ledger.deposited × reward_per_share_x64[i] / 2^64 − user_ledger.reward_debts[i]. - Pindahkan
pending_idarireward_vault_{i}keuser_reward_ata_{i}. - Pindahkan
amountstaking mint dariuser_staking_atakestaking_vault. - Perbarui
user_ledger.deposited += amountdan re-snapshotreward_debts[i]. - Perbarui
farm_state.total_staked += amount.
amount > 0untuk staking asli (v6 melarangamount = 0— gunakanHarvestuntuk klaim-saja).user_staking_atamemegang setidaknyaamount.- Setiap vault hadiah aktif memegang setidaknya pending yang diwajibkan kepada pengguna ini.
Withdraw (v6)
Unstaking amount.
Argumen
Deposit.
Efek — penyelesaian sama seperti Deposit, kemudian pindahkan staking mint kembali ke pengguna: staking_vault → user_staking_ata. total_staked dan user_ledger.deposited keduanya berkurang.
Prekondisi
amount ≤ user_ledger.deposited.- Farm tidak dijeda.
Harvest (v6)
Klaim hadiah pending tanpa mengubah staking.
Argumen — tidak ada.
Akun — sama seperti Deposit, tidak ada pergerakan sisi staking.
Efek — segarkan reward_per_share_x64[i], bayar pending_i, re-snapshot reward_debts[i]. Tidak ada perubahan pada total_staked atau deposited.
AddReward (v5/v6)
Tambahkan aliran hadiah baru ke farm yang ada yang memiliki slot kosong.
Argumen
- Slot kosong ada (
reward_info_count < 5pada v6,< 2pada v5). open_time ≥ now(mungkin di masa depan) atauopen_time < nowhanya diizinkan jika versi program memungkinkannya — v6 memungkinkan, v5 tidak.
- Aliran baru diinisialisasi pada indeks
reward_info_count,reward_info_count++. - Vault hadiah dikreditkan dengan anggaran aliran penuh dari ATA pemanggil.
RewardAlreadyExists jika mint bertabrakan dengan slot yang ada.
SetRewards (v5/v6)
Perpanjang atau isi ulang aliran hadiah yang ada. Tidak dapat mengubah mint; tidak dapat mempersingkat end_time; tidak dapat menurunkan emission_per_second_x64 setelah berjalan.
Argumen
- Aliran masih berjalan (
reward_state == 1). new_end_time ≥ current end_time.- Anggaran tambahan yang diperlukan
(new_emission × new_duration − already_emissioned)ada dalam ATA pengirim dan ditransfer ke vault hadiah oleh instruksi.
SetRewards dengan set argumen yang lebih kecil (tidak ada perubahan per-detik pada aliran aktif).
RestartRewards (v5/v6)
Mulai ulang aliran setelah end_time terlampaui. Secara konseptual sama dengan AddReward untuk mint yang sudah memiliki slot.
Argumen — bentuk identik dengan AddReward pada indeks itu.
Prekondisi
reward_state == 2(berakhir).- Pemanggil adalah
reward_senderslot (v6) atau farmowner(v5).
WithdrawReward (v5/v6)
Admin sweep saldo vault hadiah yang belum diklaim setelah aliran berakhir dan semua staker memiliki kesempatan untuk harvest.
Argumen
- Aliran berakhir (
reward_state == 2). reward_total_emissioned == reward_claimed + vault_balance(tidak ada yang saat ini diwajibkan).
reward_sender_ata. Program tidak mencegah penarikan saat staker masih memiliki klaim pending; admin diharapkan melakukan harvest atas nama staker yang tertinggal terlebih dahulu (atau membiarkan mereka harvest). Jika Anda melakukan sweep terlalu awal, pengguna kehilangan akses ke hadiah yang belum diklaim mereka. Jangan panggil ini terlalu awal.
Variasi v5
Deposit/Withdrawmemiliki bentuk yang sama dengan v6 tetapi menggunakan hingga 2 slot hadiah danreward_per_shareadalahu128(titik-tetap dengan radix berbeda).CreateAssociatedLedgeradalah panggilan terpisah yang diperlukan sebelumDepositpertama; v6 menggabungkannya.AddRewardtersedia,Harvesttidak (gunakanDeposit 0).
Variasi v3
- Aliran hadiah tunggal. Tidak ada
AddReward, tidak ada slot kedua. Deposit 0adalah satu-satunya cara untuk klaim.CreateUserLedgerharus dipanggil sebelumDepositpertama.
Matriks perubahan state
| Instruksi | total_staked | user.deposited | reward_per_share | Vault hadiah |
|---|---|---|---|---|
CreateFarm | 0 | — | 0 | didanai oleh creator |
Deposit(n) | +n | +n | disegarkan | −pending (dibayarkan) |
Withdraw(n) | −n | −n | disegarkan | −pending |
Harvest | — | — | disegarkan | −pending |
AddReward | — | — | — | +anggaran baru |
SetRewards | — | — | — | +anggaran delta |
RestartRewards | — | — | — | +anggaran |
WithdrawReward | — | — | — | −sisa |
Langkah selanjutnya
/id/products/farm-staking/code-demos— contoh TypeScript./id/products/farm-staking/accounts— tata letakFarmState/UserLedger/UserStake./id/reference/error-codes— enumerasi error farm.
- Modul
FarmRaydium SDK v2 - Sumber program farm Raydium (v3 / v5 / v6)


