要点速览
- 代币授权允许某个合约动用你钱包里的指定代币,授权会长期有效,直到你主动取消或额度用完。
- 无限授权最省事也最危险,被授权的合约一旦出问题,可以转走你该代币的全部余额。
- Permit 签名不花 Gas 却能产生授权效果,是目前常见的钓鱼手法之一,看不懂的签名请求应当拒绝。
- 可以用 Revoke.cash 或区块浏览器的授权查询工具检查授权,取消授权是一笔链上交易,需要支付 Gas。
- 取消授权只能防止后续损失,不能追回已被转走的资产;钱包助记词泄露时,取消授权没有用,必须换新钱包。
本文包含交易所邀请链接,通过链接注册本站可能获得返佣,不影响你的费用。内容仅供学习参考,不构成投资建议。合作说明
很多人在钱包被盗后都会困惑:我没有泄露助记词,也没有主动转账,币怎么就没了?在相当多的情况下,原因是代币授权:你曾经在某个网站上点过「授权」或「签名」,允许一个合约动用你的代币,而这个合约后来出了问题,或者从一开始就是钓鱼合约。
这篇文章讲清楚代币授权的原理、无限授权和 Permit 签名的风险,并一步步教你用 Revoke.cash 等工具检查和取消授权。适合已经在使用 MetaMask、欧易 Web3 钱包等自托管钱包,或者准备开始使用 DeFi、NFT 的读者。如果你还不熟悉钱包,可以先读 MetaMask 使用教程 和 加密钱包类型介绍。
代币授权(approve)是什么?
在以太坊和兼容链上,USDT、USDC 这类代币遵循 ERC-20 等代币标准。按照 ERC-20 标准,代币合约里有两个关键功能:
- approve(授权):你告诉代币合约「允许地址 X 最多动用我 N 个代币」;
- transferFrom(代转):被授权的地址 X 可以在额度内,把你的代币转到任何地方。
为什么需要这种机制?因为智能合约不能直接从你的钱包「拿」代币。比如你在去中心化交易所把 USDT 兑换成 ETH,交易所的合约需要先获得你的授权,才能把你的 USDT 转进它的资金池。
所以,第一次在某个 DApp 使用某种代币时,钱包通常会弹出两步:先授权,再执行操作。授权这一步本身也是一笔链上交易,需要支付 Gas。
授权和转账有什么区别?
很多新手分不清这两种弹窗,下面这张表可以对照:
| 对比项 | 转账(transfer) | 授权(approve) |
|---|---|---|
| 效果 | 代币立刻从你的地址转到对方地址 | 代币还在你的地址,但对方获得动用权限 |
| 持续时间 | 一次性完成 | 长期有效,直到取消或额度用完 |
| 风险 | 转错了就没了 | 授权对象出问题时,可能在未来任意时间被转走 |
| 是否花 Gas | 是 | 是(链上授权);Permit 签名除外 |
| 钱包提示 | 通常显示转账金额和接收地址 | 通常显示「允许访问你的某代币」和额度 |
关键在于:授权给出去之后,你的币看上去还在钱包里,风险却已经存在了。这也是授权问题容易被忽视的原因。
无限授权是什么?为什么很多 DApp 默认无限授权?
授权时可以设置额度。很多 DApp 默认请求一个极大的额度,也就是常说的无限授权。这样做的好处是,你以后再用这个 DApp 时不需要每次都重新授权,节省了 Gas 和操作步骤。
但代价也很明显:
- 被授权的合约可以动用你钱包里这种代币的全部余额,包括以后新转入的部分;
- 如果这个合约有漏洞被黑客利用,或者项目方的管理权限被盗,你的代币可能被转走;
- 如果这个「DApp」本身就是钓鱼网站,无限授权就等于把钥匙交给了骗子。
有限授权怎么设置?
多数钱包在弹出授权请求时,允许你修改授权额度。以 MetaMask 为例,授权弹窗中通常可以编辑「支出上限」,你可以改成这次实际要用的金额。
- 好处:即使合约以后出问题,损失也只限于你授权的额度;
- 代价:下次再用时需要重新授权,多付一次 Gas。
对于不常用或刚上线的 DApp,建议只授权本次需要的数额;对于长期频繁使用、你信任的协议,可以根据自己的情况权衡,但要定期检查。
Permit 签名是什么?为什么不花 Gas 也能盗币?
除了链上授权,还有一种更隐蔽的授权方式:Permit 签名。
EIP-2612 定义了一种让用户通过链下签名完成授权的方法:你在钱包里签一条消息,消息里写明了被授权的地址和额度,之后任何人拿着这个签名提交给代币合约的 permit() 函数,就能让授权生效。
这个设计本来是为了改善体验,让用户少付一次 Gas。但它也被钓鱼者大量利用,原因是:
- 签名不花 Gas:你签的时候钱包不会显示手续费,很多人觉得「不花钱就没事」;
- 警告不明显:根据 Revoke.cash 的说明,因为不是链上授权交易,钱包往往不会像链上授权那样给出警告,网站可以把它包装成一次普通的「登录签名」;
- 链下不可见:签名在提交上链之前不会出现在任何区块浏览器里,授权检查工具也无法看到你签过哪些 Permit;
- 骗子会很快使用:拿到签名后,骗子通常会马上提交上链并转走代币,留给你反应的时间极短。
需要说明的是,并不是所有代币都支持 EIP-2612 Permit,但有不少主流代币支持,所以不能心存侥幸。
Permit2 又是什么?和普通授权有什么关系?
你可能还会在钱包里看到「Permit2」字样。它是 Uniswap 推出的一套授权管理合约,被不少 DApp 采用。根据 Uniswap 开发者文档,它的工作方式是:
- 你先对某个代币授权一次给 Permit2 合约(常见做法是无限授权);
- 之后具体的 DApp 想动用你的代币时,通过签名向 Permit2 申请权限,可以是带有效期和额度的长期授权,也可以是只用一次的单笔授权。
这套机制让授权管理更细致,但对普通用户来说意味着:一个看似普通的签名,也可能是在授权代币。如果钓鱼网站诱导你签了一条 Permit2 签名,对方同样可以转走你已经授权给 Permit2 的代币。
哪些签名请求必须拒绝?
钱包弹窗是你最后一道防线。遇到下面这些情况,应当直接拒绝:
| 弹窗特征 | 风险 | 建议 |
|---|---|---|
| 「领取空投」「验证钱包」页面要求授权或签名 | 典型钓鱼 | 拒绝,关闭页面 |
签名内容出现 Permit、spender、value、deadline 等英文项 | 签名即授权 | 看不懂就拒绝 |
| 授权对象是你不认识的地址 | 可能是钓鱼合约 | 拒绝 |
| 要求授权你并不打算使用的代币 | 目的可疑 | 拒绝 |
| 「设置所有 NFT 的批准」(setApprovalForAll) | 对方可转走整个 NFT 系列 | 除非你确定在用正规市场挂单,否则拒绝 |
| 一串看不懂的十六进制数据,钱包无法解析 | 内容未知 | 拒绝 |
| 网站催促你「限时」「马上签」 | 制造紧迫感 | 拒绝,冷静核实 |
一个实用的习惯:只在你主动打开、确认过域名的 DApp 上签名。通过群聊、私信、社交媒体评论里的链接打开的网站,一律不签。识别钓鱼网站的方法可以参考 钓鱼网站识别指南。
怎么检查自己的钱包给过哪些授权?
定期检查授权是保护自托管钱包的基本功。常用的方法有两类:

Revoke.cash 对代币授权原理的说明(截图于 2026-10-28)
- 授权管理工具:例如 Revoke.cash。根据其官方说明,它支持主流钱包和 80 多个网络;
- 区块浏览器的授权查询功能:例如以太坊的 Etherscan 提供代币授权检查页面,其他链的区块浏览器也有类似功能。
这两类工具都可以只输入地址查看授权情况,不连接钱包也能查。只有在你要取消授权时,才需要连接钱包并签署交易。
检查时重点看四项:
- 代币:授权的是哪种代币,你钱包里还有没有余额;
- 授权对象(Spender):被授权的是哪个合约,工具通常会标出知名协议的名称;
- 额度:是无限还是具体数额;
- 时间:什么时候授权的。如果你被盗了,按时间从新到旧排序,最可疑的授权往往是最近的。
怎么用 Revoke.cash 取消代币授权?完整步骤
下面以 Revoke.cash 为例。网站界面偶尔会改版,按钮位置和文字可能略有差别,以网站当前显示为准。
第一步:确认你打开的是官方网站
先确认地址栏里的域名是 revoke.cash。钓鱼者同样会仿冒授权管理工具,诱导你在假的「取消授权」网站上签名。更保险的是每次手动输入网址,并保存为书签。
第二步:输入地址或连接钱包
在搜索框输入你的钱包地址(或 ENS 名称),也可以直接点击连接钱包。如果只是查看,输入地址就够了。
第三步:选择网络
选择你要检查的链,例如以太坊、BNB 智能链、Arbitrum、Polygon 等。每条链上的授权是分开的,你在以太坊上取消了授权,不会影响在 BNB 智能链上的授权,需要逐条链检查。
第四步:筛选和排序
列表会显示该地址在这条链上所有仍然有效的授权。可以:
- 按时间排序,找最近的可疑授权;
- 按代币或授权对象地址搜索;
- 重点关注无限额度、不认识的授权对象和很久不用的 DApp。
第五步:取消或调低授权
找到要处理的授权后,点击「Revoke(撤销)」。Revoke.cash 也允许你点击编辑图标,把授权额度调低而不是完全取消,适合以后还要继续使用的协议。
第六步:在钱包里确认交易
点击撤销后,钱包会弹出一笔交易请求。确认以下几点再签:
- 交易对象是代币合约,操作是把授权额度设为零(或你设定的更低额度);
- 网络和你选择的链一致;
- 显示的 Gas 费用在你的预期范围内。
确认后等待交易上链。成功后刷新页面,这条授权就会从列表中消失。
取消授权为什么要付 Gas?大概要多少?
取消授权本质上是调用代币合约,把对某个地址的授权额度改成零,这是一笔改变链上状态的交易,所以和普通转账一样,需要用该链的原生币支付 Gas:
| 链 | 支付 Gas 的币 | 费用特点 |
|---|---|---|
| 以太坊主网 | ETH | 通常较高,随网络拥堵波动 |
| Arbitrum、Optimism、Base 等二层网络 | ETH | 通常明显低于主网 |
| BNB 智能链 | BNB | 通常较低 |
| Polygon | POL | 通常较低 |
付 Gas 时留意三件事:
- 钱包里要留一点原生币:如果你的以太坊钱包里只有 USDT 没有 ETH,就无法取消授权;
- 以太坊主网可以挑时机:如果不是紧急情况,可以在网络不拥堵时操作,以节省 Gas;
- 被盗或疑似被盗时不要等:此时省下的 Gas 远不如资产安全重要,应当立即取消。
Gas 的计算方法可以参考 Gas 费详解。
取消授权之后,还需要做什么?
取消授权能堵住一个漏洞,但不是全部。根据你的情况,还要考虑:
- 余额已经很少的钱包:如果某个代币余额已经为零,授权暂时不会造成损失,但你以后再转入这种代币时风险就会重新出现,所以仍建议取消;
- NFT 的授权:NFT 的
setApprovalForAll授权同样会显示在授权管理工具里,要一并检查; - Permit 签名:已经签出但还没被提交上链的 Permit 签名,工具看不到。理论上可以通过让签名失效的方式取消,但按 Revoke.cash 的说法,这在实际中通常很难赶在骗子之前完成。如果你怀疑签过恶意 Permit,最稳妥的做法是把相关代币转到一个新地址;
- 一个钱包多个账户:MetaMask 等钱包可以有多个账户,每个地址的授权都要分别检查。
授权被盗和助记词泄露怎么区分?
两种情况的处理方式完全不同,先判断清楚:
| 现象 | 更可能的原因 | 处理方式 |
|---|---|---|
| 只有某一种或几种代币被转走,原生币(如 ETH)还在 | 代币授权被利用 | 立即取消相关授权,转移剩余代币 |
交易记录显示是某个合约调用 transferFrom 把币转走 | 代币授权被利用 | 同上 |
| 原生币也被转走,或交易是从你的地址直接发出的 | 私钥或助记词泄露 | 取消授权没有用,立即换新钱包 |
| 多条链、多个币同时被清空 | 很可能是助记词泄露 | 立即换新钱包,检查设备安全 |
判断方法是在区块浏览器里打开被盗的那笔交易,看「From」和交易调用者:如果交易是由别的地址发起、调用合约的 transferFrom 把你的代币转走,属于授权问题;如果交易就是从你的地址签名发出的,说明对方已经掌握了你的私钥。
如果是助记词泄露,请按 助记词备份指南 重新生成一个安全的新钱包,把剩余资产尽快转过去,旧钱包不要再使用。
被授权钓鱼盗币后怎么办?
如果确认是授权被利用,按这个顺序处理:
- 立即取消相关授权:用 Revoke.cash 或区块浏览器找到对应授权,马上撤销;
- 转移剩余的同种代币:如果你钱包里还有这种代币,在取消授权确认之前,可以先转到另一个安全地址;
- 检查其他链:同一个地址在其他链上可能也给过类似授权;
- 保存证据:钓鱼网站地址、被盗交易的 TxID、时间、金额、聊天记录;
- 如果资产流向了交易所:联系该交易所的官方客服说明情况,平台是否能协助取决于其政策和执法要求;
- 向当地警方报案,并警惕主动联系你、声称可以「追回资金」的人,这类人几乎都是骗子,详见 常见加密货币骗局识别。
用交易所的 Web3 钱包,也会有授权风险吗?
会。无论是 MetaMask、欧易 Web3 钱包,还是其他自托管钱包,只要你在链上使用 DApp,授权机制都是一样的。钱包只是帮你签名和发送交易的工具,授权记录在区块链上的代币合约里,与你用哪个钱包无关。
不同的是,部分钱包内置了授权管理或风险提示功能,可以在钱包里直接查看和取消授权,使用方法见 欧易 Web3 钱包教程。但这些功能只是辅助,最终是否签名仍然要你自己判断。
相比之下,交易所账户里的资产不涉及代币授权问题,因为它们由交易所托管,你不需要对任何合约授权。这也是很多人把暂时不用于链上操作的资产留在交易所、或者分成「日常钱包」和「存储钱包」的原因之一。
怎么养成安全的授权习惯?
下面这些习惯可以大幅降低授权风险:
- 分钱包使用:准备一个只放少量资金的「交互钱包」专门用来连接 DApp,大额资产放在不连接任何 DApp 的钱包里,或者使用 硬件钱包;
- 只授权需要的额度:不常用的 DApp 尽量只授权本次用量;
- 用完就撤:一次性使用的 DApp,用完后顺手取消授权;
- 定期检查:例如每月检查一次所有常用链上的授权;
- 看不懂不签:钱包无法解析的签名、出现 Permit 字样的签名,没有十足把握一律拒绝;
- 只从可信入口进入 DApp:不点击群聊、私信、空投通知里的链接。
波场 TRC20 代币也有授权问题吗?
有。波场的 TRC-20 代币标准同样包含授权和代转功能,原理和以太坊的 ERC-20 一致:你在波场上的 DApp 里点过授权,对应的合约就获得了动用你 TRC20 USDT 等代币的权限。钓鱼者同样会针对波场上的 USDT 下手,可能的形式包括假冒的「理财」「挖矿」「领取奖励」页面,诱导你在钱包里确认一笔授权交易。
检查波场上的授权,可以使用波场区块浏览器或你所用钱包提供的授权管理功能,查看方式和以太坊类似:找到代币、授权对象和额度,对不认识或不再使用的授权执行取消。取消授权同样是一笔链上交易,需要消耗能量和带宽,资源不足时会燃烧 TRX,所以钱包里要留一些 TRX。波场费用的计算方法见 Gas 费详解。
检查和取消授权时,新手最容易犯哪些错?
- 只查了一条链:授权是按链分开记录的,以太坊上干净不代表 BNB 智能链、Arbitrum、波场上也干净;
- 在假的授权管理网站上操作:搜索「取消授权」时遇到的仿冒网站,会把「撤销」按钮做成新的授权请求,签名前一定要看清钱包弹窗里的操作和对象;
- 钱包里没有原生币:想取消授权却发现没有 ETH 或 BNB 支付 Gas,紧急时只能先从交易所提一点过来,耽误时间;
- 以为取消授权能追回资产:取消授权只能阻止未来的转移,已经被转走的资产不会回来;
- 把助记词泄露当成授权问题处理:如果是私钥泄露,取消授权毫无作用,反而浪费了转移资产的宝贵时间;
- 把正在使用的协议授权也一并取消:取消后再使用需要重新授权,不会造成资产损失,但要多付一次 Gas,可以先确认自己还在用哪些协议。
怎么防止代币授权被盗?记住这三点
- 授权会一直有效:在你取消之前,被授权的合约可以随时在额度内动用你的代币,无限授权意味着全部余额;
- 签名也可能是授权:Permit 和 Permit2 签名不花 Gas,却能产生授权效果,看不懂的签名一律拒绝;
- 定期检查、及时取消:用 Revoke.cash 或区块浏览器检查授权,取消授权是链上交易,需要准备少量原生币支付 Gas。
如果你刚开始使用自托管钱包,可以接着读 MetaMask 使用教程 和 Gas 费详解;需要把交易所的资产转到钱包时,可以参考 提币到钱包教程。不熟悉的术语可以查 术语表。
常见问题
代币授权(approve)是什么意思?
授权是你允许某个智能合约在一定额度内动用你钱包里的某种代币,比如在去中心化交易所兑换前,需要先授权它使用你的 USDT。授权一旦给出会一直有效,直到你主动取消或额度用完。
无限授权有什么风险?
无限授权意味着被授权的合约可以随时转走你钱包里这种代币的全部余额。如果这个合约有漏洞、被攻击,或者本身就是钓鱼合约,你的代币可能在你不知情的情况下被转走。
取消授权要手续费吗?
要。取消授权本质上是一笔把授权额度改为零的链上交易,需要用该链的原生币支付 Gas,例如以太坊用 ETH、BNB 智能链用 BNB。
Permit 签名为什么危险?
Permit 是链下签名,签的时候不花 Gas,钱包也常常不会像链上授权那样给出明显警告,看起来像是普通登录签名。骗子拿到签名后可以自己提交上链,立刻获得你代币的授权并转走。
取消授权能把被盗的币找回来吗?
不能。取消授权只能阻止对方以后继续动用你的代币,已经转走的资产无法通过取消授权找回,但仍应尽快取消,防止剩余资产和以后转入的资产被盗。
还没有账户?在币安或欧易注册
参考资料
读完这篇,还可以看看
风险提示:加密资产价格波动剧烈,合约与杠杆交易可能导致本金全部损失。请遵守所在国家或地区的法律法规,只投入能承受损失的资金。阅读完整风险提示