Ton生态分析

  • 蘭兹
  • 更新于 2024-12-10 18:15
  • 阅读 318

一、Ton介绍Ton是一条L1链,最早由Telegram主导开发,后续因为监管原因,交由社区和TON基金会运营。截至12月10日,Ton生态整体TVL为3亿(峰值TVL为8亿),排在所有公链第28名,和Scroll,Starknet的TVL在同一梯队(数据来源于defillama)。生态层面

一、Ton介绍

Ton是一条L1链,最早由Telegram主导开发,后续因为监管原因,交由社区和 TON 基金会运营。 截至12月10日,Ton生态整体TVL为3亿(峰值TVL为8亿),排在所有公链第28名,和Scroll,Starknet的TVL在同一梯队(数据来源于defillama)。生态层面,TVL在1M以上的项目有14个,涵盖Dex,Staking,借贷,衍生品交易,生态整体不算丰富,多以Meme为主。

二、Ton链架构

1、AccountChain、SharedChain、WorkChain

Ton链是一条非EVM兼容的分片链,链的底层元素为AccountChain:同一个用户的一系列交易。 User1 AccountChain: [Tx1 -> Tx2] -> [Tx3 -> Tx4 -> Tx5] -> [] -> [Tx6] User2 AccountChain:[Tx1] -> [Tx2 -> Tx3 -> Tx4] -> [Tx5 -> Tx6]

交易是批处理的,因此交易可能会被切割到不同的区块里。

将许多用户的交易数据存储在一起,这样的一组AccountChain构成了SharedChain的概念。 在SharedChain的基础上自定义交易规则,地址格式,智能合约功能,就可以创建一个WorkChain。

创建WorkChain的成本很高,需要得到2/3的投票来创建。TON 允许创建最多个2^30WorkChain,每个WorkChain最多可细分为2^60多个分片。

image.png

2、MasterChain 和 BaseChain

目前,TON 中只有 2 个WorkChain:MasterChain 和 BaseChain。

BaseChain 用于用户的日常交易,它的交易费用比较便宜。

MasterChain 对 TON 具有至关重要的功能。用于消息路由和事务执行的同步,以及各条WorkChain之间的跨链通信。

3、区块结构

Ton链区块号为WorkChain-Shared-Seqno结构

image.png

MasterChain中包含的交易为治理交易,通常为预编译合约Elector Contract,Config Contract发出的交易。

image.png

MasterChain区块会关联BaseChain区块。

image.png

MasterChain的seqNo与BaseChain的seqNo都是递增的,但MasterChain的seqNo+1,可能BaseChain的seqNo保持不变。

如MasterChain区块号为-1,8000000000000000,42342361,关联的WorkChain区块号为:

  • 0,2000000000000000,47450852
  • 0,6000000000000000,47470215
  • 0,a000000000000000,47202199
  • 0,e000000000000000,47385438 MasterChain的下一个区块-1,8000000000000000,42342362,关联的WorkChain区块号为:
  • 0,2000000000000000,47450853(+1)
  • 0,6000000000000000,47470216(+1)
  • 0,a000000000000000,47202199(+0)
  • 0,e000000000000000,47385438(+0)
  • BaseChain中包含的交易为用户交易,分散在不同的分片中。

image.png

4、消息和交易

消息分为外部消息和内部消息,外部消息是指区块链外部发送来的消息,如发起Ton转账,外部消息传递到用户的钱包合约中。内部消息是指区块链内部互相传递的消息,如转账时两个钱包合约传递的消息。

image.png

交易是发生在合约内部中的执行逻辑,如上面这笔转账,有两笔交易,一笔交易发生在合约A,一笔交易发生在合约B。整个交易链路如果有n个内部消息,则会有n+1笔交易。

Ton的交易是异步执行的,因此一笔完整的交易链路可能跨多个区块。

如一笔Telegram Wallet转账给多个用户的交易。

image.png

  • A-A External-In message对应的交易hash为3d93d583afb4ce36ce74c4f557a14890d793ec6eec0472a7e0f19c63616200c2,区块号为(0,a000000000000000,47191557)
  • A Internal message对应的交易hash为1b6ccc607b7129fb54187cb06548dccb300c1577886bc37ee4de02fa049b7452,区块号为(0,a000000000000000,47191557)
  • A-B Internal message对应的交易hash为f5ddcc9a81533af09e0c04b2f3778e6c6e8f0c0bc10aa66b5693bf7603c7fe75,区块号为(0,6000000000000000,47458959)

从A发出消息到B收到Ton,跨了多个区块。 通常交易所会将提币交易的External-In message对应的交易hash作为提币hash返回给用户,供用户查询,但这笔交易是主交易(如3d93d583afb4ce36ce74c4f557a14890d793ec6eec0472a7e0f19c63616200c2),用户收到提币交易可能在下级交易(如f5ddcc9a81533af09e0c04b2f3778e6c6e8f0c0bc10aa66b5693bf7603c7fe75) TON 交易在一次确认后不可逆转。

5、Ton地址格式

Ton的地址格式分为原始地址和用户友好地址。

原始地址,由工作链ID+账户ID组成。如下: 0:c7e3d90d4314bbb7ff24c35410aa20814806d4ed87fffe0369ad7b15fb900fed,0地址字符串开头的 ,这表示地址属于 BaseChain.

用户友好地址,总共由 36 个字节组成。由标志类型+工作链ID+账户ID+地址校验位组成,使用友好地址,可以改变智能合约对收到消息的处理方式,这是与原始地址不同的地方,并且可以校验地址是否有效。如下 UQDH49kNQxS7t_8kw1QQqiCBSAbU7Yf__gNprXsV-5AP7Rkz(base64url格式的标志类型为Non-bounceable地址) EQDH49kNQxS7t_8kw1QQqiCBSAbU7Yf__gNprXsV-5AP7UT2(base64url格式的标志类型为Bounceable地址)

isBounceable:一种安全机制,当目标智能合约不存在时,向其地址转账,该消息将会被“bounced”,会返还给发送者交易原始价值的剩余部分(减去所有转账和交易)汽油费,这可确保发送方不会丢失发送到无法接收交易的地址的资金。

  • bounceable =false 标志通常意味着接收者是钱包。
  • bounceable =true 标志通常表示自定义智能合约(例如,DEX),出于安全原因,不应发送不可退回的消息。

地址格式分为base64和base64url,这两者都是有效的。

  • base64(即数字、大小写拉丁字母、'/' 和 '+')
  • base64url(用 '_' 和 '-' 代替 '/' 和 '+') 地址转换工具:https://ton.org/address/

6、Ton钱包

上面看到的Ton钱包,与以太坊钱包不同,不是有了私钥之后就可以直接使用。 Ton钱包本质是一个智能合约。需要部署钱包合约之后,才能实现钱包的相应逻辑。

image.png

可以看到一个钱包对应有多个账户,每个账户的地址不同。这不是同一地址的不同表示,而是因为钱包合约版本不同,导致产生多个地址。

钱包地址由钱包合约代码及初始化参数决定,初始化参数包含用户公钥,因此每个用户生成的钱包地址都是不同的。对于同一个用户,因为钱包合约代码不同,因此生成的钱包地址也不同。

目前最多使用,支持最广泛的是V3r2,V4r2版本的钱包。

V1钱包 它只允许一次发送一笔交易,除了签名和序列号(seqno),它不检查任何东西。 这个版本基本上没有在常规应用中使用,因为它存在一些主要问题:

  • 无法从合约中检索seqNo和publicKey
  • 没有valid_until检查,交易有可能会很长时间之后才被确认。 第一个问题在V1r2和V1r3中得到修复。r字母代表修订版本。

V2钱包 这个版本引入了valid_until参数,用于设置交易的时间限制,以防交易经过太长时间后才被确认。这个版本也没有公钥的get方法,它在V2r2中被添加。

V3钱包 这个版本的钱包初始化参数中引入了subwallet_id参数,允许使用同一个公钥创建多个钱包(用户可以只有一个种子秘钥创建多个钱包,不同的subwallet_id将会改变钱包地址)。

V4​钱包 它是目前最新的钱包版本。引入了插件功能,这个功能允许开发者实现用户钱包的复杂逻辑。

7、Jetton

Jetton 是 TON 区块链上的同质化代币标准。等同于ERC20。

Jetton 由两部分合约组成,Jetton-minter 和 Jetton-wallet:

image.png

代币发行时,会创建一个 Jetton-minter 合约,合约初始化记录了代币的总量、管理员、钱包代码等信息。

代币被分发给用户时,Minter 合约会为用户部署一个钱包合约,并在合约初始化时记录用户的余额、所有权、代币 Minter 合约地址等信息,每个用户都会独立部署一个合约。这个合约与用户钱包合约不同,是专属于这个Jetton代币的钱包合约,里面owner_address记录的是用户钱包合约的地址。

image.png

三、Ton与ETH区别

Ton虚拟机为TVM,不兼容EVM,Ton智能合约开发语言为Fift,Func。

Ton智能合约需要支付租金,不同与以太坊合约,只有部署时需要支付gas费,Ton的合约,在存续期仍然需要支付费用,每个智能合约都持有 TON 代币余额,并使用该余额支付租金。如果智能合约用完了钱,它最终将被删除。

Ton智能合约间调用是异步的,非原子性的。将以太坊合约比作是单一节点,任何跨合约之间的调用,都是在同一服务中同步执行的,都是原子性,当任一操作发生失败时,这个调用链路上的修改都会被回滚。而Ton合约更像是多节点服务,不同的智能合约可能位于不同的节点,调用是异步的,如果其中一个调用失败了,需要手动回滚所有更改。

Ton智能合约的代码可以升级。

Ton智能合约不支持类似Mapping这种无限制增加数据的变量,因此Ton合约中用户持有的代币合约放在一个单独的合约中。以太坊合约类似在一个代币表中的余额字段,类型为k-v,存储用户-余额信息。Ton合约除了有一个代币表,还有一个用户代币关联关系表,记录用户持有的代币余额。

Ton的钱包和地址是分开的,以太坊的钱包和地址是等价的,用户的地址是公钥转换而来的,用户持有的原生币或者代币,都是和地址关联的。而Ton地址的Ton钱包是分开的,Ton钱包是一个合约,用户持有的原生币或者代币是和Ton钱包关联的。用户可以创建多个Ton钱包,这些钱包可以有不同的功能,并且拥有不同的地址。

  • 原创
  • 学分: 20
  • 分类: TON
  • 标签: TON 
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
蘭兹
蘭兹
0xC38C...609b
江湖只有他的大名,没有他的介绍。