Skip to main content
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 di raydium-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
SDK menangani pre-settle dari reward yang tertunda, sehingga jika wallet ini sudah memiliki stake di farm ini, instruksi akan membayarkan reward yang terkumpul ke ATA pengguna dalam transaksi yang sama.

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:
Di v3 dan v5 idiom amount: 0 diperlukan; SDK mengirimnya dengan benar.

Unstake

Sumber: src/farm/unstake.ts

Buat farm v6

Sumber: src/farm/createAmmFarm.ts dan editAmmFarm.ts
Poin penting:
  • perSecond adalah 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 — create memindahkannya 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 gunakan AddReward dalam 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

Valid hanya jika 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:
Slice 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 — Withdraw menyelesaikan reward yang tertunda lebih dulu. Tetapi jika UI Anda menampilkan “claim” terpisah dari “withdraw”, pengguna mungkin berpikir masih ada sesuatu untuk diklaim setelah Withdraw. Tidak ada; semuanya yang terkumpul hingga titik itu sudah dibayarkan.
  • total_staked = 0 selama emisi. Emisi yang terkumpul saat tidak ada yang distake hilang (formula pembaruan reward_per_share membagi dengan 0 dan program melewati pembaruan). Untuk program dengan open_time terjadwal, 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_second kecil di v5. u64 v5 berarti per_second < 1 unit 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

Sumber: