钱包弹出零元签名:没转账为何也会丢授权
零元签名会丢授权,因为签的是"授权"而不是"转账"。这类签名请求看似金额为零,但真正的操作藏在签名数据里——一旦确认,你就把钱包里特定代币或 NFT 的"花销权"交给了对方,对方可以在你不知情的情况下随时清空你的资产。
1. 先搞清楚"零元签名"里到底签了什么
链上每一笔交易,无论是否涉及资产转移,本质上都是对智能合约的函数调用。金额只是其中一个参数。
零元签名骗局的典型操作是:攻击者构造一个包含恶意 Hex Data 的交易请求,在钱包里显示的金额为 0,但真正的调用指令编码在交易数据里,常见的有:
approve():授权某合约使用你指定的代币
setApprovalForAll():授权某合约操作你所有的 NFT
increaseAllowance():提高某个地址的代币使用额度
transferFrom():从你的地址转出资产
permit():通过 EIP-2612 离线授权,不需要 Gas 就能完成
这类骗局的核心是"盲签"(Blind Signing)——你看到的是一串看不懂的十六进制数据,实际签的是一个"把资产控制权交出去"的授权。
前置条件:钱包已连接到一个页面(假的空投、假的 DApp、假的 NFT 铸造),页面弹出了签名请求。
2. 为什么叫"零元"却会丢东西
"金额为零"是一种心理诱导,让你觉得"没转钱就没风险"。但攻击者要的根本不是这一笔转账,而是你钱包里已经有的资产。
步骤1:识别"零元签名"的典型特征
特征 1:请求金额为 0 或极小数(如 0.0001 某代币)
特征 2:收款方是一个智能合约地址,而非普通钱包地址
特征 3:钱包界面显示"Hex Data"字段,内容是一长串十六进制字符
特征 4:你没有主动发起交易,只是点了一个"登录""验证""领取"按钮
步骤2:区分"普通转账签名"和"授权签名"
普通转账:签名后资产会立即从你账户转出,一次性完成。
授权签名:签名后资产不会立刻变动,但攻击者获得了"将来随时可以取走你的钱"的权限。
这一步,绝大多数用户是分不清的——签名内容在钱包里往往只显示一串无法理解的哈希值,攻击者正是利用了这一点。
3. 如何检查自己是否已经中了招
步骤3:用授权检查工具扫描你的地址
做什么:访问 Revoke.cash 或 Etherscan 的"Authorizations"栏目,输入你的钱包地址。
怎么做:在列表中查找是否存在你不认识或记忆中没有主动授权的合约地址。特别注意那些授权额度显示为"无限"(Unlimited / 2^256-1)的条目。
做到什么程度算完成:扫描完成后,撤销任何可疑或不必要的授权。
常见失败原因
"当时弹窗显示的是 0 USDT,我想着反正没转钱就确认了"——这是所有受害者的共同心态。实际上,在 Web3 里,"签名"和"转账"是两个完全不同的概念,签名确认不等同于转出资产,但它可以授权别人转出你的资产。
风险提醒:大多数钱包(尤其是无屏幕的硬件钱包)只能执行"盲签",无法在签名前解析并展示这笔操作的真实内容。攻击者已经高度自动化地批量部署诱饵合约,通过伪装成空投、NFT 铸造、DApp 登录等方式撒网。一个签名可能让你在几秒内失去账户内所有可转移资产。
4. 事后补救:如果已经签了不该签的
步骤4:立即撤销授权
做什么:使用 Revoke.cash 或类似工具撤销可疑合约的授权。越快越好。
怎么做:连接钱包后,在工具页面找到授权列表,逐一点击"撤销"或"Revoke"。
做到什么程度算完成:该合约地址不再出现在你的授权列表中。
步骤5:如果资产已被转走,用链上工具追踪资金去向
做什么:在区块浏览器输入你的地址,查看最近的转账记录,确认资产何时、转给了哪个地址。
怎么做:复制转出记录中的目标地址,在区块链浏览器中搜索,查看后续流向。
做到什么程度算完成:你确认了资金流向,有 TxID 作为凭证,可据此向警方报案或联系安全团队。
步骤6:更换钱包(防再次被同一授权利用)
做什么:如果你不确定授权撤销是否 100% 生效,最彻底的办法是把剩余资产转移到另一个全新的钱包地址。
怎么做:创建一个新钱包,备份助记词,将剩余资产转出。不要再用这个地址进行任何交互。
做到什么程度算完成:资产已迁出原地址,原地址余额归零。
如何确认已解决问题
完成上述操作后,去 Revoke.cash 重新扫描你的地址——如果可疑授权条目已消失,说明控制权已收回。如果资产已被盗,你能做的是保存好所有交易记录(TxID、攻击者地址、时间戳),作为后续追索的依据。链上交易不可逆,但及时撤销授权可以防止进一步损失。



