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 →
IDL nedir
Solana üzerindeki Anchor programları, talimatlarını, hesap düzenlerini, hata enum’unu ve struct şemalarını açıklayan bir IDL (Interface Definition Language) dosyası yayınlar. IDL, istemci kodu oluşturmanın kaynağıdır — TS SDK, Rust CPI crate’i ve üçüncü taraf istemcilerin tümü bundan oluşturulur (veya buna karşı elle yazılır). Raydium, CPMM, CLMM ve LaunchLab için IDL’ler yayınlar. AMM v4, Stable AMM ve Farm (v3 / v5 / v6) Anchor’dan önceki dönemde oluşturulmuştur veya başka nedenlerle Anchor tarafından dağıtılmaz — hesap yapıları SDK’da elle tutulur.Nerede bulunur
IDL’ler özel bir depoda bulunur:
IDL dosyaları deponun git geçmişinde sürümlendirilir; bayt-bayt yeniden üretilebilirlik gerekiyorsa belirli bir commit’e sabitleyin.
Bazı IDL’ler doğrudan mainnet’ten de çekilebilir:
Üç eski IDL hesabının tümü, programların BPF yükseltme yetkilisinden ayrı olan IDL yetkilisi
2XVnob28A5Qnpcy95UVeHWNT6G8Poy3tpA3AFyAMoZDt tarafından yazılabilir — bu nedenle bir IDL yeniden dağıtmadan yenilenebilir ve ayrıca bir yeniden dağıtımdan geride kalabilir. Zincir üstü IDL’yi bir kolaylık olarak değerlendirin, dağıtılan bytecode’un şeklinin kanıtı olarak değil.
TypeScript istemcisini yeniden oluşturma
Anchor’un codegen, IDL’den yazılı bir istemci oluşturur:raydium.cpmm.swap(...) yardımcısını kullanırlar. Yalnızca SDK’nın altında bir katmana ihtiyacınız olduğunda yeniden oluşturun.
Rust istemcisini yeniden oluşturma (CPI crate)
Raydium, IDL’leri olan programlar için Anchor crate’leri yayınlar:raydium_cp_swap ve raydium_clmm. Hiçbir yazımda raydium_amm_v3 adında bir crate yoktur. Şubelerin farklı olduğuna dikkat edin: raydium-cp-swap’ın master hala anchor-lang 0.32.1’i sabitlediğinden, Anchor-1.0 entegrasyonu chore/upgrade-anchor gerektirir; CLMM her iki şekilde de 0.32.1’dedir, bu nedenle ikisi bir crate paylaşamaz.
cpi özelliği cpi::accounts::<Ix> hesap struct’larını ve cpi::<ix>() çağırıcılarını ortaya çıkarır — kullanıma hazır CPI sarmalayıcıları. Kullanım desenleri için sdk-api/rust-cpi bölümüne bakın.
Taze bağlamalar oluşturmayı tercih ederseniz:
Python istemcisini yeniden oluşturma
Resmi bir Raydium Python SDK’sı yoktur. Üçüncü taraf oluşturucular şunları içerir:anchorpy— Anchor’un TypeScript istemcisinin Python portu. IDL’lerden yazılı yöntem oluşturucuları oluşturur.solders— düşük seviyeli Solana ilkelleri (işlemler, keypair’ler, pubkey’ler) Rust bağlamalarında;anchorpyaltında kullanılır.
sdk-api/python-integration bölümüne bakın.
IDL değişiklik politikası
Raydium, IDL kararlılığı için şu kuralları izler:- Talimat ayırıcıları asla değişmez. Yeni talimatlar eklenmesi enum’u sonunda genişletir; mevcut ayırıcılar kararlı kalır.
- Hesap boyutları kararlıdır; yeni alanlar ayrılmış dolgudan çıkar. Her Raydium durum struct’ı, oluşturulduğunda boyutlandırılmış bir sondaki dolgu bölgesi taşır ve yeni bir alan eklenmek yerine bu dolgulardan oyulur — bu nedenle hesabın bayt uzunluğu ve tüm önceden var olan alanların ofsetleri sabit kalır. Sonuç olarak, daha önce dolgu olarak okuduğunuz baytlar anlamlı hale gelebilir ve bir alan dolguya geri çekilebilir (2026-08-31 sürümünde
PlatformConfig.curve_paramsgibi). Yükseltmeden sonra struct tanımını yeniden okuyun; dolgunun sıfır kalacağını varsaymayın. - Hata enum kodları yalnızca ekleme yönelidir. Mevcut bir hata kodu her zaman aynı şeyi ifade eder.
- Kırıcı değişiklikler yeni programlarda gönderilir. Bir yeniden tasarım gerektiğinde, ekip yeni bir program ID’si dağıtır (örn. CPMM, AMM v4’ü yükseltmek yerine taze bir program olarak). Eski havuzlar eski programda çalışmaya devam eder; yeni havuzlar yenisine gider.
IDL değiştiğinde ne yapılır
- SDK’yı güncelleyin.
npm update @raydium-io/raydium-sdk-v2. - İstemci kodunuzu yeniden oluşturun Anchor codegen’i doğrudan kullanıyorsanız.
- Hesap düzenini karşılaştırın. Yeni düzenin sondaki alanları, kodunuzun görmediği tek şeydir; bunlara ihtiyacınız olup olmadığını doğrulayın.
- Eski talimat ayırıcılarının geçersiz olduğunu varsaymayın. Kural 1’e göre, hala çalışırlar.
- Entegrasyon testlerini yeniden çalıştırın mainnet’e geçmeden önce devnet’te.
IDL sorun giderme
”Invalid discriminator” hataları
Genellikle IDL’nin N sürümüne karşı oluşturulan bir istemcinin, yalnızca programın ön dağıtım sürümünde var olan bir talimata çağrı yapmaya çalıştığı anlamına gelir. IDL’yi canlı programdan yeniden çekin:Hesap çözme hataları
program.account.<Name>.fetch(pubkey) “Invalid account discriminator” ile hata fırlatırsa, hesap önceki bir program sürümü tarafından oluşturulmuştur ve Anchor 8 baytlık ayırıcısını reddediyor. Çözüm, Anchor ayırıcılarını uygulamayan SDK’dan ham düzen ayrıştırıcısını kullanmaktır (PoolInfoLayout.decode(accountData)).
Oluşturulan istemcide eksik talimatlar
Anchor’un TS codegen’i, yalnızca IDL girişi geçerli bir tanımlayıcı olarak ayrıştırılan birname’e sahip talimatlar için yöntemler oluşturur. Raydium’un talimatlarının tümü bunu karşılar, ancak bir uyumsuzluk görürseniz, IDL dosyasının geçerli SDK sürümünden olup olmadığını kontrol edin.
İşaretçiler
sdk-api/rust-cpi— Rust CPI crate’lerini kullanma.sdk-api/python-integration—anchorpyaracılığıyla Python.sdk-api/typescript-sdk— daha yüksek seviyeli TS istemcisi.

