# TON钱包总览

### <mark style="color:blue;">基础名词</mark> <a href="#id-00" id="id-00"></a>

#### TON钱包： <a href="#id-0" id="id-0"></a>

在TON链，每个钱包依然是由助记词/私钥进行管理，但每个钱包都是一个智能合约，在使用之前需要预先部署到公链上，并为自己的钱包支付少量的Toncioin作为网络费进行使用。

#### TON账户： <a href="#id-1" id="id-1"></a>

同一套助记词可以基于TON官方提供的不同合约类型，创建不同的账户，这些账户也由于合约类型的不同，可以支持不同的功能。但它们依然是由同一套助记词进行管理的。

#### 2合约版本（Contract Type）： <a href="#id-2" id="id-2"></a>

TON为用户提供了各种类型的钱包合约，每种类型的合约可以实现不同的钱包功能：

| 合约类型               | 可实现功能简介                     |
| ------------------ | --------------------------- |
| Wallet V1          | 仅支持一次发送一条交易                 |
| Wallet V2          | 加入了交易时间限制，防止交易长时间未确认        |
| Wallet V3          | 加入了Subwallet ID功能，可以创建子钱包   |
| Wallet V4          | 加入了“插件”和订阅功能，同时兼容V3合约的功能    |
| Highload wallet V3 | 可以实现批量交易                    |
| Lockup wallet      | 可以将钱包内的资产锁定一定时间后再解锁         |
| Restricted wallet  | 可以限制钱包只能和某个特定的账户交易，以及运行质押节点 |

Subwallet ID：整数形式的子钱包ID，默认值为698983191，可以通过设置不同的Subwallet ID，创建不同的子钱包

Jetton：TON链的非原生代币，称之为Jetton

Jetton wallet：每个钱包里的每种Jetton，都是由一个Jetton wallet进行管理的，用户在交易jetton时，实际上是由钱包合约调用对应的jetton wallet合约完成的

### <mark style="color:blue;">TON与EVM链的主要区别</mark> <a href="#id-4" id="id-4"></a>

1. 在TON链，任何项目都是合约，包括钱包也是一个合约，钱包地址就是合约地址
2. 用户需要为自己的钱包合约付费后才能使用，这个付费包括首次交易时的合约部署费用，以及每次交易时的存储费用
3. TON链智能合约可以升级，而EVM的合约一旦部署到链上，会很难升级
4. 通过不同的Subwallet ID，可以使用同一个公钥生成不同的钱包账户

### <mark style="color:blue;">TON钱包的特点</mark> <a href="#id-5" id="id-5"></a>

1. 新钱包在首次交易的时候，需要支付少量的Toncoin用于将钱包合约部署到链上
2. 每一个钱包都有好几种不同格式的地址，虽然这些地址看起来完全不一样，但他们都能精准指向这个特定的钱包，但需要注意，跨网络转账会使得资产永久丢失！

### <mark style="color:blue;">TON钱包的地址格式和主要特征</mark>  <a href="#id-6" id="id-6"></a>

| 地址格式 | 所在网络 | 交易特征                          | 适用的项目类型                                                            |
| ---- | ---- | ----------------------------- | ------------------------------------------------------------------ |
| E... | 主网   | 向此类地址转账可能会被弹回，请在转账前确认钱包合约已经部署 | EQ地址更适用于需要入金的智能合约，如果智能合约还没有部署到链上，转账到此类地址的资金将会被弹回，这个特性可以一定程度上避免资金损失 |
| U... | 主网   | 转账不会被弹回                       | 此类型地址更适合用于钱包，转到此类地址的资金不会被弹回，更符合钱包的资金储存需求                           |
| k... | 测试网  | 向此类地址转账可能会被弹回，请在转账前确认钱包合约已经部署 | 仅适用于TON测试网的可弹回地址                                                   |
| 0…   | 测试网  | 转账不会被弹回                       | 仅适用于TON测试网的不可弹回地址                                                  |

### <mark style="color:blue;">TON钱包与EVM钱包的主要区别</mark> <a href="#id-7" id="id-7"></a>

| 钱包类型    | EVM钱包       | TON钱包                                                                                                                                                  |
| ------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 完全由用户托管 | 是           | 是                                                                                                                                                      |
| 账户地址    | 地址生成后即可免费使用 | 任何地址都是一个智能合约，使用前需要花费少量TON将合约部署到链上，每一笔交易也需要支付少量的链上存储费用                                                                                                  |
| 钱包地址格式  | 0x…         | <p>U…</p><p>E…</p><p>0…</p><p>k…</p>                                                                                                                   |
| 网络费构成   | gas fee     | <p>总交易费用=</p><p>storage fees</p><p>+ in fwd fees</p><p>+ computation fees</p><p>+ action fees</p><p>+ out fwd fees</p><p>如果钱包首次交易，还会花费少量的TON用于合约部署</p> |
| 网络费可编辑  | 可编辑         | 不可编辑                                                                                                                                                   |

### <mark style="color:blue;">TON的交易费组成</mark> <a href="#id-8" id="id-8"></a>

TON链的交易手续费由Gas进行计价，与EVM不同的是，每一笔交易的交易费都由以下几个部分构成，而且目前用户无法对网络费进行修改和优先交易

| 交易费构成        | 注解                                                                              |
| ------------ | ------------------------------------------------------------------------------- |
| Storage fees | 由于钱包账户是储存在链上的合约，因此需要每次交易时为账户支付从上次交易到本次交易这个时间段的储存费用，请注意：合约大小越大，所需要支付的存储费将会越多     |
| Fwd. fees    | 通过钱包在链上发送内部信息或者外部信息，需要调用合约，Fwd. fees就是这部分调用合约的费用，其中包括In fwd. fees和Out fwd. fees |
| Action fees  | 计算完交易费用后，正式发起交易（调用合约）所需要的费用                                                     |
| Gas fees     | 即 Computation fees，交易的所有计算成本都使用Gas进行计算，每1单位的gas都要话费400个nanotons                 |

### <mark style="color:blue;">TON钱包使用的注意事项</mark> <a href="#id-9" id="id-9"></a>

1. 链上交易的所有费用都由TON链收取，TP钱包不会收取任何费用。
2. 每个钱包在首次交易时，都需要花费少量的Toncoin用于将钱包合约部署到链上。这个花费是一次性的。
3. 每个钱包的每一笔交易都会消耗一定的链上存储费用，这个费用并不是一次性的，每次交易都需要支付。
4. 已经部署过的钱包，如果没有Toncoin余额，将在下次收到Toncoin的时候，将会在到账时扣除对应时间的合约存储费用，所以可能收到的金额和转出的金额存在少量差异。
5. 交易时需要注意收款方的钱包地址是否和自己的钱包网络一致，跨网络转账将会使得资金永远丢失！这条规则不仅适用于直接转账，也同样适用于与DApp交互。
6. 钱包依然是依托于助记词和私钥去中心化创建/导入的，请务必保管好它们。
7. 已经创建过的钱包，不会随着合约类型的新增/改变而改变地址。
8. 在TON链与DApp交互时，链接钱包后切换钱包不会收到提醒，请在交易时务必注意所连钱包是否是当前钱包。
9. 连接DApp时，部分DApp可能不会提示网络不匹配，请务必确认钱包当前所处网络（主网或测试网）是否和DApp网络匹配，跨网络转账将会使资产丢失！
