写点什么

第三代区块链操作系统 TON 的技术解读

  • 2020-02-24
  • 本文字数:4545 字

    阅读完需:约 15 分钟

第三代区块链操作系统TON的技术解读

被称为“俄罗斯的微信”Telegram,其公司募集 8.5 亿美元资金,用于开发 TON 开源网络,其中的技术特点你知道多少呢?

背景介绍

Telegram 是一款开源且跨平台的 IM 工具(类似 Whatsapp、Messenger、微信),由“俄罗斯的扎克伯格”Pavel Durov 创建。Pavel Durov 同时也是俄语圈最大社交网络 VK 的创立者。Telegram 于 2013 年推出,目前拥有 1.8 亿用户,每天发送 700 亿信息,被称为“俄罗斯版微信”。TON 是 Telegram open network 简称。该公司已经通过 ICO 筹集到 8.5 亿美元资金,用于开发 TON 开源网络。

技术特点

TON 提出了一个可伸缩的异构紧耦合多链架构,不同的链之间的规则、协议和虚拟机(TON VM)等完全可以自定义。多链架构采用自底向上的分片方法设计的无限分片机制来达到潜在的性能扩展,同时提出了二维区块链设计机制,可以在不分叉条件下完成错误区块修复。为了提高多链架构的链间通信效率,设计了超立方体即时路由机制,加速异步通信。


下面将从自适应无限分片多链设计、分片链之间的消息路由机制、共识算法、新区块的创建、二维分布式账本几个方面为大家展开介绍 TON 的技术特点。


自适应无限分片多链设计


TON 区块链可以自动拆分和合并分片链以适应负载的变化。这意味着新块总是快速生成,而交易不会产生很长的等待。这样即使当有火爆的应用在平台上运行时,也可以保证交易正常快速进行。


几乎所有的区块链分片设计都是自顶而下的:首先设计一个单一的区块链,然后提出一些方法切分成很多个相互交互的的分片链,从而提高扩展性。


TON 分片的方法是自底向上,解释如下:


想象一下,分片已经达到了极限,所以在每个分片链中,每一个分片链只剩一个帐户或一份智能合约。于是我们有大量的“帐户链”,每一个分片链都描述了一个帐户的状态和状态的转换,分片链之间通过异步消息传递价值和消息。


当然,拥有数以亿计的区块链是不切实际的,通常这些区块链中有大量的链是极少进行更新操作的。为了更有效地实现它们,我们将这些“帐户链”聚合到“分片链”中,这样,分片链的每个块本质上就是被分配给这个分片的某个帐户链的集合。因此,“帐户链”在“分片链”中只有一个纯粹的虚拟或逻辑存在。


我们称之为无限分片范式。它解释了 TON 区块链的许多设计决策。


TON 有唯一的一个主链,然后有多个工作链,主链是默认激活的,每个工作链是 DAPP 去激活一条链。主链除了保存主链的区块交易,同时记录了每个工作分片链的最新区块哈希值,如下图。每个工作链可以动态拆分成分片链,每个分片链是各种账户链的集合。比如 TON 上跑了十个应用,每个应用就是一个工作链,每个工作链又包含很多分片链,每个分片链实际是很多账户链的集合。比如 A 应用包含了账户 1,账户 2…账户 n 的集合。每一个链的标识是(w,s),w 代表工作链编号,s 代表分片链编号。这个地址标识符会用于链间通信路由。



分片链之间的消息路由机制


分片链之间的消息路由机制:超立方体路由机制, TON 的消息路由机制确保任何两个区块链的交易能迅速处理



TON 设计的是多链紧耦合系统,链之间的消息包括:


1.同一个工作链的分片链之间,不同工作链之间的分片链,主链和其它工作链之间,外部输入消息(比如比特币、以太坊主链来的消息)等;


2.主链可以直接发送任何消息到其它工作链的分片链,但是花费代价大;


3.所有分片链组成一个超立方体的网络(四维),通过消息的目的账户地址寻址,沿着超立方体网络,路由信息到目的账户所在的分片链中。


为提高性能和可扩展性,系统负载足够大时可能会出现大量(上亿)的分片链,那么消息通信会成指数级增加。为了减少消息的不可控,TON 提出了共享链和全局链的思路:全局链可以直接发送任何消息到某个账户,主链是默认的全局;其它链发送的消息只能按照路由通过共享链来中转消息,根据系统的分片链的网络情况分配合适的共享链用于中转消息。


TON 提供了两种消息路由方式:慢路由和快路由。


慢超立方体路由:实现分片链之间的可靠消息传递。


消息的发送和路由类似传统 TCP/IP 网络,通过目的 IP 地址寻址发送到目的地,能够保证消息按顺序可靠传播到目的链。整个分片链网络组成一个超立方体网络,对于一个规模为 N 的分片链超立方体网络,需要经过的路由条数 hop = log16(N)。因此,只需要 4 个路由节点,就能支持百万级的分片链(对于更大规模,可以使用 5 维 6 维立方减少路由节点)。


这个超立方路由网络能保证消息的顺序和可靠传递,但是会引入一定的延时。因此提供另外一个快速路径,即时超立方体路由。


即时超立方体路由:用于降低分片链间消息路由的延时。


TON 提出的提高消息路由速度的思路,也就是说在传统慢立方体路由过程中,一条消息是由一个分片链沿着超立方体网络路由到目的分片链。但是在消息路由过程中,这个消息的目的分片链所属的的验证器(validator or )可以选择提前处理这条消息加入区块,然后提供一个 merkel 证明(收据),发送回执来销毁掉这条正在传输的消息。对比 ethereum 提出的分片实现思路,也是通过在分片(shard)之间传输收据(receipt)来实现分片间的异步通信。


EOS 区块链提出的多链架构,也是通过提供 merkel 证明来实现链间通信。但是如果链间通信的消息量爆炸增长时,会严重影响区块链的性能。这些区块链并没有提出一个合适的消息路由机制。TON 提出的这种机制号称能实现非常高效的异步通信,同时保证数据的一致性。



共识机制


TON 共识选用了 POS 和 BFT 结合。除了验证器(也就是矿工),TON 同时提出了几个新的名词:提名者,渔民。提名者可以通过提名推荐某个节点成为验证器,如果成功当选则会获得奖励;渔民可以通过获取一些区块做验证,如果发现验证器提出了无效的块等恶意行为,可以提出举报。如果举报成功,也能获得奖励。


新区块的创建


整个 TON 网络的所有区块,由 100 ~ 1000 个选定的节点创建。这些节点每个月选举一次,选举时封存提交的股份(股份用 TON Coin 表示)。在这一个月期间,选定的节点被划分成多个工作组,创建指定区块链上的新区块。每个新区块拿到工作组超过 2/3 的股份的节点的签名即算创建成功。如果节点在工作期间和工作结束后的一个月内未被发现弄虚作假的行为,其股份和收益(包括创建新区块的奖励和交易费用)会被一并退还。否则,节点会损失股份并被剥夺区块创建资格。


主链与所有分片链生成一个新区块的时间间隔都是 5 秒钟。分片链上的每一个新区块都会包含该链前一个区块的哈希值,以及需要加入区块的交易信息。主链上的新区块,除了包含主链前一个区块的哈希值外,还包含了每条分片链最后一个区块的哈希值。这样,当新区块加入主链时,相当于为整个 TON 网络的状态建立快照,这一快照将整个网络状态的合法性写入主链中。如果一条分片链的哈希值得到了主链的确认,那么该链直至那一刻的交易历史也就得到了确认。


二维分布式账本


TON 区块链本质是一个 2 维区块链集合,主链中的分片链中的每个区块实际上不只是一个区块,而是一个小区块链。这个“区块链”或者叫“垂直区块链”只包含一个区块,我们可能会认为这只是分片的相应块(在这种情况下也称为“水平区块链”)。然而,如果有必要修复错误分片链的区块,一个新的区块将会提交到“垂直区块链”,包含的内容有两种类型,一种是对无效的“水平区块链”的区块的替换,另一种是区块的差异,只包含需要更改的这个区块之前的版本里对于差异的那部分的描述。TON 就是用这种特定的机制,用于替换检测到的无效块,而不需要给所有涉及的分片链做一个真正的分叉。


传统的区块修复需要暂停服务回滚回溯到那个无效区块,垂直区块修复的方式可以不影响原有交易正常运行情况,同步进行修复,等到垂直区块增长速度超过原有区块链,就可以替换成新的版本。如图水平区块 block1—>block2–>block3,当区块里面由于出现 bug 或者遭受攻击等导致异常,可以在垂直区块上生成修复版本 block1.1。


TON 服务

TON 除了提供区块链功能外,还提供一套完整的 DAPP 和去中心化 web 开发服务,主要包括下面的一些服务。


  1. TON DNS 服务

  2. TON DNS 给区块链的账户,智能合约,服务,网络节点提供名字映射服务。这样用户使用 DAPP 或者去中心化网站,就和传统的互联网使用域名上网一样方便。TON 通过在区块链内置一个名字映射服务的智能合约来实现这个 DNS 服务功能。

  3. TON proxy

  4. TON proxy 是一个网络代理匿名服务,用来隐藏 TON 节点的 IP 地址。类似于 I2P(Invisible Internet Project),用来构建去中心化的 VPN 服务。结合 TON DNS 和 TON p2p 网络可以构建高效的社区服务,同时可以很好的保护隐私问题。

  5. TON storage

  6. TON storage 是一套类似 IPFS 的分布式存储,通过 p2p 网络来存储任意文件。使用类似 torrent 种子技术和智能合约的方式来加强存储系统的可用性。类似于分布式 dropbox 存储,除此外还可以支持更复杂的 DAPP 存储需求,比如 youtube 这种流媒体存储需求。

  7. TON pay

  8. TON 内置了微支付通道,可以实现即时链下交易。所有在运行在 TON 的 DAPP 都可以方便的使用 TON 系统自带的微支付服务。安全和效率均有保证。

生态经济

Token 分配


在区块链开发平台上,DAPP 的经济系统由其背后的代币支撑,开发者通过代币实现收益。例如,以太坊是目前最流行的区块链开发平台,2017 年有许多区块链 ICO 项目基于以太坊开发,这也推动了以太币价格的一路走高,但 Telegram 团队认为,代币价格的大幅波动并不利于 DAPP 生态系统的建设,因此 TON 也设置了一套特别的代币(TON Coin,Gram)价格机制来防止价格的大涨大跌:


  • 总共发行 5x10^9 个 Gram 的代币,其中部分(约 20%)通过挖矿挖出,4%用于奖励在 TON 区块链上的 DAPP 开发者,打造生态系统;

  • 基金会储备池定价发行与市场定价结合保证价格平稳。第一个 Gram 的发行价格为 0.1 美元,之后每售出的每一个 Gram 都比前一个 Gram 价格略微提高(是前一个 Gram 价格的 1+10^(-9)倍)。照此计算,第 5x10^9 个 Gram 的价格约为第一个 Gram 价格的 149 倍,而这也成为了 Gram 公开发售价格的理论上限;

  • Gram 价格平稳定价的机制为:当市场上有 n 个 Gram 在流通时如果 Gram 的市场价格高于根据公司计算的理论价格即 p(n)=0.1*(1+10^(-9))n 时,市场将从基金会购买 Gram,达到价格的均衡;* * 当 Gram 价格低于理论价格 p(n)时,所有代币的需求将通过公开市场交易来完成;而当市场价格低于 0.5*p(n)时,基金会将会回购部分 Gram,减少市面上流通的 Gram 的 n 值,使得市场价格与通过 n 计算的理论值相符。


生态


鉴于 TON 是一个异构多链架构,扩展性非常好。那么以 TON 的性能,在 TON 上可以轻松实现区中心化的社交类应用(facebook wechat 等)。TON 还提供了强大的存储服务,视频应用比如(yutube)也可以支撑。系统还内置了微支付,所以基于 TON 做金融类交易和衍生品应用也非常方便。而且 TON 还提供了 DNS 名字服务和网络代理,基于 TON 可以实现完全去中心化的 websit,去中心匿名组织,匿名聊天(Telegram)等。

结语

TON 提出了一个全功能的区块链操作系统生态,从白皮书的愿景可以看出,TON 的目标是做一个大一统的区块链平台,兼容所有区块链和应用,从而实现在功能上超越以太坊和 EOS。接下来,公链系统可能会是区块链的主战场,我们也对 TON 的实现拭目以待。


本文转载自美图技术公众号。


原文链接:https://mp.weixin.qq.com/s/1-HWFRWnKrwAJcvqJn3I3g


2020-02-24 19:162934

评论

发布
暂无评论
发现更多内容

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day6】 —

Java 程序员 后端

Java常量池理解与总结

Java 程序员 后端

Java并发(十):独占式超时获取同步状态

Java 程序员 后端

Java开发面试题整理(2019春招版)

Java 程序员 后端

Java微服务选型Dubbo V

Java 程序员 后端

java程序员的AI之路-大数据篇 hadoop安装

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day26】—

Java 程序员 后端

java开发工程师—如何让你的简历脱颖而出?

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day28】—

Java 程序员 后端

Java并发编程-AQS

Java 程序员 后端

Java核心编程总结(八、IO输入输出流)

Java 程序员 后端

JAVA程序员笔记 第007篇—面向对象(一)、重载、构造方法

Java 程序员 后端

Java并发关键字-volatile

Java 程序员 后端

Java并发(十):独占式超时获取同步状态(1)

Java 程序员 后端

Java提高篇——Java中的异常处理(绝对详细,建议收藏

Java 程序员 后端

Java泛型机制详解;这些你都知道吗?

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day36】—

Java 程序员 后端

java程序员必须掌握的5个注解

Java 程序员 后端

java教程——泛型(三)

Java 程序员 后端

java版gRPC实战之七:基于eureka的注册发现

Java 程序员 后端

Java的堆,栈,方法区你都搞清楚了吗?

Java 程序员 后端

Java程序员极力推荐的springboot全家桶干货系列

Java 程序员 后端

Java程序员经典面试题集大全 (六)

Java 程序员 后端

Java核心编程总结(八、IO输入输出流)(1)

Java 程序员 后端

Java并发源码:阻塞队列实现之DelayQueue源码解析

Java 程序员 后端

Java并发(五):ReentrantLock的加锁实现—

Java 程序员 后端

Java并发(十):独占式、共享式的获取与释放

Java 程序员 后端

Java应用性能调优

Java 程序员 后端

Java应用日志如何与Jaeger的trace关联

Java 程序员 后端

java核心技术(8)第四章 类、对象、方法

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day40】—

Java 程序员 后端

第三代区块链操作系统TON的技术解读_区块链_猫本聪_InfoQ精选文章