看到授权额度从一笔小额突然变成"无限"(Unlimited),这不是你的钱包在擅自做主,更不是 DApp 后台偷偷使坏。这件事的本质是:DApp 在调用你钱包的 approve 函数时,主动请求了一个最大值(比如 uint256.max),而你当时点了确认。
步骤 1:理解"无限授权"是怎么来的——谁在主导这个请求
【做什么】 分清"发起请求的角色"和"执行签名的角色",找到问题的根源。
【怎么做】 把一次授权拆成三步看:
发起方(DApp 前端):当你进行代币兑换或质押时,DApp 的程序会构建一笔交易数据,里面包含要授权的代币合约地址、被授权方(spender),以及一个授权金额。许多 DeFi 协议为了"提升用户体验",避免你每次操作都要重新授权,默认把这个金额设成了最大值(type(uint256).max)。
确认方(钱包):钱包收到这笔交易请求后,会解析数据,在屏幕上展示给你看。如果这个金额是 uint256.max,像 MetaMask 这类钱包会在界面上明确标注"Unlimited"(无限)字样,而不是单纯显示一串长数字。
执行方(你):只有当你手动点击了"确认"或"签名"按钮后,这笔无限授权才会被记录到链上。 钱包不会、也做不到在没有你签名的情况下,把你的正常授权改成无限的。
【完成标准】 你能说清楚:是 DApp 提出了"无限额度"这个请求,而你自己签名确认了它。
步骤 2:判断这是 DApp 的"常规操作"还是"钓鱼陷阱"
【做什么】 区分知名协议的正常请求和恶意骗局。
【怎么做】 看两个东西:
看协议:如果你在 Uniswap、Aave 这种顶流协议上操作,它们为了流畅体验,确实会默认要无限授权。虽然也有风险(协议被黑),但这属于行业内的"高风险常态",是你已知的权衡。
看场景与额度:真正的危险信号是"场景不合理"。 比如你只是在领空投、铸造 NFT,或者连接一个来路不明的小网站,它却弹窗要你"无限授权 USDT"或"setApprovalForAll"(授权所有 NFT),这 100% 是钓鱼陷阱。钓鱼攻击利用的就是用户"习惯性点确认"的心理,一旦你授权,对方随时能用 transferFrom 转走你的资产。
常见失败原因:很多人根本没留意钱包弹窗上写的那个"Unlimited"标签,手指已经按在了确认键上。授权等于给了别人一把能无限取你钱的钥匙,这个操作和直接转账一样危险。
高危风险:无限授权一旦签署,在链上是永续有效的,直到你主动撤销。 这期间,这个合约地址(无论它现在是否安全)都拥有随时转走你该代币全部余额的权力。如果协议爆雷、被黑,或者本身就是假的,你的资产就危险了。
步骤 3:管理风险——这不是改不了的事
【做什么】 把风险控制在自己手里,养成管理授权的习惯。
【怎么做】
立即行动:打开 Revoke.cash 或 MetaMask Portfolio 的"授权管理"页面,连接钱包,查看所有带"Unlimited"或大额度的授权。点击"撤销"(Revoke),发送一笔链上交易把授权额度改回 0。这需要付一点 Gas 费,但这是必要的防御成本。
养成习惯:如果不是天天用的协议,用完就随手撤销授权。定期用授权管理工具扫一遍你的地址,清理那些你早就不用的无限授权。
操作完成的校验方式:撤销授权后,刷新授权管理页面,确认对应的授权记录已经彻底消失,额度显示为 0。完成这一步后,该代币之前的无限风险就彻底关掉了。



