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.
Stable AMM, AMM v4 ile çoğu talimat setini paylaşır. Benzersiz talimatlar InitModelData ve UpdateModelData olup, bunlar arama tablosunu oluşturur ve günceller. Diğer tüm işlemler (swap, deposit, withdraw, crank) AMM v4 ile aynı yapıyı izler.
Talimat envanteri
| Talimat | Kategori | Notlar |
|---|
Initialize | Yaşam döngüsü | Havuz oluştur (önceden tahsis edilmiş model-data hesabı gereklidir). |
PreInitialize | Yaşam döngüsü | Eski ön-tahsis yardımcısı. |
InitModelData | Model kurulumu | Arama tablosunu oluştur ve başlat. |
UpdateModelData | Model kurulumu | Çağrı başına 5 tablo öğesine kadar doldur. |
Deposit | Likidite | Likidite ekle, LP al. |
Withdraw | Likidite | LP yak, her iki tarafını al. |
SwapBaseIn | Swap | Sabit giriş swapı. |
SwapBaseOut | Swap | Sabit çıkış swapı. |
MonitorStep | Crank | OpenBook’u kapat, siparişleri güncelle. |
SetParams | Yönetici | Havuz parametrelerini değiştir. |
WithdrawPnl | Yönetici | Tahakkuk eden protokol ücretlerini al. |
WithdrawSrm | Eski | SRM indirim geri ödemelerini al (eski). |
SimulateInfo | Tanılama | Salt okunur fiyat teklifi yardımcısı. |
Initialize
Mevcut bir OpenBook piyasasına ve önceden oluşturulmuş bir ModelDataInfo hesabına bağlı yeni bir Stable AMM havuzunu başlat.
Bağımsız Değişkenler
Hesaplar (yazılabilir W, imzacı S)
| # | İsim | W | S | Notlar |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | Havuzun AmmInfo hesabı. |
| 5 | amm_authority | | | Programa geniş PDA. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders. |
| 7 | lp_mint | W | | Gözlemlenebilir LP token basımı. |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | Havuzun coin kasası. |
| 11 | pool_pc_token_account | W | | Havuzun pc kasası. |
| 12 | amm_target_orders | W | | OpenBook siparişleri için ızgara. |
| 13 | model_data_account | | | Arama tablosu hesabı. |
| 14 | serum_program | | | OpenBook programı. |
| 15 | serum_market | | | OpenBook piyasası. |
| 16 | user_dest_lp_token | W | | Yaratıcının LP ATA’sı (başlangıç LP’sini alır). |
| 17 | user_wallet | W | S | Yaratıcı; kira öder, başlangıç mevduatını finanse eder. |
| (opt) | srm_token | W | | Ücret indirimlerine yönelik SRM token hesabı (eski). |
Ön Koşullar
model_data_account önceki bir InitModelData tarafından zaten oluşturulmuş ve başlatılmış olmalıdır.
lp_mint boş olmalıdır (sıfır tedarik).
- Kasalar mevcut olmalı ve
amm_authority tarafından sahiplenilmelidir.
Son Koşullar
AmmInfo tüm başvurularla başlatılır.
TargetOrders sıfırlanır ve ilk MonitorStep için hazır.
- Başlangıç LP tokenleri basılır ve
user_dest_lp_token adresine gönderilir.
- OpenBook siparişleri henüz gönderilmemiştir; ilk
MonitorStep bunları gönderir.
InitModelData
ModelDataInfo hesabını oluştur ve başlat. Initialize öncesinde bir kez çağrılmalıdır.
Bağımsız Değişkenler
multiplier: u64 // ölçek faktörü (örneğin, 10^6)
Hesaplar (yazılabilir W, imzacı S)
| # | İsim | W | S | Notlar |
|---|
| 1 | model_data_account | W | | 50k öğeli tablo hesabı. |
| 2 | amm_admin | | S | Havuz yöneticisi (yetkilendirmeyi kanıtlamak için imzalamalıdır). |
Ön Koşullar
model_data_account yeterince büyük olmalıdır (~1.2 MB için 50k × 24 bayt).
model_data_account Stable programı tarafından sahiplenilmelidir.
Son Koşullar
status = Initialized.
multiplier ayarlanır.
valid_data_count = 0 (henüz hiçbir öğe doldurulmamıştır; eklemek için UpdateModelData çağırın).
elements dizisi sıfırlanır.
UpdateModelData
Tek bir çağrıda 5 tablo öğesine kadar doldur. InitModelData sonrasında ancak swaplar tabloyu kullanmaya başlamadan önce çağrılmalıdır.
Bağımsız Değişkenler
array_data: [UpdateModelData; 5]
pub struct UpdateModelData {
pub index: u64,
pub data: DataElement,
}
Hesaplar (yazılabilir W, imzacı S)
| # | İsim | W | S | Notlar |
|---|
| 1 | amm_admin | | S | İmzacı (havuz yöneticisi olmalıdır). |
| 2 | model_data_account | W | | Tablo hesabı. |
Ön Koşullar
amm_admin AmmInfo.amm_admin ile eşleşmelidir.
array_data içindeki her indeks geçerli olmalıdır (50,000’in içinde).
- Girdiler sıralanmalıdır (hız için on-chain doğrulanmaz): x artan, y azalan, fiyat artan.
Son Koşullar
- Öğeler her giriş için
model_data_account.elements[index] adresine yazılır.
valid_data_count yazılan maksimum indeks + 1 olarak güncellenir.
Yönetim notu: Sıralama düzeni veya fiyat tutarlılığının on-chain zorlanması yoktur. Kötü niyetli veya dikkatsiz bir yönetici tabloyu bozabilir ve yanlış alıntılara neden olabilir. Pratikte, Raydium multisig bu adresi kontrol eder.
Deposit
Likidite ekle, LP tokenleri al.
Bağımsız Değişkenler
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = base on coin, 1 = base on pc
Hesaplar — AMM v4 gibi, ~13 hesap. model_data_account adresini salt okunur şekilde içermelidir.
Matematik — arama tablosunu kullanarak oranı hesaplamak için standart oran. SDK, istenen LP miktarı için coin/pc çiftini hesaplar ve maksimum sınırlarına karşı kontrol eder.
Withdraw
LP yak, her iki tarafı oran olarak al.
Bağımsız Değişkenler
amount: u64 // Yakılacak LP tokenleri
Hesaplar — model_data_account adresini salt okunur şekilde içeren AMM v4 gibi.
Ön Koşullar
user_lp_token_account en azından amount tutmalıdır.
Son Koşullar
amount LP tokenleri yakılır.
- Kullanıcı tahakkuk eden ücretler için ayarlanmış geçerli orana göre coin ve pc tutarlarını alır.
SwapBaseIn
Arama tablosunu fiyatlandırma için kullanan sabit giriş swapı.
Bağımsız Değişkenler
amount_in: u64
minimum_amount_out: u64
Hesaplar (~17 toplam)
| # | İsim | W | S | Notlar |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_open_orders | W | | |
| 5 | amm_target_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | model_data_account | | | Salt okunur arama tablosu. |
| 9 | serum_program | | | |
| 10 | serum_market | W | | |
| 11 | serum_bids | W | | |
| 12 | serum_asks | W | | |
| 13 | serum_event_queue | W | | |
| 14 | serum_coin_vault | W | | |
| 15 | serum_pc_vault | W | | |
| 16 | serum_vault_signer | | | |
| 17 | user_source_token | W | | Kullanıcının giriş token hesabı. |
| 18 | user_dest_token | W | | Kullanıcının çıkış token hesabı. |
| 19 | user_owner | | S | Kullanıcı (işlem imzacısı). |
Ön Koşullar
amm.status swapa izin vermelidir.
user_source_token ≥ amount_in tutmalıdır.
Son Koşullar
- Kullanıcı
amount_in kaybeder, amount_out ≥ minimum_amount_out kazanır.
- Havuz ücretleri
need_take_pnl_* sayaçlarını artırır.
- Doldurulursa OpenBook siparişleri kapanabilir.
Matematik — products/stable/math açıklanan arama tablosu enterpolasyonu.
SwapBaseOut
Sabit çıkış swapı (SwapBaseIn tersi). Aynı hesaplar, farklı matematik yönü.
Bağımsız Değişkenler
max_amount_in: u64
amount_out: u64
MonitorStep
İzinsiz crank: OpenBook doldurmaları kapat, limit sipariş ızgarasını güncelle.
Bağımsız Değişkenler
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Hesaplar (~18 toplam) — salt okunur model_data_account adresini içeren AMM v4 MonitorStep ile aynı.
Ön Koşullar
- OpenBook hesabı başvuruları havuzun bağlı piyasasıyla eşleşmelidir.
Son Koşullar
- Beklemede olan OpenBook doldurmaları havuz kasalarına kapatılır.
- Arama tablosu eğrisine dayanarak yeni limit siparişleri OpenBook’a gönderilir.
TargetOrders güncellenir.
SetParams
Yalnızca yönetici. Havuz parametrelerini değiştir (durum, durum, ücretler, sahip, model-data anahtarı, vb.).
Bağımsız Değişkenler
param: u8 // hangi parametrenin değiştirileceği (Status, State, Fees, vb.)
value: Option<u64> // yeni değer (param sayıysa)
new_pubkey: Option<Pubkey> // yeni adres (param hesap anahtarıysa)
fees: Option<Fees> // yeni ücretler (param Fees ise)
Hesaplar — param’a göre değişir. Her zaman amm_admin adresini imzacı olarak gerektirir.
Yaygın parametreler:
param = 0 (Status) — operasyon bitmask’ini değiştir.
param = 9 (Fees) — trade_fee, pnl bölünmesi vb. değiştir.
param = 11 (ModelDataKey) — arama tablosunu yeniden bağla (nadir, yönetici işlemi gerektirir).
WithdrawPnl
Yalnızca yönetici. Tahakkuk eden protokol ücretlerini need_take_pnl_* adresinden belirlenen PnL hesaplarına al.
Bağımsız Değişkenler — hiçbiri (durum odaklı).
Hesaplar (~14 toplam)
| # | İsim | W | S | Notlar |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_open_orders | W | | |
| 5 | pool_coin_token_account | W | | |
| 6 | pool_pc_token_account | W | | |
| 7 | coin_pnl_dest | W | | Yöneticinin coin hesabı (ücreti alır). |
| 8 | pc_pnl_dest | W | | Yöneticinin pc hesabı (ücreti alır). |
| 9 | pnl_admin | | S | İmzacı (havuz sahipliğiyle eşleşmelidir). |
| 10+ | OpenBook hesapları (~4) | | | Önce beklemede olan doldurmaları kapat. |
Ön Koşullar
pnl_admin yetkilendirilmiş olmalıdır.
Son Koşullar
need_take_pnl_coin ve need_take_pnl_pc yöneticinin hesaplarına aktarılır.
- Sayaçlar sıfırlanır.
WithdrawSrm
Eski (yeni havuzlarda kullanmayın). Eski Serum dönemi havuzlarından SRM ücret indirimi token geri ödemelerini alır.
Bağımsız Değişkenler
SimulateInfo
İstemciler ve SDK için salt okunur fiyat teklifi yardımcısı.
Bağımsız Değişkenler
param: u8 // PoolInfo, SwapBaseInInfo, SwapBaseOutInfo, RunCrankInfo
swap_base_in_value: Option<SwapInstructionBaseIn>
swap_base_out_value: Option<SwapInstructionBaseOut>
Kullanım — swapı yürütmeden fiyat teklifi almak için simulateTransaction aracılığıyla çağrılır.
Sonraki adımlar
- Hesaplar — hesap alanı düzenleri ve boyutları için.
- Matematik — arama tablosu enterpolasyon mantığı için.
- Kod örnekleri — SDK’dan bunların nasıl çağrılacağını görmek için.
Kaynaklar:
raydium-stable/program/src/instruction.rs (enum ve pack/unpack)
raydium-stable/program/src/processor.rs (yürütme mantığı)