给某个DApp做过一次授权之后,半年没用了,那个合约现在还能转走你的资产吗?答案取决于你有没有及时撤销。
如果你不记得签过多少授权,可以从下面三个渠道查——不需要登录任何第三方后台,也不需要信任任何人。
| 查看方法 | 适用场景 | 核心特点 | 需连接钱包 |
|---|---|---|---|
| Revoke.cash | EVM全链,普通用户首选 | 支持100+网络,界面直观,有风险颜色标注 | 是 |
| Etherscan区块浏览器 | 只想在以太坊主网查,不想连接钱包 | 不需连接钱包,输入地址即可 | 否(地址查询模式) |
| Unrekt | Revoke.cash的替代选项 | 操作逻辑类似,多一个备选通道 | 是 |
一、什么是授权合约?先搞明白三个层级

授权(Approval)是ERC-20代币标准中的一个内置函数。你把资产的控制权“借”给别人,但资产本身还在你的地址里。
- 授权对象:某个智能合约地址(比如Uniswap的路由合约)
- 授权额度:可以动用的代币数量(可以是具体数字,也可以是“无限”)
- 授权有效期:一次批准永久有效,除非你主动撤销或该合约自毁
当你授权一个DApp使用你的USDC时,你实际上是在链上写入了一条记录:允许0x123…这个合约最多转走X个USDC。之后,该DApp可以通过合约代码内的transferFrom函数,在不超过你授权的限额内,自由转移你的代币。
无限授权(Unlimited Approval)则意味着你把整类代币的全部控制权交给了对方,而没有数量上限。根据安全报告,授权相关的钓鱼攻击在2024至2025年间造成了超过2亿美元的损失,其中很大一部分源于用户忘记了自己曾经签过哪些无限授权。
⚠️ 误区提醒:很多人认为在钱包右上角点“断开连接”就万事大吉。断开连接只是你的钱包不再主动向该网站展示余额,链上那条授权记录依然存在。和实体世界对比——你给了别人一把备用钥匙,然后只是把那个人拉黑了,但钥匙还在他手里。
所以定期检查授权列表,比“看了白皮书再投”更务实。
二、方法一:Revoke.cash——最通用、最直观(新手首选)
Revoke.cash是目前使用最广泛的授权管理工具,覆盖以太坊、Polygon、BNB Chain、Arbitrum、Optimism、Base等超过100条区块链网络。
操作步骤(建议全程手打网址,不要点搜索广告):
- 在手机浏览器里手动输入
revoke.cash,确认网址拼写正确 - 点击“Connect Wallet”,选择你用的钱包,连接后网站会自动读取你的授权记录
- 在页面上方切换要检查的区块链网络,不同链上的授权需要分开查看
- Revoke.cash会以列表形式展示你所有授权记录:授权合约地址(Spender)、授权额度(Amount)、代币种类(Token)。带有“Unlimited”标记的授权以明显方式突出显示,用颜色区分风险级别:绿色为安全、黄色为低风险、红色为高风险
- 找到不再使用的授权条目,点击右侧的“Revoke”按钮
- 钱包会弹出交易确认窗口,支付一笔小额Gas费后完成撤销
为什么要手打网址? 直接在搜索引擎搜“revoke.cash”然后点广告链接,很可能进入高仿钓鱼网站。犯罪分子会通过搜索引擎投放伪造Revoke.cash界面的钓鱼链接,诱导用户连接钱包后直接盗走资产。
三、方法二:Etherscan区块浏览器——不连接钱包也能查
如果你不想连接任何第三方工具、只想在以太坊主网上查授权,Etherscan提供了一种“只读”查询方式,全程不需要连接钱包:
- 打开
etherscan.io,进入以太坊主网页面 - 在顶部导航栏找到“Tools”下拉菜单,点击“Token Approvals Checker”
- 输入你想查询的钱包地址,点击搜索
- 页面会显示该地址在所有代币上的授权合约列表,包含Spender地址、授权额度、最近活动时间等
在BSC上查授权:BscScan同样支持授权检查功能。操作方式与Etherscan类似,将钱包地址输入搜索框,在地址详情页找到“Approval”或“Tokens Approved”标签页,查看授权详情。
在Polygon上查授权:访问polygonscan.com,操作逻辑与Etherscan、BscScan一致。输入钱包地址后,查找授权相关的标签页即可查看该Polygon地址上所有代币授权记录。
这些检查器的局限性:区块浏览器的授权检查器只能告诉你“授权了谁”,不会标注风险等级;如果Spender地址看起来很陌生,你需要自己去核对该地址属于哪个协议。Revoke.cash在这方面提供了更友好的风险提示。
四、方法三:Unrekt——备用之选
如果Revoke.cash在某些时候访问不稳定、加载慢,或者你只是想用另一个工具交叉验证一下,Unrekt是一个不错的备份选项。
访问unrekt.net,连接钱包后选择对应区块链网络,它同样会列出该地址的所有已授权合约。逐条核对后,点击“Revoke”撤销即可。
同属EVM链授权管理工具,Unrekt不如Revoke.cash流行,但它的核心功能和操作逻辑高度一致,可以看作是“Revoke.cash出了问题时的Plan B”。
五、检查授权列表时要注意的四件事
1. 跨链分开查
授权是链级别的。在以太坊上签的授权,在BSC上看不到。Revoke.cash需要在每条链上分别连接钱包、分别查看授权记录。
2. 授权额度不是交易记录
授权记录显示的是“额度”,不是你实际转走了多少钱。一笔授权额度为1000 USDC,不代表钱已经转出去了,只是合约有权限动用那么多。撤销授权后,合约的权限才会被收回。
3. 撤销授权需要Gas费,无法免除
撤销授权本质上是一笔链上交易——它向合约发送了一个approve(0)的调用,把授权额度重置为零。在以太坊主网,撤销一笔授权的手续费通常在$2-$5,取决于网络拥堵程度。而在BSC和Polygon等低Gas费链上,撤销一笔授权的成本通常不超过$0.10。收益较高的是集中清理一批不再需要的授权,而不是分开一笔一笔撤销,这样可以分摊Gas成本。
4. 先查授权再换钱包,别颠倒
有些人每次新交互都换一个新钱包,从来不回头看,结果旧钱包里挂了几十个授权,自己也不知道。最长效的流程应该是:在新钱包做交互前,先弄明白授权机制;定期回去检查已签名钱包的授权列表,而不是永远往前走。 养成“每季度查一次”的习惯,比到处挖新项目更务实。
六、一张表看懂:不同授权额度意味着什么
| 授权额度 | 链上写入记录 | 风险等级 | 实际含义 |
|---|---|---|---|
| 具体数字(如1000 USDC) | approve(spender, 1000) | 中 | 合约最多能动用1000个代币,用完或撤销即失效 |
| 无限授权(uint256.max) | approve(spender, 2^256-1) | 高 | 合约可动用该地址上这类代币的全部余额,永久有效直到撤销 |
| 授权额度为0 | approve(spender, 0) | 无风险 | 已撤销,合约不再拥有任何权限 |
据统计,市场上超过99% 的DeFi项目在编写approve函数时,默认将授权额度设置为无限,而非让用户手动选择具体数量。这意味着,在绝大多数情况下,点击“批准”时,你签署的是一份没有数量上限的“空头支票”。
七、安全操作的核心原则
第一,拒绝“无限授权”习惯。 在MetaMask等钱包中,授权弹窗通常允许你将授权额度从“unlimited”改为具体数字——只给出你当前这一轮交互所需的最小额度。别为了一时省事,签下没有上限的授权。
第二,授权≠转账,定期检查才是真安全。 授权存在于链上,不是你手机里某个App能“清”掉的设置。即使断开网站连接,授权还在链上挂着。把“每月第一个周末查授权”写进日程提醒,比每天刷K线更值得坚持。
第三,手动输入工具网址,不使用搜索引擎链接。 Revoke.cash这类工具是当前最好的授权管理方案,但前提是你确定访问的是真实网站,而不是钓鱼页面。
免责声明:本文内容仅为钱包授权机制的知识科普与操作参考,不构成任何投资建议或操作指引。

发表回复