1. Hi区块链首页
  2. 资讯
  3. 技术指南

进化之美:“树图结构”的Conflux将带来区块链变革

导读:Conflux是第一个,也是目前唯一一个在不牺牲任何去中心化程度的情况下实现高TPS的公有链。Conflux巧妙地使用树图结构,并结合其独特的先进算法,使

导读:Conflux是第一个,也是目前唯一一个在不牺牲任何去中心化程度的情况下实现高TPS的公有链。Conflux巧妙地使用树图结构,并结合其独特的先进算法,使共识不再是提高区块链扩容性的瓶颈。

712b52a51a6646279917c9c57bd24cbc

图灵奖得主Tony Hoare曾经说过这样一段话:有两种方法来构建一个软件,一种是设计非常简单,所以它明显没有缺陷;另一种是让设计变得超级复杂,所以它没有明显的缺陷。而前一种方案远比第二种难。

Conflux做的就是第一件事。Conflux用一种极其简单的底层设计,即通过改变比特币记账的数据结构来提高区块链全网共识的效率,这个设计的初衷非常简单,但是想要把这件事做得没有任何缺陷,这是一个非常难的问题。

众所周知,如今的Conflux通过所谓树图(tree graph)结构,实现了将中本聪共识提升了1000倍TPS。实际上,在直接使用中本聪共识的时候,所有的区块会并行起来。由于网络传输的延迟,很多区块会变成分叉,这样不仅会极大地降低区块链网络的安全性,而且也会让区块链网络变得不好用,很多吞吐量被浪费。Conflux提出树图结构,就是希望能够安全地处理这些并行区块,让所有并行的区块能够直接应用。

b0da8cb87cb64a31b5e1a31bf0f98a1e

从“链”到“DAG”到“树图”,展现了区块链技术的进化之美。

——在“链”结构里,每个区块只能有一个指针,这个指针是指向其父亲区块的,那么所有区块就会一个接一个连起来,形成一个链状的结构。

——在DAG 结构概中,每个区块有多于一个的指针,可以指向多于一个的其他区块,形成的是一个有向无环地图状结构。

——Conflux 的树图结构不同于链或 DAG 只有一类指针,它的每个区块都有两种指针,一种指针指向父亲区块,且只能有一个父亲,与传统的链式结构一样;一种指针指向引用区块,需要引用多个区块,表达不同区块间的 happens-before(先行发生)关系。

因此,在 Conflux 里有两种类型的边,父边(父亲指针确定的边)和引用边(引用指针确定的边)。如果只看父边,账本的结构是一棵树;如果同时看父边和引用边,账本的结构是一个图。树图结构就是指在图中包含了一棵树的这样一种结构。

从结构上来看,链结构支持全序,DAG 结构天然形成的是偏序,树图结构支持全序。

链结构中舍弃了分叉上的区块,其主链上的区块都有着唯一的父子关系,天然形成一个确定的顺序,所有人都可以按照这个顺序执行区块里的交易,所有人最后都能够达到一个一致的状态。

DAG 结构中天然形成的是一个偏序。偏序的意思是说如果图中的两个区块之间没有直接的边,或者两个区块之间不存在一条路径,就没有办法确定这两个区块及它们所包含的交易间的顺序。

当然 DAG 可以通过设计为区块排出全序,现有的 DAG 有些支持全序有些不支持全序。而树图结构通过引入主链和 Epoch 的概念,实现了对区块全序地支持,这也是Conflux 有两种指针的原因。

736098ec-7340-45f5-9973-6f125a433a48

在Conflux的上一个版本里,使用的是GHOST算法,通过它来确认轴链(pivot chain),再用conflux的排序算法,通过轴链划分成很多时期(epoch),最终通过epoch进行排序,这样不仅不浪费任何处在分叉里的区块,还能够在我们的参数下保证网络的安全性。

上一版本的Conflux,在20Mbps到40Mbps时分别达到了3000和6000这个量级的TPS,这是Conflux在云上租了超过1万个全节点机器,在真实的网络环境下达到的TPS数据。然而这一版本的缺点是,需要大概3到6分钟的时间才能够确认一个交易,以达到很高的确认率(很高的交易不被双花的概率)。

而在最新版的Conflux中,采用了一个全新的共识算法,对之前GHOST(Greedy Heaviest-Observed Sub-Tree)协议做了比较大的改动,新的这个共识算法叫GHAST(Greedy Heaviest-Adaptive Sub-Tree)。

实际上,GHOST算法有一个很大的缺陷:当整个网络的出块速度非常非常快的时候,攻击者可以进行liveness攻击。liveness攻击的意思是攻击者不以双花为目的,而是以让这个网络没有办法确认交易为目的。

核心原因是GHOST算法其实是在不断的选择最重的子树(sub-tree),而且每个区块的权重是一样的。如果出块速非常非常快,那么坏人可以有一个策略,比如说,把好人在好人分叉成两个子树的时候,坏人分别在两个子树上进行一些算力的挖掘,但他并不把挖的区块完全放出来,当好人有一边progress大于另一边的时候,他就在另一边放一些区块,使得两边总是保持平衡。

因为当两边指数保持平衡的情况下,GHOST算法是没有办法确认交易的,而当出块速度很快的时候,坏人有一点点算力就可以让网络一直保持平衡下去,没有办法确认任何交易,这其实是GHOST一个很大的缺点。

此外,在原来的版本中,Conflux使用GHOST来确认轴链(pivot chain),只能五秒钟出一个块。由于出块速度并不理想,Conflux选择了GHAST算法,在使用了GHAST算法后,Conflux内部测试网已经达到一秒钟出四个块的高速出块速度,最终Conflux可以在一分钟内确认一笔交易,也就是说Conflux现在的网络不止能达到3000TPS。目前Conflux内部测试结果是23秒可以确认一个交易,同时达到和比特币的六个块同样的安全性。

目前,可以获取1比1代币“糖果”的Conflux bounty项目,已经开始内测。只要在其中完成相应的任务,就会得到奖励的FC,而FC在主网上线后1:1兑换成主网的代币CFX。

声明:登载此文出于传递更多信息之目的,观点仅代表作者本人,绝不代表Hi区块链赞同其观点或证实其描述。
提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。