Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Banner versi. Semua demo menargetkan
@raydium-io/raydium-sdk-v2@0.2.42-alpha terhadap Solana mainnet-beta, diverifikasi 2026-04. SDK mengirimkan v3 / v5 / v6 secara internal berdasarkan pemilik program farm; contoh di bawah mengasumsikan farm v6. Lihat reference/program-addresses untuk ketiga ID program.Setup
Demo di sini mencerminkan file diraydium-sdk-V2-demo/src/farm. Bootstrap mengikuti config.ts.template repo demo:
Ambil farm berdasarkan id
getFarmById mengambil FarmState off-chain, melakukan decode sesuai versi program, dan menormalisasi laju emisi fixed-point menjadi Decimal biasa per detik.
Stake token LP
Sumber:src/farm/stake.ts
Claim saja (harvest)
Sumber:src/farm/harvest.ts
harvestAllRewards menerima daftar — untuk UI yang menampilkan tampilan portfolio, batch panggilan ini. Setiap farm diklaim dalam instruksi terpisah dalam satu transaksi (tunduk pada batas ukuran 1232 byte; untuk >~6 farm, bagi menjadi beberapa transaksi).
Untuk satu farm di v6, Anda juga bisa menggunakan jalur Harvest eksplisit:
amount: 0 diperlukan; SDK mengirimnya dengan benar.
Unstake
Sumber:src/farm/unstake.ts
Buat farm v6
Sumber:src/farm/createAmmFarm.ts dan editAmmFarm.ts
perSecondadalah laju emisi integer per detik. SDK mengemas ke Q64.64 sebelum mengirim. Untuk laju pecahan, skala dan sesuaikan durasi.- Anggaran penuh (
perSecond × duration) harus hadir di ATA reward Anda —creatememindahkannya ke vault reward secara atom. - Anda dapat menambahkan hingga 5 reward dalam satu panggilan
create. Daftar akun tumbuh sebesar(reward_mint, reward_vault, sender_ata, token_program)per aliran ekstra; sadari batas ukuran transaksi 1232 byte. Untuk 4+ reward, buat dengan 1–2 dan gunakanAddRewarddalam transaksi lanjutan.
Topup aliran reward yang sudah ada
setRewards memperpanjang end_time dan mentransfer anggaran delta. Instruksi tidak dapat mempersingkat aliran, tidak dapat menurunkan per_second pada aliran aktif, dan tidak dapat mengubah mint reward. Untuk menukar mint, tunggu end_time dan gunakan AddReward di slot yang dibebaskan (jika ada), atau buat farm baru.
Mulai ulang aliran yang selesai
reward_state == 2 slot target (selesai). Pemanggil harus reward_sender slot (v6) atau pemilik farm (v5).
Rust CPI
Tidak seperti AMM v4, program farm v6 dilengkapi dengan crate Anchor (raydium_farm_v6) yang dipublikasikan bersama sumber frontend dan SDK. Sketsa Deposit minimal:
remaining_accounts harus cocok dengan slot reward aktif farm 1-untuk-1 (pasangan reward_vault_i, user_reward_ata_i dalam urutan indeks). Menghilangkan atau salah urutan ini menghasilkan mis-accounting senyap — program akan mentransfer jumlah yang salah.
Jebakan
- Lupa claim sebelum withdraw. Tidak berbahaya —
Withdrawmenyelesaikan reward yang tertunda lebih dulu. Tetapi jika UI Anda menampilkan “claim” terpisah dari “withdraw”, pengguna mungkin berpikir masih ada sesuatu untuk diklaim setelahWithdraw. Tidak ada; semuanya yang terkumpul hingga titik itu sudah dibayarkan. total_staked = 0selama emisi. Emisi yang terkumpul saat tidak ada yang distake hilang (formula pembaruanreward_per_sharemembagi dengan 0 dan program melewati pembaruan). Untuk program denganopen_timeterjadwal, jalankan “seed stake” pada open_time untuk menghindari ini.- Biaya transfer Token-2022. Di farm v6 dengan mint reward Token-2022, biaya transfer berlaku saat emit (vault → pengguna). Faktorkan ini ke dalam kutipan APR.
per_secondkecil di v5.u64v5 berartiper_second < 1unit token per detik (pada mint dengan ≥9 desimal ini sering kali laju yang diinginkan) tidak dapat diekspresikan — laju aliran dibulatkan ke 0 dan farm memancarkan tidak ada apa-apa. Gunakan v6.
Ke mana selanjutnya
products/farm-staking/instructions— referensi instruksi mendasar.products/clmm/fees— bandingkan dengan aliran reward asli CLMM.user-flows/migrate-amm-v4-to-cpmm— sering dipasangkan dengan menjalankan farm CPMM baru.
- Raydium SDK v2
- Farm v6 IDL disertakan dalam
raydium-io/raydium-sdk-V2di bawahsrc/raydium/farm/.

