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

代币授权与撤销:Allowance、Permit 和权限边界

不用某个 DApp 了,不代表它的代币额度已经消失。先查是哪条链、哪个代币、哪个 spender,再决定是否撤销。断开网站连接不会改掉链上 allowance,已经交出去的 Permit 签名还要另查有效期与 nonce。

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

⚠ 本文仅为信息教育用途,不构成投资 / 法律 / 安全建议。链上操作不可逆,撤销授权只能切断后面还能动的额度,已经被搬走的那部分追不回来。完整披露见 免责声明。

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

标准 ERC-20 授权记录 owner 对 spender 的某种代币额度(allowance)。spender 可以是合约或普通地址。approve 设置额度,后续符合条件的 transferFrom 才会转币;签名本身不是已发生转账的证据。额度在被消耗或改写前可能继续有效,没有统一的自动到期时间。

一种代币的额度不覆盖其他代币或原生币。NFT 则可能批准单个 token ID,或整个集合的 operator,要看实际调用。

无限授权扩大了什么风险

部分应用预填较大额度以减少后续授权次数,也扩大该 spender 对该代币的风险敞口,包括以后转入的余额。有限额度只限制数量,不能把恶意 spender 变安全。合约能否动用额度,还取决于其代码与调用条件。

授权是怎么变成盗币的

  • 钓鱼页面把攻击者地址填成 spender,诱导你确认。
  • 已授权合约出现可利用漏洞,形成动用用户额度的调用路径。
  • 尚存额度被再次使用,后来补进地址的同种代币也可能受影响。

核对权限内容,不要只信「登录」或「领取」按钮。常见诱导见钱包反诈手册。

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

  1. 从 Revoke.cash 官网或对应区块浏览器输入公开地址,先做只读查询。
  2. 逐条选择用过的链,查代币、spender、额度及 NFT operator。工具只覆盖它支持的链和权限,空列表不是安全证明。
  3. 用协议官方文档和历史交易核对地址。陌生标签是待查线索,不能单凭名字判断恶意。
Revoke.cash 公开首页的地址查询入口和演示授权列表,未连接钱包
Revoke.cash 公开首页,2026 年 9 月截图。列表是网站演示,不是本站账户的测试结果。

怎么撤销(revoke)一个授权

标准 ERC-20 通常将该 spender 的 allowance 设为 0;NFT 集合授权通常将 operator 批准设为 false。核对钱包弹窗里的链、合约与调用,确认是撤销,再签名、等待成功回执并重新查询权限。

费用按钱包当前估算准备,低峰或批量操作不保证省钱,多条链也不一定能合成一笔。官网入口能减少假站风险,但不能替代逐笔核对交易内容。只读查询不需要助记词,撤销也只在自己的钱包内签名。

Approve vs Permit:链下签名也有边界

EIP-2612 Permit 允许先签一份带 owner、spender、value、nonce、deadline 等字段的消息,由提交者付 gas 上链设置额度。签名本身不转币,未提交签名可能不在普通授权列表里。

有效签名受 deadline、nonce、链及合约域约束,并非任意时间都可使用。只清零当前 allowance,未必使未使用签名失效;须按代币实现处理 nonce 或有效期。Permit2还区分持续额度与单次签名转移,底层代币批准、Permit2 权限和签名 nonce 不是同一个控制项。

签过可疑内容后保存请求字段,检查实际状态。先撤销、使 nonce 失效还是迁移受影响资产,取决于敞口、费用和可用操作,没有通用顺序。若密钥泄露,撤销不能恢复独占控制,应在可信环境使用新的独立密钥。

授权自查 checklist

  • [ ] 核对每条使用过的链、代币、spender 与额度
  • [ ] 撤销不用的权限,等待成功后回查
  • [ ] 可疑链下签名另查 deadline、nonce 和实现
  • [ ] 按独立密钥和设备风险分开长期与日常资产
  • [ ] 看不懂就取消,不因「免 gas」放行

FAQ · 5 个常问

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

需要支付链上交易费用。按当前钱包估算预算,不使用固定几分钱或批量必省钱的假设。

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

核对官网与覆盖范围,再检查钱包里的链、合约与撤销调用。真实网站也不能盲签,只读查地址不需要助记词。

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

较大额度可减少重复授权,也扩大该代币对 spender 的敞口。有限额度仍须核对 spender。

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

撤销不回滚已完成的转账,只影响后续权限。若密钥泄露,还需保护剩余资产并停用受影响密钥。

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

Approve 直接上链设置额度;Permit 可先签后提交,受 nonce、deadline 与合约域约束。清零当前额度未必使未用签名失效,须按实现处理。

本文引用源

  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