Ana içeriğe atla

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.

Bu sayfa yapay zekâ tarafından otomatik olarak çevrilmiştir. İngilizce sürüm esas alınır.İngilizce sürümü görüntüle →

Farm nedir?

Bir farm, bir staking mint’ine stake eden hesaplara bir veya daha fazla reward mint’i dağıtan bağımsız bir zincir üstü programdır. Staking mint neredeyse her zaman CPMM, AMM v4 veya eski bir pair pool tarafından verilen LP token’ıdır, ancak tek varlık farm’ları (doğrudan SOL, RAY veya bir proje token’ı stake etme) desteklenir ve uzun süredir çalışan az sayıda program için kullanılır. Temel özellikler:
  • Ücrete dayalı değil, emisyona dayalı. CLMM’nin yerleşik reward akışlarının aksine, farm ödülleri swap hacmine veya pool aktivitesine bağlı değildir. Farm’ın bütçesi yaratıcı tarafından önceden yatırılır ve bitmesine kadar sabit bir saniye başına oranında ortaya çıkar.
  • Pool’dan bağımsız. Pool, farm’ın var olduğunu bilmez. LP’yi cüzdanlar arasında taşımak, farm’ı bilgilendirmez; kullanıcı önce aktif olarak farm’dan Withdraw yapmalıdır. Benzer şekilde, pool’dan Withdraw yapmak farm’dan çekmez.
  • Kullanıcı başına, reward başına defter. Her stake edenen kişi, farm’a bir başına bir UserStake (veya “Ledger”) hesabına sahiptir ve bu, stake edilen tutarlarını ve farm’ın her bir reward akışı için hisse başına reward sayacının anlık görüntüsünü izler.
  • Çok reward’lu. Farm v5 2’ye kadar 5 reward’ı destekler; v6 5’e kadar destekler. Her reward’ın kendi vault’u, saniye başına oranı, başlangıç zamanı ve bitiş zamanı vardır.

Üç canlı sürüm

Raydium, üç farm programı sürümü yayınlamıştır. Hepsi canlı ve her biri kendi PDA şeması ve talimat setini taşır. Entegratörleri bunları aynı kavramsal modeli paylaşan üç ayrı program olarak değerlendirmelidir.
SürümProgram ID konumuMax rewardBelirtilen farklar
v3bkz. reference/program-addresses1En eski şema. En eski farm’lar (RAY-USDC, SOL-USDC) hâlâ buradan yönlendirilir.
v5bkz. reference/program-addresses2İkinci reward slot’u ve AddReward tarzı top-up’lar eklendi.
v6bkz. reference/program-addresses5Geçerli sürüm. Genişletilmiş slot’lar, daha temiz yönetim, CLMM pozisyon farm’ı v6’ya özgü bir adaptör (pratikte nadir) aracılığıyla desteklenir.
SDK, raydium.farm’ı tek bir façade olarak ortaya koyar — sürüm, farm hesabının sahibinden çıkarılır. Zincir üstü entegrasyonlar oluştururken manuel olarak yönlendirmelisiniz.

Hisse başına reward muhasebesi

Farm programı, DeFi yield sözleşmelerinde görülen standart “master-chef” modelini kullanır:
reward_per_share := total_rewards_distributed_by_stream / total_staked
pending(user)    := user.staked × (reward_per_share − user.reward_debt)
  • reward_per_share, farm hesabında sabit noktalı bir sayaç olarak saklanır (v5+‘da Q64.64, v3’te Q56.8). Yalnızca büyür.
  • user.reward_debt, kullanıcının son etkileşiminde reward_per_share’ın anlık görüntüsüdür. Kullanıcının borcu değildir; gelecekteki birikintileri hesaplamak için kullanılan bir ofset’tir.
  • Deposit ve Withdraw üzerinde, farm ilk önce bekleyen ödülleri kapatır (user.pending_reward kredisi yapma veya sürüme bağlı olarak doğrudan kullanıcının ATA’sına gönderme), ardından user.reward_debt’ı güncel sayaca günceller.
  • Harvest üzerinde, farm pending_reward’ü ödeme yapar ve reward_debt’ı yeniden anlık görüntü alır.
Saniye başına emisyon oranı, tembel güncelleme yoluyla muhasebede yer alır:
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
Tembel: her saniye hiçbir talimat yayınlanmaz. Sayaç, birisi farm’a dokunduğu zaman her seferinde (Deposit, Withdraw, Harvest, yönetici güncellemesi) yenilenir. Hiçbir aktivitesi olmayan Farm’lar, sonraki etkileşimde kapatılan büyüyen bir boşluğu biriktirirler.

Staking mint vs reward mint

Staking mint, yakılmaz, emanet tutulur. Bir kullanıcı 100 LP stake ettiğinde, farm 100 LP’yi kullanıcının ATA’sından farm’ın staking vault’una taşır. Withdraw üzerinde, farm 100 LP’yi geri taşır. Farm asla pool’u çağırmaz. Reward mint’leri, yaratıcı tarafından önceden finanse edilen vault’lardan ödeme yapılır. Yaratıcı bir farm kurduğunda, tam reward bütçesini (örneğin, 1.000.000 RAY + 500.000 USDC) iki reward vault’una yatırır. Farm programı yeni token’lar basmaz; sadece akışın süresi boyunca vault’ta olanları dağıtır. Vault, end_time öncesinde boşaltılırsa, emisyonlar durdurulur.

Emisyon programları

Her reward akışının üç zaman parametresi vardır:
  • start_time — emisyonların başladığı UNIX zaman damgası. Bundan önce, hiçbir birikme olmaz.
  • end_time — emisyonların durduğu zaman damgası. Bundan sonra, reward_per_share bu akıştan artık büyümez.
  • per_secondstart_time ≤ now < end_time süresince emisyon oranı.
Bir reward, v5 / v6 üzerinde AddReward / SetRewards aracılığıyla genişletilebilir (end_time ileri taşıyabilir, vault’u doldurabilir). RestartRewards aracılığıyla end_time sonrasında yeniden başlatılabilir. Yönetici işbirliği olmadan kısaltılamaz.

Farm’lar ne değildir?

  • Ücret dağıtıcı değildir. CPMM ve CLMM işlem ücretlerini doğrudan pool durumuna toplar. Farm’lar pool ücretlerine dokunmaz. Pool ücretlerinden token sahibine giden tek yol LP geri ödeme veya CLMM’nin CollectFee’sidir.
  • Otomatik değildir. Farm ödüllerini kazanmak için LP açıkça stake edilmelidir. Token’larını cüzdanlarında bırakan LP sahipleri farm’dan hiçbir şey kazanmaz.
  • Birbirinin yerine kullanılamaz. Her UserStake hesabı, bir (farm, user) çiftine bağlıdır. Önce stake çıkarmadan stake’ınizi başka bir cüzdana transfer edemezsiniz.
  • CLMM pozisyonlarıyla doğrudan uyumlu değildir. Farm v6 bir CLMM adaptörü tanıttı, ancak pratikte CLMM pool’ları kendi yerleşik reward akışlarını (bkz. products/clmm/fees) kullanırlar ve farm emisyonlarını değil.

Farm’ların doğru araç olması durumunda

Farm’ı şu durumlarda kullanın:
  • Projelerinizin CPMM veya AMM v4 pool’larından biri için LP’yi bir harici token (proje token’ınız, bir ortağın token’ı vb.) ile teşvik edin.
  • Kendi sözleşmenizi dağıtmadan tek varlık mint’inde bir stake programı çalıştırın (klasik “RAY’ı stake et, RAY’ı kazan”).
  • O pool’a yönetici erişim gerektirmeden mevcut bir pool’un üzerine ek ödüller katmanı ekleyin.
Pool’unuz CLMM olduğunda bunun yerine CLMM’nin yerleşik reward akışlarını kullanın. Aynı ekonomiye sahiptirler, ancak pozisyonun ücret-büyüme-içeri muhasebesinde katılırlar (aralık içi pozisyonlar pro rata kazanırlar, aralık dışı pozisyonlar kazanmaz) ve kullanıcıların pozisyon NFT’lerini taşımalarını gerektirmez.

Bölüm içeriği

  • accounts — sürüm başına tam zincir üstü durum düzeni.
  • instructions — hesap listesi ve ön/sonrası koşulları ile her farm talimatı.
  • code-demos — staking, harvest ve yeni farm oluşturma için TypeScript örnekleri.

Sonra nereye gidelim?

Kaynaklar: