> For the complete documentation index, see [llms.txt](https://docs.qr.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.qr.xyz/qr-zh/he-xin-gai-nian/solana-token-accounts.md).

# Solana 代币账户（ATA）

> 为什么交换需要 SOL，以及 Solana 与 EVM 链有何不同。

***

## EVM 与 Solana：代币如何存储

在 EVM 链（Ethereum、Base、Polygon）上，所有代币余额都存放在一个智能合约中。你的余额只是映射中的一个数字——没有额外账户，也没有额外成本。

Solana 的工作方式不同。你持有的每一种代币都需要一个单独的 **关联代币账户（ATA）** ——一个专门的链上账户，用于存储你对该特定代币的余额。

```
EVM（Ethereum、Base、Polygon）：

  USDC 合约
  ┌──────────────────────────┐
  │  0xAlice  → 100 USDC     │   一个合约，
  │  0xBob    → 50 USDC      │   所有余额都在里面
  │  0xCarol  → 200 USDC     │
  └──────────────────────────┘

Solana：

  Alice 的钱包
  ├── SOL 余额（原生）
  ├── USDC ATA  → 100 USDC      每种代币 = 单独账户
  ├── BONK ATA  → 5,000 BONK    每个账户 = 租金押金
  └── JUP ATA   → 30 JUP
```

***

## 什么是 ATA？

**ATA** 代表 **关联代币账户**。它是一个唯一的链上账户，由你的钱包地址和代币铸造地址按确定性方式派生出来。

```
你的钱包  +  USDC 铸造地址   →   你的 USDC ATA  （唯一地址）
你的钱包  +  BONK 铸造地址   →   你的 BONK ATA  （唯一地址）
你的钱包  +  JUP 铸造地址    →   你的 JUP ATA   （唯一地址）
```

每个 ATA：

* 存储你对 **某一种特定代币**
* 的余额 **必须先** 创建
* ，你才能接收该代币 **需要一次性的** SOL 租金押金

***

## 什么是租金？

Solana 会为 **租金** 收取链上数据存储费用。每个占用区块链空间的账户都必须持有最低 SOL 余额才能保持存活。

对于代币账户（ATA），免租金最低要求是：

|                 |                      |
| --------------- | -------------------- |
| **ATA 租金**      | **约 0.00203928 SOL** |
| 当 SOL = 150 美元时 | \~$0.31              |

这不是 **费用** ——而是一个 **可退还的押金**。如果你之后关闭该代币账户，整笔租金都会返还到你的钱包。

***

## 为什么 \[QR] Wallet 不能代付 ATA 租金？

\[QR] Wallet 代付 **交易手续费** ——即在网络上执行操作的成本（签名验证、计算单元、优先费）。

ATA 租金与交易手续费本质上不同：

|            | 交易手续费 | ATA 租金   |
| ---------- | ----- | -------- |
| **是什么**    | 执行的付款 | 存储押金     |
| **SOL 去向** | 给验证者  | 进入新账户    |
| **可退款吗？**  | 否     | 是（账户关闭时） |
| **按操作计费？** | 每笔交易  | 每种代币一次   |

```
由 [QR] Wallet 代付：
├── 交易签名费    （约 0.000005 SOL）
├── 计算单元成本            （约 0.0001 SOL）
└── 优先费                 （浮动）

不代付——由用户支付：
├── ATA 租金押金             （每新增一种代币约 0.002 SOL）
└── 锁定在新账户中    （关闭时可退还）
```

如果代付租金，就意味着 \[QR] Wallet 会把自己的 SOL 永久锁定在每个用户的代币账户里。从规模上看，这在经济上不可持续——用户每收到一种新代币，就会永久锁定约 0.30 美元的 \[QR] Wallet 资金。

***

## 什么时候需要额外 SOL？

在交换和收币时，ATA 会自动创建。以下情况需要额外的 SOL：

### 场景 1：SOL → 代币交换

当你把 SOL 兑换成任意 SPL 代币，并且你还没有该代币的 ATA 时：

```
你的 SOL 余额必须覆盖：
┌─────────────────────────────────────────────┐
│  交换金额              例如 1.000 SOL      │
│  + wSOL ATA 租金              约 0.002 SOL    │  ← 包装原生 SOL
│  + 输出代币 ATA 租金      约 0.002 SOL    │  ← 如果是第一次
│  + 交易手续费            约 0.000005 SOL  │
│  ─────────────────────────────────────────── │
│  所需总额             ≈  1.004 SOL       │
└─────────────────────────────────────────────┘
```

> **什么是 wSOL？** 像 Jupiter 这样的 Solana DEX 处理的是 SPL 代币，而不是原生 SOL。你的 SOL 会在交换前自动 **包装** 为 wSOL（SPL 形式的表示）。这种包装需要它自己的临时 ATA。

### 场景 2：代币 → 代币交换

如果你把 USDC 兑换成 BONK，而你还没有 BONK ATA，交换会创建一个。即使你兑换的是 USDC 而不是 SOL，你仍然需要 SOL 来支付租金 **，**.

```
USDC → BONK 交换（首次收到 BONK）：
┌──────────────────────────────────────────────┐
│  USDC 余额             足够用于交换    │
│  + 用于 BONK ATA 租金的 SOL      约 0.002 SOL    │  ← 需要！
│  + 用于交易手续费的 SOL    约 0.000005 SOL  │
└──────────────────────────────────────────────┘
```

### 场景 3：接收代币

当有人向你发送你从未持有过的代币时，ATA 通常会由发送方的交易创建。不过，某些协议可能要求接收方已经拥有现成的 ATA。

***

## 我应该保留多少 SOL？

我们建议至少保留 **0.01 SOL** 作为缓冲：

| 用途              | 成本                 |
| --------------- | ------------------ |
| ATA 租金（每新增一种代币） | 约 0.002 SOL        |
| 交易签名费           | 约 0.000005 SOL     |
| 优先费（网络拥堵时）      | 约 0.0001–0.001 SOL |
| 安全缓冲            | 约 0.005 SOL        |

> **经验法则：** 0.01 SOL 足够用于约 4 个新的代币账户和数十笔交易。

***

## ATA 生命周期

```
1. 首次交换或接收代币 X
   └── ATA 自动创建 → 约 0.002 SOL 作为租金被锁定

2. 正常使用
   └── 发送、接收、交换——ATA 持续存在，无需额外租金

3. 代币余额降为 0
   └── ATA 仍然存在，租金仍被锁定
   └── 可供未来再次接收——无需重新创建

4. 关闭 ATA（可选，手动）
   └── 约 0.002 SOL 返还到你的钱包
   └── ATA 已删除——再次接收前必须重新创建
```

***

## 实际示例

Alice 有 2.0 SOL，并想首次将 1.5 SOL 兑换为 USDC。

```
Alice 的钱包：2.0 SOL，0 USDC（没有 USDC ATA）

步骤 1——构建交换交易
         Jupiter 将 1.5 SOL 包装为 wSOL 用于交换

步骤 2——检查 ATA
         Alice 没有 wSOL ATA → 创建它    （−0.002 SOL）
         Alice 没有 USDC ATA → 创建它    （−0.002 SOL）

步骤 3——执行交换
         1.5 SOL 兑换完成 → USDC 到达新 ATA
         交易手续费                       （−0.000005 SOL）

步骤 4——清理
         wSOL ATA 自动关闭                  （+0.002 SOL 返还）

结果： Alice 仍有 0.498 SOL + USDC
         （0.002 SOL 作为 USDC ATA 租金被锁定）
```

***

## 常见问题

**为什么我明明有足够的交换金额，却看到“SOL 不足”？**

你的余额必须覆盖交换金额 **加上** ATA 租金和交易手续费。请在交换金额之外至少再保留 0.003 SOL。

**租金是永久成本吗？我能拿回来吗？**

租金是完全可退还的。关闭代币账户会将整笔押金返还到你的钱包。

**为什么 Ethereum 或 Base 上不会这样？**

EVM 链将所有代币余额存放在代币的智能合约中——不需要额外账户或押金。Solana 的账户模型则要求显式分配存储空间。

**什么是 wSOL，为什么它需要 ATA？**

包装 SOL（wSOL）是一种代表原生 SOL 的 SPL 代币。Solana DEX 运行在 SPL 代币上，所以原生 SOL 在交换前必须先包装。wSOL ATA 通常是临时的——为交换而创建，之后关闭，租金会退还。

**每次交换都需要 SOL 吗？**

只有在交换涉及你以前从未持有过的代币时才需要（没有现成 ATA）。一旦创建，ATA 会一直存在——以后同一代币对的交换就不需要额外 SOL 支付租金。

**如何取回被锁定为 ATA 租金的 SOL？**

要取回你的 SOL，你需要关闭未使用的代币账户（余额为零的 ATA）。有一些公开工具和服务可以帮你完成这件事（例如 [Sol Incinerator](https://sol-incinerator.com)，以及热门 Solana 钱包中的账户关闭功能）。\[QR] Wallet 正在开发内置 ATA 管理器，让你可以直接在应用内查看并关闭空代币账户——一键取回被锁定的 SOL。敬请关注更新。

**如果我根本没有任何 SOL 呢？**

你将无法创建新的 ATA。如果你需要在 Solana 上接收一种新代币，请先通过跨链桥或买币功能获取少量 SOL（约 0.01）。
