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.
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
IDL 是什麼
Solana 上的 Anchor 程式會發布 IDL(介面定義語言)檔案,描述其指令、帳戶佈局、錯誤列舉和結構綱要。IDL 是用戶端程式碼產生的真實來源——TS SDK、Rust CPI crate 和第三方用戶端都從中產生(或針對其手動編寫)。 Raydium 為 CPMM、CLMM 和 LaunchLab 發布 IDL。AMM v4、Stable AMM 和 Farm(v3 / v5 / v6)是在 Anchor 之前開發的,或並未使用 Anchor 分發——它們的帳戶結構在 SDK 中手動維護。在哪找到它們
IDL 存放在專用的儲存庫中:| 程式 | IDL 檔案 |
|---|---|
| CPMM | raydium_cpmm/raydium_cp_swap.json |
| CLMM | raydium_clmm/raydium_clmm.json |
| LaunchLab | raydium_launchpad/raydium_launchpad.json |
| AMM v4 | 無官方 IDL——見 raydium-sdk-V2/src/raydium/liquidity/layout.ts 中手動編寫的佈局 |
| Stable AMM | 無官方 IDL——佈局在 SDK 中 |
| Farm | 無官方 IDL——佈局在 SDK 中 |
重新產生 TypeScript 用戶端
Anchor 的程式碼產生器從 IDL 產生一個型別化用戶端:raydium.cpmm.swap(...) 助手,包裝 Anchor 方法以及所有簿記(ATA 建立、轉帳費用調整、計算預算、Token-2022 程式路由)。只有當你需要 SDK 下方的層級時才應重新產生。
重新產生 Rust 用戶端(CPI crate)
Raydium 為具有 IDL 的程式發布 Anchor crate:cpi 功能公開 cpi::accounts::<Ix> 帳戶結構和 cpi::<ix>() 呼叫器——準備好使用的 CPI 包裝器。見 sdk-api/rust-cpi 以了解用途模式。
如果你更喜歡產生全新的繫結:
重新產生 Python 用戶端
沒有官方的 Raydium Python SDK。第三方產生器包括:anchorpy—@coral-xyz/anchor的 Python 移植。從 IDL 產生型別化方法建構器。solders— 低層級 Solana 基本元素(交易、金鑰對、公開金鑰)以 Rust 繫結;在anchorpy下使用。
sdk-api/python-integration 以取得更完整的說明。
IDL 變動政策
Raydium 遵循以下 IDL 穩定性規則:- 指令判別器永遠不會改變。 添加新指令會在列舉末端擴展;現有判別器保持穩定。
- 帳戶結構佈局僅以加法方式演進。 新欄位放在末端,前面加上 on-chain 綱要的大小凸起。現有欄位保持其位移。
- 錯誤列舉代碼僅可追加。 現有錯誤代碼始終表示同一件事。
- 破壞性變動在新程式中發送。 當需要重新設計時,團隊部署一個新程式 ID(例如 CPMM 作為全新程式而不是升級 AMM v4)。舊池繼續在舊程式上運行;新池走向新程式。
IDL 變動時該做什麼
- 更新 SDK。
npm update @raydium-io/raydium-sdk-v2。 - 重新產生你的用戶端程式碼,如果你直接使用 Anchor 程式碼產生。
- 比較帳戶佈局。 新佈局的尾部欄位是你的程式碼未見過的唯一東西;確認你是否需要它們。
- 不要假定舊指令判別器無效。 根據規則 1,它們仍然有效。
- 在上線到主網前,對 devnet 重新執行整合測試。
IDL 故障排除
「無效判別器」錯誤
通常表示使用 IDL 版本 N 建構的用戶端正在嘗試呼叫僅在程式部署前版本中存在的指令。重新提取活動程式的 IDL:帳戶解碼失敗
如果program.account.<Name>.fetch(pubkey) 拋出「無效帳戶判別器」,則帳戶由前一個程式版本建立,Anchor 拒絕其 8 位元組判別器。修復方法是使用 SDK 中的原始佈局分析器(PoolInfoLayout.decode(accountData)),它不強制執行 Anchor 判別器。
產生的用戶端中遺漏指令
Anchor 的 TS 程式碼產生器僅為 IDL 項目產生方法,其name 可解析為有效識別符。Raydium 的指令都滿足此條件,但如果你看到不匹配,檢查 IDL 檔案是否來自當前 SDK 版本。
指標
sdk-api/rust-cpi— 使用 Rust CPI crate。sdk-api/python-integration— 透過anchorpy的 Python。sdk-api/typescript-sdk— 更高層的 TS 用戶端。


