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 daha yeni programları (CPMM, CLMM, Farm v6, LaunchLab) Anchor ile yazılmıştır — Solana’nın yerel program modelinin üzerine hesap doğrulaması, hata işleme ve IDL (arayüz tanımı) sağlayan bir Rust çerçevesi. AMM v4 ve eski farm’lar Anchor’dan öncedir. Her iki paradigmayı anlamak kodu okumanıza, IDL’den istemci oluşturmanıza ve beklenmedik hataları ayıklamanıza yardımcı olur.
Program dağıtım modeli
Her Solana programı birPubkey adresinde yaşar. Programın bayt kodu, BPF Yükseltebilir Yükleyici (BPFLoaderUpgradeab1e11111111111111111111111) tarafından sahip olunan bir yürütülebilir hesapta depolanır.
Bir program dağıtımı üç hesaptan oluşur:
- Program hesabı: programın kimliğinde küçük bir meta veri hesabı. Sahibi: BPF Yükseltebilir Yükleyici.
- ProgramData hesabı: gerçek bayt kodunu tutar.
[program_id, "programdata"]olarak türetilir. - Buffer hesabı (geçici): yükseltme sırasında yeni bayt kodu tutar. Yükseltmeden sonra silinir.
security/admin-and-multisig.
Dağıtılan bir programı doğrulama
Zincir üzerindeki kodun denetim onaylı kaynakla eşleştiğini doğrulamak için:Anchor: Solana’nın üzerine bir çerçeve
Ham Solana programları bu imzaya sahip Rust işlevleridir:- Her talimat ve her hesap türü için belirleyici bir 8 baytlık ayırıcı otomatik olarak oluşturur.
- Kodunuz çalışmadan önce hesap kısıtlamalarını doğrular (sahibi, seed’ler, yazılabilir, imzalayan, mint eşleşmesi, token-program eşleşmesi).
- İstemcilerin programı çağırmak için kullandığı bir IDL — arayüz tanımı dosyası oluşturur.
- Rust, TypeScript ve Python istemci tarafı kütüphanesiyle birlikte gelir.
8 baytlık ayırıcı
Her Anchor hesabı ve her Anchor talimatı, sabit bir dizenin SHA-256’sinin ilk 8 baytı olan bir 8 baytlık ayırıcıyla başlar:getProgramAccounts gibi bir türün tüm hesaplarını numaralandıran araçlar için çok önemlidir.
Hatalar
Anchor programları#[error_code] aracılığıyla hataları tanımlar:
reference/error-codes içindedir.
IDL
Bir Anchor IDL (Arayüz Tanımı Dili) dosyası, bir programın JSON tanımıdır: talimatları, hesapları, türleri, hataları ve olayları. Ethereum ABI’nin eşdeğeridir. Raydium tüm Anchor programları için IDL’ler yayınlar. Zincir üzerinden canlı olarak getir:src/raydium/*/idl/*.json.
IDL yapısı
IDL’den istemci oluşturma
Anchor’unanchor CLI’si TypeScript ve Rust türleri oluşturur:
IDL’nin arkadaş olduğu zaman
Raydium SDK’sı aracılığıyla gitmeyen özel bir entegrasyon oluşturmak istiyorsanız:- IDL’yi getir (zincir üzerinden canlı veya SDK kaynağından).
- İstediğiniz talimatı ara (örn.
swap_base_input). - Talimat verilerini oluştur: 8 baytlık ayırıcı + kodlanmış argümanlar.
- Hesapları IDL’nin belirttiği sırada geç.
sdk-api/anchor-idl bölümüne bakın.
Anchor Öncesi Programlar: AMM v4 ve Farm v3/v5
Bu programlar Anchor’dan öncedir. Şunları kullanırlar:- Manuel talimat gönderimi:
instruction_dataiçinde biru8etiketi ve birmatchifadesi. - Manuel hesap doğrulaması:
if accounts[0].owner != &expected_program { ... }. - Borsh serileştirilmiş talimat argümanları: ayırıcı yok, sadece
instruction_data[1..]. #[repr(C, packed)]aracılığıyla düzen: C-yapı ikili düzeni.
Program yükseltme mekanikleri
Yalnızca ProgramData’nınupgrade_authority yükseltebilir. Adımlar:
- Yeni bayt kodu derle.
- Bunu bir buffer hesabına yaz (
solana program write-buffer). - Bir yükseltme talimatı gönder:
BpfLoaderUpgradeable::Upgrade { buffer, program, authority }. - Çalışma zamanı, programın bayt kodunu buffer’ın içeriğiyle atomik olarak değiştirir.
security/admin-and-multisig.
Bir programı değişmez hale getirme
Yükseltme yetkisiNone olarak ayarlanabilir, bu noktada program kalıcı olarak değişmez hale gelir. Raydium bunu hiçbir ürün için yapmamıştır — takım güvenlik düzeltmeleri itme yeteneğini korur. Ödünleşim: kullanıcılar multisig + zaman kilidi sürecine güvenmelidir.
Programlar ve kira
Bir program dağıtmak kira muaf lamport’lar tüketir:- 50 KB program: ~0,35 SOL kira.
- 200 KB program: ~1,4 SOL kira.
solana program close aracılığıyla) lamport’ları geri verir. Raydium programları etkin kalır ve kapatılmak için planlanmamıştır.
Anchor programlarında hata ayıklama
Günlük çıktısı
Anchor’unmsg! makrosu işlemin günlüğüne yazar. Günlükleri görmek için bir işlemi simüle et:
- Program çağırması (
Program CPMMoo8... invoke [1]). - Program kodundan
msg!çağrıları. - İşlem birimi tüketimi (
consumed 137842 of 400000 compute units). - Program başarısı veya hatası.
Hata kodları
Bir Anchor programı hata verirse, günlük şunu gösterir:SlippageExceeded). IDL’nin errors dizisiyle çapraz referans yapın.
Raydium’un tam hata tablosu için reference/error-codes bölümüne bakın.
Hesap düzeni uyuşmazlıkları
Yanlış hesabı yanlış yuvaya geçirirseniz, Anchor’un hesap doğrulama makroları şu gibi hatalar döndürür:ErrorCode enum’unu görün); ≥6000 hataları programın özel kodlarıdır.
İşaretçiler
solana-fundamentals/account-model— programların hesapları nasıl sahip olduğu.solana-fundamentals/pdas-and-cpis— Anchor’un bildirdiği PDA’lar.sdk-api/anchor-idl— Raydium’un IDL’lerini getirme ve kullanma.reference/program-addresses— program kimlikleri.reference/error-codes— hata kodu referansı.security/admin-and-multisig— yükseltme yetkisi kontrolleri.
- Anchor belgeleri.
- Solana program dağıtımı.
- Raydium IDL’leri (SDK
src/raydium/*/idl/*.jsoniçinde yayınlanmıştır).

