Langsung ke konten utama

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 →

Apa itu farm

Sebuah farm adalah program on-chain yang berdiri sendiri dan mendistribusikan satu atau lebih reward mint kepada akun yang melakukan stake pada sebuah staking mint. Staking mint hampir selalu adalah token LP yang dikeluarkan oleh CPMM, AMM v4, atau pool pair legacy, tetapi farm single-asset (melakukan stake SOL, RAY, atau project token secara langsung) didukung dan digunakan untuk sejumlah kecil program yang berjalan lama. Properti utama:
  • Berbasis emisi, bukan berbasis fee. Tidak seperti reward stream built-in CLMM, reward farm tidak terikat pada volume swap atau aktivitas pool. Budget farm disimpan di awal oleh pembuat dan dipancarkan pada tingkat per-detik yang konstan sampai habis.
  • Independen dari pool. Pool tidak mengetahui bahwa farm ada. Memindahkan LP antar wallet tidak memberitahu farm; pengguna harus secara aktif melakukan Withdraw dari farm terlebih dahulu. Demikian pula, Withdraw dari pool tidak mengeluarkan dana dari farm.
  • Ledger per-pengguna, per-reward. Setiap staker memiliki akun UserStake (atau “Ledger”) per farm yang melacak jumlah stake mereka dan snapshot dari counter reward-per-share untuk setiap reward stream farm.
  • Multi-reward. Farm v5 mendukung hingga 2 reward; v6 mendukung hingga 5. Setiap reward memiliki vault, tingkat per-detik, waktu mulai, dan waktu akhir sendiri.

Tiga versi yang aktif

Raydium telah mengeluarkan tiga versi program farm. Semuanya aktif, dan masing-masing membawa skema PDA dan instruction set sendiri. Para integrator harus memperlakukan mereka sebagai tiga program berbeda yang berbagi model konseptual.
VersiLokasi Program IDMax rewardsPerbedaan Utama
v3lihat reference/program-addresses1Skema paling awal. Farm tertua (RAY-USDC, SOL-USDC) masih melewati di sini.
v5lihat reference/program-addresses2Menambahkan slot reward kedua dan top-up gaya AddReward.
v6lihat reference/program-addresses5Versi saat ini. Slot yang diperluas, admin lebih bersih, mendukung farming CLMM-position melalui adapter spesifik v6 (jarang dalam praktik).
SDK mengekspos raydium.farm sebagai single facade — versi disimpulkan dari pemilik akun farm. Saat membangun integrasi on-chain Anda harus melakukan dispatch secara manual.

Akuntansi reward-per-share

Program farm menggunakan pola standar “master-chef” yang terlihat di seluruh kontrak DeFi yield:
reward_per_share := total_rewards_distributed_by_stream / total_staked
pending(user)    := user.staked × (reward_per_share − user.reward_debt)
  • reward_per_share disimpan pada akun farm sebagai counter fixed-point (Q64.64 di v5+, Q56.8 di v3). Hanya bertambah.
  • user.reward_debt adalah snapshot dari reward_per_share saat interaksi terakhir pengguna. Bukan utang yang dimiliki pengguna; ini adalah offset yang digunakan untuk menghitung akrual masa depan.
  • Pada Deposit dan Withdraw, farm terlebih dahulu menyelesaikan reward yang tertunda (mengkreditkan user.pending_reward atau mengirim langsung ke ATA pengguna, tergantung versi), kemudian memperbarui user.reward_debt ke counter saat ini.
  • Pada Harvest, farm membayarkan pending_reward dan snapshot reward_debt lagi.
Tingkat emisi per-detik memasuki akuntansi melalui lazy update:
elapsed        := min(now, reward.end_time) − reward.last_update_time
new_emissions  := reward.per_second × elapsed
if total_staked > 0:
    reward_per_share += new_emissions / total_staked
reward.last_update_time := now
Lazy: tidak ada instruction yang dipancarkan “setiap detik.” Counter disegarkan setiap kali seseorang menyentuh farm (Deposit, Withdraw, Harvest, admin update). Farm tanpa aktivitas mengumpulkan kesenjangan yang terus bertambah yang ditutup pada interaksi berikutnya.

Staking mint vs reward mint

Staking mint dipegang di escrow, bukan dibakar. Ketika pengguna melakukan stake 100 LP, farm memindahkan 100 LP dari ATA pengguna ke vault staking farm. Pada Withdraw, farm memindahkan 100 LP kembali. Farm tidak pernah memanggil pool. Reward mint dibayarkan dari vault yang didanai sebelumnya oleh pembuat. Ketika pembuat memulai farm, mereka menyetor budget reward penuh (misalnya, 1.000.000 RAY + 500.000 USDC) ke dua vault reward. Program farm tidak membuat token baru; program hanya mendistribusikan apa yang ada di vault selama durasi stream. Jika vault habis sebelum end_time, emisi berhenti.

Jadwal emisi

Setiap reward stream memiliki tiga parameter waktu:
  • start_time — timestamp UNIX di mana emisi dimulai. Sebelum ini, tidak ada akrual.
  • end_time — timestamp di mana emisi berhenti. Setelah ini, reward_per_share tidak lagi tumbuh dari stream ini.
  • per_second — tingkat emisi saat start_time ≤ now < end_time.
Reward dapat diperpanjang (dorong end_time ke depan, isi vault) melalui AddReward / SetRewards pada v5 / v6. Dapat dimulai ulang setelah end_time melalui RestartRewards. Tidak dapat diperpendek tanpa kerjasama admin.

Apa yang bukan farm

  • Bukan distributor fee. CPMM dan CLMM mengumpulkan trade fee langsung ke state pool. Farm tidak menyentuh pool fee. Satu-satunya jalur dari pool fee ke pemegang token adalah LP-redemption atau CLMM’s CollectFee.
  • Bukan otomatis. LP harus secara eksplisit di-stake untuk mendapatkan reward farm. Pemegang LP yang meninggalkan token mereka di wallet tidak mendapatkan apa pun dari farm.
  • Bukan fungible. Setiap akun UserStake terikat pada satu pasangan (farm, user). Anda tidak dapat mentransfer stake Anda ke wallet lain tanpa unstaking terlebih dahulu.
  • Tidak kompatibel dengan posisi CLMM secara langsung. Farm v6 memperkenalkan adapter CLMM, tetapi dalam praktik pool CLMM menggunakan reward stream built-in mereka sendiri (lihat products/clmm/fees) daripada emisi farm.

Kapan farm adalah alat yang tepat

Gunakan farm ketika Anda ingin:
  • Memberikan insentif LP untuk salah satu pool CPMM atau AMM v4 proyek Anda dengan token eksternal (token proyek Anda, token mitra, dll.).
  • Menjalankan program staking pada mint single-asset (klasik “stake RAY, earn RAY”) tanpa menggunakan kontrak Anda sendiri.
  • Menambahkan reward tambahan di atas pool yang sudah ada tanpa memerlukan akses admin ke pool tersebut.
Gunakan reward stream built-in CLMM sebagai gantinya ketika pool Anda adalah CLMM. Mereka memiliki ekonomi yang identik tetapi berpartisipasi dalam akuntansi fee-growth-inside posisi (posisi in-range mendapatkan pro rata, posisi out-of-range tidak) dan tidak memerlukan pengguna untuk memindahkan NFT posisi mereka.

Isi bab

  • accounts — layout state on-chain lengkap per versi.
  • instructions — setiap farm instruction dengan daftar akun dan pre/postcondition.
  • code-demos — contoh TypeScript untuk staking, harvesting, dan membuat farm baru.

Ke mana selanjutnya

Sumber: