你父亲去世三年了,他钱包里还有一笔资产没动过。你拿着助记词恢复成功,刚想转账,突然发现钱包里的 USDC 少了一多半——被一个三年前他授权过的旧合约转走了。
这不是段子。2025 年超过 100 万美元级别的安全事件中,38% 是通过 Permit 式授权进行的。更常见的是用户几年前给某个 DApp 做了无限授权,后来项目方升级了合约或项目本身停运,但链上的授权记录永久有效。攻击者不需要你的私钥,只需要一个存在漏洞或已沦为恶意的合约,就能调用 transferFrom() 把资产转走。
DeFi 仓位的继承,不只是"取回质押资产",更是"清理所有合约权限"。不把这部分处理干净,你的执行人拿到钱包的那一刻,资产就已经暴露在风险里了。
为什么继承场景下,旧授权特别致命?
正常情况下,你会定期检查自己的授权。但你死了之后,执行人拿到钱包的第一反应是"转账",不是"查授权"。
而且链上授权不会自动过期。你三年前给 Uniswap V2 做的 USDT 无限授权,到今天依然有效。更麻烦的是,如果那个旧合约后来被黑客盯上、存在漏洞,或者项目方换了新合约但旧合约没关停,攻击者就能通过旧合约的漏洞调用你的 transferFrom() 权限,把资产转走。
2025 年的数据印证了这一点:网络钓鱼类攻击(包括恶意授权)造成的损失接近 7.23 亿美元。还有 Alchemix 用户因提前授权了一个恶意合约,被攻击者利用漏洞转走了约 100 万美元的 yvWETH 仓位——漏洞不在 Alchemix 协议本身,而在用户预先授权的那个合约。
这就是为什么"继承前先清理授权"不是可选项,是必须项。你的执行人很可能不知道,他恢复钱包后做的第一件事,应该是去 Revoke.cash 看一眼,而不是急着转账。
步骤 1:用工具扫描所有链上的历史授权
你得先搞清楚,这个钱包地址到底给哪些合约开过"后门"。
[做什么]:使用授权管理工具,扫描钱包地址在每条链上的所有 ERC-20 授权记录。
[怎么做]:
打开 Revoke.cash(主流的跨链授权撤销工具),连接钱包,选择对应的链(Ethereum、BNB Chain、Polygon 等),页面会列出所有有效的授权记录,包括授权对象(合约地址)、授权额度(是否无限)、授权时间。
也可以用钱包内置的工具:imToken 的"授权管理"功能(EVM 及 Layer2 钱包通过"浏览"页搜索 Revoke.cash),TokenPocket 的"授权检测"功能(点击"更多工具"进入)。
[完成标准]:你或执行人能看到一份完整的授权列表,包含每个授权的合约地址、额度(无限/具体数量)、以及授权时间。
步骤 2:区分"该撤的"和"该留的"
不是所有授权都要撤销。正在用的协议(比如你还在 Aave 里存着钱),撤销了会中断操作。需要优先清理的是三类:
| 授权类型 | 判断标准 | 操作建议 |
|---|---|---|
| 高危对象 | 授权给不知名合约/个人地址,或仿冒知名 DApp 的合约(可在区块浏览器查看,部署时间短、调用次数少即为高危) | 立即撤销 |
| 过度授权 | 额度为"无限"或明显超出实际交易需求 | 立即撤销 |
| 古早授权 | 授权时间较早,且当前已不再使用的 DApp(比如三年前用过一次就再也没打开的协议) | 立即撤销 |
对那些还在用的 DeFi 协议,如果显示是"无限授权",建议在执行人接手后也换成"按需授权"——手动改为本次交易的实际所需额度,而不是默认同意无限。
[完成标准]:你扫出来至少 2-3 个"已停用但仍挂着授权"的旧合约,并且已经列入了撤销清单。
步骤 3:执行撤销(Revoke)
撤销授权本质上是一笔链上交易:调用被授权合约的 approve 函数,把授权额度修改为 0。
[做什么]:通过工具提交撤销交易,等待链上确认。
[怎么做](以 Revoke.cash 为例):
连接钱包后,在列表中找到需要撤销的授权,点击"Revoke"或"取消授权"。
钱包弹出签名请求,确认 Gas 费后提交。
等待交易被链上确认(确认时间取决于网络拥堵情况和 Gas 价格)。
[完成标准]:授权记录从列表中消失(或显示额度为 0)。注意:撤销授权需要支付对应网络的 Gas Fee。如果钱包里没有对应链的原生币(ETH、BNB 等),执行人需要先转入少量 Gas 费才能完成撤销。
常见失败原因:以为"断开钱包连接"就等于撤销授权
很多人会在 DApp 前端点"Disconnect Wallet",以为这样就把权限收回来了。这是错的。断开连接只是切断前端界面和钱包的会话,链上的授权记录依然存在。
取消授权唯一的路径是发起一笔链上的 Revoke 交易,把授权额度改回 0。
风险提醒
如果你在多个链上都有资产,每条链的授权是独立的。在以太坊主网上撤销了授权,不影响你在 BNB Chain 或 Arbitrum 上的授权。执行人需要在每条持有资产的链上分别做一次扫描和撤销。建议在遗产清单中明确写出"恢复钱包后,先在 Revoke.cash 上检查所有链的授权,确认无异常再进行转账"。
操作完成的校验方式
做完撤销后,做一次最终校验:
在 Revoke.cash 或钱包授权检测页面刷新列表,确认已撤销的授权条目不再出现。
在区块浏览器中查看撤销交易的 Logs,找到
Approval(address indexed owner, address indexed spender, uint256 value)事件,确认value字段为 0。小额的测试转账:从恢复后的钱包转出 10 USDC 到交易所或其他地址,确认转账成功,且过程中没有异常授权被调用。
建议执行人完成资产转移后,将原钱包地址的所有授权一次性清零,然后新建一个钱包用于后续操作,避免遗留任何历史风险。



