Community写作与编辑github.com

Token-2022 集成防护指南

在你的 Solana 程序中安全地接受任何 Token-2022 铸币,避免被抽干。一个经过测试的 Anchor 防护器,可在链上拒绝恶意铸币,外加一个扫描器。支持 Anchor 1.0 + LiteSVM。专为 Solana AI Kit 构建。

Token-2022 集成防护指南 是什么?

该技能专门针对 Solana 生态系统中 Token-2022 标准的 **消费方**(即集成方)设计。当你的程序需要与不受你控制的第三方 Token-2022 铸币交互时(例如在 AMM、金库、借贷市场、质押或支付流程中),该技能提供了从威胁建模到代码防护、再到自动化测试的完整解决方案。其核心是一个开箱即用的 Anchor 1.0 防护程序,通过链上扩展白名单、增量测量的费用安全存款机制以及防重入提款逻辑,有效防御转移费用、转移钩子、永久委托等已知攻击。此外,该技能还包含一个 CLI 扫描工具 `t22-scan`,可对任意铸币地址进行风险评估并给出集成建议。配套的 LiteSVM 测试用例能够证明防护器在何种攻击下会生效,确保集成安全可靠。该技能与用于创建和检查 Token-2022 铸币的核心技能互补,适用于所有需要安全集成第三方 Token-2022 代币的场景。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add mohit-1710/token2022-integration-guard

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Token-2022 集成防护指南 是做什么的?

作者/检查者 vs 消费者。 该工具包的 token-2022 材料和广泛的代币扩展技能(solana-token-extensions、token-2022-extensions)适用于代币的作者——选择扩展、创建铸币以及一个只读的铸币检查者。 本技能是相反的方面:一个程序如何安全地消费它不控制的第三方铸币。一个铸币是不受信任的输入。在那些技能说 “集成者应使用净额” 的地方,本技能强制执行并测试它——一个防护金库,能够证明份额偿付能力漏洞并在链上阻止它。严格互补;请与它们一起安装。

何时使用本技能

当用户处于 Token-2022 铸币的消费方时使用:

  • 为 AMM、金库、借贷市场、托管、质押或支付流程添加 Token-2022 支持。
  • 决定是否上市/质押/接受特定代币(“这个铸币集成安全吗?”)。
  • 调试“对不上”的份额/LP/托管数学(几乎总是转账费用错误)。
  • 审查移动 SPL 代币的 Anchor/原生程序的 Token-2022 安全性。
  • 编写证明你的集成能抵御恶意铸币的测试。

如果用户想创建一个带扩展的代币,那是发行方——请参考核心 token-2022 技能。

一段话的威胁模型

一个 Token-2022 铸币可以携带改变转账行为的扩展。作为集成方,你必须假设铸币作者是恶意的。危险的有:转账费用使入账金额小于发送金额(破坏 1:1 份额数学);转账钩子在每次转账时运行由发行者控制的代码(重入、拒绝服务、账户注入);永久委托可以随时从你的金库转移/销毁代币;默认账户状态 = 冻结使你新创建的代币账户无法使用;机密转账向你的记账隐藏真实余额;可暂停允许发行者冻结你的提款。默认拒绝。

操作流程

  1. 先扫描。 识别铸币上的每个扩展及其对集成方的影响。 → scanning.md(可运行的 t22-scan CLI)和 extension-risk-matrix.md(每个扩展的含义)。
  2. 根据配置决策。 AMM、金库、借贷和托管对不同扩展的容忍度不同。使用矩阵裁决(ALLOW / HANDLE / REJECT)。
  3. 强化程序。 应用你选择支持的模式:
  4. 用测试证明。 编写加载真实 Token-2022 程序的 LiteSVM 测试,并断言你的防护器阻止了攻击。 → testing.md
  5. 引用来源/深入了解。 → resources.md

路由表

用户正在处理…阅读
“这个铸币集成安全吗?” / 扫描代币scanning.md, extension-risk-matrix.md
份额/LP/托管金额错误,“费用吃掉我的存款”transfer-fee-accounting.md
转账钩子、重入、ExtraAccountMetaList、转账时的 CPItransfer-hook-reentrancy.md
永久委托、冻结权限、默认冻结、收回permanent-delegate-and-freeze.md
“如何在我的程序中拒绝危险铸币?”extension-allowlist-pattern.md
为 Token-2022 边界情况编写/运行测试testing.md
存在哪些扩展以及每个扩展的风险程度extension-risk-matrix.md
来源、审计、DEX 政策、进一步阅读resources.md

本技能包含的内容

制品路径说明
扫描器 CLItools/t22-scan/t22-scan <mint> --profile=vault → 每个扩展的风险裁决 + 用于 CI 的退出码。已对主网真实铸币进行验证。
防护程序examples/guard/一个真正的 Anchor 1.0 金库:链上扩展白名单 + 增量测量的费用安全存款 + 防重入提款。
攻击测试examples/guard/tests/加载真实 spl_token_2022 程序的 LiteSVM 测试,证明漏洞存在,以及防护器能阻止它。

命令与智能体

触发器功能
/scan-mint扫描铸币地址,并根据所选配置报告集成方风险。
/audit-t22-integration审计程序源代码中的 Token-2022 集成错误。
智能体: token2022-integration-auditor生成一个专注的审查者,扫描已配置的铸币并 grep 程序中 transfer 与 transfer_checked、信任金额的数学以及缺少扩展检查的地方。

不可协商的规则(每次集成都适用)

  • 默认拒绝。 拒绝任何你没有明确处理的扩展。未知 TLV = 拒绝。
  • 永远不要信任 amount 参数 来记账。测量收到的增量(reload() + 余额差)或读取费用配置;按实际收到的金额记账。
  • 始终使用 transfer_checked(含铸币地址和小数位数),绝不使用已废弃的 transfer。
  • 锁定代币程序。 设置 token::token_program / associated_token::token_program,使攻击者无法将经典 Token 账户混入 Token-2022 CPI。
  • 在使用时重新验证,而不仅仅是在上市时——铸币的转账钩子程序和费用可以更改。
  • 用测试证明。 提供一个 LiteSVM 测试,该测试在没有你的防护器时失败,在有防护器时通过。

相关技能