解读树图Conflux区块链之网络结构

➤从比特币谈起

 

解读树图Conflux区块链之网络结构_第1张图片

 

 

解读树图Conflux区块链之网络结构_第2张图片

 

 

一直以来,很多人以为比特币是一个整齐的区块链条。然而,事实上并非如此。由于区块链网络庞大,矿工之间互相通讯不能做到完全同步,所以会出现不同的矿工同时挖出新的区块,或者出块时间相差很小,其他的矿工收到出块信息以后会继续生产新的区块,只有最长链可以得到认可。所以,在比特币网络上,时常会出现这种不在最长链上的临时分叉的区块,这种区块是废弃的孤块,孤块中的交易信息其实并没有错误,只是由于网络通讯导致其没能成为最长链。

 

而生产孤块的矿工消耗算力计算哈希,最终没有得到奖励。这种情况在比特币网络是比较常见的,这导致比特币网络的算力浪费进一步增加。

 

除此以外,在比特币网络上,因为只有唯一的一条路径,比特币网络经常出现“待确认交易”,只有之前的区块被确认以后,其后的交易才可以打包写入新的区块。

 

 

➤以太坊叔块

 

 

解读树图Conflux区块链之网络结构_第3张图片

 

 

以太坊引入了叔块的概念,对于链上临时分叉出来的块,满足一定条件给予一定的奖励。

 

但是,以太坊叔块需要满足一定的条件,例如上图中块A,它引用的是过早的区块,所以不能成为叔块、不能获得叔块奖励。

 

再比如图中的块B,它引用的是一个叔块,所以它也不能成为叔块、不能获得叔块奖励。

 

即使一个区块成为叔块,它也不能获得和普通区块一样多的奖励;而且,叔块中的交易信息也会被抛弃。说白了,叔块只是用于给矿工发一个安慰奖,并不能很好地解决以太坊的数据冗余和记账效率问题。

 

➤DAG结构

 

相对比特币的唯一区块链条和以太坊叔块结构,DAG结构是包容所有的临时性分叉块。

 

DAG,Directed Acyclic Graph,有向无环图。

 

在DAG区块链结构中,每一个DAG区块都指向1个或多个父区块,每一个DAG区块也会有1个或多个子区块指向它。沿着DAG区块的指向关系,不会走出环形,这就是DAG区块链结构。

 

解读树图Conflux区块链之网络结构_第4张图片

 

DAG区块链结构中,包括所有的分叉区块,可以更充分的利用区块链的资源。

 

但是,DAG区块链结构就比较乱。比如从G到B的指向,可以是GFB,也可以是GEB。如果不看哈希值,也不知道E和F哪个区块的生产更早。

 

其实,Conflux最初使用的就是这样的DAG结构。发现区块顺序比较混乱的问题以后,Conflux在DAG区块链的基础上,对结构进行了优化,也就是Conflux的树图结构。

 

➤树图

 

树图结构,实际上是对DAG结构的优化。将原来的指向关系,分成两种关系,一种是父边,另一种是引用边。

 

解读树图Conflux区块链之网络结构_第5张图片

 

 

其中,父边表示子区块与父区块的关系,每个区块只有一个父边;

 

引用边表示是的时序关系,表明被指向的区块时间更早,一个区块可以有多个引用边。

 

Conflux的设计是,当一个新的区块产生后,在指向父区块以后,找到网络中的叶子区块(没有子区块和引用区块的区块),然后与其建立引用边。

 

因此,可以确定区块的顺序。例如上图中,区块C没有引用区块B,说明B并不是在区块C之前,而区块F引用了区块B,说明B在F前,所以区块顺序是CBF;同理,G引用了E,说明是FEG。

 

所以在树图结构中,可以获得一个全序的区块结构,这是Conflux树图比DAG结构更具优势之处。

 

有了这个全序的区块结构,就可以理清网络中的交易顺序了。当区块中存在重复或者冲突的交易时,按照顺序可以排除重复和冲突的交易。

你可能感兴趣的:(区块链,区块链)