> For the complete documentation index, see [llms.txt](https://help.tokenpocket.pro/cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.tokenpocket.pro/cn/faq/ethwallet/permit2-token-authorization.md).

# 关于 Permit2 授权合约使用代币

了解 Permit2 授权机制，识别被授权地址或合约带来的资产风险

## 什么是 Permit2 授权 <a href="#id-0" id="id-0"></a>

Permit2 是 Uniswap 推出的一种通用授权合约机制，目的是让用户在进行 Swap、DeFi、聚合交易等操作时，可以更灵活地管理代币授权。

在实际使用中，用户可能会看到类似“通过 Permit2 授权某个合约使用 USDT”的操作。这个过程容易被误解为普通的代币授权，但实际上它通常涉及两层权限：

1. 用户将 USDT 授权给 Permit2 合约；
2. 用户再通过 Permit2 授权某个具体的交易合约、DApp 或 Spender 使用 USDT。

理解这两层授权的区别，对于识别授权风险、排查资产异常转出、撤销可疑授权都非常重要。

### 一、什么是授权 USDT 给 Permit2 <a href="#id-1" id="id-1"></a>

“授权 USDT 给 Permit2”是发生在 USDT 代币合约层面的普通 ERC-20 授权操作。

当用户对 USDT 合约执行 `approve` 操作，并将授权对象设置为 Permit2 合约地址时，代表用户允许 Permit2 合约在授权额度范围内调用 USDT 的 `transferFrom` 功能。

简单来说，这一步的含义是：

> 用户允许 Permit2 合约在授权额度内管理或转移自己的 USDT。

需要注意的是，授权 USDT 给 Permit2，并不等于任意 DApp 都可以直接转走用户的 USDT。

因为此时 USDT 合约只知道：

> Permit2 合约被允许使用用户的 USDT。

但具体哪个 DApp、哪个交易合约、哪个 Spender 可以通过 Permit2 使用这些 USDT，还需要在 Permit2 合约内部进行进一步授权。

### 二、什么是授权交易合约通过 Permit2 使用 USDT <a href="#id-2" id="id-2"></a>

“授权交易合约通过 Permit2 使用 USDT”通常是指 Permit2 内部的授权或签名授权。

用户在 DApp 页面进行签名时，可能会授权某个具体的 `spender` 使用自己的 USDT。这个 `spender` 可能是：

* Swap Router；
* 交易合约；
* 聚合器合约；
* 第三方 DApp 合约；
* 其他可调用 Permit2 的地址。

这一步的含义是：

> Permit2 已经具备调用 USDT 合约的权限，而用户又进一步允许某个具体合约或地址，通过 Permit2 使用自己的 USDT。

可以理解为：

1. 用户先告诉 USDT 合约：“我允许 Permit2 使用我的 USDT。”
2. 用户再告诉 Permit2：“我允许这个具体的交易合约，在某个额度和期限内，通过 Permit2 使用我的 USDT。”

因此，真正能够触发资产转移的条件通常是：

```
USDT 合约授权给 Permit2
+
Permit2 内部授权给具体 Spender
```

只有当这两层条件同时满足时，交易合约才可能通过 Permit2 从用户地址转走 USDT。

### 三、两者的核心区别 <a href="#id-3" id="id-3"></a>

下面是“授权 USDT 给 Permit2”和“授权交易合约通过 Permit2 使用 USDT”的核心区别：

| 项目          | 授权 USDT 给 Permit2               | 授权交易合约通过 Permit2 使用 USDT    |
| ----------- | ------------------------------- | --------------------------- |
| 授权发生位置      | USDT 代币合约                       | Permit2 合约内部                |
| 授权对象        | Permit2 合约                      | 具体 DApp、交易合约或 Spender       |
| 授权作用        | 允许 Permit2 管理或转移 USDT           | 允许某个具体合约通过 Permit2 使用 USDT  |
| 是否直接指定 DApp | 否                               | 是                           |
| 主要风险点       | Permit2 成为统一授权入口                | 恶意 Spender 可借助 Permit2 转走资产 |
| 撤销方式        | 在 USDT 授权中取消对 Permit2 的 Approve | 在 Permit2 授权记录中取消对应 Spender |

从风险角度看，用户不能只关注是否授权了 USDT 给 Permit2，还需要进一步查看 Permit2 内部是否存在可疑 Spender 授权。

### 四、Permit2 授权的风险 <a href="#id-4" id="id-4"></a>

Permit2 本身是一种常见的授权机制，并不等同于恶意合约。它的作用是提高授权效率，减少重复授权操作。

但风险在于：

* 用户可能无法直观看懂签名内容；
* 恶意 DApp 可能伪装成正常交易页面；
* 用户可能授权了不认识的 Spender；
* 授权额度可能是无限额度；
* 授权有效期可能很长；
* 用户可能忽略钱包中的风险提示。

一旦用户对恶意 Spender 进行了 Permit2 授权，并且 USDT 已经授权给 Permit2，那么恶意合约就可能通过 Permit2 转移用户资产。

因此，在任何网站进行签名或授权前，都需要确认：

* 当前访问的网站是否可信；
* 授权的代币是否正确；
* 授权额度是否合理；
* 授权对象是否可信；
* 是否存在无限授权或长期授权；
* 钱包是否弹出了风险提示。

### 五、安全建议 <a href="#id-5" id="id-5"></a>

为了降低 Permit2 授权相关风险，建议用户遵循以下安全原则：

* 只在可信 DApp 中进行授权或签名；
* 不要随意点击陌生链接进入 DApp；
* 不要相信第三方群组、私信、空投、挖矿、质押返利等诱导操作；
* 授权前仔细查看钱包弹窗中的风险提示；
* 尽量避免无限额度授权；
* 定期检查并清理不再使用的授权；
* 对不认识的 Spender 保持警惕；
* 不要在不明网站签署任何 Permit 或 Permit2 消息；
* 如发现异常授权，应尽快撤销；
* 如发现资产异常转出，应停止继续使用该钱包接收资产。

### 六、总结 <a href="#id-6" id="id-6"></a>

Permit2 授权通常可以分为两层：

```
第一层：USDT 授权给 Permit2
第二层：Permit2 授权具体 Spender 使用 USDT
```

“授权 USDT 给 Permit2”只是让 Permit2 成为代币授权入口；而“授权交易合约通过 Permit2 使用 USDT”则是允许某个具体合约或地址通过 Permit2 动用用户的 USDT。

因此，排查风险时不能只看代币是否授权给 Permit2，还需要检查 Permit2 内部具体授权了哪些 Spender。

如果用户误签了恶意 DApp 的 Permit2 授权，且 USDT 已经授权给 Permit2，恶意 Spender 就可能在额度和有效期内转移用户资产。

授权前认真查看风险提示、确认授权对象、避免无限授权，是保护资产安全的重要步骤。

Spender 不是项目本身，而是用户授权后可以使用其代币的具体地址或合约，可理解为“被授权使用资产的一方”。
