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 自動翻譯,所有內容以英文版本為準。查看英文版 →
Raydium 的產品程式是獨立程式碼庫,但設計時遵循一套共同的約定。本頁是這些約定的權威參考。各產品章節說明這些約定在其帳戶中如何實例化;本頁則說明約定本身。
這裡「共享」的含義
程式碼庫中存在三種共享方式:- 約定共享。 每個程式都使用相同的 PDA 衍生模式、相同的費用分割形狀和相同的觀測帳戶理念——但每個都在自己的程式中用自己的種子實現。
- 帳戶共享。 少數帳戶在許多池中字面上是同一筆記錄(CPMM 中的全域權限 PDA、AmmConfig 帳戶)。
- 鏈下共享。 一個 REST API 和一個 TypeScript SDK 支撑所有四個程式。整合者與一個 HTTP 主機和一個 NPM 套件互動,無論最終呼叫哪個程式。
1. 權限 PDA
每個 Raydium 程式都有一個 PDA,擁有其代幣金庫。使用者永遠不直接持有金庫權限——權限 PDA 是唯一能移動資金的簽署者,且只在有效程式指令指示時才簽署。 模式在各產品中相同;種子不同:| 程式 | 權限 PDA 種子 | 備註 |
|---|---|---|
| AMM v4 | [poolId] | 每個池的權限。與 v4 的每池設計形狀相同。 |
| CPMM | [b"vault_and_lp_mint_auth_seed"] | 所有 CPMM 池共享的單一 PDA。 無池特定種子。 |
| CLMM | [b"pool_vault_and_lp_mint_auth_seed"] | 在所有 CLMM 池間共享的單一 PDA。 |
| Farm v3 / v5 / v6 | [farmId] | 每個農場。PDA 擁有該農場的質押 + 獎勵金庫。 |
| LaunchLab | [b"vault_auth", launchId] | 每次啟動。擁有畢業前的基礎 + 報價金庫。 |
- 對於 CPMM 和 CLMM,權限 PDA 是全域帳戶——該類型的每個池都使用它。如果你是 CPI 進入 CPMM,你需要它一次,不是每個池。
- 對於每池/每農場權限,你從池/農場 ID 衍生 PDA。SDK 在
getPoolKeys/getFarmKeys中執行此操作;如果你直接整合,使用findProgramAddressSync衍生。 - 金庫所有權無法改變。 一旦以權限 PDA 作為所有者建立代幣帳戶,只有那個 PDA(由程式調用)能轉出。沒有管理員覆蓋。
products/cpmm/accounts、products/clmm/accounts、products/amm-v4/accounts、products/farm-staking/accounts、products/launchlab/accounts。
2. 管理和設定帳戶
CPMM 和 CLMM 共享一個設定帳戶模式,稱為AmmConfig:一個小全域帳戶,由 u16 索引,持有應用於整個費用等級的費率和管理目的地。池在建立時綁定到設定,永遠不重新綁定。
- 費用等級是全域的。 當池說「這是 0.25% 的池」時,意思是它綁定到其
trade_fee_rate在建立時為 0.25% 的 AmmConfig。沒有每池費率覆蓋。 - 設定可以改變但池不跟隨。 如果設定權限編輯 AmmConfig,綁定到該設定的每個現有池立即採納新費率。這是一個特性,不是錯誤;這就是協議級經濟變化如何在沒有每池遷移的情況下傳播。
disable_create_pool是棄用槓桿。 當費用等級日落時,協議多簽設置此標誌——現有池繼續運作但沒有新池可以選擇該等級。protocol_owner/fund_owner是費用收集呼叫的簽署者。將它們設置為多簽是什麼閘門費用提取。它們不是費用本身的目的地址;那是同一帳戶上的protocol_fee_destination/fund_fee_destination。
AmmConfig——其費用參數是每池,在建立時硬編碼。Farm 和 LaunchLab 有自己的等效物(FarmConfig、LaunchConfig),在各自章節中涵蓋。
關於誰可以改變什麼的完整表格在 security/admin-and-multisig。目前面向使用者的費用分割在 ray/protocol-fees。
3. 協議 / 基金 / 創作者費用分割
每個 CPMM 和 CLMM 交換費都在輸出時分配給多達四個目的地:- 交易費累積到池中。 費用從交換的輸入端移除,扣費後金額是恆定乘積數學看到的內容。這就是「LP 獲得費用」的含義——
k上升,所以每個 LP 代幣的隱含價值也上升。 - 協議/基金/創作者份額從該 LP 端累積扣除到每池計數器帳戶。 它們在池狀態上(
protocol_fees_token{0,1}、fund_fees_token{0,1}等),直到有人呼叫CollectProtocolFee/CollectFundFee/CollectCreatorFee。它們不會在那之前離開池的金庫;從交換的角度它們仍然「在池中」。 - 收集會移動它們。 各自的簽署者(AmmConfig 上的
protocol_owner/fund_owner鑰匙,或 LaunchLab 池的啟動建立者)呼叫收集指令,程式從池金庫轉出到目的地 ATA。
- 分割百分比來自交易費,不是交易。 0.25% 交易費加 12% 協議份額意思是協議獲得
0.25% × 12% = 0.03%的交易——不是交易的 12%。 - 創作者費只存在於 LaunchLab 畢業池。 標準 CPMM/CLMM 池有三向分割(LP / 協議 / 基金)。LaunchLab 添加第四個槽位路由給誰啟動了代幣,在
Initialize設定且不可改。 - AMM v4 只分裂兩種方式,每池硬編碼:LP 和協議。沒有基金槽位,沒有創作者槽位。
- 基金 vs 協議——都是協議庫房目的地,但有不同的簽署者和不同的預期用途。
protocol歷史上資助營運;fund是長期庫房。兩者之間的分割本身是可調的。
reference/fee-comparison 和 ray/protocol-fees。
4. 觀測帳戶(TWAP 環形緩衝區)
CPMM 和 CLMM 都為每個池維護一個觀測帳戶——一個(timestamp, cumulative_price) 樣本的固定大小環形緩衝區,其他合約可以用來衍生操縱抵抗的 TWAP。
- 每次交換呼叫
update_observation。 程式讀取目前價格,乘以自上一觀測以來經過的秒數,並將其加入累積計數器。新條目覆蓋最舊槽位(環形緩衝區方式)。 - 時間窗口上的 TWAP =
(cumul[end] − cumul[start]) / (timestamp[end] − timestamp[start])。消費者選擇兩個觀測括住所需窗口並除。 - Raydium 本身不使用 TWAP 進行定價。 AMM 數學直接讀取現貨儲備。觀測是外部性——Raydium 支付寫入成本,所以其他合約可以讀取。
- AMM v4 沒有觀測帳戶。 它比 ObservationState 設計更舊;想要 v4 TWAP 的整合者必須從日誌歷史在鏈下計算。
products/cpmm/accounts 和 products/clmm/accounts。
5. REST API + SDK + IDL
鏈下表面是每個產品使用的單一三人組:- REST API —
https://api-v3.raydium.io。所有鏈上狀態的讀取為主的索引視圖加上報價引擎。一個主機,一個模式。 - TypeScript SDK — NPM 上的
@raydium-io/raydium-sdk-v2。為每個程式構建和簽署交易。與 API 交談以獲取報價/元資料,與 Solana RPC 交談以進行簽前狀態刷新。 - IDL 登錄冊 — Anchor IDL 為每個發佈的程式存放在
raydium-idl倉庫中(每個程式一個 JSON:CPMM、CLMM、LaunchLab)。TypeScript SDK 在內部消費這些 IDL;下游 Rust / Python 客戶端從相同檔案重新生成。
| 部分 | 讀取自 | 寫入到 | 陳舊容許 |
|---|---|---|---|
| REST API | 索引器(解析鏈日誌) | —(對整合者為唯讀) | 幾秒 |
| SDK | API + RPC | 構建交易;不廣播 | 無——必須在簽前重新取得狀態 |
| IDL | 程式源 | — | 按程式升級版本化 |
sdk-api/,IDL 表面特別在 sdk-api/anchor-idl。
6. 索引器和價格饋送
REST API 由 Raydium 自己的索引器饋送,該索引器訂閱來自 Solana RPC 車隊的程式日誌,並將非正規化記錄寫入 SQL 存儲。對整合者的兩個後果:- 索引器是唯一「知道」跨程式狀態的東西。 將 CPMM 池映射到其 CLMM 對應物、計算跨程式版本的 24h 交易量、拾取與 LP mint 相關的農場——所有這些都是索引器工作。程式本身不執行。
- 索引器停機是 API 停機。 如果 API 返回陳舊或空資料,索引器是嫌疑人。鏈上狀態不受影響;有自己 RPC 和 SDK 的整合者可以繼續交易。
priceUsd 欄位;這是從索引器池儲備視圖和引用價格快照的鏈下計算(USDC 池作為常見樞紐)。它對 UI 足夠好;它對使用鏈上預言機不安全。用觀測 TWAP。
什麼不共享
明確列出很值得,因為新讀者經常假設比實際存在的更多共享:- 程式不彼此呼叫。 CPMM 交換永遠不 CPI 進入 CLMM 或 AMM v4。組合多個 AMM 的唯一程式是 AMM 路由程式——那個本身很薄,只是順序發出 CPI 進入每個 AMM。
- 跨程式沒有共享升級權限。 每個鏈上程式有自己的程式升級鑰匙(3/4 多簽加 24h 時間鎖)。它們不鏈接。
- 農場和 AMM 間沒有共享狀態。 農場不知道它質押的哪個 LP 來自 CPMM 池、CLMM 頭寸 NFT mint 或不相關的 SPL 代幣。農場程式將質押 mint 視為不透明。
- 沒有預言機依賴。 定價在鏈上儲備。沒有 Pyth/Switchboard 備用;AMM 在清除前不檢查預言機。
指針
protocol-overview/architecture— 顯示這些部分如何組成的權威圖表。protocol-overview/versions-and-migration— 約定如何在程式版本中演變。security/admin-and-multisig— 誰控制 AmmConfigs 後面的鑰匙。reference/fee-comparison— 每個產品的費率矩陣。reference/program-addresses— 權威程式 ID。
- Raydium SDK v2 — PDA 種子、帳戶配置和 IDL 定義的真實來源。
- Raydium IDL 登錄冊 — Anchor IDL。
- 上面內嵌引用的各產品帳戶頁面。


