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 自动翻译,所有内容以英文版本为准。查看英文版 →
AMM 是恶意代码的诱人目标:LP 的资金完全可见地存放在池中;每次交换都确定性地改变价格。本页列举了针对 AMM 的已知攻击类别、它们对 Raydium 的具体影响,以及 Raydium(和集成方)如何防御。
1. 三明治攻击 / MEV 攻击
攻击原理
机器人监听内存池/八卦流,发现用户的交换交易,用相同方向的买入进行前置运行(推高价格),让用户交易以更坏的价格执行,然后用相反方向的卖出进行后置运行。机器人赚取价差利润。暴露程度
- 最容易受影响:低 TVL CPMM 池和 AMM v4 池 — 即使小额交易也会显著改变价格。
- 风险较低:深度 CLMM 池 — 同档位内的交易不改变价格。
- 无风险:农场收获、LP 存入(比例强制,不像价格那样敏感)。
防御措施
- Jito 捆绑 (
integration-guides/routing-and-mev) 隐藏交易不在公开内存池显示。 - 紧张的滑点 — 最小输出额接近预期价格会使三明治攻击无利可图。在 ~0.3% 以下,大多数三明治攻击会亏钱。
- 较小的交易大小 — 将 $100k 交换拆分为 10× $10k;每笔交易对价格的影响更小。
Raydium 的态度
Raydium 的核心程序不强制执行反 MEV 保护 — 它们在程序层面是中立的。保护发生在提交层(Jito、钱包的内置保护)。UI 默认滑点为 0.5%,对大多数池来说是合理的。2. 价格操纵
攻击原理
大型交易者临时改变池的价格(通过闪电贷或自筹资金),触发某些依赖价格的下游操作(清算、基于预言机的借贷、衍生品支付),然后将价格恢复正常。暴露程度
- 原生 Raydium 操作:无风险。池内交换往返只产生往返费用;交易者亏钱。
- 集成程序:如果它们天真地读取 Raydium 池价格,则暴露于风险。
防御措施
- 使用 TWAP(时间加权平均价格),而非现货价格,以支持组合性(参见
security/oracle-and-token-risks)。 - CLMM ObservationState 提供短窗口 TWAP,无法在没有持续资本承诺的情况下被操纵。
- 多预言机共识:如果你的程序读取 Raydium、Pyth、Jupiter,仅在它们在 1% 内一致时才采取行动,单个来源的闪电贷操纵是不够的。
Raydium 的态度
CLMM 附带 ObservationState TWAP 支持;忽略它并使用现货价格的集成方自己承担风险。Raydium 的前端为 USD 显示使用多个价格来源。3. 捐赠 / 通胀攻击
攻击原理
新池的首个 LP 存入极小数量(例如 6 位小数的每种代币 1 个 → 发行 1 个 LP 单位)。然后攻击者通过 SPL Token 转账直接向池金库”捐赠” 1,000,000 个代币。现在 1 个 LP 单位代表每种代币的 500,000 个。随后存入少于这个数量的 LP 会被舍入为 0 LP 单位并失去存款。暴露程度
- CPMM / AMM v4:新建的、流动性低的池可能暴露于风险。
- CLMM:无风险(没有共享 LP 铸币;每个头寸都是自己的 NFT,有明确的流动性值)。
防御措施
CPMM 的initialize 指令将最小 LP 数量锁定到池中(受 Uniswap V2 的 MINIMUM_LIQUIDITY 模式启发)。这意味着首个 LP 接收 sqrt(x × y) - MINIMUM_LIQUIDITY,其中 MINIMUM_LIQUIDITY(1000 单位)被销毁到零账户。捐赠攻击要求攻击者捐赠 >> 初始存款的金额,这变得不经济。
此外,Raydium 的 SDK 在初始存款很小时会大声发出警告,并引导用户使用合理的金额。
Raydium 的态度
MINIMUM_LIQUIDITY 锁定在 CPMM 中实现;AMM v4 有类似机制。创建池的用户应该用至少 10,000+ 个代币单位进行初始种子注入,以在任何情况下使捐赠攻击都不经济。
4. Token-2022 传输 hook 滥用
攻击原理
代币的传输 hook 可升级。攻击者在代币发布时部署无害的 hook,在 Raydium 上获得列表,从用户累积 LP。后来,升级 hook 以阻止所有传输(有效地软撤离 — 用户无法提取)。攻击者使池仅在一个方向上可交易,廉价买入 LP,解锁 hooks,赢家。暴露程度
包含传输 hook 代币的池。防御措施
- 程序级别:Raydium 程序在交换期间调用 hook;如果 hook 阻止,交换将恢复。这不会在机制上阻止攻击。
- UI 级别:Raydium 标记带有传输 hook 代币的池。
- 集成方级别:聚合器应默认跳过传输 hook 代币,仅允许列表验证过的 hooks。
Raydium 的态度
Raydium 不禁止传输 hook 池(合法的 hooks 存在),但清晰标记它们。在tags.includes("TRANSFER_HOOK") 上过滤的聚合器可以根据需要排除。
5. 组合性 / CPI 利用
攻击原理
程序通过 CPI 组合 Raydium 并引入漏洞:例如,它传递错误的observation_state、CLMM 交换的错误 tick 数组,或二次花费一个账户。攻击者识别有问题的组合并利用。
暴露程度
- 有问题的集成方 — 通常是漏洞的来源。
- Raydium — 仅当漏洞在 Raydium 程序本身中触发意外行为时。
历史示例
Raydium 的程序都没有通过 CPI 被利用 — Raydium 的账户验证器捕获格式不当的账户并恢复。更广泛的生态系统中的利用发生在与 AMM 组合但不源自 AMM 的自定义程序漏洞。防御措施
- 调用程序在可能的情况下应使用 Anchor CPI 帮助程序(不是手工构建的指令) — 类型安全捕获大多数滥用。
- 针对主网分叉状态的集成测试覆盖组合情况。
6. 管理员 / 密钥泄露
攻击原理
管理员密钥(升级权限、AmmConfig 管理员、协议费用声称)被泄露。攻击者部署恶意升级来排干池,或修改 AmmConfigs 以将费用路由到攻击者钱包,或排干协议费用。暴露程度
security/admin-and-multisig 中记录的所有角色。
防御措施
- 3/4 多签 在升级权限上需要泄露 4 个独立的签署者。
- 24 小时时间锁 在升级上给用户时间在恶意升级激活前进行展开。
- 操作监控 — 通过 Squads 的公开队列对任何多签活动的警报。
历史事件
AMM v4 的池权限密钥在 2022 年 12 月被泄露(前多签)。修复:将所有权限移到 Squads 多签。修复后,无事件发生。7. CLMM tick 数学的经济攻击
攻击原理
复杂的攻击者利用 CLMM tick 数学中的舍入或费用计算边缘案例。在其他 CLMM 实现中发现的示例(不是 Raydium):- 针对用户舍入、累积灰尘的费用增长计算。
- 信用/借记错误 fee_growth delta 的 tick 穿越。
sqrtPrice * liquidity乘积中的整数溢出。
暴露程度
复杂的定制数学。审计和模糊测试是主要防御。Raydium 的态度
CLMM 已经进行了两次独立审计(OtterSec + MadShield)加上持续的基于属性的模糊测试。迄今为止没有发现生产影响的漏洞。sqrt_price_x64 Q64.64 算术使用饱和 128 位数学和涵盖边界 ticks 的单元测试。
8. Position-NFT 混淆
攻击原理
用户被诱骗签署将其 CLMM position NFT 转移给攻击者的交易。攻击者现在拥有该头寸的流动性。暴露程度
任何 position NFT 持有人。防御措施
- 钱包 UI 应识别 Raydium position NFT 并区别显示它们(不是作为通用 NFT”发送”)。
- 用户应警惕签署转移 NFT 的交易。
Raydium 的态度
Position NFT 实现 Metaplex 的元数据标准;理解 CLMM 头寸的钱包应用程序将其显示为流动性头寸而非可交易 NFT。截至 2026 年,大多数主要的 Solana 钱包都特殊地显示它们。9. 农场奖励流操纵
攻击原理
农场创建者为奖励金库提供资金,吸引质押者,然后以使待处理奖励计算不稳定的参数调用restartRewards,窃取收获值。
暴露程度
具有恶意创建者的农场。Farm v6 严格限制创建者权力;这个攻击不起作用。防御措施
Farm v6 的管理指令(setRewards、restartRewards、addReward)保留按比例权利 — reward_per_share 在变更时刻调整,所以预更改应计不被追溯损坏。
Raydium 的态度
OtterSec 的农场审计专门测试了重启奖励场景;没有发现利用。10. 模拟与执行分歧
攻击原理
攻击者构造一个交易,模拟成功但在执行时恢复(或反之)。用来骚扰依赖模拟进行显示的钱包。暴露程度
基于模拟显示”你将收到 X”的钱包。防御措施
- 使用
simulateTransaction和与实际提交相同的区块哈希。 - 将预期输出显示为”≈“(约)而非确切值。
- 在提交前立即重新模拟。
Raydium 的态度
CLMM 模拟在给定当前池状态下是确定性的;分歧仅在模拟和执行之间状态改变时发生(正常情况,通过滑点界限处理)。汇总表
| 向量 | Raydium 特定 | 防御位置 | 用户的剩余风险 |
|---|---|---|---|
| 三明治 / MEV | 是 | 提交层(Jito、滑点) | 低(如使用 Jito) |
| 价格操纵 | 仅组合性 | 使用 TWAP | 低(如使用 TWAP) |
| 捐赠攻击 | CPMM | MINIMUM_LIQUIDITY | 低 |
| Transfer-hook 滥用 | Token-2022 池 | UI 标记 | 中等(未验证 hooks) |
| CPI 利用 | 集成方的漏洞 | Raydium 验证器恢复 | 低(漏洞留在集成方) |
| 管理员泄露 | 所有程序 | 多签 + 时间锁 | 低(24h 反应) |
| CLMM tick 数学 | CLMM | 审计 + 模糊测试 | 低 |
| Position NFT 混淆 | CLMM | 钱包 UX | 低(现代钱包) |
| 农场操纵 | Farm v6 | 受限创建者权力 | 低 |
| 模拟分歧 | 任何 | 钱包 UX | 低 |
用户可以做什么
- 默认使用紧张的滑点;仅在需要时提高。
- 使用启用 Jito 的钱包/交换流。
- 在 LP 前验证代币扩展。
- 监控 Squads 多签待处理升级。
- 跨池多样化;不要将所有 LP 集中在一个新上线池。
集成方可以做什么
- 对衍生品定价使用 ObservationState TWAP。
- 通过 CPI 组合时验证账户约束。
- 按
tags字段过滤池(跳过scam、honeypot、未验证的 transfer-hook)。 - 设置合理的滑点界限;不接受用户输入的 0 滑点。
- 小心使用
simulateTransaction— 记录它是估计值。
指针
security/oracle-and-token-risks— Token-2022 风险深入。security/admin-and-multisig— 权限结构。security/disclosure— 漏洞奖励程序。integration-guides/routing-and-mev— MEV 缓解。
- Rekt News — 通知本列表的 DeFi 事后分析。
- 在
security/audits中链接的审计报告。


