本篇为加密资产领域急救教程,核心解决清除钱包EIP-7702委托时没有Gas无法发交易的实操问题,全程无需向被劫持钱包转入原生币即可完成操作。
清除EIP-7702委托,本质上就是发送一笔指向零地址的0x04类型交易。没有Gas确实发不了这笔交易,但EIP-7702本身支持Gas赞助机制,可以让第三方帮你支付这笔Gas费用。如果攻击者已经劫持你的钱包,往里面打ETH会立刻被转走,Gas赞助就是唯一的可行方案。
最小可行步骤
操作目标:在不向被劫持钱包发送原生币的前提下,清除EIP-7702委托,按顺序执行以下步骤:
第一步:确认委托确实需要清除
打开Etherscan,输入你的钱包地址,查看"More Info"区域的"Authorizations (EIP-7702)"字段。如果显示非零地址,说明委托存在,需要清除。完成标准为你确认Etherscan上显示了一个非零的委托地址。
第二步:生成授权签名(关键步骤)
这一步的核心是:用你的钱包私钥离线签署一条消息,把委托目标指向零地址。这个签名本身不消耗Gas,有两种常用操作方式:
情况A:使用Foundry(推荐,无代码基础也能操作)
执行以下命令:
cast wallet sign-auth \\ --private-key <你的私钥> \\ --chain <链ID> \\ --nonce <当前nonce> \\ 0x0000000000000000000000000000000000000000
注意事项:
nonce是你钱包当前的交易序号。如果不知道该填什么,用cast nonce <地址> --rpc-url查询即可。chain是对应公链的链ID(以太坊主网是1,Polygon是137,以此类推)。
情况B:使用eip7702reset CLI(更自动化)
安装Rust环境后执行:
cargo install eip7702reset eip7702reset clear --rpc-url --gas-limit 50000
这个工具会交互式地提示你输入私钥,无需手动填写nonce。完成标准为你最终得到一个signed_authorization_hex字符串。
第三步:交给Relayer广播(让别人帮你付Gas)
生成离线签名后你仍没有Gas,需要委托一个Relayer(中继者)帮你支付Gas并提交这笔交易,两种可选方案:
情况A:使用Alchemy Wallet API(企业级方案)
Alchemy的undelegateAccount接口通过BSO策略赞助Gas,无需账户持有原生币即可完成清除操作。
情况B:手动找到愿意赞助Gas的第三方
EIP-7702的设计允许任何人(不只是钱包所有者)提交0x04交易,你生成的签名就是交易凭证,Relayer拿着它就能提交清除委托的交易。GitHub上有开源的Gasless Revoke脚本,可以让赞助方提交交易。完成标准为Relayer成功提交清除委托交易,链上状态更新。
失败排查
情况A:签名时报错"Nonce mismatch"
查询你钱包当前的nonce,使用cast nonce <地址>是最快的办法。nonce每完成一笔交易就加1,签名用的nonce必须和广播时的完全一致。
情况B:Relayer提交交易失败,提示"Invalid signature"
检查签名时用的chain_id是否正确。如果是用chain_id = 0签的,理论上在所有链都有效,但部分钱包实现可能存在差异,建议核对链ID参数。
情况C:没有找到愿意赞助Gas的Relayer
可以尝试使用支持EIP-7702的智能钱包客户端,它们通常内置了Gas赞助功能,可直接发起无Gas交易。
情况D:清除后,钱包中仍显示"delegated"
EIP-7702委托清除后,存储和代码会分离,零地址委托只清除了代码指向,存储数据可能还在。如果钱包只查询代码状态,可能会出现误判,用Etherscan直接查代码前缀0xef0100是最准确的校验方式。
验证收尾
清除委托后,打开Etherscan输入你的钱包地址。如果"Authorizations"字段已消失或显示为0x0000000000000000000000000000000000000000,说明委托已成功清除,账户恢复为普通EOA。
操作完成的校验方式:在Etherscan上确认"Authorizations (EIP-7702)"字段为空或显示零地址。如果钱包界面仍有缓存提示,清除浏览器缓存后再次检查即可。



