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.
Her Raydium programında en az bir ayrıcalıklı rol bulunur: programı yükseltebilen, yeni konfigürasyonlar oluşturabilen ya da protokol ücretlerini çekebilen bir anahtar. Bu rollerin yapabileceklerini en aza indirmek (ve onları gecikmeli multisig’lerin arkasına kilitlemek), ele geçirilmiş bir yöneticiye karşı birincil savunma katmanını oluşturur. Bu sayfa rolleri ve pratikte nasıl güvence altına alındıklarını belgeler.
Programa göre roller
AMM v4
| Rol | Yetki adresi | Yapabilecekleri |
|---|
| Program yükseltme | Squads multisig (3/4) | Yeni program bayt kodunu dağıtmak |
| Pool yöneticisi | Treasury multisig (3/5) | Pool durumunu değiştirmek, mevcut pool’lardaki ücretleri güncellemek |
CPMM
| Rol | Yetki adresi | Yapabilecekleri |
|---|
| Program yükseltme | Squads multisig (3/4) | Yeni program bayt kodunu dağıtmak |
| AmmConfig yöneticisi | Treasury multisig (3/5) | Yeni AmmConfig’ler (ücret kademeleri) oluşturmak; mevcut olanları açıp kapatmak |
| Pool oluşturma ücreti alıcısı | Treasury multisig (3/5) | Tek seferlik pool oluşturma ücretini almak |
CLMM
| Rol | Yetki adresi | Yapabilecekleri |
|---|
| Program yükseltme | Squads multisig (3/4) | Yeni program bayt kodunu dağıtmak |
| AmmConfig yöneticisi | Treasury multisig (3/5) | AmmConfig oluşturmak/değiştirmek |
| DynamicFeeConfig yöneticisi | Treasury multisig (3/5) | CreateDynamicFeeConfig / UpdateDynamicFeeConfig — CreateCustomizablePool çağrısının seçebileceği dinamik ücret kademelerini kalibre etmek |
limit_order_admin (program genelinde) | Çevrimdışı operasyonel sıcak cüzdan, multisig değil | Sahipleri adına limit emirlerini kapatmak ve sonuçlandırmak. Keeper anahtarı, program genelinde sabit tek bir değerdir (mainnet ile devnet’te farklı değer taşır); SettleLimitOrder / CloseLimitOrder üzerinde signer == limit_order.owner || signer == limit_order_admin::ID kontrolüyle doğrulanır. Çıktı her zaman asıl sahibin ATA’sına gider; keeper fonları yönlendiremez, emirleri değiştiremez veya yeni emir açamaz. |
limit_order_admin, kasıtlı olarak dar kapsamlı bir operasyonel roldür. Bir zincir dışı keeper’ın, emir sahibinin çevrimiçi olmasına gerek kalmadan dolmuş emirleri süpürebilmesi için vardır. Keeper anahtarı sıcaktır (keeper VM’inde yaşar) ve yukarıdaki multisig’lerden bağımsız olarak döndürülür. Somut olarak keeper yetkisi şunlarla sınırlıdır:
SettleLimitOrder — bir emirin doldurulmuş çıktısını emrin limit fiyatından sahibin ATA’sına iletmek.
CloseLimitOrder — tamamen sonuçlanmış bir emrin hesabını kapatarak kira bedelini geri almak (kira emrin sahibine gider).
OpenLimitOrder, IncreaseLimitOrder, DecreaseLimitOrder çağrılamaz; herhangi bir pool alanını değiştiremez ya da başka bir talimat için imzalayamaz; bu kontroller, talimatın Accounts struct’ındaki seed ve has_one kısıtlamalarıyla zincir üzerinde uygulanır. Ele geçirilmiş bir keeper en kötü ihtimalle kullanılamaz hale gelir (emirler, sahip kendisi sonuçlandırana kadar beklemede kalır) ya da yasal olarak dolabilecek emirleri sıra dışı sonuçlandırır/kapatır; kullanıcı fonlarını sahibin önceden yetkilendirdiği yerden başka bir yere taşıyamaz.
Farm v6
| Rol | Yetki adresi | Yapabilecekleri |
|---|
| Program yükseltme | Squads multisig (3/4) | Yeni program bayt kodunu dağıtmak |
| Farm oluşturucu (farm başına) | Farmın oluşturucu cüzdanı | Ödül kasalarını doldurmak, programları uzatmak, kullanılmayan ödülleri geri almak |
Bireysel farm’larda protokol yöneticisi yoktur — her farm’ın oluşturucusu yalnızca kendi farm’ını kontrol eder ve oluşturucunun yetkileri sınırlıdır (kullanıcı stake’lerini ele geçiremez, stake mint’ini değiştiremez).
LaunchLab
| Rol | Yetki adresi | Yapabilecekleri |
|---|
| Program yükseltme | Squads multisig (3/4) | Yeni program bayt kodunu dağıtmak |
| Launch oluşturucu (launch başına) | Launch’ın oluşturucu cüzdanı | Mezuniyet sonrası oluşturucu ücretlerini toplamak; tamamlanmamış eğri artığını çekmek |
Launch’larda eğrileri değiştirebilecek veya toplanan fonları ele geçirebilecek bir protokol yöneticisi bulunmaz.
Program yükseltme yetkisi
Raydium’un programları standart Solana BPF Loader v3 yükseltme mekanizmasını kullanır. Tüm programlar için yükseltme yetkisi 3/4 Squads multisig’ine aittir.
3/4 tercih edilmesinin nedeni: tek bir anahtarın ele geçirilmesinin yeterli olmaması, buna karşın meşru bir yükseltmenin koordinasyonunun yönetilebilir kalması. Dört yetki sahibi, temel ekip üyelerinin elinde bulundurduğu bağımsız, hava boşluklu soğuk cihaz imzacılarıdır. Sıralı imzalama, aynı işlemde paralel onayları engeller; işlemler sabit bir son kullanma penceresi taşır. Multisig operasyonları Solana’nın STRIDE Programı (Asymmetric Research) ile ortaklık içinde periyodik olarak gözden geçirilir.
Yükseltme yetkisini kaldırmak
Raydium, hiçbir programın yükseltme yetkisini null olarak ayarlamamıştır. Protokol, programların yükseltilebilir olması gerektiği ilkesiyle çalışır (hataları düzeltmek, Token-2022 gibi uzantılar eklemek, entegrasyon sapmalarını gidermek için). Ödün noktası: kullanıcılar, 3/4 multisig’in yalnızca iyi incelenmiş yükseltmeleri dağıtacağına güvenir.
Değişmez bir alternatif isteyen kullanıcılar için eski AMM v4 programı son denetiminden bu yana kararlı bir şekilde çalışmaktadır; 18 aydır sıfır yükseltme. Yetki hâlâ var olsa da bu kod yolu fiilen dondurulmuş durumdadır.
AmmConfig yetkisi
Her yeni AmmConfig oluşturma işlemi izne tabidir; 3/5 treasury multisig yeni ücret kademelerini ve tick aralıklarını onaylar. Mevcut pool’lar AmmConfig’lerine PDA üzerinden başvurur; pool’un ücret kademesi AmmConfig’in söylediklerinden ibarettir.
Yöneticiler mevcut bir AmmConfig’i değiştirebilir mi? Teknik olarak evet. updateAmmConfig, yönetici tarafından çağrılabilir. Pratikte, dağıtılmış AmmConfig’lerde değişiklik yapılmaktan kaçınılır; çünkü bu, söz konusu konfigürasyonu kullanan tüm pool’ların ekonomisini sessizce değiştirir. Protokol politikası, her değişiklik için yeni bir AmmConfig oluşturmak ve göçüm yapmaktır.
Yöneticiler konfigürasyon aracılığıyla protokol ücretlerini çalabilir mi? Hayır — AmmConfig ücret parametrelerini içerir ancak protokol ücreti alıcısını içermez; bu, pool başına ayrı ve değişmez bir adrestir.
Protokol ücreti talebi
Swap ücretlerinin bir kısmı (konfigürasyona göre genellikle 25 bps swap ücretinin 3–12 bps’i) bir protokol ücreti kasasında birikir. Multisig bu birikmiş ücretleri çekebilir. Kullanıcılar LP bakiyelerinin bu nedenle değiştiğini hiçbir zaman görmez; bu, LP parası değil, protokolün önceden ayrılmış payıdır.
Farm oluşturucu yetkisi
Farm v6, oluşturucuya şu yetkileri tanır:
- Ödül kasasını doldurmak (daha fazla token eklemek).
- Programı uzatmak (bitiş zamanını ileri almak).
- Bitiş zamanından sonra
withdrawReward çağırarak kullanılmayan kasa bakiyesini geri almak.
Farm oluşturucuları şunları yapamaz:
- Stake edilmiş kullanıcı LP’sini çekmek.
- Stake mint’ini değiştirmek.
- Emisyon oranlarını geriye dönük olarak değiştirmek (yalnızca
setRewards aracılığıyla ileriye yönelik).
- Kullanıcı hasat işlemlerini dondurmak.
Kötü niyetli bir farm oluşturucusu en kötü ihtimalle kasayı yetersiz finanse ederek farm’ın kuruyup kalmasına yol açabilir; kullanıcıların asıl stake’i her zaman güvende kalır.
Squads multisig konfigürasyonu
Raydium, farklı risk yüzeyleri için iki ayrı Squads multisig işletir. Her ikisi de Squads Protocol arayüzü üzerinden zincir üzerinde incelenebilir.
| Multisig | Eşik | Zaman kilidi | Kapsam |
|---|
| Program yükseltme | 3/4 | 24 saat | AMM v4, CPMM, CLMM, LaunchLab, Lock, AMM Routing, Stable Swap ve eski Farm/Staking programları için yeni program bayt kodunu dağıtmanın tek yetkisi. app.squads.so/.../FytDr…ceZQK adresinden görüntüleyin. |
| Treasury | 3/5 | yok | Treasury varlıkları, protokol gelirleri, operasyonel giderler. Aynı zamanda Raydium’un sınırlı program yöneticisi yetkisini (AmmConfig oluşturma, protokol ücretlerini süpürme, pool parametrelerini yapılandırma) geçici olarak elinde bulundurur. v3.squads.so/dashboard/RVha…dHdtYz09 adresinden görüntüleyin. |
Yükseltme multisig’inin operasyonel özellikleri:
- Herhangi bir işlemde 24 saatlik zaman kilidi. Bugün onaylanan bir yükseltme en erken 24 saat sonra yürütülür; bu süre kullanıcılara tepki için zaman tanır.
- Hava boşluklu soğuk cihaz imzalama. Soğuk cihazların ağ kartları fiziksel olarak çıkarılmıştır; yalnızca bir donanım cüzdanına bağlanır ve işlem verilerini ayrı bir sıcak cihazdan QR kodu aracılığıyla okurlar.
- Sıralı imzalama. Bir soğuk cihaz bir işlem oluşturup imzaladıktan sonra, bir sonraki soğuk cihaz kendi imzalama sürecini başlatabilir; bu sayede aynı işlem üzerinde çakışan veya paralel imzalar engellenir.
- İşlem son kullanma tarihi. Her işlem sabit bir son kullanma penceresi taşır; eski işlemler otomatik olarak geçersiz hale gelir.
- TOTP + fiziksel anahtar zorunluluğu, işlem başlatma ve zincir üzerinde yayın için kullanılan sıcak cihazlarda uygulanır.
- Kamuya açık işlem kuyruğu. Herkes Squads arayüzünde bekleyen yükseltmeleri izleyebilir.
Treasury multisig’inde zaman kilidi yoktur — kapsamı daha dardır ve rutin operasyonların (AmmConfig oluşturma, ücret süpürme) aynı gün tamamlanması gerekir. Treasury multisig, yukarıdaki program bazlı tablolarda listelenen sınırlı program yöneticisi yetkisini de elinde bulundurur; bu geçici bir düzenlemedir ve projenin güvenlik ortaklarıyla periyodik olarak gözden geçirilir.
Zincir üzerinde yetkiyi doğrulamak
Bir programın mevcut yükseltme yetkisini doğrulamanın en basit yolu:
solana program show <PROGRAM_ID>
Çıktı şunları içerir:
Program Id: CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F
Owner: BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: <ProgramDataPDA>
Authority: <EXPECTED_MULTISIG_ADDRESS>
Last Deployed In Slot: <slot>
Data Length: <n> bytes
Authority beklenen Squads multisig adresiyle eşleşmiyorsa bir sorun var demektir. Raydium beklenen yetki adreslerini reference/program-addresses üzerinde yayınlar.
AmmConfig / pool yöneticisi rolleri için zincir üzerindeki hesabı çekip şöyle çözümleyebilirsiniz:
const config = await raydium.cpmm.getAmmConfig(configPda);
console.log("AmmConfig admin:", config.admin.toBase58());
// Beklenen: 3/5 treasury multisig.
Geçmiş yetki değişiklikleri
| Tarih | Program | Değişiklik |
|---|
| 2022-12 | AMM v4 | Olay sonrasında yükseltme yetkisi tek imzadan 3/4 multisig’e taşındı |
| 2023-02 | Tüm programlar | Tüm operasyonel roller 3/5 treasury multisig altında birleştirildi |
| 2023-11 | CLMM | Maruziyeti azaltmak için yalnızca ödül operasyonlarına yönelik ikinci bir multisig eklendi |
| 2024-05 | CPMM | İlk günden itibaren multisig yetkisiyle dağıtıldı |
Kullanıcı açısından değerlendirmeler
Kullanıcı/LP/entegratör olarak ne yapmalısınız?
- Büyük tahsislerden önce yükseltme yetkisini kontrol edin. Belgelenen multisig ile eşleştiğini doğrulayın.
- Multisig etkinliğini izleyin. Squads arayüzü bekleyen işlemleri gösterir; planlı bir yükseltme, değişikliğe katılmıyorsanız pozisyonunuzu kapatmanız için size 24 saat tanır.
- Zaman kilidi farkındalıklı geri çekilme stratejileri. Otomatik bileşik yapan bir sistem çalıştırıyorsanız, geri çekilme yolunuzun değiştirilmekte olan bir talimat gerektirmediğinden emin olun.
- Program değişmezliğini varsaymayın. Her Raydium programı yükseltilebilir; buna göre plan yapın.
Entegratörler için tuzaklar
1. Yetki adreslerini önbelleğe almak
Yükseltme yetkisini veya yönetici multisig adresini kodunuza sabit olarak yazarsanız ve bu adres daha sonra döndürülürse doğrulamanız başarısız olur. Çalışma zamanında reference/program-addresses adresinden çekin ya da periyodik olarak yenileyin.
2. AmmConfig’lerin değişmez olduğunu varsaymak
Herhangi bir anda yeni bir AmmConfig oluşturulabilir. Toplayıcınız/yönlendiriciniz tam konfigürasyon listesini periyodik olarak yeniden çekmelidir (saatlik yeterlidir).
3. Farm oluşturucu saldırı vektörleri
Düşük itibarli bir farm’a para yatırıyorsanız, oluşturucu farm’ı erken sonlandırarak ödül kasasını geri alabilir (henüz stake yapan kullanıcı yoksa). Kullanıcılar stake yaptıktan sonra pro-rata haklar program tarafından uygulanır; geri alma yalnızca makul bitiş sonrasındaki artığı kapsar.
Kaynaklar
Kaynaklar: