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.
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Apa itu IDL
Program Anchor di Solana menerbitkan file IDL (Interface Definition Language) yang mendeskripsikan instruksi, tata letak akun, enum error, dan skema struct mereka. IDL adalah sumber kebenaran untuk pembuatan kode klien — TS SDK, crate Rust CPI, dan klien pihak ketiga semuanya dihasilkan dari (atau ditulis tangan terhadap) IDL. Raydium menerbitkan IDL untuk CPMM, CLMM, dan LaunchLab. AMM v4, Stable AMM, dan Farm (v3 / v5 / v6) mendahului Anchor atau dengan cara lain tidak didistribusikan oleh Anchor — struktur akun mereka dipertahankan secara manual di SDK.Tempat menemukannya
IDL berada di repositori khusus:| Program | File IDL |
|---|---|
| CPMM | raydium_cpmm/raydium_cp_swap.json |
| CLMM | raydium_clmm/raydium_clmm.json |
| LaunchLab | raydium_launchpad/raydium_launchpad.json |
| AMM v4 | tidak ada IDL resmi — lihat raydium-sdk-V2/src/raydium/liquidity/layout.ts untuk tata letak yang ditulis tangan |
| Stable AMM | tidak ada IDL resmi — tata letak ada di SDK |
| Farm | tidak ada IDL resmi — tata letak ada di SDK |
Membuat ulang klien TypeScript
Codegen Anchor menghasilkan klien yang diketik dari IDL:raydium.cpmm.swap(...) yang membungkus metode Anchor ditambah semua bookkeeping (pembuatan ATA, penyesuaian biaya transfer, anggaran komputasi, Token-2022 program routing). Buat ulang hanya ketika Anda memerlukan lapisan di bawah SDK.
Membuat ulang klien Rust (crate CPI)
Raydium menerbitkan crate Anchor untuk program yang memiliki IDL:cpi mengekspos struct akun cpi::accounts::<Ix> dan invoker cpi::<ix>() — pembungkus CPI yang siap digunakan. Lihat sdk-api/rust-cpi untuk pola penggunaan.
Jika Anda lebih suka membuat binding segar:
Membuat ulang klien Python
Tidak ada SDK Python Raydium resmi. Generator pihak ketiga meliputi:anchorpy— port Python dari@coral-xyz/anchor. Menghasilkan pembuat metode yang diketik dari IDL.solders— primitif Solana tingkat rendah (transaksi, keypair, pubkey) dalam binding Rust; digunakan di bawahanchorpy.
sdk-api/python-integration untuk panduan yang lebih lengkap.
Kebijakan perubahan IDL
Raydium mengikuti aturan ini untuk stabilitas IDL:- Diskriminator instruksi tidak pernah berubah. Menambahkan instruksi baru memperluas enum di akhir; diskriminator yang ada tetap stabil.
- Tata letak struct akun berkembang hanya secara aditif. Field baru masuk di akhir, didahului oleh kenaikan ukuran dalam skema on-chain. Field yang ada menyimpan offset mereka.
- Kode enum error hanya append. Kode error yang ada selalu berarti hal yang sama.
- Perubahan breaking dikirim dalam program baru. Ketika redesain diperlukan, tim menerapkan ID program baru (misalnya CPMM sebagai program segar daripada upgrade AMM v4). Pool lama terus berjalan di program lama; pool baru masuk ke pool baru.
Yang harus dilakukan ketika IDL berubah
- Update SDK.
npm update @raydium-io/raydium-sdk-v2. - Buat ulang kode klien Anda jika Anda menggunakan Anchor codegen secara langsung.
- Diff tata letak akun. Field trailing tata letak baru adalah satu-satunya hal yang belum dilihat kode Anda; konfirmasi apakah Anda membutuhkannya.
- Jangan asumsikan diskriminator instruksi lama tidak valid. Menurut aturan 1, mereka masih bekerja.
- Jalankan kembali pengujian integrasi terhadap devnet sebelum menerapkan ke mainnet.
Troubleshooting IDL
Kesalahan “Invalid discriminator”
Biasanya berarti klien yang dibangun terhadap versi N dari IDL mencoba memanggil instruksi yang hanya ada dalam versi program pre-deploy. Tarik ulang IDL dari program live:Kegagalan decode akun
Jikaprogram.account.<Name>.fetch(pubkey) melempar “Invalid account discriminator”, akun dibuat oleh versi program sebelumnya dan Anchor menolak diskriminator 8-byte-nya. Perbaikannya adalah menggunakan parser tata letak mentah dari SDK (PoolInfoLayout.decode(accountData)) yang tidak memberlakukan diskriminator Anchor.
Instruksi yang hilang di klien yang dihasilkan
Codegen TS Anchor hanya menghasilkan metode untuk instruksi yang entri IDL-nya memilikiname yang diuraikan sebagai pengidentifikasi valid. Instruksi Raydium semuanya memenuhi ini, tetapi jika Anda melihat ketidaksesuaian, periksa apakah file IDL berasal dari rilis SDK saat ini.
Petunjuk
sdk-api/rust-cpi— menggunakan crate Rust CPI.sdk-api/python-integration— Python melaluianchorpy.sdk-api/typescript-sdk— klien TS tingkat lebih tinggi.


