资产与安全防盗
中级进阶
代币授权与授权撤销 (Revoke)
Token Approval & Revoke Allowance
所属核心领域
资产与安全防盗
认知学习难度
中级进阶
常用关联别名
钱包授权, 授权撤销, Revoke, Approve, Permit2, 钓鱼签名
权威审校
宇链网事实核查组
一分钟核心速览
ERC-20 协议中允许智能合约支配用户钱包中指定代币的扣款权限机制。未及时撤销的过时无限授权是导致资产被静默盗取的最主要根源。
通俗白话大比方(如果给零基础小白解释)
你在去中心化交易所(如 Uniswap)卖出 USDT 时,钱包必须先弹出一个‘Approve 授权’确认。这相当于你给这家银行网点签了一张‘代扣授权协议’。为了帮用户省去每次都要点一次的 Gas 费,绝大多数 DApp 会默认请求‘无限额度授权’(相当于允许它扣光你钱包里的所有 USDT)。如果你一不小心在黑客制作的高仿钓鱼网站上签了这张无限授权,黑客哪怕没有你的助记词,也可以在几秒钟内把你账户里的代币全部划走。
技术底层深度运作机制
1. 机制起源:ERC-20 规范定义了 `approve(address spender, uint256 amount)` 方法,允许调用者(Spender)通过 `transferFrom()` 划转资金;
2. 无限授权原理:DApp 请求的金额通常设为 `2^256 - 1`(即 `115792089237316195423570985008687907853269984665640564039457584007913129639935`),在智能合约中标记为无限(Unlimited);
3. 授权撤销原理:使用 Revoke.cash 等安全工具向链上发送一笔特殊的交易,将对应 Spender 的 allowance 显式修改重置为 `0`;
4. Permit2 离线签名风险:新型 Permit 机制允许用户使用离线签名授权,无须花费链上 Gas 即可被黑客批量打包代扣,防范难度更高。
2. 无限授权原理:DApp 请求的金额通常设为 `2^256 - 1`(即 `115792089237316195423570985008687907853269984665640564039457584007913129639935`),在智能合约中标记为无限(Unlimited);
3. 授权撤销原理:使用 Revoke.cash 等安全工具向链上发送一笔特殊的交易,将对应 Spender 的 allowance 显式修改重置为 `0`;
4. Permit2 离线签名风险:新型 Permit 机制允许用户使用离线签名授权,无须花费链上 Gas 即可被黑客批量打包代扣,防范难度更高。
实操避坑:三大致命安全红线
- 拒绝对陌生网站无限授权:对于非顶级知名的 DEX 或 NFT 市场,手动将授权额度调整为本次交易所需的精确数字(Exact Amount)。
- 警惕看似无害的 Permit 签名:钱包弹出含有‘Permit’、‘Order’或看不懂的乱码消息签名请求时,极可能是黑客在诱骗免 Gas 划款权限,严禁点击确认。
- 养成定期清理习惯:每个月使用 Revoke.cash 或 Rabby 钱包自带的安全中心,彻底扫描并注销历史冗余的 DApp 授权。
常见高频问答 (FAQ)
Q 为什么我从来没有把助记词给过任何人,钱包里的资产还是被盗了?
A
90% 以上的此类离奇盗窃事件,都源于用户曾点击过虚假的钓鱼空投链接或恶意 DApp 并签署了恶意授权。黑客是通过合法的合约调用划转资金,完全不需要知道你的助记词。
Q 撤销授权需要手续费吗?
A
需要。因为修改链上智能合约中的授权变量状态属于一次真实的区块链状态变更,需要消耗少量的网络 Gas 费(如以太坊主网约 0.5~2 美元,Layer 2 仅几美分)。
