Skip to main content
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 →
Raydium’u entegre eden cüzdanlar tipik olarak kullanıcı başına dört soruya yanıt vermelidir: bu kullanıcı hangi havuzlarda LP’ye sahiptir? hangi pozisyonları (CLMM NFT’leri) tutarlar? hangi farmlara stake edilmiştir? hepsi ne kadar değerindedir? Bu sayfa her birini belgelemektedir.

Raydium pozisyonlarını algılama

Klasik LP token’ları (CPMM, AMM v4)

Bunlar diğer SPL Token’lar gibi görünür: kullanıcının ATA’sı bir bakiye tutar. Bir cüzdan bunu varsayılan olarak başka bir token olarak gösterir. Bunu bir Raydium LP pozisyonu olarak ortaya çıkarmak için:
  1. Kullanıcının token hesaplarını numaralandırın: connection.getParsedTokenAccountsByOwner(user, { programId: TOKEN_PROGRAM_ID }).
  2. Her mint için Raydium’un mint listesini kontrol edin: GET https://api-v3.raydium.io/pools/info/lps?lps=<LP_MINT>,... (çağrı başına ~50 LP mint’e kadar toplu işlem yapın).
  3. Eşleşen mint’ler için API havuz referansını döndürür. Pozisyonun token cinsinden değerini hesaplamak için kullanın:
Hem LP bakiyesini hem de açılmış tutarları gösterin — kullanıcılar LP birimleri değil, temel token’lar cinsinden düşünürler.

CLMM pozisyon NFT’leri

CLMM pozisyonları NFT’lerdir. Her pozisyonun PersonalPositionState PDA’sı NFT mint’inden türetilir. Algılamak için:
  1. Kullanıcının NFT’lerini numaralandırın. Eski Metaplex NFT’leri için: token hesaplarını arz 1 ve ondalık 0 olanlarla filtreleyin.
  2. Her NFT mint için PersonalPositionState PDA’sını türetmeyi deneyin:
  1. Cüzdanın pozisyonlarını raydium.clmm.getOwnerPositionInfo({ programId }) ile numaralandırın ve nftMint ile eşleştirin (bir getPositionInfo yoktur). Her giriş size şunları verir:
    • poolId → mint’leri çözmek için havuzu getir
    • tickLower, tickUpper → aralığı göster
    • liquidity, tokensOwedA/B → pozisyon değerini ve bekleyen ücretleri hesapla
    • rewardInfos → akış başına bekleyen ödüller
  2. Token-2022 altında verilen pozisyon-NFT’leri için (OpenPositionWithToken22Nft), NFT mint’inin programı SPL Token yerine Token-2022’dir. Tarama yaparken her ikisini de numaralandırın.

Farm stake’leri

Farm v3 / v5 / v6’nın her birinin kullanıcı başına bir defter PDA’sı vardır. Türetmeler:
Tamamen zincir üstü algılamayı tercih eden cüzdanlar için: olası UserLedger PDA’larını, kullanıcıyı “muhtemel” farm ID’lerinin seçilmiş bir listesiyle karma hale getirerek yineleyin. Tüm farm ID’lerini kapsamlı olarak numaralandırmak pratik değildir (binlerce vardır); API’yi kullanın.

Pozisyon değerini hesaplama

CPMM / AMM v4 LP

Üç modül aynı imzayı paylaşmaz: liquidity.getPoolInfoFromRpc { poolId } alırken, cpmm.getPoolInfoFromRpc ve clmm.getPoolInfoFromRpc konumsal base58 dizesi alır.
Ardından her birini mint’in USD fiyatıyla çarpın (raydium.token veya bir fiyat oracle’ından).

CLMM pozisyonu

Şu şekilde gösterin:
  • Likidite değeri (mevcut fiyat)
  • Toplanmamış ücretler
  • Akış başına bekleyen ödüller
  • Aralık: [tickLower_price, tickUpper_price] mevcut fiyatın aralık içinde olup olmadığını gösteren görsel bir çubukla

Farm stake

Zincir üstü hesaplama için farm’ın muhasebesi yansıtın:
Hesaplamadan önce reward_per_share_x64’ü tembel güncelleme formülüyle yenileyin (geçen zaman × emisyon oranı ÷ toplam_stake).

Önizleme için işlem simülasyonu

Kullanıcı imzalamadan önce, cüzdanlar genellikle bakiye değişikliklerini önizler. simulateTransaction kullanın:
accounts parametresi doğrulayıcıdan listelenen adresler için simülasyon sonrası hesap durumunu döndürmesini ister. Bakiye değişimini yalnızca talimat şeklinden tahmin etmeye çalışmaktan çok daha doğru.

Simülasyon tuzakları

  • CLMM swap’leri geçerli tick dizileri gerektirir. Kullanıcının giriş boyutu başlatılmamış bir tick dizisine geçerse, simülasyon geri döner (yürütme gibi). Bunu arayüzde açıkça gösterin.
  • Öncelik ücreti. Simülasyon, hesaplama bütçesi talimatları uygulanmadan çalışır. Varsayılan 200k CU’yu aşacak büyük bir işlem için simülasyon başarısız olur ancak açık CU sınırı ile gerçek yürütme başarılı olur. Simüle edilen tx’e de CU sınırını ayarlayın.
  • Taze blockhash. Simülasyon mevcut blockhash’i kullanır; imzalama 60 saniyeden fazla sürerse tx geçersiz hale gelir. Kullanıcı tereddüt ederse yeniden simüle edin.

Token-2022 görüntüleme

Token-2022 programı altındaki token’lar cüzdanın token listesinde bu şekilde etiketlenmelidir, çünkü farklı risk yüzeylerine sahiptirler:
  • Transfer-fee mint’leri: mevcut transferFeeBasisPoints’i bakiyenin yanında “Transfer ücreti: X%” olarak gösterin. Alırken uyarı verin — kullanıcılar gönderenin gönderdiğinden daha az alacaklarını fark etmeyebilir.
  • Transfer-hook mint’leri: hook program ID’sini gösterin. Kötü niyetli bir hook giden transferleri engelleyebilir; kullanıcılar hook’un beklediği şey olduğunu doğrulamalıdır.
  • Aktarılamayan mint’ler: “Aktarılamayan” gösterin ve swap/gönder’i devre dışı bırakın. Bunlar tipik olarak soulbound token’lar veya kimlik bilgileridir.
  • Faiz getiren mint’ler: TokenAccount.amount’dan türetilen UI bakiyesi **tahakkuk eden faizi yansıtmaz. Görüntülenen değer için @solana/spl-token’dan amountToUiAmount’ı kullanın (ölçekleme faktörünü uygular).

Farm APR görüntüleme

Kullanıcılara gösterilen APR, tüm canlı ödül akışlarını birleştirmeli, USD’ye dönüştürmeli ve yıllıklandırmalıdır:
APR: X.Y% olarak gösterin. Stake mint’i bir LP token’ı ise, temel LP’nin temel ücret APR’sini de hesaplayın ve toplamı “Toplam APR” veya “APR + ücretler” olarak etiketleyin.

İşaretçiler

Kaynaklar:
  • Raydium SDK v2 — pozisyon/farm yardımcıları.
  • api-v3.raydium.io üzerinde kullanıcı-pozisyon uç noktaları.