首页 / 钱包安全 / 代币授权 Approve 全解

代币授权 Approve 全解 —— 怎么查、怎么撤销危险授权,别让旧签名把钱掏空

链上玩久了,你的钱包早就对几十个合约做过「授权(Approve)」。多数你早忘了,可它们还活着——只要没撤销,对应合约理论上随时能动用你钱包里那种代币。授权失误被掏空,是链上最常见的盗币方式之一。这篇把「授权到底授了什么」讲透,再教你怎么查、怎么撤销,以及 Approve 和 Permit 那个要命的区别。文末有可打印的授权自查 checklist。

发布:2026-07-07 最后更新:2026-07-07 约 3000 字 · 阅读 11 分钟 含授权自查 checklist
安全 · APPROVE / REVOKE 你的钱包 0xA1b2…9F3d allowance: ∞ 授权额度 合约 / DApp spender 一次 Approve = 把「动用某种代币的额度」交给某个合约
授权就是把「支配你某种代币的额度」交给一个合约地址(spender)。额度多大、给了谁,决定了你暴露多少风险。

你在去中心化交易所换币、在 DeFi 里质押、给 NFT 市场挂单——每一次,钱包都会先弹一个「授权」请求。你点了确认,交易才走得下去。这个动作太日常,以至于大多数人从不细想它到底做了什么。而链上被掏空的钱,很大一部分就是从一个被忽视的旧授权流走的。这篇不谈玄的,就把授权这件事从头讲清楚,再手把手教你收拾干净。

授权(Approve)到底授了什么权

先分清两件事:转账是你把币从自己地址转出去;授权是你允许「别人(某个合约)」在未来从你地址里转走某种代币。为什么需要授权?因为像 Uniswap、OKX Web3 这类 DApp 帮你换币时,是合约代表你去动你的代币,而合约动你的钱之前,必须先得到你的许可。这个许可就是 Approve。

一笔授权记着三个关键信息:哪种代币(比如 USDT)、授权给谁(某个合约地址,术语叫 spender)、额度多大(allowance,即这个合约最多能动你多少)。记住最后一个——额度,是整篇的风险核心。授权不是「授权这一次」,而是「授权一个上限,在撤销前一直有效」。你今天授权的合约,明年还能凭这个授权动你的币。

为什么「无限授权」是最大的雷

理论上你可以只授权「够这一次用」的额度,比如换 100 USDT 就只授权 100。但现实里,绝大多数 DApp 默认让你签的是无限授权(unlimited approval)——额度是个天文数字,等于无上限。

为什么?因为对双方都省事:授权一次无限额度,以后每次交互就不用再弹授权、再多付一次 gas,体验顺滑。方便的代价是风险敞口被拉满:只要这个无限授权还在,该合约理论上随时能把你钱包里这种代币全部转走。平时它规矩,是因为它是正经项目;可一旦这个合约有漏洞被攻破、或者它本身就是个精心包装的恶意合约,你签下的无限授权就是给攻击者的一把万能钥匙。你签的时候什么事都没有,风险是「以后」才引爆的——这正是它阴险的地方。

授权是怎么变成盗币的

把机制讲清,你就知道该防什么。授权型盗币通常是这么发生的:

  • 钓鱼诱导授权。假空投领取页、假 mint 页、假客服链接,把你导到一个界面,让你「连接钱包」再「确认」。你以为在领奖或授权一个正常操作,实际签下的是把某代币的额度授权给攻击者的地址。签完当下往往没反应,过一阵你的币被悄悄转走。
  • 正经合约被攻破。你早年授权过的某个正经 DApp 合约出了漏洞被黑,攻击者就能利用还挂在上面的用户授权,批量转走大家的币。你什么都没做错,只是那个旧授权一直没撤。
  • 分批慢割。不少攻击不会一次转空,而是拿着授权慢慢转,免得你立刻警觉。只要你没撤销授权,对方随时能再转一波——这也是为什么发现异常要第一时间撤销。

看懂没有?风险不在「授权」这个动作本身,而在你授了多大额度、授给了谁、授完还留着多久。防御也就顺着这三点来。想连带看清那些把你诱到授权页的钓鱼套路,读我们的钱包反诈手册

怎么查自己钱包有哪些授权

第一步永远是「看清自己现在授权了什么」。常用三条路,任选:

  1. revoke.cash。连上钱包(或直接输入你的地址只读查询),它会列出你在多条链上的全部活跃授权:哪种代币、授权给哪个合约、额度多大。这是最直观的授权总览工具。
  2. 区块浏览器的 Token Approvals 页。比如 Etherscan、以及各链对应的浏览器,都有「Token Approvals」功能,输入地址就能查这条链上的授权情况。适合对单条链细查。
  3. 钱包内置的授权管理。OKX Web3 钱包等主流钱包已内置授权/allowance 管理入口,不用跳外部站就能查看和撤销,对新手最省心。

查的时候重点扫两类:无限额度的授权,和你已经不用了的老 DApp。这两类是优先清理对象。

怎么撤销(revoke)一个授权

撤销的本质很简单:再发一笔交易,把给某合约的额度改回 0。在上面任一工具里,找到要清的那条授权,点「撤销 / Revoke」,钱包会弹出一笔交易让你确认,你付一点 gas、交易上链,这个授权就失效了。

几个要点:撤销要花一点 gas(在便宜的链上就几分钱到几毛,以太坊主网拥堵时贵些),可以挑不忙的时段批量清;撤销只对链上的 Approve 有效(下一节讲例外);还有——永远认准工具官网。骗子会做一模一样的假「撤销授权」页,你一连钱包一确认,签的反而是给他的恶意授权。手动输网址或走收藏夹,别点搜索广告和陌生链接。

Approve vs Permit:一个链上,一个链下

这一节是很多人栽跟头的盲区。除了常规的链上 Approve,还有一种叫 Permit(如以太坊的 EIP-2612)的授权方式:它是链下签名——你签个名,不上链、不花 gas,对方拿着这个签名,在需要时才提交上链来动用你的额度。

区别很要命:常规 Approve 记录在链上,你能查到、也能再发一笔交易撤销;而 Permit 签名一旦交出去,常规的授权列表里往往看不到它、也拦不住它,攻击者可以在任意时间使用。所以对已经签出去的恶意 Permit,「去 revoke.cash 撤销」这招基本无效,唯一稳妥的办法是立刻把相关代币全部转到新地址。这也是为什么,遇到任何「签个名就行、不用付 gas」的请求,你都要格外警惕——不花钱的签名,可能比花钱的授权更危险。

授权自查 checklist(可打印)

每月花十分钟做一次:

  • [ ] 用 revoke.cash 或钱包内置工具,扫一遍所有链的活跃授权
  • [ ] 撤销所有「已经不用的 DApp」的授权
  • [ ] 把还在用、但额度是「无限」的,改成有限额度或用完即撤
  • [ ] 大额资产放一个「几乎不授权、不连 DApp」的冷钱包
  • [ ] 日常交互用一个只放少量币的热钱包,被授权也亏得起
  • [ ] 遇到「免 gas 签名」请求先停手,想清楚是不是 Permit

一句话原则:授权最小额度、定期清理、分钱包隔离风险。不确定就不签。


FAQ · 5 个常问

撤销授权(revoke)需要花钱吗?

需要一点链上手续费(gas)。撤销授权本质上是再发一笔交易,把之前给某个合约的额度(allowance)改回 0,这笔交易和普通转账一样要付 gas。费用高低看你在哪条链、当时是否拥堵:在便宜的链上可能就几美分到几毛,在以太坊主网拥堵时会贵一些。为省钱可以挑链上不忙的时段批量撤销,或用支持多链的授权管理工具一次处理。这点 gas 相比被掏空的风险,花得值。

我用区块浏览器或 revoke.cash 撤销授权安全吗?

用官方正版是安全的,但务必认准网址。revoke.cash、Etherscan 的 Token Approvals 页、以及 OKX Web3 钱包内置的授权管理都是常见工具,它们只是帮你发起「把额度改回 0」的标准交易,不会碰你的私钥。风险不在工具本身,而在假冒站:骗子会做一模一样的钓鱼版「撤销授权」页,诱你连钱包后反而签一笔恶意授权。所以永远手动输入或从收藏夹进官网,别点搜索广告位和陌生链接。

为什么 DApp 老是让我做「无限授权」?

因为对 DApp 和用户都「省事」:授权一次无限额度,以后每次交易就不用再弹授权、再付一次 gas。很多 DApp 默认填的就是无限额度。方便的代价是风险敞口:只要这个授权还在,该合约理论上随时能动用你钱包里对应代币的任意数量;万一合约有漏洞或本身是恶意的,你的全部该代币都在风险里。更稳的做法是把额度改成「够这次用」的有限额度,或用完就撤销。

撤销了授权,已经被盗的钱能追回来吗?

撤销授权是「止血」,不是「追回」。它能阻止攻击者继续用这个授权转走你剩下的钱,但已经转出去的资产,链上交易不可逆,基本追不回。所以发现异常要做的第一件事是:立刻撤销所有可疑授权,并把钱包里还没被动的资产尽快转到一个全新地址(不要用原助记词派生的新号)。同时用区块浏览器把可疑交易、对方地址、时间都截图存证。

Approve 和 Permit 签名有什么区别?撤销对两者都有用吗?

Approve 是一笔上链的授权交易,额度记录在链上,所以你能在链上查到、也能再发一笔交易把它撤销。Permit(如 EIP-2612)是一种链下签名授权:你签个名不上链、不花 gas,对方拿着这个签名去用时才上链。区别很关键——常规的 revoke 撤销的是链上 Approve;对已经交出去的 Permit 签名,撤销授权列表里往往看不到、也拦不住,唯一稳妥的办法是立即把相关代币转走。所以遇到让你「签个名就行、不用付 gas」的请求要格外警惕。

本文引用源

  1. ERC-20 approve/allowance 标准 · eips.ethereum.org/EIPS/eip-20
  2. EIP-2612 Permit 标准 · eips.ethereum.org/EIPS/eip-2612
  3. revoke.cash 开源代码与文档 · github.com/RevokeCash/revoke.cash
  4. SlowMist 安全事件库 · slowmist.com
  5. Etherscan Token Approvals 工具 · etherscan.io/tokenapprovalchecker