说明在Token账户启用CPI Guard的步骤、被限制的转账与授权操作,以及它为何不能替代签名和程序权限检查。
CPI Guard是Token账户所有者给跨程序调用加的一道限制,不是代币级总开关。
规范锚点
- CPI Guard配置在Token账户而非mint,账户owner可启用或关闭该保护。
- 启用后Token-2022会拒绝若干由其他链上程序通过CPI发起的转账、授权或关闭账户路径。
- 它不阻止账户owner直接签署的顶层指令,也不能修复调用程序自身的权限或签名漏洞。
账户配置
扩展位于具体Token账户,owner可发指令启用或禁用。一个mint下不同持币账户可以有不同设置。
受限指令
启用后,Token-2022在CPI上下文拒绝受限的转账、授权、关闭等路径,目的在于降低用户把签名交给任意程序后被深层调用滥用。
落到审计记录
| 核验对象 | 本主题动作 | 失败处理 |
|---|---|---|
| 账户配置 | 从Solana Documentation确认Token-2022 CPI Guard如何开启的正式定义,并保存网络、地址与读取时间 | 定义或版本对不上时,不继续套用本文步骤 |
| 受限指令 | 在原始返回、签名消息或交易指令中定位对应字段,不用界面缩写代替 | 找不到原始值时,把结果标为未验证 |
| 测试步骤 | 用Token-2022 Program Source复核实现行为,特别记录可选扩展与权限主体 | 实现与规范语义不一致时,按具体部署重新评审 |
| 能力边界 | 构造一个失败样例,确认客户端会明确拒绝而不是静默修正 | 失败仍被显示为成功时,停止上线并补充状态校验 |
记录Token-2022 CPI Guard时,把“输入快照”和“判断结果”分开。该主题的快照包含原始bytes、字段单位、对象地址、区块高度与Solana Documentation版本;结果注明通过的规则和仍未知的能力边界。这样即使Token-2022 CPI Guard如何开启随后变化,也能复现当时的结论。
Token-2022 CPI Guard的测试至少覆盖正常路径、缺少受限指令、提交前状态改变及客户端不支持当前版本。前几类验证测试步骤边界,最后一类确认产品不会删除字段或改走未经用户确认的回退路径。
测试步骤
用户直接提交的顶层Token指令仍可执行,某些协议必要的CPI也可能因此失败。接入前应在devnet覆盖直接调用与CPI两条测试。
能力边界
它不验证上层程序业务逻辑,也不阻止其他程序修改自己的账户。安全评审仍需检查PDA签名、authority与剩余账户。
来源与复核入口
- Solana Documentation:正式接口、字段与规范语义,https://solana.com/docs/tokens/extensions/cpi-guard
- Token-2022 Program Source:实现路径、兼容性或安全边界,https://github.com/solana-program/token-2022
Token-2022 CPI Guard的资料访问口径为2026-07-17;遇到Draft状态、可升级部署或可变网络参数,应在后续复核日重新读取Solana Documentation。
审计边界
受限制指令清单会随Token-2022程序版本演进,集成应按部署程序和官方源码核对。 相邻知识可继续对照Solana交易模拟、Token-2022扩展。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。