WETH 授权是对 WETH9 合约调用 approve(),让另一个地址——DEX 路由器、借贷池、NFT 市场——用 transferFrom() 转移你设定金额的 WETH。包装和解包无需授权;第三方合约对你的 WETH 进行的任何操作都需要。在 2026 年 10 月 2 日,Ethereum 上发送给 WETH9 的最后 100 笔交易中,24 笔是授权,其中 20 笔使用约 46,000 gas,因为它们从零创建了一个新的额度(Etherscan)。规则是:授权你即将使用的合约,授权你即将使用的金额,撤销你不再使用的内容。
- 授权用于第三方: deposit()、withdraw() 和 transfer() 作用于自己的余额,无需授权;DEX 路由器、池或市场的 transferFrom() 需要。
- 交易份额: 在 2026 年 10 月 2 日,块 26,105,189-26,105,250 期间发送给 WETH9 的 100 笔交易中,授权占 24 笔,兑换 46 笔,解包 26 笔(Etherscan)。
- 首次授权花费两倍: 那 24 笔中的 20 笔用 46,000-46,400 gas 创建新的额度,而改变现有额度需要 24,000-29,000 gas——46,000 / 24,000 = 1.9 倍。
- 无限意味着无限: WETH9 将 2^256-1 的额度视为无限,永不减少——约 1.16 × 10^59 WETH,而在区块 26,105,247(Ethereum RPC)存在的 WETH 仅 2,031,131 枚。
WETH 授权是什么
WETH 授权是 WETH9 合约授权表中的一条记录:所有者、支出者、金额。approve(spender, amount) 写入它并发出 Approval 事件;支出者调用的 transferFrom(owner, recipient, amount) 检查该记录,转移 WETH,并将额度减少转移的金额。授权本身不转移任何 WETH 也不锁定它;WETH 保留在你的地址上,直到支出者使用它的额度。
ERC-20 代币这样工作是因为合约无法提取从未被授权的代币,WETH 正是为了让 ETH 参与这个流程而存在(WETH 是什么)。原生 ETH 没有授权表:它被发送,从不被提取,这就是为什么 DeFi 合约要求 WETH 而不是 ETH(为什么 WETH 存在)。
何时需要授权 WETH,何时不需要
问题总是:谁转移 WETH——你,还是代表你的合约。
| 操作 | 需要授权 | 原因 |
|---|---|---|
| 将 ETH 包装为 WETH(deposit) | 否 | WETH9 合约向调用者铸造 |
| 将 WETH 解包为 ETH(withdraw) | 否 | 调用者销毁自己的余额 |
| 将 WETH 发送到地址(transfer) | 否 | 所有者转移自己的余额 |
| 在 DEX 上兑换 WETH | 是,授权给路由器 | 路由器用 transferFrom() 提取 WETH |
| 向借贷市场供应 WETH | 是,授权给池 | 池提取存款 |
| 在 NFT 市场用 WETH 出价 | 是,授权给市场合约 | 出价被接受时,销售通过从出价者提取 WETH 来结算 |
| 通过桥接合约桥接 WETH | 是,授权给桥接或网关 | 桥接在发送前提取 WETH |
前三行是如何解包 WETH 和 ETH 转 WETH 描述的:它们中不出现授权步骤因为不存在。在包装或解包前请求授权的界面是通过另一个合约路由,而不是直接调用 WETH9。
精确额度与无限额度
额度可以是下一个操作的精确金额,也可以是合约接受的最大值。在 WETH9 中,最大值 2^256-1 是特殊的:当额度等于它时,transferFrom() 跳过扣减,所以一次授权涵盖该支出者的所有未来转移(WETH9 验证源代码,Etherscan)。
- 精确金额: 每次兑换或存款需要先进行自己的 approve();支出者永远无法取出超过授权金额的金额。
- 无限: 一次 approve() 适用于所有未来使用;支出者可以转移该地址持有的任何 WETH,直到授权被撤销。
权衡是 gas 对风险。无限授权每次使用可以节省一次授权,约 24,000-46,000 gas;它也让持久的权限留给可能稍后被升级、利用或放弃的合约。
WETH 授权花费多少
授权花费一笔网络费用,仅此而已。gas 取决于额度是否已存在:
| 授权类型 | 使用的 Gas(Etherscan,2026 年 10 月 2 日) | 主网费用,5.6 gwei,ETH $2,690.75 |
|---|---|---|
| 从零创建新额度 | 46,000-46,400 | 约 $0.70 |
| 更改现有额度 | 24,000-29,000 | 约 $0.36-$0.44 |
Gas 单位来自个别授权的费用和 gas 价格;USD 列使用 Etherscan 的 2026 年 9 月 28 日平均 gas 价格和 ETH 价格。在第二层上 gas 单位类似,gas 价格低数百倍,方式与包装和解包相同(WETH gas 费用)。无论哪种方式,费用用 ETH 支付,所以仅持有 WETH 的地址无法授权任何东西。
为什么 WETH 没有 Permit 函数
WETH9 于 2017 年 12 月部署,在 EIP-2612 定义 permit() 之前——该函数让代币持有者用链下签名而不是交易来授予额度。WETH9 仅有 deposit、withdraw、totalSupply、approve、transfer 和 transferFrom,其代码无法改变,所以 Ethereum 上的每次 WETH 授权都是用 ETH 支付的链上交易。
两种解决方法存在。Uniswap 的 Permit2 合约接受一次普通的 WETH 授权,然后让后续支出由签名授权。较新的包装代币内置了 permit:Lido 的 wstETH 实现了 EIP-2612(wstETH 对比 WETH)。对于 WETH9 本身,首次授权总是一笔交易。
如何检查和撤销 WETH 授权
- 列出额度: 打开网络浏览器的代币授权检查器(Etherscan、Basescan、Arbiscan)或专门工具如 revoke.cash,输入你的地址。
- 找到 WETH 条目: 每行显示支出者合约、额度(精确或无限)和设置时间。
- 撤销你不再使用的: 撤销从你的地址发送 approve(spender, 0);在钱包中确认并用 ETH 支付费用。
- 在每个网络重复: Base WETH 的授权与 Ethereum WETH 的授权是分开的,因为每个网络有自己的 WETH 合约(Base 上的 WETH)。
授权无法做什么
- 它无法转移 ETH: 额度仅涵盖该合约中的 WETH 余额,从不涵盖同一地址上的原生 ETH。
- 它无法超过你的余额: 如果所有者持有的 WETH 少于请求的金额,transferFrom() 会失败,无论额度如何。
- 它无法跨越网络: 授权各自生活在每个网络的 WETH 合约中。
- 它无法向后撤销: 撤销停止未来的提取;支出者已转移的 WETH 保持已转移。