跳转到主要内容

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 自动翻译,所有内容以英文版本为准。查看英文版 →
审计能捕获某些类别的 bug(已知攻击模式、访问控制错误、整数溢出),但也会遗漏其他类别(经济设计缺陷、博弈论操纵、与其他程序的集成 bug)。Raydium 的程序都经过多轮审计;本页列出这些审计并讨论每次审计真正验证了什么。

按程序的审计表

程序审计机构日期报告
Order-book AMMKudelski Security2021 年第二季度查看
集中流动性(CLMM)OtterSec2022 年第三季度查看
更新的 Order-book AMMOtterSec2022 年第三季度查看
质押OtterSec2022 年第三季度查看
Order-book AMM 与 OpenBook 迁移MadShield2023 年第二季度查看
恒定乘积 AMM(CPMM)MadShield2024 年第一季度查看
Burn & Earn(流动性锁定器)Halborn2024 年第四季度查看
LaunchLabHalborn2025 年第二季度查看
CPMM(更新)Sec32025 年第三季度查看
CLMM 更新——限价订单、动态费用、单资产费用Sec32026 年第二季度查看
Neodyme 团队成员也通过 bug 赏金协议进行了大量审查。 Raydium 程序的所有审计报告均镜像在 github.com/raydium-io/raydium-docs/audit/。每家审计机构也在各自的网站上发布报告。

审计覆盖的内容

典型的 Raydium 审计(约 3–6 周,2 名审计员)涵盖:
  • 访问控制——每个特权操作是否正确门禁?
  • 算术——溢出、下溢、舍入方向、定点精度。
  • 账户验证——每个账户是否有正确的所有者、代币铸造、权限?
  • 重入攻击类模式——状态是在 CPI 前还是后更新?
  • PDA 派生——种子在所有位置是否一致?
  • 错误代码和消息——错误条件是否干净地回滚?
  • 代码质量——符合 Rust 习惯、无死代码、无不可达分支。

审计不覆盖的内容

  • 经济博弈论——例如「如果我能免费创建 1000 个池,我能骚扰路由器吗?」
  • MEV / 排序——三明治攻击、通过验证者共谋进行前置交易。
  • 链下基础设施——RPC 可靠性、索引器正确性、前端。
  • 与其他程序的集成——仅在与特定借贷、期权或聚合器合约组合时才出现的 bug。
  • 随时间推移的新兴行为——1000 万个头寸后会发生什么?审计查看小规模测试用例。
这就是为什么审计 ≠ 安全保障。Raydium 通过 bug 赏金、监控和防御工程来补充审计。

发现修复状态

每次审计都会产生发现列表(严重 / 高 / 中 / 低 / 信息性),包括严重性计数和每个发现的状态(已修复 / 已确认 / 不修复)。具体发现细分在此不复述——请直接通过上表阅读各报告。

重大变更后的重新审计

当程序发布重大升级(新指令、新账户字段、新扩展支持)时,Raydium 会委托进行重新审计。上表中列出的 Sec3 2025 年第三季度对 CPMM 的审查和 Sec3 2026 年第二季度对 CLMM(限价订单、动态费用、单资产费用)的审查都是这种重新审计。 重新审计的范围较窄(仅限差异),但它确实是一次真正的重新审计——不仅仅是代码审查。重新审计报告附加在主审计报告之后。

链上验证

已部署程序的哈希应与被审计代码的哈希匹配。任何人都可以验证:
# 拉取已部署的程序字节码。
solana program dump <PROGRAM_ID> program.so

# 在被审计的提交处构建仓库。
git clone https://github.com/raydium-io/raydium-cp-swap
cd raydium-cp-swap
git checkout <audited_commit_hash>
anchor build --verifiable

# 对比。
sha256sum program.so target/deploy/raydium_cp_swap.so
Anchor 可验证构建产生确定性字节码;哈希应完全匹配。如果不匹配,已部署的程序不是被审计的程序——请升级报告。 Raydium 在仓库发布部分发布每次部署的预期哈希。

如何阅读审计报告

非审计员的简短指南:
  1. 跳到发现摘要——一个严重性计数表。如果「严重」计数 >0 且您看到「未解决」状态,深入研究。
  2. 阅读每个发现的描述和状态。 「已在提交 XYZ 中修复」表示已解决;「已确认」表示团队接受了风险;「部分修复」值得仔细查看。
  3. 扫描范围部分。 如果审计未涵盖您关心的指令或账户,该处没有发现并不是安全的证据。
  4. 略读审计员的建议部分。 通常比发现更有用——浮出「我们无法形式化证明但感到不安」的注释。

Bug 赏金集成

审计在部署前运行;bug 赏金在部署后持续运行。Raydium 的赏金计划(security/disclosure)涵盖审计所做的一切,加上:
  • 审计不涵盖的经济攻击。
  • 新集成中发现的 bug。
  • SDK 和链下组件中的实现 bug。
白帽发现在赏金计划中通常比等待下一个审计周期更快获得赔付;激励与快速披露一致。活跃计划托管在 Immunefi:immunefi.com/bug-bounty/raydium/information

历史事件

Raydium 的程序有两个值得注意的现实事件:

池权限利用(2022 年 12 月)

发生了什么: AMM v4 池权限私钥被泄露,允许攻击者排空多个池。 范围: 操作密钥管理,不是程序 bug。审计没有标记代码因为代码是正确的;密钥管理流程是失败之处。 修复: 多签迁移(所有权限角色迁移到 Squads 多签);额外的操作控制。 教训: 审计不覆盖密钥管理。请参见 security/admin-and-multisig

OpenBook 集成冻结(2023 年 1 月)

发生了什么: OpenBook 程序更新改变了账户语义;AMM v4 的 MonitorStep crank 无法结算 PnL,直到 AMM v4 补丁发布。 范围: 集成 bug——两个程序都没错,仅在孤立时。 修复: AMM v4 补丁和协调部署。 教训: 程序 A 的审计不会捕获程序 A 与程序 B 集成中的 bug。正确的工具是集成测试 + 分阶段推出。

指针

来源: