approve 是你允许某个合约动用你钱包里某种代币的授权,签过之后一直有效,直到你撤销。钓鱼网站常骗你签这类授权或 Permit 签名。查看和撤销可以用 Revoke.cash 或区块浏览器的授权页,撤销本身是一笔链上交易,要付 Gas。
你在去中心化交易所里换一次币,钱包通常会先弹出一个「授权」,再弹出一个「兑换」。很多人点完就忘了第一个弹窗,可它留在链上的效果比第二个更久。如果你只在欧易(OKX)这样的交易所账户里交易,不会遇到这件事;一旦开始用自己的钱包连接去中心化应用,就绕不开它。
approve 授权到底授权了什么?
以太坊上的 ERC-20 代币标准里有一个 approve(spender, amount) 函数:你告诉代币合约,允许 spender 这个地址从你的地址里最多花掉 amount 数量的这种代币。之后对方调用 transferFrom 就能直接转走,不需要你再确认。Revoke.cash 的解释是,代币合约里有一张记录表,记着谁被你授权了、授权多少,每次有人要花你的币,合约先查这张表。
几个性质直接决定风险:
- 授权针对的是一种代币、一个网络上的一个地址。给 A 合约授权 USDT,不影响你的 USDC,也不影响你在别的链上的资产;同名的 USDT 在不同链上是不同的合约,授权也是各链各记各的,稳定币的这种分布方式见 稳定币是什么,USDT 和 USDC 有什么区别。
- 普通的 approve 授权不会自动失效,要你自己撤销。Revoke.cash 的页面写到,被授权的合约可以随时花这些代币,合约一旦被攻破或本来就是恶意的,代币就可能被偷;它举的例子是 2023 年 4 月的 SushiSwap 事件,说明老牌项目也会出事。
- 授权的数量由你签名时的数值决定,很多应用为了省你下一次的 Gas 会默认请求「无限额度」。Ethereum.org 的安全页建议:与合约交互时不要允许无限额度,只授权这次需要的数量。
- 断开钱包连接不等于撤销授权。OKX Learn 的 DEX 文章明确说,断开连接只是结束当前页面的交互,不会撤销已经写在链上的授权。
NFT 的情况略有不同:approve 针对某一枚 NFT,setApprovalForAll 则是授权对方转走你在这个合集里的全部 NFT,多数 NFT 市场用的是后者。
钱包里有 5,000 USDT、只想换 100 USDT,授权多少合适?
假设你的钱包里有 5,000 USDT,打算在某个应用里换 100 USDT。数字是为说明风险敞口而设的假设:
| 你授权的额度 | 应用本次用掉 | 授权剩余 | 如果这个合约之后被攻破,最多可能被动用 |
|---|---|---|---|
| 无限 | 100 | 仍是无限 | 钱包里全部 5,000 USDT(以及之后你再存进来的) |
| 恰好 100 | 100 | 0 | 0,授权已经用完 |
| 500(多给了余量) | 100 | 400 | 400 |
精确授权的代价是下一次再用要重新授权一次,多付一笔 Gas;无限授权省了这笔 Gas,换来的是风险一直挂着。哪种合适,取决于你对这个应用的信任程度和使用频率。对不常用的小项目、领取页,精确额度更稳妥。Gas 为什么每次都要付,见 Gas 费是什么,为什么有币却转不出去。
approve、Permit、Permit2 有什么区别?
| 形态 | 怎么产生 | 要不要付 Gas | 特点 |
|---|---|---|---|
| 普通 approve | 链上交易 | 要 | 钱包通常有授权警告,带额度数值 |
| setApprovalForAll(NFT) | 链上交易 | 要 | 一次授权一个合集的所有 NFT |
| Permit(EIP-2612) | 链下签名,由对方提交上链后生效 | 签名时不要 | 只有部分代币支持;签名本身不会出现在授权列表里 |
| Permit2 | 先对 Permit2 合约做一次授权,之后用签名向其他合约授权 | 首次要,之后签名不要 | 带过期时间;一次签名可以涉及多个代币,更难看懂 |
Permit 的好处是可以只授权刚好够用的额度,也不用多付一笔授权的 Gas。坏处是 Revoke.cash 特别指出的:签名是链下的,不少钱包(Revoke.cash 举了 MetaMask 的例子)对普通授权会弹警告,对 Permit 签名却没有这种警告,看上去像是在「登录网站」,实际上你是在授权。
钓鱼网站怎么利用授权把币转走?
Revoke.cash 的「被盗后怎么办」文章把常见手法归成几类,可以用来对照自己的情况:
- 直接授权给骗子的合约:钓鱼网站让你批准一个由他控制的合约,然后把币转走。
- 一次签名清空多个已授权资产:典型是挂单签名,诱导你签一份「以 0 ETH 出售」的订单,或者针对 Permit2 的签名。文章指出,这类攻击的特点是「一次性」,签一次,已经授权过的资产被一次性拿走。
- 伪装成「Security Update」「Claim」「Claim Rewards」之类的直接转账:这不是授权,是你亲手签了一笔转账,授权列表里看不出来。
判断你被偷的是哪一种,可以看被盗的范围:只丢了一种资产,更像授权或直接转账;多种资产跨多条链、多个地址同时丢,更像助记词泄露,这就不是撤销授权能解决的了,见 助记词保管与泄露应对。授权请求往往来自仿冒页面,页面真假的判断见 搜到的欧易官网是真的吗,钓鱼网站怎么识别。
OKX 的反诈文章还提醒过一点:陌生的代币或转账记录出现在你的钱包里,本身不会让资产受损,风险在于它引导你去批准合约或点链接。对这类记录不要点链接、不要兑换、不要批准。
签名前怎么判断这个授权该不该签?
弹窗出现时,把这几项逐个过一遍,任何一项答不上来就先不签:
| 看什么 | 正常情况 | 需要停下的情况 |
|---|---|---|
| 当前网址 | 是你自己输入或书签进入的 | 来自别人发的链接、搜索广告 |
| 被授权地址(spender) | 能在项目官方文档里对上 | 一串你不认识、查不到来源的地址 |
| 代币和数量 | 与你这次要做的事匹配 | 要求「无限」,或代币与操作无关 |
| 弹窗类型 | 普通授权,有明确警告 | 页面叫「登录」「验证」,实际是签名授权 |
| 事情本身 | 你主动发起 | 页面跳出来说「领取」「安全升级」 |
怎么查看和撤销钱包里的授权?
用 Revoke.cash
Revoke.cash 页面称其支持 80 多个网络,可以连接钱包,也可以直接输入地址(或 ENS 名)查看。步骤:
- 打开 Revoke.cash(自己输入网址或用确认过的书签;Revoke.cash 的说明也建议把常用的加密网站存成书签),连接钱包或输入你的地址。
- 选择要检查的网络。授权按链分开,一条链查一次。
- 加载完成后看到该链上的授权列表。可以按时间排序,怀疑刚中招就选从新到旧;也可以按被授权地址搜索。
- 在目标授权上点「Revoke」,钱包里确认。也可以点额度旁边的铅笔图标,把额度改小而不是完全撤销,适合你还要继续使用的应用。
用区块浏览器
Etherscan 以及 Polygonscan 等同类浏览器也有授权页。Etherscan 的入口在顶部导航「More」菜单下的 Token Approvals,输入地址,选择代币类型(ERC20、ERC721、ERC1155),记得打开「显示所有授权」的开关,然后在目标行点 Revoke。其他链用对应的浏览器,流程相同。
撤销的几点现实
- 撤销是把额度设成 0 的一笔链上交易,需要用该网络的原生币付 Gas。钱包里一点原生币都没有,就撤销不了。
- 撤销只能阻止以后的盗取,不能找回已经丢的币。
- Permit 签名在被对方提交上链之前,不会出现在授权列表里,因为 Revoke.cash 这类工具看不到链下签名。Revoke.cash 说,签名有可能在被激活前取消,但骗子通常会立刻激活,几乎来不及。一旦激活,就能像普通授权一样撤销。
- Permit2 有两层:你对 Permit2 合约本身的授权,和 Permit2 替你发给各个应用的子授权。Revoke.cash 建议不用时撤销前者;后者带有效期,可以等它过期,期限太长就手动撤销或改小。
- 如果你怀疑自己刚在钓鱼页签过挂单类签名,先去撤销对相关合约(比如 Permit2、各 NFT 市场合约)的授权。Revoke.cash 的说明说,这是阻止这类签名生效的唯一办法,而且时间窗口很短。


平时怎么减少授权带来的风险?
- 授权额度按需填写,别点默认的「无限」。Ethereum.org 提到不少以太坊钱包带有额度保护功能,授权弹窗里也留意一下数值栏。
- 每隔一段时间查一遍授权,把不再用的撤销,尤其是用完就不再碰的小项目和各类「领取」页。
- 大额资产放在不参与 DeFi 的地址里,这个地址不要产生任何授权。用于交互的地址只放小额。分地址的思路见 托管钱包、自托管钱包、硬件钱包怎么选。
- 对要你「签名登录」「验证身份」的页面,先确认网址,再看钱包展示的内容里被授权地址(spender)和代币数量是什么。
授权和撤销授权时,最容易犯哪些错?
| 做法 | 后果 |
|---|---|
| 以为断开钱包连接就等于撤销授权 | 授权仍在链上有效,对方合约仍能动用额度内的代币 |
| 总是点默认的「无限」 | 合约或应用一旦出事,敞口是整个余额 |
| 撤销时钱包里没有原生币 | 撤销交易发不出去,授权继续有效 |
| 看到陌生代币空投就去「领取」 | 「领取」页可能就是授权或直接转账的入口 |
| 只撤销了一个地址的授权,却忘了其他链 | 授权按链、按代币分开,其他链上的授权仍在 |
TRON 钱包转不出资产,是授权出了问题吗?
如果你在 TRON 钱包里发现转不出资产,不一定是授权问题。OKX 的帮助文章描述了另一种骗局:骗子诱导你签署一笔修改账户权限的交易,使钱包的控制权被转移,资产看得见却动不了。这属于账户权限(多签)被改,不是代币授权,和代币授权是两回事,处理办法见 OKX 帮助中心对应文章。如果你打算用欧易自家的链上钱包,功能和风险边界见 欧易 Web3 钱包是什么,怎么用。
这篇文章参考了哪些资料
以下资料查阅于 2026 年 11 月 4 日。平台规则可能因地区、账户和时间变化。
- Revoke.cash:What Are Token Approvals? ↗
- Revoke.cash:How to Revoke Token Approvals ↗
- Revoke.cash:What Are Permit Signatures? ↗
- Revoke.cash:What Is Permit2? ↗
- Revoke.cash:What to Do When Scammed? ↗
- Revoke.cash:What Is a Cold Wallet? ↗
- Ethereum.org:ERC-20 token standard ↗
- Ethereum.org:Ethereum security and scam prevention ↗
- OKX Learn:What is a DEX? ↗
- OKX:Common scam tactics ↗
- OKX:TRON Multi-Signature Scams: Can't Withdraw Your Funds? ↗