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 不會接受任意 Token-2022 代幣。CPMM 和 CLMM 都運行嚴格的許可清單模式:只有一小部分擴展預設通過;其他所有擴展在建立流動性池時都會被拒絕。一些信任的代幣透過硬編碼位址被認可;CLMM 另外支援管理員管理的每個代幣登記表以及執行時 Superstate 代幣偵測。本頁是單一參考頁面,說明執行的內容以及位置,並附上程式原始碼的檔案和行號引用。
程式級別支援
| 程式 | Token-2022 基礎/報價代幣? | 模式 |
|---|---|---|
| CPMM | 可以 — 受限 | 嚴格的擴展許可清單 + 4 個代幣靜態白名單。 |
| CLMM | 可以 — 受限 | 嚴格的擴展許可清單 + 6 個代幣靜態白名單 + 管理員每個代幣登記表 + Superstate 偵測。 |
| AMM v4 | 否 | 程式發佈於 Token-2022 之前;兩個代幣都必須是經典 SPL Token。 |
| Stable AMM | 否 | 與 AMM v4 相同的限制。 |
| Farm v6 | 是,部分 | 獎勵代幣可以是 Token-2022(受相同許可清單限制,當農場包裝 CPMM/CLMM LP 時);使用者質押的 LP 代幣繼承自包裝的池。 |
| LaunchLab | 是,由程式管理 | 基礎代幣可以是 Token-2022,但只能透過專用的 initialize_with_token_2022 指令;程式本身建立具有 MetadataPointer(總是)和可選 TransferFeeConfig(速率 ≤ 5%)的代幣。具有任意擴展的預先存在的 Token-2022 代幣無法用作基礎。 |
| Burn & Earn | 鏡像池程式 | 繼承 CPMM / CLMM 門控。 |
- CPMM:
is_supported_mint在raydium-cp-swap/programs/cp-swap/src/utils/token.rs:178,從Initialize呼叫。 - CLMM:
is_supported_mint在raydium-clmm/programs/amm/src/util/token.rs:280,從CreatePool呼叫。 - LaunchLab:
initialize_with_token_2022在raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(原始碼未公開)。
CPMM 和 CLMM 擴展許可清單
在靜態白名單短路後(下面涵蓋),程式會遍歷代幣的擴展,如果它帶有除了這五個以外的任何擴展,就會拒絕該代幣:| 擴展 | 允許的原因 |
|---|---|
TransferFeeConfig | 池數學會減去入站費用;Token-2022 程式處理出站費用。見 algorithms/token-2022-transfer-fees。 |
MetadataPointer | 裝飾性 — 指向鏈上中繼資料。 |
TokenMetadata | 裝飾性 — 內聯中繼資料。 |
InterestBearingConfig | 池看到本金數額;UI 乘數只是裝飾品,底層餘額保持不變。 |
ScaledUiAmount | 與計息相同形狀 — 比例因數僅適用於 UI 顯示。 |
TransferHook、NonTransferable、ConfidentialTransferMint、PermanentDelegate、MintCloseAuthority、DefaultAccountState、GroupPointer、GroupMemberPointer、MemberPointer、Pausable 等 — 會導致 is_supported_mint 返回 false 並且池建立還原。
相關行(CPMM,CLMM 中形狀相同):
cp-swap/src/utils/token.rs:190–200
繞過路徑
不符合許可清單的 Token-2022 代幣仍可透過三個明確繞過之一被認可。它們會在擴展遍歷執行前按順序嘗試。1. 靜態代幣白名單
一個常數MINT_WHITELIST 陣列,包含 base58 字串,在每個程式中硬編碼。如果代幣的位址匹配,函數立即返回 true,不執行任何擴展檢查。
| 程式 | 白名單代幣 |
|---|---|
| CPMM | HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM、Crn4x1Y2HUKko7ox2EZMT6N2t2ZyH7eKtwkBGVnhEq1g、FrBfWJ4qE5sCzKm3k3JaAtqZcXUh4LvJygDeketsrsH4、2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo |
| CLMM | 前四個,加上 DAUcJBg4jSpVoEzASxYzdqHMUN8vuTpQyG2TvDcCHfZg、AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9 |
2. 每個代幣登記表 — 僅 CLMM
CLMM 另外查詢種子為[b"support_mint", mint] 的 SupportMintAssociated PDA。如果該 PDA 對代幣存在,無論其擴展集如何,它都被認可。
PDA 由 CreateSupportMintAssociated 建立(admin/create_support_mint_associated.rs)。指令受限於兩個簽署者:
crate::admin::ID— 標準 Raydium 管理員權限。crate::create_support_mint_associated_owner::ID— 用於此目的的專用權限:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(主網)、rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(開發網)。
3. Superstate 偵測 — 僅 CLMM
CLMM 有第三條路徑專門針對 Superstate 的代幣化資產,它們使用ScaledUiConfig 擴展,鏈接到 CLMM 程式的 spl-token-2022 版本無法解開。CLMM 不升級依賴,而是透過其權限形狀偵測 Superstate 代幣:
raydium-clmm/programs/amm/src/util/token.rs:485
如果所有四個都成立,代幣會通過此分支:
- 其擁有程式是 Token-2022 程式。
- 其凍結權限等於
superstate_allowlist::ID。主網:2Yq4T3mPNfjtEyTxSbRjRKqLf1pwbTasuCQrWe6QpM7x。開發網:3TRuL3MFvzHaUfQAb6EsSAbQhWdhmYrKxEiViVkdQfXu。 - 其
DefaultAccountState擴展設定為Frozen。 - 其永久代理人也是
superstate_allowlist::ID。
繞過不豁免的內容
繞過會跳過擴展許可清單,但程式仍然執行:- 代幣由
Token或Token-2022擁有。自訂代幣程式會在上游被拒絕。 - 池保管庫使用 Token-2022 池的正確 ATA 擴展建立(
ImmutableOwner等)。 - 所有轉帳都通過
transfer_checked— 費用承載代幣在保管庫中登陸正確的數額。
TransferHook 的代幣,不會獲得交換時間檢查;掛鉤會在每次轉帳時執行,可能導致交換失敗。因此,白名單是高信任操作。
「被阻止」語義
當is_supported_mint 返回 false 時,池建立會還原為 ErrorCode::NotSupportMint(CPMM)/ ErrorCode::NotSupportMint(CLMM)。有關數字代碼,見 reference/error-codes。
現有池無法回溯性地失敗此檢查 — 門控僅在建立時執行。代幣擴展對於 Raydium 拒絕的類別是不可變的(轉帳掛鉤、不可轉帳、機密轉帳無法在建立後添加),所以靜態檢查是充分的。
為什麼排除每個擴展
- TransferHook — 在每次轉帳時呼叫自訂程式,具有任意 CU 消耗、任意失敗條件,以及重新進入呼叫程式的能力。不存在安全沙箱。一些 DEX 維護掛鉤許可清單;Raydium 沒有。
- NonTransferable —
Transfer總是失敗。池無法接管保管權。 - ConfidentialTransfer — 轉帳數額是加密的;曲線無法為交換定價。
- PermanentDelegate — 代理人的持有者可以掃除任何代幣帳戶,包括池保管庫。僅允許透過靜態白名單用於信任的發行者(例如,受監管的穩定幣)。
- MintCloseAuthority — 代幣可以關閉;現有池變為不可用。預設不允許。
- DefaultAccountState (Frozen) — 池 ATA 會登陸在
Frozen狀態中,需要按帳戶解凍。僅允許透過 Superstate 偵測,假設發行者在登記時解凍機構帳戶。 - Group/Member pointers — 不是主動有害,但未經審查。預設不允許以保持表面狹窄。
轉帳費用會計
對於帶有TransferFeeConfig 的代幣,每次交換、存款和提款移動少於名義數額。SDK 會顯示計算的兩個部分:
amountIn + token2022FeeIn作為「你發送」amountOut - token2022FeeOut作為「你接收」feeAmount作為池費用(LP + 協議),與 Token-2022 轉帳費用分開
amountIn → amountOut 的天真 UI 會低估成本。
maximumFee 上限
Token-2022 轉帳費用按轉帳上限。對於 1% 的代幣,上限為 10,000 個代幣,100,000,000 個代幣的轉帳只支付 10,000 費用。SDK 的 computeSwapAmount 會應用上限;直接程式呼叫者必須複製它。
期限過渡
代幣權限可以計劃在下一個期限激活的費率變化。在過渡窗口期間,兩個配置(older、newer)同時存在於代幣上,TransferChecked 按當前期限選擇。CPMM SwapV2 和 CLMM SwapV2 都在 accounts 中傳遞完整的代幣帳戶,所以程式讀取正確的配置而無需額外查詢。
如果您透過 Trade API 或 SDK 提前一個以上期限報價,執行費用可能與報價費用不同 — 受舊配置的 maximum_fee_basis_points 限制。
計息和 ScaledUiAmount
池持有本金數額;「UI 數額」是本金乘以時間相關或管理員設定的比例因數。交換數學在本金上運行:pool.token0Vault.amount 視為本金。
「Token-2022 池」定義
如果任一代幣的programId == TokenzQdB...,池就是 Token-2022 池。API 會顯示這一點:
programId 進行分派,使用 hasTransferFee 來顯示 UI 警告。
SDK 輔助工具
常見整合錯誤
- 只預先檢查程式 ID。 代幣可以是 Token-2022且不受支援。在允許池建立前,針對許可清單(和靜態白名單)檢查擴展清單。
- 當代幣根本不被接受時信任 SDK 的報價。 報價 API 不拒絕報價 — 池建立是還原的。在 UI 中公開池建立前,確認
is_supported_mint語義離線。 - 報價時不考慮轉帳費用扣款。 兩側都有 1% 轉帳費用代幣的 0.25% CPMM 池的有效費用約為 2.25%,而不是 0.25%。使用 SDK 報價或 Trade API 報價 — 永遠不要從池的費用層級單獨手動計算費用。
- 在 Token-2022 池上呼叫舊版
Swap指令。Swap發佈於 Token-2022 之前。每當任一代幣是 Token-2022 時,都使用SwapV2。 - 自動列出新的 Token-2022 代幣。 錢包和聚合器應在向使用者顯示代幣前檢查
TransferHook和NonTransferable;兩者都是 Raydium 不相容的。
未來工作
Solana 生態系統和協議路線圖項目,會改變此矩陣:- 在 Solana 級別允許列出的轉帳掛鉤程式(生態系統慣例進化)。
- 機密轉帳相容的 AMM(研究階段)。
- 更廣泛的 CPMM 每個代幣登記表(與 CLMM 的對等)。
- 依賴升級,使 CLMM 的
ScaledUiConfig解碼在沒有 Superstate 啟發式的情況下工作。
指標
algorithms/token-2022-transfer-fees— 交換中的費用數學。products/cpmm/instructions—SwapV2、Initialize。products/clmm/instructions—SwapV2、CreatePool、CreateSupportMintAssociated。reference/error-codes— 每個程式的NotSupportMint數字代碼。
raydium-cp-swap/programs/cp-swap/src/utils/token.rs—MINT_WHITELIST、is_supported_mint。raydium-clmm/programs/amm/src/util/token.rs—MINT_WHITELIST、superstate_allowlist、is_superstate_token、is_supported_mint。raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs— 每個代幣登記表指令。raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs— LaunchLab Token-2022 基礎代幣建立。


