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 →
Cargo bağımlılıkları
cpi özellik bayrağı, crate’lerin tam program yerine sadece CPI yüzeyine (hesap struct’ları + invoker’lar) derlemesini sağlar, böylece ikili dosyanızın boyutu küçük kalır.
Hesap struct’larını baştan sona bağlayan çalışan CPI örnekleri için, bkz. raydium-io/raydium-cpi-example (AMM v4, CPMM ve CLMM’yi kapsar).
Hesap listesi oluşturma
Her Raydium CPI, çağıran programda birAccounts struct’ı gerektirir. Alanlar, programın instruction hesap sırasına 1’e 1 eşlenir, alan düzeyinde doğrulayıcılarla:
UncheckedAccount’dir çünkü çağrılan program (Raydium) doğrulamaya sahiptir. Çağıran programınız sadece sizin sahip olduğunuz hesapları titizlikle doğrular — kullanıcı ATA’ları, kendi PDA’larınız. /// CHECK: yorum satırı Anchor’ın eksik kontroller hakkındaki uyarısını bastırır.
CPI çağrısı oluşturma
Anchor, her instruction için bir helper üretir:cpi::swap_base_input IDL’den üretilir; argüman listesi Anchor instruction’ının argüman listesini yansıtır.
İmzalayan seed’leri (PDA-imzalı CPI)
Programınız bir PDA adına CPI’ı imzaladığında (vault’lar, escrow’lar vb. için yaygın),CpiContext::new_with_signer kullanın:
authority (veya benzer imzalayan rol) olarak iletilen herhangi bir hesap için Solana çalışma zamanı, PDA’nın bu seed’ler aracılığıyla imzaladığını kontrol eder.
Kalan hesaplar
Bazı Raydium instruction’ları kalan hesapları alır — sabit hesaplardan sonra eklenen değişken uzunlukta bir liste. Kanonik örnekler:- CLMM
SwapV2: swap’ın geçebileceği tick dizilerine karşılık gelen 1–8TickArrayStatehesabı ekler. - Farm v6
Deposit: her canlı reward akışı için(reward_vault, user_reward_ata)çiftlerini ekler.
.with_remaining_accounts(...) aracılığıyla iletiniz:
Hata yayılımı
Raydium’un programları kendi hata enum’larını döndürür. Anchor onları sarar; çağıran programınız onlarıErr(ProgramError::Custom(code)) olarak görür. Belirli hataları işlemek için:
sdk-api/anchor-idl). Sayısal değere karşı karşılaştırarak belirli kodlara karşı test edebilirsiniz.
Bileşik CPI’larda işlem bütçesi
Her CPI frame’inin ek yükü vardır (~çağrı kendisi için 1.500 CU) ve çağrılanın kendi CU tüketimi bunun üzerine yığılır. Programınızın içinden CPMM swap çağıran bir işlem şunları harcar:ComputeBudgetProgram::set_compute_unit_limit(...) instruction’ı ayarlayın — varsayılan 200k CU limiti sessizce tükenecektir.
AMM v4 — manuel Instruction oluşturma
AMM v4’ün Anchor crate’i yoktur.Instruction’ı elle oluşturun:
products/amm-v4/code-demos.
Farm v6 — reward-çift kalan hesaplar
Farm v6’nınDeposit / Withdraw / Harvest’i kalan hesaplarda (reward_vault_i, user_reward_ata_i) çift deseni kullanır. Tam sıra:
farm_state.reward_infos[i].reward_state dışında gönderir.
CPI akışını test etme
Yerel geliştirme, Raydium programlarının test validator’ünüzde mevcut olmasını gerektirir. Seçenekler:-
Program klonla
anchor test—Anchor.tomliçinde:Bu, dağıtılan bytecode’unu mainnet’ten yerel validator’ünüze çeker. -
Devnet — Raydium tüm programları devnet’e mainnet ile aynı program ID’leri ile dağıtır. Canlı koda vurmak için
anchor test --provider.cluster devnetçalıştırın. -
Yerel dağıtım — Raydium repo’larını klonlayın ve yerel validator’e
anchor deployyapın. Test döngüsü ek yükü ekler ancak hata ayıklama için çağrılanı değiştirmenize izin verir.
İşaretçiler
products/cpmm/code-demos,products/clmm/code-demos,products/amm-v4/code-demos,products/farm-staking/code-demos— ürüne özgü CPI örnekleri.sdk-api/anchor-idl— IDL alınması ve müşteri yeniden oluşturması.integration-guides/cpi-integration— daha yüksek düzey desenler: escrow’lar, vault’lar, aggregator bileşimi.

