Ana içeriğe atla
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 kural seti üzerinden tasarlanmıştır. Bu sayfa, bu kuralların kurallı başvuru kaynağıdır. Ürün başına bölümler, kuralların hesaplarında uygulanma biçimini açıklar; bu sayfa, kuralların kendilerini açıklar.

Burada “paylaşılan” ne anlama geliyor?

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

1. Yetki PDA’ları

Her Raydium programının, token kasalarını sahibi olan tam olarak bir PDA’sı vardır. Kullanıcılar kasa yetki sahibi olarak direkt tutuş alamazlar — yetki PDA’sı, fonları çıkaran tek imzalayan ve yalnızca geçerli bir program talimatı bunu söylerken imzalar. Desen ürünler genelinde aynıdır; tohumlar farklılık gösterir: Bunun birkaç sonucu vardır:
  • CPMM ve CLMM için, yetki PDA’sı global bir hesaptır — o tür her havuz bunu kullanır. CPMM’ye CPI yapıyorsanız, bunu pool başına değil, bir kez gereklidir.
  • Pool başına / farm başına yetki için, PDA’yı pool/farm ID’sinden türetirsiniz. SDK bunu getPoolKeys / getFarmKeys’te yapar; doğrudan entegre oluyorsanız, findProgramAddressSync ile türetirsiniz.
  • Kasa sahipliği değiştirilemez. Bir token hesabı yetki PDA’sı olarak sahip olacak şekilde oluşturulduktan sonra, yalnızca bu PDA — program tarafından çağrılan — çıkış yapabilir. Yönetici geçersiz kılması yoktur.
Program başına kesin 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: bir u16 ile indekslenen küçük bir global hesap, tüm bir ücret seviyesi’ne uygulanan ücret oranlarını ve yönetici hedeflerini tutar. Havuzlar oluşturma sırasında bir yapılandırmaya bağlanır ve hiçbir zaman yeniden bağlanmaz.
Yol kuralları:
  • Ücret seviyeleri globaldir. Bir havuz “bu %0,25 havuzdur” dediğinde, oluşturma sırasında trade_fee_rate’i %0,25 olan AmmConfig’e bağlandığı anlamına gelir. Pool başına oran geçersiz kılması yoktur.
  • Bir yapılandırma değişebilir ama havuzlar bunu takip etmez. Yapılandırma yetkilisi bir AmmConfig’i düzenlerse, o yapılandırmaya bağlı her mevcut havuz hemen yeni oranı alır. Bu bir hata değil, bir özelliktir; bu şekilde protokol düzeyindeki ekonomik değişiklikler pool başına göçler olmadan yayılır.
  • disable_create_pool eskiye alma kaldıracıdır. Bir ücret seviyesi sona erdirildiğinde, protokol multisig bu bayrağı ayarlar — mevcut havuzlar çalışmaya devam eder ancak hiçbir yeni havuz seviyeyi seçemez.
  • protocol_owner / fund_owner ücret toplama çağrıları için imzalayanlardır. Bunları bir multisig’e ayarlamak, ücret çekmesini kilitler. Ücreti kendileri için hedef adresler DEĞİLLERDİR; bu, aynı hesapta protocol_fee_destination / fund_fee_destination’dur.
AMM v4’ün AmmConfig’i yoktur — ücret parametreleri oluşturma sırasında pool başına, sabit kodlanmıştır. Farm ve LaunchLab’ın kendi eşdeğerleri vardır (FarmConfig, LaunchConfig) ilgili bölümlerinde ele alınmıştır. Kim neyi değiştirebileceğinin tam tablosu security/admin-and-multisig’dedir. Mevcut kullanıcı karşılı ücret bölüşümleri ray/protocol-fees’dedir.

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

Her CPMM ve CLMM swap ücreti yolda dört hedefe kadar bölünür:
Mekanik olarak:
  1. Ticaret ücreti havuza tahakkuk eder. Ücret swap’ın giriş tarafından kaldırılır ve ücret sonrası miktar, sabit-çarpım matematiğinin gördüğü şeydir. Bu, “LP ücret kazanır” anlamına gelen şeydir — k artar ve dolayısıyla ima edilen LP-token başına değeri de artar.
  2. Protokol/fon/yaratıcı kısımları o LP-tarafı tahakkuktan pool başına sayaç hesaplarına düşülür. Birisi CollectProtocolFee / CollectFundFee / CollectCreatorFee çağırana kadar havuz durumunda (protocol_fees_token{0,1}, fund_fees_token{0,1}, vb.) oturur. Swap perspektifinden, bunlar “hâla havuzda”.
  3. Toplama onları çıkarır. İlgili imzalayan (AmmConfig’deki protocol_owner / fund_owner anahtarları veya LaunchLab havuzları için launch yaratıcısı) toplama talimatını çağırır ve program havuz kasasından bir hedef ATA’ya aktarır.
Birkaç önemli gözlem:
  • Bölüşüm yüzdeleri ticaretten değil, ticaret ücretinden alınır. %0,25 ticaret ücreti ve %12 protokol payı, protokolün ticaretten %0,25 × %12 = %0,03%’ünü alması anlamına gelir — ticaretten %12’si değil.
  • Yaratıcı ücretleri yalnızca LaunchLab-mezun havuzlarında mevcuttur. Standart CPMM/CLMM havuzları 3 yönlü bölüşüme sahiptir (LP / protokol / fon). LaunchLab, token’ı başlatan kişiye yönlendirilen dördüncü bir yuva ekler, Initialize’da yapılandırılır ve değişmezdir.
  • AMM v4 yalnızca iki yolu böler, pool başına sabit kodlanmıştır: LP ve protokol. Fon yuvası yok, yaratıcı yuvası yok.
  • Fon vs protokol — her ikisi de protokol-hazine hedefleridir, ancak farklı imzalayanlara ve farklı amaçlara sahiptir. protokol tarihsel olarak işlemleri finanse eder; fon daha uzun vadeli hazinedir. İkisi arasındaki bölüşüm kendi başına ayarlanabilirdir.
Spesifik oranlar reference/fee-comparison ve ray/protocol-fees’dedir.

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

Hem CPMM hem de CLMM, pool başına 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, son gözlemden beri geçen saniye ile çarpar ve kümülatif sayaca ekler. Yeni giriş en eski yuvanın üzerine yazılır (halka-arabelleği stili).
  • Bir pencere üzerinde TWAP = (cumul[end] − cumul[start]) / (timestamp[end] − timestamp[start]). Tüketiciler istenen pencereyi kapsayan iki gözlemi seçer ve bölerler.
  • Raydium kendisi fiyatlandırma için TWAP’ı kullanmaz. AMM matematik spot rezervleri doğrudan okur. Gözlemler bir dışsallıktır — Raydium, onları 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, günlük geçmişten bir tane hesaplamalıdır.
Düzen ayrıntıları ve indeksleme matematiği products/cpmm/accounts ve products/clmm/accounts’tedir.

5. REST API + SDK + IDL

Zincir dışı yüzey, her ürün tarafından kullanılan tek bir triodur:
  • REST APIhttps://api-v3.raydium.io. Tüm zincir üstü durumun ve bir fiyat motorunun yalnızca okunur indekslenmiş görünümü. Bir ana bilgisayar, bir şema.
  • TypeScript SDK — NPM üzerinde @raydium-io/raydium-sdk-v2. Her program için işlemleri oluşturur ve imzalar. Teklifler/meta veriler için API’ye, ön-imza durumu yenilemeleri için bir Solana RPC’sine konuşur.
  • IDL kayıt defteri — Her yayınlanan program için Anchor IDL’leri raydium-idl repo’sunda 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 — ilgili pool/konum durumunu imzaladığınız yuvada bir Solana RPC’sinden yeniden getirin. SDK bunu birinci tarafa akışları için otomatik olarak yapar; SDK’yı atlarsanız bunu kendiniz yapmalısınız. Tam başvuru sdk-api/’dedir, IDL yüzeyi spesifik olarak sdk-api/anchor-idl’dedir.

6. İndeksleyiciler ve fiyat beslemeleri

REST API, Raydium’un kendi indeksleyicisi tarafından beslenirse, Solana RPC’leri filosundan program günlüklerine abone olur ve denormalize kayıtları bir SQL depoya yazar. Entegratörler için iki sonuç:
  • İndeksleyici, program dışı durumu “bilen” tek şeydir. Bir CPMM havuzunu CLMM karşılığına eşlemek, program sürümleri arasında 24s-hacim sayısı hesaplamak, bir LP mintine 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ü ve alıntı yapılan referans fiyat (ortak pivot olarak USDC havuzları) anlık görüntüsünden zincir dışı olarak 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 nedir

Yeni okuyucular genellikle daha fazla paylaşım varsaydığı için açıkça listeleme değeri vardır:
  • Programlar birbirini çağırmaz. CPMM swap, hiçbir zaman CLMM veya AMM v4’e CPI yapmaz. Birden fazla AMM’yi birleştiren tek program, AMM Yönlendirmesi programıdır — ve bu, kendisi de ince, her AMM’ye sırasıyla CPI’ları yayınlamaktır.
  • Programlar arasında ortak yükseltme yetki yoktur. Her zincir üstü programın kendi program-yükseltme anahtarı vardır (3/4 multisig artı 24s zaman kilidi). Bağlantılı değildir.
  • Çiftlikler ve AMM’ler arasında paylaşılan durum yoktur. Bir çiftlik, yükselttiği LP’nin CPMM havuzundan, CLMM-konum-NFT-mintinden veya ilgisiz SPL token’undan olduğunu bilmez. Çiftlik programı, bahis mintini opak olarak işler.
  • Oracle bağımlılığı yoktur. Fiyatlandırma, zincir üstü rezervlerdir. Pyth/Switchboard geri planı yoktur; AMM temizlemeden önce oracle’ı kontrol etmez.

İşaretçiler

Kaynaklar:
  • Raydium SDK v2 — PDA tohumları, hesap düzenleri ve IDL tanımlarının gerçeği kaynağı.
  • Raydium IDL kayıt defteri — Anchor IDL’leri.
  • Yukarıda satırda alıntı yapılan ürün başına hesap sayfaları.