Permit2
Permit2 是一个代币授权合约,充当共享的授权管理器。用户无需为每个 DEX 合约单独授权,只需将代币一次性授权给 Permit2,然后为特定花费者(如 Universal Router)授予细粒度的权限。为什么需要 Permit2?
传统的 ERC-20 授权存在几个问题:| 问题 | Permit2 解决方案 |
|---|---|
| 对每个 dApp 的无限授权 | 只需对 Permit2 单次授权,然后设定范围化的子权限 |
| 授权无过期时间 | 子权限具有可配置的过期时间 |
| 每个新 dApp 需要新的授权交易 | Permit2 已授权,只需一个子权限 |
| 撤销需要按 dApp 逐个操作 | 撤销 Permit2 授权即可一次切断所有 dApp |
工作原理
步骤 1:将代币授权给 Permit2
标准的 ERC-20approve()。每个代币只需执行一次。
步骤 2:通过 Permit2 授予权限
调用Permit2.approve() 让 Universal Router 通过 Permit2 使用你的代币:
步骤 3:交易执行
当 Universal Router 执行交易时,它通过 Permit2 从用户处拉取代币 — 无需用户进一步交互。查询授权额度
查询现有权限:amount小于交易输入金额expiration已过期
安全优势
- 范围化权限:每个花费者拥有自己的授权额度和过期时间
- 单点撤销:撤销对 Permit2 的 ERC-20 授权即可禁用所有下游花费者
- Nonce 追踪:防止重放攻击
- 过期机制:权限在设定时间后自动失效