Binance

币安新人福利 · 享 20% 手续返佣

新用户注册享20%手续返佣

邀请码BINANBT
立即注册币安

✅ 立即注册自带邀请码,无须额外填写

⚠️ 注册后需完成身份认证(KYC)才能交易与提币

⏳ 点击后约需 2–5 秒打开注册页,请耐心等待,勿重复点击

Permit2 授权撤销:主授权、子授权与批量撤销的关系
钱包 • • • 作者:CoinVado Research • 1 阅读 • 12 分钟

Permit2 授权怎么撤销?2026 两层权限、批量撤销与盗刷止损全解析

很多人撤销了 DApp 授权,资产还是被转走,因为 Permit2 是独立的一层授权。本文讲清代币→Permit2 的主授权与 Permit2→DApp 的子授权、链下签名为什么看不见、lockdown 批量撤销与 invalidateUnorderedNonces 怎么用,给出 Revoke.cash 六步操作、12 条授权的 Gas 对比和五种撤销后仍不安全的情况。

⚠️ 先看这条: 如果还没有交易所账户,走**注册链接(如「立即注册」)**或填邀请码 BINANBT 注册币安——在 App 里直接注册拿不到半点新手奖励,$19,800 迎新礼包和 20% 手续费返佣都会与你无关。本文讲的是链上钱包授权,交易所账户里的资产不在这套撤销逻辑里。

核心要点(TL;DR):

  • Permit2 不是钱包,也不是 DApp,而是 Uniswap 部署的一层「授权中间人」。 代币先授权给 Permit2,Permit2 再把额度分给各个 DApp;它把授权集中了,也把风险集中了。
  • 授权有两层,撤销时要分清。 第一层是「代币 → Permit2」的 ERC-20 额度,第二层是「Permit2 → 具体 DApp」的子额度。撤销第一层,等于一次关掉所有下游;只撤销第二层,主授权还在。
  • 最容易被忽略的是链下签名。 SignatureTransfer 的签名在提交上链前不存在于链上,任何撤销工具都看不到;签过可疑 Permit 后,正确动作是转移资产,而不是反复点撤销。
  • 批量撤销有两条路。 想全部关掉,按代币撤销「代币 → Permit2」的主授权;想保留 Permit2 给其他应用用,调用 lockdown 在一笔交易里清掉多组 token/spender。
  • 撤销只能收回「还在钱包里」的资产权限,追不回已经转走的币。 助记词泄露、扫币机器人、未上链签名这三种情况,撤销都不够。

很多人以为「撤销授权」就是点一下 Revoke,但 Permit2 让这件事变成了两层:你撤销的可能只是其中一个 DApp 的权限,而通往你全部余额的那道主门还开着。 Permit2 由 Uniswap 推出,如今被大量 DEX、聚合器和支付流程使用;它让用户只授权一次,就能在多个应用间复用,代价是这道「一次授权」成了单点。

这篇不重复讲「怎么用 Revoke.cash 点按钮」,而是把 Permit2 的权限结构拆开:你到底给了谁什么权限、哪一层该先撤、批量撤销到底省不省 Gas、以及哪些情况下撤销根本救不了你。

目录

Permit2 是什么:不是钱包,是授权中间层

Permit2 是 Uniswap 部署在链上的授权合约,作用是让用户「一次授权,多个应用复用」。 它不是托管钱包,不会拿你的币去交易,也不能直接提走你的资产;它只负责记录「谁可以在什么条件下动用你多少代币」。

在没有 Permit2 的流程里,每用一个新 DApp,你都要为该 DApp 单独发一笔 approve 交易,授权它动用某个代币。用十个应用,就是十笔授权、十次 Gas。Permit2 把这件事改成两步:

  1. 你先授权 Permit2 合约,通常是无限额度,只做一次;
  2. 之后每个 DApp 通过签名向 Permit2 申请子额度,不再需要你为每个应用单独发链上授权。

Permit2 在绝大多数 Uniswap 支持的链上使用同一个地址:0x000000000022D473030F116dDEE9F6B43aC78BA3;zkSync 上是另一个地址:0x0000000000225e31D15943971F47aD3022F714Fa。1

它由两个模块组成,理解这两个名字,后面的撤销就不会乱:

模块存什么典型场景撤销方式
AllowanceTransfer链上保存的额度:代币、spender、金额、过期时间反复 swap、订阅式扣款approve 归零、lockdown、invalidateNonces
SignatureTransfer一次性签名,凭 nonce 单次使用单次兑换、免 Gas 授权等签名过期;高级用户用 invalidateUnorderedNonces

关键点:Permit2 本身是安全的开源合约,风险不在合约,而在「谁拿到了子额度」以及「你是否签过自己没看懂的链下消息」。

两层授权:主授权与子授权

撤销 Permit2 之前,必须先知道你面对的是哪一层。 这两层的存在形式、查看位置和撤销后果都不一样。

层级谁给谁链上表现在哪里看撤销后影响
主授权你的地址 → Permit2 合约标准 ERC-20 allowance区块浏览器的 token approval、Revoke.cash 的代币授权列表所有依赖 Permit2 的 DApp 同时失效,需要重新授权
子授权Permit2 → 具体 spenderPermit2 合约内部的 allowance 记录Revoke.cash 的 Permit2 分组、Permit2 合约的 allowance 查询只影响该 spender,其他应用不受影响
链下签名你的地址 → spender(未上链)不存在于链上任何工具都看不到无法撤销,只能等过期或转移资产

主授权是总闸,子授权是分闸。 如果你怀疑整个钱包的 Permit2 权限已经不可信,最彻底的做法是把「代币 → Permit2」的主授权撤销掉:Permit2 没有额度了,它下面所有子授权都动不了你的币。代价是所有依赖 Permit2 的 DApp 都要重新授权,直到你再次批准 Permit2。

如果你只想清理某个可疑 DApp,而其他应用还要继续用,就只撤销对应的子授权,保留主授权。先判断目的,再决定撤哪一层,不要盲目点「全部撤销」。

Permit2 两层授权:代币到 Permit2 的主授权,以及 Permit2 到各应用的分授权

为什么你撤销了 DApp,资产还是被转走

因为「撤销 DApp 授权」和「撤销 Permit2 授权」是两件不同的事,前者不会自动影响后者。 Permit2 在链上维护自己的额度记录,DApp 通过 Permit2 拿到的权限,不会因为你把 DApp 的普通 ERC-20 allowance 改成 0 而消失。

常见的三种误操作:

  1. 在区块浏览器里撤销了 DApp 的 allowance,以为万事大吉。 这只清掉了第一层里「代币 → DApp」的旧授权;如果 DApp 走的是 Permit2,它真正使用的是「代币 → Permit2 → DApp」这条路径,主授权仍然有效。
  2. 在 Revoke.cash 只看了默认列表。 普通 ERC-20 授权和 Permit2 授权通常分开展示,需要切到 Permit2 分组或逐条展开;只清默认列表,可能漏掉 Permit2 下的子额度。
  3. 把「断开连接」当成撤销。 断开只是让网站看不到你的地址,链上额度没有任何变化。Revoke.cash 的官方说明也明确:断开钱包对授权盗刷毫无作用。2

一句话:撤销前先确认那条授权到底挂在谁名下。 如果 spender 是 Permit2 合约地址,你要处理的是 Permit2 这一层;如果 spender 是 DApp 合约,那才是普通授权。

链下签名:撤销工具看不到的那一类

Permit2 的 SignatureTransfer 允许你签一条链下消息,授权对方在未来某个时间提交上链、转走指定代币。 签名本身不花 Gas,也不立即产生链上记录;只有对方把签名提交给合约,额度才真正生效。

这带来一个反直觉的结论:如果你刚在一个可疑网站签过「授权」「Permit」「免 Gas 交易」,而你还没有看到任何链上变化,撤销工具帮不了你,因为链上根本没有可撤销的东西。

危险点有三个:

  • 签名可以被延迟提交。 对方可以等几天、几周,等你放松警惕再提交。
  • 签名有有效期,但可能很长。 SignatureTransfer 的 permit 带 deadline,AllowanceTransfer 的子授权带 expiration;在到期之前,签名一直可用。
  • 工具只能看到已上链的部分。 未提交的签名不在链上,区块浏览器和 Revoke.cash 都读不到。

所以遇到这种情况,正确顺序不是「先撤销」,而是:

  1. 把该钱包里的资产转到新钱包,优先转高价值代币;
  2. 在干净设备上新建钱包,不要在可能中招的设备上操作;
  3. 确认新钱包的助记词没有在任何网站输入过;
  4. 之后再回头处理旧地址的授权,把它当作已经暴露的地址。

撤销是给「权限还在、资产还在」的钱包做减法的;签名泄露是「权限已经在路上」,这时候要先把资产搬走。

先判断你属于哪种情况

不同情况对应完全不同的动作,先分类,再操作。 下面这张表按紧急程度排序:

你的情况判断依据该做什么
刚在可疑网站签过名钱包弹出「签名」「Permit」「免 Gas」,没有链上交易最高优先级:转移资产到新钱包,不要只撤销
助记词/私钥可能泄露一有 ETH 进账就被转走,或设备中过木马弃用该钱包,新建地址,撤销旧地址授权只是收尾
看到无限额度给陌生 spenderRevoke.cash 里 allowance 为 unlimited,spender 不认识撤销该条授权;不确定就撤主授权
很久没用的 DApp 仍留着授权授权记录超过半年、应用已不用撤销子授权,降低攻击面
只是日常维护没有异常,只想定期清理每月检查一次,优先处理无限额度和陌生合约

如果拿不准自己属于哪一种,按最坏情况处理:先转资产,再撤销。 顺序反了,你可能一边撤销、一边被扫走。

批量撤销的四种做法

「批量撤销」不是一种操作,而是四种不同层级的方法。 选错方法,要么没关干净,要么把还要用的应用一起关了。

方法怎么做一笔交易能清多少优点代价
撤销主授权对每个代币调用 approve(Permit2, 0)一个代币的全部下游最彻底,一次关掉所有 Permit2 权限所有 Permit2 应用都要重新授权
Permit2 lockdown调用 lockdown(TokenSpenderPair[])多组 token/spender 一次清空保留主授权,只清指定组合需要构造合约调用,普通用户通过工具完成
Revoke.cash 批量撤销在界面勾选多条后批量提交取决于工具打包方式图形化、适合多数人免费用户批量功能收费 1.50 美元/批2
invalidateUnorderedNonces传入 wordPos 与 mask 作废签名 nonce一个 word 内的多个 nonce能作废尚未提交的 SignatureTransfer 签名需要知道 nonce,普通用户很难拿到

重点讲两个容易被误解的:

第一,lockdown 是 Permit2 合约自带的批量撤销函数。 它接收一组「代币 + spender」对,在一笔交易里把这些额度全部设为 0,并发出 Lockdown 事件。3 它适合「我还想继续用 Permit2,但要把几个可疑应用一次清掉」的场景。它不是撤销主授权,主授权仍然保留。

第二,invalidateUnorderedNonces 作废的是签名,不是额度。 SignatureTransfer 使用无序 nonce:wordPos = nonce >> 8,bitPos = nonce & 0xff,合约把这 256 个 nonce 存在一个 bitmap 里;调用 invalidateUnorderedNonces(wordPos, mask) 会把对应位标记为已用,之后拿这些 nonce 提交的签名都会失败。3 但前提是你知道对方打算用哪个 nonce。 大多数受害者拿不到这个信息,所以现实中更可靠的做法仍然是转移资产。

批量撤销控制台:多条授权卡片一次清除,并单独作废可疑签名

Revoke.cash 六步撤销流程

Revoke.cash 不托管资产、不需要助记词,它只读取链上授权并帮你生成撤销交易。 下面六步按「先看清、再动手」的顺序走。

第一步:手动输入官网,不要点搜索广告

在地址栏手动输入 revoke.cash,确认域名拼写,再收藏。搜索引擎顶部的广告、群聊里的短链接、推特评论区的「官方撤销入口」都可能是假站。真正的撤销工具不会先要求你给它无限授权。

第二步:先只读查看,再连接钱包

如果只想确认风险,直接输入钱包地址即可,不需要连接。要撤销时再连接,钱包弹出的连接请求只让网站读取地址,不等于授权。任何索要助记词、私钥、Keystore 或钱包密码的网站都是假的。

第三步:选择正确的链

授权是按链记录的。以太坊上的授权不会自动覆盖 BSC、Polygon、Base、Arbitrum;你在哪条链上用过 DApp,就要切到哪条链检查。只查主网,等于只查了钱包的一部分。

第四步:区分普通授权与 Permit2 授权

在列表里找到 Permit2 分组或 spender 为 Permit2 合约地址的记录,逐条确认:代币是什么、spender 是谁、额度是具体数字还是 unlimited、有没有过期时间。先处理无限额度、陌生 spender、长期不用的记录。

第五步:按目的选择撤销层级

  • 想全部关掉:撤销「代币 → Permit2」主授权,每个代币一笔交易;
  • 只想清几个应用:撤销对应的 Permit2 子授权,或用工具的批量入口一次提交;
  • 刚签过可疑链下签名:停止在这里,先转移资产,撤销放在后面。

第六步:复核并做安全善后

撤销后刷新列表,确认目标授权消失或额度为 0;再到区块浏览器确认那笔交易成功。如果交易失败,常见原因是 Gas 不足、网络拥堵或代币合约有特殊限制。

如果撤销过程中发现资产正在被转走,立刻停止逐条操作,先把剩余资产转到安全地址。 顺序反了,你可能一边撤、一边被扫。

Gas 与成本:批量到底省多少

批量撤销省的是交易笔数和操作时间,不一定省 Gas;但在这个场景里,笔数本身就是最大的成本。 用一个具体例子算:

假设你的钱包在 3 个代币上,分别授权了 4 个 DApp,总共 12 条 Permit2 子授权。

做法交易笔数结果
逐条撤销 12 条子授权12 笔最慢、最贵,逐条付 Gas
撤销 3 个代币的主授权3 笔一次关掉全部 12 条下游,但所有 Permit2 应用失效
lockdown 批量清 12 组 token/spender1 笔保留主授权,只清这 12 组
Revoke.cash 批量撤销1 次提交(可能打包多笔)图形化,免费用户另付 1.50 美元/批

结论很直接:如果目的是「把这个钱包的 Permit2 权限全部关掉」,按代币撤销主授权通常最省——3 笔就够,不需要 12 笔。 如果你还要继续用 Permit2 上的其他应用,才需要 lockdown 或工具的批量功能。

Gas 本身随网络拥堵变化:以太坊主网一笔撤销可能是几美元到十几美元,L2 上通常只要几美分到几角。当撤销成本高于钱包里的余额时,直接换钱包更划算——把剩余资产转到新地址,弃用旧地址,比花十几美元撤销一个只剩几十美元的钱包更合理。

撤销后仍然不安全的五种情况

撤销只处理「链上已经存在的额度」,它解决不了下面五类问题。 对照检查,别把撤销当成万能药。

  1. 未上链的 Permit 签名。 签名不在链上,撤销工具看不到,也撤不掉;只能等过期,或转移资产。
  2. 助记词/私钥泄露。 对方可以直接导入钱包转走全部资产,根本不需要授权。出现「一有 ETH 进账就被转走」的扫币机器人,说明助记词已经泄露,撤销没有意义。
  3. 助记词没泄露,但设备被控。 木马可以替换你复制的地址、篡改你看到的交易内容;撤销交易本身也可能被替换。
  4. 其他类型的权限。 NFT 的 setApprovalForAll、其他合约的 ERC-20 allowance、以及 EIP-7702 委托等,都可能不在 Permit2 列表里,需要分别检查。
  5. 已经转走的资产。 撤销只能阻止未来的转走,不能追回已经发生的损失;链上交易不可逆,不要相信任何「付费追回」的服务。

一个实用判断:撤销之后,如果钱包里还有资产、且你不确定签名是否泄露,最稳的动作是把资产转到新钱包,而不是继续在旧地址上操作。

日常怎么把授权面收窄

授权安全的核心不是「出事后再撤」,而是平时就别把权限给得太大。 下面五条能显著降低暴露面:

  • 分钱包使用。 长期持仓放冷钱包或只收不发的主钱包;交互、mint、领空投用单独的「热钱包」,里面只放少量资金。
  • 授权时改额度。 能填具体金额就不要选无限;虽然多一步操作,但被盗时的损失上限完全不同。
  • 优先用带过期时间的授权。 Permit2 的 AllowanceTransfer 支持 expiration,部分应用会设置有效期;有期限的授权比永久授权安全。
  • 每月检查一次。 把 Revoke.cash 加进书签,按月检查无限额度和陌生 spender;不要等到被盗才想起。
  • 硬件钱包不防授权。 硬件钱包保护的是私钥,但授权盗刷不需要你的私钥;签错一次,硬件钱包也拦不住。2

💰 币安返佣福利:邀请码 BINANBT

链上授权要自己管,交易所手续费可以长期省:注册时填邀请码 BINANBT,可享 20% 手续费返佣。 本文包含返佣链接,通过它注册我们可能获得奖励,但不会让你多花一分钱。

  • 返佣比例:20% 手续费返佣,长期有效,交易越多省得越多。
  • 迎新礼包:最高 $19,800,按任务解锁,不是注册即送现金。
  • 如何领取:注册时在「邀请码」一栏输入 BINANBT;这是最确定的方式。
  • 重要提醒:在 App 里直接注册,拿不到半点新手奖励。 App 内注册不绑定任何邀请关系,$19,800 迎新礼包和 20% 手续费返佣都会与你无关——必须走注册链接或填邀请码 BINANBT 才有。

👉 立即注册币安,领取 20% 手续费返佣

常见问题 FAQ

Permit2 是骗局吗?

不是。Permit2 是 Uniswap 开源并经过审计的授权合约,被大量正规 DApp 使用。风险不在合约本身,而在你是否把子额度授权给了恶意应用,以及是否签过看不懂的链下消息。

撤销 DApp 授权能顺带撤销 Permit2 吗?

不能。普通 ERC-20 授权和 Permit2 内部额度是两套独立记录。要撤销 Permit2 权限,需要撤销「代币 → Permit2」的主授权,或撤销 Permit2 下的具体子授权。

Permit2 合约地址是多少?

在绝大多数 Uniswap 支持的链上是 0x000000000022D473030F116dDEE9F6B43aC78BA3,zkSync 上是 0x0000000000225e31D15943971F47aD3022F714Fa。在钱包或区块浏览器里核对地址,不要只信页面显示的名称。

撤销 Permit2 授权要花多少 Gas?

取决于链和拥堵程度。以太坊主网一笔可能几美元到十几美元,L2 通常几美分到几角。批量操作能减少交易笔数,但每笔仍有基础开销;以钱包签名前的预估为准。

批量撤销一定比逐条撤销便宜吗?

不一定,但通常笔数更少、总成本更低。更关键的是选对层级:把主授权撤销掉,往往 3 笔就能关掉 12 条下游授权,比逐条撤 12 笔更省。

签了可疑的 Permit 签名,撤销有用吗?

用处有限。未上链的签名不在链上,撤销工具看不到;对方仍可能在有效期内提交。正确做法是先把资产转到新钱包,再处理旧地址的授权。

Revoke.cash 要收费吗?

查看授权和逐条撤销是免费的,只需付链上 Gas;批量撤销对免费用户收取 1.50 美元/批,Premium 包含无限次批量撤销。具体价格以官网为准。

硬件钱包能防 Permit2 盗刷吗?

不能完全防。硬件钱包保护私钥,但授权盗刷不需要私钥;你在恶意网站上签了授权,硬件钱包确认的也是你亲手签的那笔交易。它能降低私钥泄露风险,但不能替代授权管理。

延伸阅读


免责声明:本文内容仅供学习参考,不构成投资建议。链上授权与撤销均为不可逆操作,Gas 费用与合约行为以实际网络和钱包提示为准;文中合约地址与功能说明来自 Uniswap 官方文档与开源代码,工具界面与收费可能调整。请自行核对域名、合约地址与交易内容,并确认你所在地区的法律法规后再操作。

Footnotes

  1. 来源:Uniswap Permit2 官方文档:Permit2 在 Uniswap 支持的绝大多数链上部署于 0x000000000022D473030F116dDEE9F6B43aC78BA3,zkSync 为 0x0000000000225e31D15943971F47aD3022F714Fa;2026 年 11 月 5 日核查。 ↩

  2. 来源:Revoke.cash 官方常见问题:断开钱包不等于撤销授权;核心工具免费,免费用户批量撤销收费 1.50 美元/批;硬件钱包不能防止授权盗刷;2026 年 11 月 5 日核查。 ↩ ↩2 ↩3

  3. 来源:Uniswap Permit2 开源代码:AllowanceTransfer.lockdown(TokenSpenderPair[]) 在一笔交易内将多组 token/spender 额度清零;SignatureTransfer.invalidateUnorderedNonces(wordPos, mask) 通过 bitmap 作废无序 nonce,wordPos = nonce >> 8、bitPos = nonce & 0xff;2026 年 11 月 5 日核查。 ↩ ↩2

#Permit2 #Permit2撤销 #Permit2授权 #批量撤销授权 #Revoke.cash #钱包授权安全 #代币授权 #链上安全

关于作者

CoinVado Research

CoinVado Research

CoinVado Research 是 CoinVado 数字资产研究团队,专注于加密货币教育、区块链技术普及及 Web3 生态研究。

研究方向
  • 加密货币基础知识
  • 数字资产投资教育
  • 区块链技术与应用
  • Web3 生态发展
  • 链上资产与钱包安全

如果您发现文章存在错误或有内容更新建议,欢迎通过 Telegram 联系我们