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’un ürün programları bağımsız kod tabanlarıdır, ancak paylaşılan bir dizi kural karşısında tasarlanmıştır. Bu sayfa bu kuralların kanonik referansıdır. Ürüne özgü bölümler kuralların hesaplarında nasıl uygulandığını açıklar; bu sayfa kuralların kendilerini açıklar.

Burada “paylaşılan” ne anlama gelir

Kod tabanında üç tür paylaşım çalışır:
  • Kural paylaşımı. Her program aynı PDA-türetme desenini, aynı ücret-bölünme şeklini ve aynı gözlem-hesabı fikrini kullanır — ancak her biri bunu kendi programında kendi tohumlarıyla uygular.
  • Hesap paylaşımı. Bir avuç hesap birçok havuz arasında tam anlamıyla aynı kayıttır (CPMM’deki genel yetki PDA’sı, AmmConfig hesapları).
  • Zincir dışı paylaşım. Bir REST API ve bir TypeScript SDK dört programın tümünü destekler. Entegratörler hangi programa çağrı yapacaklarından bağımsız olarak bir HTTP ana bilgisayarı ve bir NPM paketi ile etkileşim kurar.
Aşağıdaki beş ilkel öğe program sınırlarını aşan her şeyi kapsar.

1. Yetki PDA’ları

Her Raydium programının token kasalarına sahip olan tam olarak bir PDA’sı vardır. Kullanıcılar kasa yetkilisini asla doğrudan tutmazlar — yetki PDA’sı fonları dışarı çıkarabilen tek imzalayıcıdır ve yalnızca geçerli bir program talimatı bunu söylediğinde imzalar. Desen ürünler arasında aynıdır; tohumlar farklıdır: Bundan birkaç şey çıkar:
  • CPMM ve CLMM için yetki PDA’sı genel bir hesaptır — o türün her havuzu bunu kullanır. CPMM’ye CPI yapıyorsanız buna havuz başına değil bir kez ihtiyacınız vardır.
  • Havuz başına / çiftlik başına yetkililer için PDA’yı havuz/çiftlik kimliğinden türetirsiniz. SDK bunu getPoolKeys / getFarmKeys içinde yapar; doğrudan entegre oluyorsanız findProgramAddressSync ile türetirsiniz.
  • Kasa sahipliği değiştirilemez. Bir token hesabı yetki PDA’sı sahibi olarak oluşturulduktan sonra, yalnızca o PDA — program tarafından çağrılan — dışarı aktarabilir. Yönetici geçersiz kılması yoktur.
Program başına tam tohumlar ve ATA düzenleri için bkz. products/cpmm/accounts, products/clmm/accounts, products/amm-v4/accounts, products/farm-staking/accounts, products/launchlab/accounts.

2. Yönetici ve yapılandırma hesapları

CPMM ve CLMM AmmConfig adlı bir yapılandırma-hesabı deseni paylaşır: küçük bir genel hesap, bir u16 tarafından indekslenmiş, tüm bir ücret katmanına uygulanan ücret oranlarını ve yönetici hedeflerini tutar. Havuzlar oluşturma sırasında bir yapılandırmaya bağlanır ve asla yeniden bağlanmaz.
Yol kuralları:
  • Ücret katmanları globaldir. Bir havuz “bu 0,25% havuzudur” dediğinde, oluşturma sırasında trade_fee_rate’i 0,25% olan AmmConfig’e bağlandığı anlamına gelir. Havuz başına oran geçersiz kılması yoktur.
  • Bir yapılandırma değiştirilebilir ancak havuzlar takip etmez. Yapılandırma yetkilisi bir AmmConfig’i düzenlediyse, o yapılandırmaya bağlı her mevcut havuz yeni oranı hemen alır. Bu bir hata değil, bir özelliktir; protokol düzeyinde ekonomik değişikliklerin havuz başına göçler olmadan nasıl yayıldığıdır.
  • disable_create_pool kullanımdan kaldırma kaldıracıdır. Bir ücret katmanı sonlandırıldığında, protokol multisig bu bayrağı ayarlar — mevcut havuzlar çalışmaya devam eder ancak yeni havuzlar katmanı seçemez.
  • protocol_owner / fund_owner ücret-toplama çağrıları için imzalayıcılardır. Bunları bir multisig’e ayarlamak ücret çekişini kapıya koymaktır. Bunlar ücretler için hedef adresler DEĞİLdir; bu aynı hesaptaki protocol_fee_destination / fund_fee_destination adresleridır.
AMM v4’ün AmmConfig’i yoktur — ücret parametreleri havuz başınadır, oluşturma sırasında sabit kodlanmıştır. Farm ve LaunchLab’ın kendi eşdeğerleri vardır (FarmConfig, LaunchConfig) ilgili bölümlerde ele alınmıştır. Kimin neyi değiştirebileceğinin tam tablosu security/admin-and-multisig içindedir. Mevcut kullanıcı tarafından görülen ücret bölünmeleri ray/protocol-fees içindedir.

3. Protokol / fon / yaratıcı ücret bölünmesi

Her CPMM ve CLMM swap ücreti çıkış yolunda dört hedefe kadar bölünür:
Mekanik olarak:
  1. İşlem ücreti havuza tahakkuk eder. Ücret swap’ın giriş tarafından çıkarılır ve ücret sonrası miktar sabit-ürün matematiğinin gördüğü şeydir. Bu “LP ücret kazanır” anlamına gelir — k yükselir ve dolayısıyla zımni LP token başına değer de yükselir.
  2. Protokol/fon/yaratıcı kısımları bu LP tarafı tahakkuktan havuz başına sayaç hesaplarına düşülür. Bunlar havuz durumunda (protocol_fees_token{0,1}, fund_fees_token{0,1}, vb.) oturur ve birisi ilgili toplama talimatını çağırana kadar. Bunlar havuzun kasalarından o zamana kadar çıkmaz; swap’ın perspektifinden hala “havuzda”dırlar.
  3. Toplama bunları dışarı çıkarır. Protokol ve fon yolları AmmConfig’den ilgili protocol_owner / fund_owner imzalayıcısını gerektirir. CPMM yaratıcı ücretleri yaratıcı tarafından imzalanan CollectCreatorFee yolunu veya herhangi bir ödeyicinin tetikleyebileceği ancak hedefleri yaratıcının kanonik ATA’larına sabitleyen CollectCreatorFeePermissionless’i kullanır.
Birkaç yük taşıyan gözlem:
  • Bölünme yüzdeleri işlem ücretinin dışındadır, işlemin dışında değil. 0,25% işlem ücreti ve 12% protokol payı ile protokol 0,25% × 12% = 0,03% işlemin — işlemin 12%‘si değil.
  • Yaratıcı ücretleri yalnızca LaunchLab-mezun havuzlarında mevcuttur. Standart CPMM/CLMM havuzları 3 yönlü bölünmeye (LP / protokol / fon) sahiptir. LaunchLab, Initialize’da yapılandırılan ve değişmez olan tokeni başlatana yönlendirilen dördüncü bir yuva ekler.
  • AMM v4 yalnızca iki yönlü bölünür, havuz başına sabit kodlanmış: LP ve protokol. Fon yuvası yok, yaratıcı yuvası yok.
  • Fon vs protokol — her ikisi de protokol-hazinesi hedefleridir, ancak farklı imzalayıcılara ve farklı amaçlanan kullanımlara sahiptirler. protokol tarihsel olarak operasyonları finanse eder; fon daha uzun vadeli hazinedir. İkisi arasındaki bölünme kendisi ayarlanabilirdir.
Spesifik oranlar reference/fee-comparison ve ray/protocol-fees içindedir.

4. Gözlem hesapları (TWAP halka arabelleği)

Hem CPMM hem de CLMM havuz başına bir gözlem hesabı tutar — diğer sözleşmelerin manipülasyona dirençli bir TWAP türetmek için kullanabileceği (timestamp, cumulative_price) örneklerinin sabit boyutlu halka arabelleği.
Nasıl çalışır:
  • Her swap update_observation çağırır. Program mevcut fiyatı okur, önceki gözlemden bu yana geçen saniyelerle çarpar ve bunu kümülatif sayaca ekler. Yeni giriş en eski yuvayı üzerine yazar (halka-arabelleği stili).
  • Bir pencere üzerinde TWAP = (cumul[end] − cumul[start]) / (timestamp[end] − timestamp[start]). Tüketiciler istenen pencereyi parantez içine alan iki gözlem seçer ve böler.
  • Raydium kendisi fiyatlandırma için TWAP kullanmaz. AMM matematik spot rezervleri doğrudan okur. Gözlemler bir dışsallıktır — Raydium bunları yazmanın maliyetini öder böylece diğer sözleşmeler okuyabilir.
  • AMM v4’ün gözlem hesabı yoktur. ObservationState tasarımından daha eskidir; v4 TWAP’ı isteyen entegratörler log geçmişinden zincir dışında bir tane hesaplamak zorundadır.
Düzen ayrıntıları ve indeksleme matematiği products/cpmm/accounts ve products/clmm/accounts içindedir.

5. REST API + SDK + IDL

Zincir dışı yüzey her ürün tarafından kullanılan tek bir üçlüdür:
  • REST APIhttps://api-v3.raydium.io. Tüm zincir üstü durumun çoğunlukla okunan indekslenmiş görünümü artı bir alıntı motoru. Bir ana bilgisayar, bir şema.
  • TypeScript SDK — NPM’de @raydium-io/raydium-sdk-v2. Her program için işlemleri oluşturur ve imzalar. Alıntılar/meta veriler için API ile konuşur, imza öncesi durum yenilemesi için Solana RPC ile konuşur.
  • IDL kayıt defteri — Her yayınlanan program için Anchor IDL’leri raydium-idl deposunda yaşar (program başına bir JSON: CPMM, CLMM, LaunchLab). TypeScript SDK bu IDL’leri dahili olarak tüketir; aşağı akış Rust / Python istemcileri aynı dosyalardan yeniden oluşturur.
Aralarındaki sınır keskindir: Yaygın bir hata REST API çıktısını doğrudan bir işleme beslemektir. Yapmayın — imzaladığınız yuvada ilgili havuz/konum durumunu bir Solana RPC’den yeniden getirin. SDK bunu birinci taraf akışları için otomatik olarak yapar; SDK’yı atlatırsanız bunu kendiniz yapmalısınız. Tam referans sdk-api/ içindedir, IDL yüzeyi özellikle sdk-api/anchor-idl içindedir.

6. İndeksleyiciler ve fiyat beslemeleri

REST API, Raydium’un kendi indeksleyicisi tarafından beslenmiş olup, Solana RPC’leri filosundan program günlüklerine abone olur ve denormalize kayıtları bir SQL deposuna yazar. Entegratörler için iki sonuç:
  • İndeksleyici “program arası durumu bilen” tek şeydir. Bir CPMM havuzunu CLMM muadili ile eşleştirmek, 24s-hacim numarasını program sürümleri arasında hesaplamak, bir LP mint ile ilişkili bir çiftliği almak — bunların tümü indeksleyici işidir. Programların kendileri bunu yapmaz.
  • İndeksleyici kapalı kalma süresi API kapalı kalma süresidir. API eski veya boş veri döndürürse, indeksleyici şüphelidir. Zincir üstü durum etkilenmez; kendi RPC’si ve SDK’sı olan entegratörler işlem yapmaya devam edebilir.
Fiyat beslemeleri ayrı bir konudur. API çoğu havuz yanıtında bir priceUsd alanı yayınlar; bu indeksleyicinin havuz rezervleri görünümünün bir anlık görüntüsünden ve alıntılanan bir referans fiyattan (ortak pivot olarak USDC havuzları) zincir dışında hesaplanır. UI için yeterlidir; zincir üstü oracle olarak kullanmak güvenli değildir. Bunun için gözlem TWAP’ını kullanın.

Paylaşılmayan şey

Yeni okuyucular genellikle var olandan daha fazla paylaşım varsaydığı için açıkça listelemek değerlidir:
  • Programlar birbirini çağırmaz. Bir CPMM swap asla CLMM veya AMM v4’e CPI yapmaz. Birden fazla AMM’yi oluşturan tek program AMM Yönlendirme programıdır — ve o da kendisi incedir, sadece her AMM’ye sırayla CPI’lar yayınlar.
  • Programlar arasında paylaşılan yükseltme yetkilisi yoktur. Her zincir üstü programın kendi program-yükseltme anahtarı vardır (3/4 multisig artı 24s zaman kilidi). Bunlar bağlantılı değildir.
  • Çiftlikler ve AMM’ler arasında paylaşılan durum yoktur. Bir çiftlik bahis yaptığı LP’nin CPMM havuzundan, CLMM-konum-NFT-mint’inden veya ilgisiz SPL token’ından olup olmadığını bilmez. Çiftlik programı bahis mint’ini opak olarak ele alır.
  • Oracle bağımlılığı yoktur. Fiyatlandırma zincir üstü rezervlerdir. Pyth/Switchboard geri dönüşü yoktur; AMM temizlemeden önce bir oracle’ı kontrol etmez.

İşaretçiler

Kaynaklar:
  • Raydium SDK v2 — PDA tohumları, hesap düzenleri ve IDL tanımları için gerçeğin kaynağı.
  • Raydium IDL kayıt defteri — Anchor IDL’leri.
  • Yukarıda satır içinde alıntılanan ürüne özgü hesaplar sayfaları.