dApp 为什么要请求授权
ERC-20 代币有一个塑造了 Web3 一半用户体验的特性:智能合约不能直接从你的地址取走代币——即使你希望它这么做。要兑换你 USDC 的 DEX 必须先获得你的明确许可。这就是为什么如此多的交互分两步——先是一笔 approve 交易,然后才是真正的兑换或存入。授权不是走过场,它是一份持续有效的花费授权书,其效力比你当初给它的那笔交易长久得多。
approve() 到底授予了什么
当你签署一笔授权时,代币合约会记录一条 allowance:地址 X(dApp 的合约)可以随时花费你至多 N 个代币,直到额度用尽或被更改。有两个属性很关键。第一,allowance 归属于你所授权的合约,而非你访问的网站——界面可以消失,权限依然存在。第二,花费时完全不需要你的参与:一旦授予,被授权的合约可以在此后任何交易中划走代币,无需你再签名。这正是授权有用的原因——也正是它成为攻击面的原因。
无限授权:方便,也是长期风险
由于每次授权都要消耗 gas,许多 dApp 会请求一个实际上无上限的 allowance,让你再也不用重复授权。方便是真的,代价也是真的:给某个合约无限授权,意味着你在该代币上的全部余额将永远押在那个合约的安全性上。如果该合约多年后被攻破——或者从一开始就是恶意的——攻击者不需要你的私钥或签名;你当年授予的 allowance 就足够了。许多最大的钱包被吸干事件根本不是私钥被盗,而是旧授权被兑现。
Permit 与 Permit2:用签名完成授权
现代的改进是 Permit(EIP-2612):不再发送链上 approve 交易,而是签署一条链下消息,由 dApp 连同其操作一起提交——两笔交易变一笔,没有单独的授权 gas,而且权限可以设置截止时间。Permit2 将这一思路推广到从未实现 EIP-2612 的代币,充当共享授权枢纽,提供会过期、有额度限制的授权。这些是真正的进步,但注意它们改变了什么:签名如今承担了过去由交易承担的工作。让你签错 Permit 消息的钓鱼网站,效果等同于一笔恶意授权——所以读懂你所签的内容比以往更重要,而不是更不重要。
攻击面:吸干者与陈旧的 allowance
授权滥用有两种形态。主动型:drainer 网站冒充真实 dApp,把授权(或 Permit 签名)伪装成「领取」「验证钱包」之类无害操作来索取。被动型:你多年前授予正规合约的 allowance 一直休眠,直到该合约、其管理员密钥或升级路径被攻破。这两者都说明应把「连接并授权」流程当作 Web3 安全的关键时刻——安全做法见如何安全地将钱包连接到 dApp。
真正有效的授权卫生习惯
三个习惯可以覆盖大部分风险。在 dApp 允许时授权限定额度,尤其是大额余额——之后多授权一次是廉价的保险。用信誉良好的授权检查工具定期检查并撤销 allowance,把不再使用的一律当作应清除的累赘(撤销本身也是一笔交易)。把重要资产放在一个从不签署授权的地址上,与你活跃的 dApp 钱包分开。更多分层习惯见钱包安全最佳实践。
WATS 在其中的位置
授权就是签名,而签名是钱包的领地。WATS 完全非托管——钥匙由你持有,WATS 从不持有任何钥匙——因此每一次授权、Permit 签名和撤销,都只在你的私钥签名时发生,通过浏览器扩展或移动应用,覆盖 EVM、Solana 和 TON。费用侧是 WATS 与众不同之处:每个操作,包括授权和撤销交易,都用同一种代币 ATS 计费,而不是链的原生 gas——在 EVM 上通过 ERC-4337 paymaster,在 Solana 和 TON 上通过等效的代付者/中继者——因此清理旧 allowance 永远不会因为你在那条网络上没有 gas 代币而卡住。收取的 ATS 会被销毁,供应量从 1 亿向 3000 万下限递减;而由于 ATS 是 LayerZero OFT,一个余额即可覆盖所有链。WATS 是第一个也是唯一一个将 ERC-4337 与 OFT 单代币手续费与这一销毁机制相结合的钱包——详见 ATS 费用页面。
常见问题
什么是代币 allowance?
Allowance 是记录在 ERC-20 代币合约里的一项持续有效的许可:它规定某个特定合约可以花费你至多某个数量的代币。它在你签署 approve 交易时产生,并且——与你当时使用的网站无关——一直存在,直到被用尽、更改或撤销。花费时,被授权的合约不需要你的任何额外签名。
无限授权安全吗?
它们很方便,但带着永久的尾部风险:你在该代币上的全部余额,取决于被授权合约永远不被攻破、永远不作恶——无限期地。对小额活跃余额,方便通常占上风;对大额持仓,优先选择限定额度,并定期撤销不再使用的 allowance。许多重大吸干事件是旧授权被利用,而非私钥被盗。
Permit 和普通授权有什么区别?
普通授权是一笔独立的链上交易,在 dApp 行动之前要先花 gas。Permit(EIP-2612)用一条链下签名取代它,由 dApp 打包进自己的交易——一步完成,还可设置截止时间;Permit2 把这一模式扩展到不原生支持 Permit 的代币。安全模型随之转移:签名现在可以授予花费权,所以对签名请求要像审查授权一样严格审查。

