本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
每个 Raydium 程序都至少有一个特权角色——可用于升级程序、创建新配置或提取协议费用的密钥。缩小这些角色的权限范围(并通过带时间锁的多签来管控)是防范管理员被攻陷的首要手段。本页梳理了各角色及其实际安全措施。
各程序的角色
AMM v4
CPMM
CLMM
limit_order_admin 是一个权限刻意收窄的运营角色,目的是让链下 keeper 可以在订单所有者不在线的情况下扫单。keeper 密钥是热密钥(存放在 keeper 虚拟机上),独立于上述多签进行轮换。具体而言,keeper 权限仅限于:
SettleLimitOrder— 按订单限价将已成交部分转入所有者的 ATA。CloseLimitOrder— 关闭已完全结算的订单账户以回收租金(租金归还给订单所有者)。
OpenLimitOrder、IncreaseLimitOrder、DecreaseLimitOrder,无法修改任何池字段,也无法为其他指令签名——这些约束由指令 Accounts 结构体中的 seed 和 has_one 约束在链上强制执行。即使 keeper 被攻陷,最坏的情况也只是 keeper 失联(订单保持挂单状态,直到所有者自行结算),或对合法可成交的订单进行乱序结算/关闭;它无法将用户资金转移到所有者原本授权目的地之外的任何地方。
Farm v6
单个 Farm 没有协议管理员——每个 Farm 的创建者只控制自己的 Farm,且创建者的权限有明确边界(不能没收用户质押,不能更改质押 mint)。
LaunchLab
Launch 没有可以修改曲线或没收募集资金的协议管理员。
程序升级权限
Raydium 的程序使用 Solana 标准的 BPF Loader v3 升级机制。所有程序的升级权限归属于 3/4 Squads 多签。 选择 3/4 的原因:签名者数量足够多,单一密钥被攻陷不足以完成升级;同时数量足够少,协调合法升级仍然可行。四个权限方均为独立的、物理隔离的冷设备签名者,由核心团队成员持有。顺序签名方式防止对同一笔交易进行并行审批;交易设有固定的过期窗口。多签操作定期与 **Solana STRIDE 计划(Asymmetric Research)**合作审查。移除升级权限
Raydium 尚未将任何程序的升级权限设置为 null。协议遵循的原则是:程序需要保持可升级状态(以修复漏洞、添加 Token-2022 等扩展功能、修正集成偏差)。权衡在于:用户需要信任 3/4 多签只会部署经过充分审查的升级。 对于希望使用不可变替代方案的用户,较旧的 AMM v4 程序自上次审计后一直保持稳定;18 个月内零升级。尽管升级权限依然存在,该代码路径实际上已冻结。AmmConfig 权限
创建新的 AmmConfig 需要权限——新的费率档位和 tick 间距须由 3/5 国库多签授权。现有池通过 PDA 引用其 AmmConfig;池的费率档位由 AmmConfig 决定。 管理员能修改现有 AmmConfig 吗? 技术上可以。updateAmmConfig 可由管理员调用。但在实践中,我们避免修改已部署的 AmmConfig,因为这会在用户无感知的情况下改变所有使用该配置的池的经济参数。协议政策是:有变更需求时创建新的 AmmConfig 并迁移。
管理员能通过配置窃取协议费用吗? 不能——AmmConfig 包含费率参数,但不包含协议费用接收地址;后者是每个池独立的不可变地址。
协议费用领取
swap 手续费的一部分(通常为 25 bps swap 费中的 3–12 bps,具体取决于配置)累积到协议费用金库。多签可提取这些累积费用。用户不会看到自己的 LP 余额因此变化——这是协议预先分配的份额,不是 LP 资金。Farm 创建者权限
Farm v6 赋予创建者以下权限:- 为奖励金库注资(添加更多代币)。
- 延长计划(将结束时间向后推移)。
- 在结束时间后调用
withdrawReward以取回金库中未使用的余额。
- 提取用户已质押的 LP。
- 更改质押 mint。
- 追溯修改排放速率(只能通过
setRewards向前调整)。 - 冻结用户的收益提取。
Squads 多签配置
Raydium 针对不同风险面运营两个独立的 Squads 多签,均可通过 Squads Protocol UI 在链上查看。
升级多签的运营特性:
- 24 小时时间锁:任何交易均需等待 24 小时。今天批准的升级最早 24 小时后才能执行,给用户留出应对时间。
- 物理隔离冷设备签名:冷设备已物理移除网卡,仅连接硬件钱包,并通过独立热设备的二维码读取交易数据。
- 顺序签名:只有在第一台冷设备生成并签署交易后,下一台冷设备才能开始签名流程,防止对同一交易进行冲突或并行签名。
- 交易过期:每笔交易设有固定过期窗口,过期交易自动失效。
- TOTP + 物理密钥:用于交易发起和链上广播的热设备均强制启用 TOTP 与物理密钥验证。
- 公开交易队列:任何人都可以在 Squads UI 上监控待处理的升级。
在链上验证权限
验证程序当前升级权限最简单的方式:Authority 不是预期的 Squads 多签地址,则说明存在异常。Raydium 在 reference/program-addresses 上公布了预期的权限地址。
如需查询 AmmConfig / 池管理员角色,请获取链上账户并解码:
历史权限变更
用户注意事项
作为用户/LP/集成方,建议采取以下措施:- 大额配置前检查升级权限:确认其与文档记录的多签地址一致。
- 监控多签活动:Squads UI 显示待处理交易;计划中的升级会提前 24 小时公示,如果你不认可该变更,有时间撤出。
- 制定考虑时间锁的退出策略:如果你在运行自动复投策略,确保退出路径不依赖正在变更的指令。
- 不要假设程序不可变:所有 Raydium 程序均可升级,请将此纳入规划。
集成方常见误区
1. 缓存权限地址
如果你在代码中硬编码了升级权限或管理员多签地址,一旦地址发生轮换,你的验证逻辑就会失效。建议在运行时从reference/program-addresses 获取,或定期刷新。
2. 假设 AmmConfig 稳定不变
新的 AmmConfig 随时可能被创建。你的聚合器/路由器应定期(每小时即可)重新获取完整的配置列表。3. Farm 创建者的恶意行为向量
如果你向信誉不佳的 Farm 存款,创建者可能提前结束 Farm 并取回奖励金库(前提是尚无用户质押)。一旦有用户质押,程序会强制执行按比例的权益分配;取回操作只能获取合理结束后的剩余部分。相关链接
reference/program-addresses— 权威权限地址。security/attack-vectors— 管理员被攻陷的具体表现形式。ray/treasury— 国库及费用收取地址。security/disclosure— 报告疑似管理员相关问题。
- Squads Protocol — 多签 UI。
- Solana BPF Loader 文档 — 升级机制。

