- 作者:老汪软件技巧
- 发表时间:2024-10-15 00:01
- 浏览量:
很多朋友在创建 TON 钱包后发现一个钱包有很多个地址,不知道它们到底有什么作用,以及有什么区别。而网上这方面的资料有比较少,所以 Noah 就写了这篇文章和大家详细讲解一下 TON 钱包的各个方面,希望能够帮你玩转 TON 生态。
TON 钱包和以太坊钱包的区别
首先我们拿 TON 钱包和以太坊钱包做一个对比,因为大家可能更熟悉以太坊钱包。
钱包性质
以太坊钱包和智能合约是不同的账户,而 TON 钱包和合约没有区别,钱包也是一类合约。这是两者之间最大的不同之处。
使用费用
由于 TON 的智能合约在部署的时候需要少量 TON,所以我们第一次创建钱包后需要向这个钱包转入少量的 TON 来部署合约,部署合约完成后才能正常使用。这个花费是一次性的。
钱包格式
以太坊钱包是由 0x 开头的 42 位 16 进制组成,就像这样:0xxxxx210exxxxb0634660b615bb4fdf63xxxxxxxx。
TON 钱包是由 48 位 16 进制组成,就像这样:UQxxxxoUDa-zxxxxnFxxxxuxzGxxxxBIZYSxxxx3ONuAxxxx。
TON钱包的前缀有几种不同的格式,它们有各自的含义,我们等下再讲。
交易费
以太坊的交易费计算比较简单,只有一个 gas,用户可以自行设置网络费,当同时有多笔交易的时候,哪笔网络费越高被处理的优先级就越高。
TON 的交易费是不能手动设置,它有一个计算公式:storage fees + in fwd fees + computation fees + action fees + out fwd fees。
一共有 5 个部分,下面简单介绍一下:
负载能力
以太坊为了防止重放攻击,设计了 Nonce 机制,每笔交易都需要设置 Nonce,并进行全局验证,如果 Nonce 的值小于或等于之前交易的序列号,就会被拒绝。所以以太坊账户同一时刻只能处理一笔交易。
TON 有一种特殊的高负载钱包,允许一次调用发送 254 笔交易,而且可以同时发送多笔交易。这也就意味着 TON 钱包可以在短时间内处理大量交易,比如在一秒内处理几千条交易。
TON 钱包的各大版本
由于 TON 钱包本身就是一种智能合约,而 TON 的智能合约与以太坊最大的一点区别是可以升级。所以目前 TON 钱包有 5 个大版本和 N 个修订版本。大版本用 V 表示,修订版本用 R 表示。比如 V1R1、V1R2、V4R1、V4R2 等等。
由于 TON 的合约地址是由部署合约时的初始状态和代码的哈希组成的,所以每个版本的地址都不同,这也是为什么一个 TON 钱包的公钥可以对应那么多地址的原因。
目前大版本分别是 V1、V2、V3、V4 和 V5,目前最流行的版本是 V3 和 V4。下面我们简单介绍一下它们的区别。
V1
最简单的版本,只允许一次发送一笔交易。除了验证签名和序列号之外不做任何事情,甚至无法获取序列号和公钥。这个版本基本上没有人用。
V2
加入valid_unitl参数,也就是交易的时间限制,如果超时交易会被取消。这个版本勉强能用。
V3
加入subwallet_id参数,允许使用一个公钥创建多个钱包。这个版本功能全面,是最流行的版本之一。
V4
引入了插件,可以实现复杂逻辑。比如设置黑名单插件,把一些诈骗地址放进去,只要在钱包里安装了这个插件,那么向诈骗地址转账时就会失败,来保证用户的安全。用户也可以很方便的卸载插件。这是 TON 区块链独有的功能。
V5
V5 是目前最新的版本,在 2023 年提出。这个版本对插件功能进行升级。同时引入原生代付交易费、升级不改变用户地址等功能。
TON 钱包格式
TON 的钱包格式主要有 3 种。
分别是可回退地址、不可回退地址和原始类型。其中可回退地址和不可回退地址都是 Base64 编码后的地址。
可回退地址 Bounceable
通常是 EQ 开头。如果我们在转账交易中发生错误,TON 会自动返还回原账户。如果向未初始化的地址发起交易也会被反弹。
不可回退地址 Non Bounceable
通常是 UQ 开头。这种格式的地址只要发起转账即使失败也不会返回。我们的钱包通常会用这种地址。TON 钱包在未来会把所有钱包地址都转换为这类地址。
原始类型 Rwa
66 位长度的十六进制地址,由0:开头。例如:0:xxxx42xxxx7ca4bd77d4368baa752eb6b6fae9df66c2c6e292e9e42b4bxxxxxx。
这个地址表示的是创建地址的区块链以及在区块链上的地址。通常我们不会在钱包软件中看到这个地址,它通常是技术开发人员使用的地址。
测试网地址
除了上面三种地址之外,你可能还见过 kQ 开头和 0Q 开头的地址。它们都是测试网的地址。测试网是以开发和测试为目的的区块链,其中的 TON 没有实际价值。
kQ 开头的地址对应主网EQ开头的地址,0Q 开头的地址对应主网UQ开头的地址。
不过要注意,不同网络之间不能相互转账。