⚠️ 先看这条: 如果还没有交易所账户,走**注册链接(如「立即注册」)**或填邀请码 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 是什么:不是钱包,是授权中间层
- 两层授权:主授权与子授权
- 为什么你撤销了 DApp,资产还是被转走
- 链下签名:撤销工具看不到的那一类
- 先判断你属于哪种情况
- 批量撤销的四种做法
- Revoke.cash 六步撤销流程
- Gas 与成本:批量到底省多少
- 撤销后仍然不安全的五种情况
- 日常怎么把授权面收窄
- 💰 币安返佣福利:邀请码 BINANBT
- 常见问题 FAQ
- 延伸阅读
Permit2 是什么:不是钱包,是授权中间层
Permit2 是 Uniswap 部署在链上的授权合约,作用是让用户「一次授权,多个应用复用」。 它不是托管钱包,不会拿你的币去交易,也不能直接提走你的资产;它只负责记录「谁可以在什么条件下动用你多少代币」。
在没有 Permit2 的流程里,每用一个新 DApp,你都要为该 DApp 单独发一笔 approve 交易,授权它动用某个代币。用十个应用,就是十笔授权、十次 Gas。Permit2 把这件事改成两步:
- 你先授权 Permit2 合约,通常是无限额度,只做一次;
- 之后每个 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 → 具体 spender | Permit2 合约内部的 allowance 记录 | Revoke.cash 的 Permit2 分组、Permit2 合约的 allowance 查询 | 只影响该 spender,其他应用不受影响 |
| 链下签名 | 你的地址 → spender(未上链) | 不存在于链上 | 任何工具都看不到 | 无法撤销,只能等过期或转移资产 |
主授权是总闸,子授权是分闸。 如果你怀疑整个钱包的 Permit2 权限已经不可信,最彻底的做法是把「代币 → Permit2」的主授权撤销掉:Permit2 没有额度了,它下面所有子授权都动不了你的币。代价是所有依赖 Permit2 的 DApp 都要重新授权,直到你再次批准 Permit2。
如果你只想清理某个可疑 DApp,而其他应用还要继续用,就只撤销对应的子授权,保留主授权。先判断目的,再决定撤哪一层,不要盲目点「全部撤销」。
![]()
为什么你撤销了 DApp,资产还是被转走
因为「撤销 DApp 授权」和「撤销 Permit2 授权」是两件不同的事,前者不会自动影响后者。 Permit2 在链上维护自己的额度记录,DApp 通过 Permit2 拿到的权限,不会因为你把 DApp 的普通 ERC-20 allowance 改成 0 而消失。
常见的三种误操作:
- 在区块浏览器里撤销了 DApp 的 allowance,以为万事大吉。 这只清掉了第一层里「代币 → DApp」的旧授权;如果 DApp 走的是 Permit2,它真正使用的是「代币 → Permit2 → DApp」这条路径,主授权仍然有效。
- 在 Revoke.cash 只看了默认列表。 普通 ERC-20 授权和 Permit2 授权通常分开展示,需要切到 Permit2 分组或逐条展开;只清默认列表,可能漏掉 Permit2 下的子额度。
- 把「断开连接」当成撤销。 断开只是让网站看不到你的地址,链上额度没有任何变化。Revoke.cash 的官方说明也明确:断开钱包对授权盗刷毫无作用。2
一句话:撤销前先确认那条授权到底挂在谁名下。 如果 spender 是 Permit2 合约地址,你要处理的是 Permit2 这一层;如果 spender 是 DApp 合约,那才是普通授权。
链下签名:撤销工具看不到的那一类
Permit2 的 SignatureTransfer 允许你签一条链下消息,授权对方在未来某个时间提交上链、转走指定代币。 签名本身不花 Gas,也不立即产生链上记录;只有对方把签名提交给合约,额度才真正生效。
这带来一个反直觉的结论:如果你刚在一个可疑网站签过「授权」「Permit」「免 Gas 交易」,而你还没有看到任何链上变化,撤销工具帮不了你,因为链上根本没有可撤销的东西。
危险点有三个:
- 签名可以被延迟提交。 对方可以等几天、几周,等你放松警惕再提交。
- 签名有有效期,但可能很长。 SignatureTransfer 的 permit 带 deadline,AllowanceTransfer 的子授权带 expiration;在到期之前,签名一直可用。
- 工具只能看到已上链的部分。 未提交的签名不在链上,区块浏览器和 Revoke.cash 都读不到。
所以遇到这种情况,正确顺序不是「先撤销」,而是:
- 把该钱包里的资产转到新钱包,优先转高价值代币;
- 在干净设备上新建钱包,不要在可能中招的设备上操作;
- 确认新钱包的助记词没有在任何网站输入过;
- 之后再回头处理旧地址的授权,把它当作已经暴露的地址。
撤销是给「权限还在、资产还在」的钱包做减法的;签名泄露是「权限已经在路上」,这时候要先把资产搬走。
先判断你属于哪种情况
不同情况对应完全不同的动作,先分类,再操作。 下面这张表按紧急程度排序:
| 你的情况 | 判断依据 | 该做什么 |
|---|---|---|
| 刚在可疑网站签过名 | 钱包弹出「签名」「Permit」「免 Gas」,没有链上交易 | 最高优先级:转移资产到新钱包,不要只撤销 |
| 助记词/私钥可能泄露 | 一有 ETH 进账就被转走,或设备中过木马 | 弃用该钱包,新建地址,撤销旧地址授权只是收尾 |
| 看到无限额度给陌生 spender | Revoke.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/spender | 1 笔 | 保留主授权,只清这 12 组 |
| Revoke.cash 批量撤销 | 1 次提交(可能打包多笔) | 图形化,免费用户另付 1.50 美元/批 |
结论很直接:如果目的是「把这个钱包的 Permit2 权限全部关掉」,按代币撤销主授权通常最省——3 笔就够,不需要 12 笔。 如果你还要继续用 Permit2 上的其他应用,才需要 lockdown 或工具的批量功能。
Gas 本身随网络拥堵变化:以太坊主网一笔撤销可能是几美元到十几美元,L2 上通常只要几美分到几角。当撤销成本高于钱包里的余额时,直接换钱包更划算——把剩余资产转到新地址,弃用旧地址,比花十几美元撤销一个只剩几十美元的钱包更合理。
撤销后仍然不安全的五种情况
撤销只处理「链上已经存在的额度」,它解决不了下面五类问题。 对照检查,别把撤销当成万能药。
- 未上链的 Permit 签名。 签名不在链上,撤销工具看不到,也撤不掉;只能等过期,或转移资产。
- 助记词/私钥泄露。 对方可以直接导入钱包转走全部资产,根本不需要授权。出现「一有 ETH 进账就被转走」的扫币机器人,说明助记词已经泄露,撤销没有意义。
- 助记词没泄露,但设备被控。 木马可以替换你复制的地址、篡改你看到的交易内容;撤销交易本身也可能被替换。
- 其他类型的权限。 NFT 的
setApprovalForAll、其他合约的 ERC-20 allowance、以及 EIP-7702 委托等,都可能不在 Permit2 列表里,需要分别检查。 - 已经转走的资产。 撤销只能阻止未来的转走,不能追回已经发生的损失;链上交易不可逆,不要相信任何「付费追回」的服务。
一个实用判断:撤销之后,如果钱包里还有资产、且你不确定签名是否泄露,最稳的动作是把资产转到新钱包,而不是继续在旧地址上操作。
日常怎么把授权面收窄
授权安全的核心不是「出事后再撤」,而是平时就别把权限给得太大。 下面五条能显著降低暴露面:
- 分钱包使用。 长期持仓放冷钱包或只收不发的主钱包;交互、mint、领空投用单独的「热钱包」,里面只放少量资金。
- 授权时改额度。 能填具体金额就不要选无限;虽然多一步操作,但被盗时的损失上限完全不同。
- 优先用带过期时间的授权。 Permit2 的 AllowanceTransfer 支持 expiration,部分应用会设置有效期;有期限的授权比永久授权安全。
- 每月检查一次。 把 Revoke.cash 加进书签,按月检查无限额度和陌生 spender;不要等到被盗才想起。
- 硬件钱包不防授权。 硬件钱包保护的是私钥,但授权盗刷不需要你的私钥;签错一次,硬件钱包也拦不住。2
💰 币安返佣福利:邀请码 BINANBT
链上授权要自己管,交易所手续费可以长期省:注册时填邀请码 BINANBT,可享 20% 手续费返佣。 本文包含返佣链接,通过它注册我们可能获得奖励,但不会让你多花一分钱。
- 返佣比例:20% 手续费返佣,长期有效,交易越多省得越多。
- 迎新礼包:最高 $19,800,按任务解锁,不是注册即送现金。
- 如何领取:注册时在「邀请码」一栏输入 BINANBT;这是最确定的方式。
- 重要提醒:在 App 里直接注册,拿不到半点新手奖励。 App 内注册不绑定任何邀请关系,$19,800 迎新礼包和 20% 手续费返佣都会与你无关——必须走注册链接或填邀请码 BINANBT 才有。
常见问题 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 盗刷吗?
不能完全防。硬件钱包保护私钥,但授权盗刷不需要私钥;你在恶意网站上签了授权,硬件钱包确认的也是你亲手签的那笔交易。它能降低私钥泄露风险,但不能替代授权管理。
延伸阅读
- 钱包授权怎么撤销?Revoke.cash 批量撤销教程与盗刷止损
- MetaMask 钱包被盗怎么追回:30 分钟止损清单
- 钱包里的币不见了怎么找回:八种原因排查
- MetaMask 钱包使用指南 2026
- 冷钱包/硬件钱包怎么选怎么用
- 更多钱包与安全内容
免责声明:本文内容仅供学习参考,不构成投资建议。链上授权与撤销均为不可逆操作,Gas 费用与合约行为以实际网络和钱包提示为准;文中合约地址与功能说明来自 Uniswap 官方文档与开源代码,工具界面与收费可能调整。请自行核对域名、合约地址与交易内容,并确认你所在地区的法律法规后再操作。
Footnotes
-
来源:Uniswap Permit2 官方文档:Permit2 在 Uniswap 支持的绝大多数链上部署于
0x000000000022D473030F116dDEE9F6B43aC78BA3,zkSync 为0x0000000000225e31D15943971F47aD3022F714Fa;2026 年 11 月 5 日核查。 ↩ -
来源:Revoke.cash 官方常见问题:断开钱包不等于撤销授权;核心工具免费,免费用户批量撤销收费 1.50 美元/批;硬件钱包不能防止授权盗刷;2026 年 11 月 5 日核查。 ↩ ↩2 ↩3
-
来源:Uniswap Permit2 开源代码:
AllowanceTransfer.lockdown(TokenSpenderPair[])在一笔交易内将多组 token/spender 额度清零;SignatureTransfer.invalidateUnorderedNonces(wordPos, mask)通过 bitmap 作废无序 nonce,wordPos = nonce >> 8、bitPos = nonce & 0xff;2026 年 11 月 5 日核查。 ↩ ↩2