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.
Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
IDL là gì
Các chương trình Anchor trên Solana công bố một tệp IDL (Interface Definition Language) mô tả các instruction, layout account, enum error và các schema struct của chúng. IDL là nguồn sự thật cho việc tạo mã client — TypeScript SDK, Rust CPI crate và các client của bên thứ ba đều được tạo từ (hoặc viết tay dựa trên) nó. Raydium công bố IDL cho CPMM, CLMM và LaunchLab. AMM v4, Stable AMM và Farm (v3 / v5 / v6) có thời gian trước Anchor hoặc không được phân phối bằng Anchor — cấu trúc account của chúng được duy trì thủ công trong SDK.Nơi tìm chúng
IDL nằm trong một kho riêng biệt:| Chương trình | Tệp IDL |
|---|---|
| CPMM | raydium_cpmm/raydium_cp_swap.json |
| CLMM | raydium_clmm/raydium_clmm.json |
| LaunchLab | raydium_launchpad/raydium_launchpad.json |
| AMM v4 | không có IDL chính thức — xem raydium-sdk-V2/src/raydium/liquidity/layout.ts để xem layout viết tay |
| Stable AMM | không có IDL chính thức — layout trong SDK |
| Farm | không có IDL chính thức — layout trong SDK |
Tái tạo client TypeScript
Codegen của Anchor tạo ra một client được gõ từ IDL:raydium.cpmm.swap(...) cấp cao hơn, cái mà bao bọc các method Anchor cộng với tất cả công việc kế toán (tạo ATA, điều chỉnh phí chuyển, ngân sách tính toán, định tuyến chương trình Token-2022). Chỉ tái tạo khi bạn cần một layer dưới SDK.
Tái tạo client Rust (CPI crate)
Raydium công bố các crate Anchor cho các chương trình có IDL:cpi tiếp xúc các struct account cpi::accounts::<Ix> và các invoker cpi::<ix>() — những wrapper CPI sẵn sàng sử dụng. Xem sdk-api/rust-cpi để biết các mẫu sử dụng.
Nếu bạn thích tạo binding mới:
Tái tạo client Python
Không có SDK Python chính thức của Raydium. Các trình tạo của bên thứ ba bao gồm:anchorpy— bản sao Python của@coral-xyz/anchor. Tạo ra các method builder được gõ từ IDL.solders— các nguyên thủy Solana cấp thấp (giao dịch, keypair, pubkey) trong các binding Rust; được sử dụng bên dướianchorpy.
sdk-api/python-integration để có một hướng dẫn đầy đủ hơn.
Chính sách thay đổi IDL
Raydium tuân theo các quy tắc này để ổn định IDL:- Các instruction discriminator không bao giờ thay đổi. Thêm instruction mới mở rộng enum ở cuối; các discriminator hiện có vẫn ổn định.
- Các layout struct account chỉ phát triển bổ sung. Các trường mới đi ở cuối, được đặt trước bằng một bước tăng kích thước trong schema on-chain. Các trường hiện có giữ lại offset của chúng.
- Các mã enum error chỉ được nối thêm. Một mã lỗi hiện có luôn có cùng ý nghĩa.
- Các thay đổi ngắt gửi trong các chương trình mới. Khi cần thiết kế lại, nhóm triển khai một ID chương trình mới (ví dụ: CPMM như một chương trình mới thay vì nâng cấp AMM v4). Các pool cũ tiếp tục chạy trên chương trình cũ; pool mới đi vào chương trình mới.
Phải làm gì khi IDL thay đổi
- Cập nhật SDK.
npm update @raydium-io/raydium-sdk-v2. - Tái tạo mã client của bạn nếu bạn sử dụng Anchor codegen trực tiếp.
- So sánh layout account. Các trường kéo dài thêm của layout mới là điều duy nhất mã của bạn chưa thấy; xác nhận liệu bạn có cần chúng.
- Không giả định rằng các instruction discriminator cũ là không hợp lệ. Theo quy tắc 1, chúng vẫn hoạt động.
- Chạy lại các bài kiểm tra tích hợp chống devnet trước khi triển khai đến mainnet.
Khắc phục sự cố IDL
Lỗi “Invalid discriminator”
Thường có nghĩa là một client được xây dựng dựa trên phiên bản N của IDL đang cố gắng gọi một instruction chỉ tồn tại trong phiên bản chương trình trước triển khai. Kéo lại IDL từ chương trình trực tiếp:Lỗi giải mã Account
Nếuprogram.account.<Name>.fetch(pubkey) ném ra lỗi “Invalid account discriminator”, account đó được tạo bằng phiên bản chương trình trước và Anchor đang từ chối discriminator 8 byte của nó. Sửa chữa là sử dụng bộ phân tích layout thô từ SDK (PoolInfoLayout.decode(accountData)), cái mà không thực thi các discriminator Anchor.
Thiếu instruction trong client được tạo
Codegen TS của Anchor chỉ tạo các method cho các instruction có mục IDL cóname được phân tích cú pháp như một định danh hợp lệ. Tất cả các instruction của Raydium đều thỏa mãn điều này, nhưng nếu bạn thấy sự không phù hợp, hãy kiểm tra xem tệp IDL có phải từ bản phát hành SDK hiện tại không.
Con trỏ
sdk-api/rust-cpi— sử dụng các crate Rust CPI.sdk-api/python-integration— Python quaanchorpy.sdk-api/typescript-sdk— client TS cấp cao hơn.


