用途
token-antiflash 面向需要在代币合约自身层面抵御闪电贷攻击的 ERC20 项目,用于设计或审查这类合约。它与协议级的 defi-security 技能互补,专注代币内部的防御机制。技能在触发时采用工作流方式,不直接实现全部策略,而是引导开发者逐步决策。
主要能力:七种代币级防御策略
技能提供一份策略决策矩阵,按威胁向量推荐优先级:
- 成本基础追踪(Cost Tracking):按地址记录代币获取成本,将已实现利润限制为成本的可配置倍数。零成本获得的代币(空投、漏洞利用、闪电贷)成本基础为零,利润被封顶或卖出时销毁。
- 合约地址检测(EIP-7702 感知):通过 extcodesize 区分普通 EOA、EIP-7702 委托 EOA(代码长度 23 字节、前缀 0xef0100)与真实合约,阻止合约调用方,同时放行委托 EOA 以免破坏智能钱包体验。
- 同区块冷却(Same-Block Cooldown):按地址记录最近一次转入所在区块号,卖出时要求该区块号严格小于当前 block.number,并处理转账绕过路径。技能特别指出应使用 block.number 而非 block.timestamp。
- 单地址交易量限制:按单笔与按周期(如每日)限制累计交易量,周期以 block.timestamp / period_length 作为映射键。
- 最低余额留存:要求每笔转账在发送方账户保留一个可配置的最小余额,不允许全部转出。
- 抢跑卖出保护:检测大额卖单时调整参数或触发保护机制,技能建议在业务/路由层实现,并可考虑 Uniswap V4 hooks。
- 递增卖出税(税率阶梯):按首次买入时间戳计算持有时长,持有越短税率越高,并防止通过钱包间转账洗白时间戳。
使用方式
技能规定了工作流规则:先评估项目威胁模型(代币类型、价值所在、现实攻击向量);再向开发者展示策略决策矩阵与组合指南,说明各策略在 gas 成本、用户体验摩擦、实现复杂度上的取舍;由开发者选择防护等级或具体策略,技能不预设等级;然后逐项确认关键设计参数;最后才写代码。若开发者明确要求“全部实现”或“最高防护”,则跳过中间步骤直接实现最高组合;若按编号指定策略,则跳到参数确认步骤。
版本兼容性与集成要点
技能给出 OpenZeppelin 版本差异:OZ 5.x(Solidity ≥0.8.20)重写 _update(address from, address to, uint256 amount),钩子运行时状态已更新;OZ 4.x(Solidity <0.8.20)重写 _beforeTokenTransfer(address from, address to, uint256 amount),钩子运行时状态尚未更新、读取的是转账前数据。新项目推荐使用 OZ 5.x。
技能强调,所有策略的状态传播必须在同一个 _update 重写中统一接线,这是最常被遗漏的漏洞点。并强调状态传播统一采用 max() 语义——限制只能延伸、不能缩短;直接赋值会把发送方更短的冷却覆盖到接收方更长的冷却上,从而被利用。文档中给出了成本基础结构体与传播函数、EIP-7702 地址分类函数、税率阶梯结构与查询函数,以及把多种策略接入 _update 的完整示例代码。
适用场景与限制
适用于需要在代币合约层面防闪电贷的 ERC20,例如 meme、社区或 DeFi 生态代币。技能说明所有参数均为设计参考,实际取值应依据项目需求、代币经济与市场状况确定;维护额外映射会增加 gas,需测量对转账 gas 的影响。抢跑卖出保护更复杂,技能明确表示可能不适用于所有项目。关于该技能的收费、价格、平台支持情况,资料未提供。