美文网首页区块链研习社区块链大学区块链
第十八讲 张治谈“区块链的诞生及运转”:Fabric框架体系与E

第十八讲 张治谈“区块链的诞生及运转”:Fabric框架体系与E

作者: 55e841da187d | 来源:发表于2018-10-31 08:30 被阅读16次

大家晚上好!上周讲了关于联盟链的一些知识,今天继续讲和联盟链有关的一些知识点,并对上期社群朋友提问的关于EOS共识机制的问题进行解答。

1-超级账本Hyperledger的Fabric框架体系-

超级账本Hyperledger项目下面有一个叫做Fabric的框架体系,它是可以用来构建联盟链的比较快、比较稳定的技术框架。按照官方发布的部署文档,使用者可以根据业务需要,快速部署区块链系统以及系统的各个组件,在这个区块链系统上实现自己的业务逻辑。

这个系统的使用者非常多,也非常流行,所以它也是一个比较重要的区块链框架。

Fabric技术框架主要由三大部分组成:

一是节点,即部署的节点上需要安装的软件组件部分,我们把它叫做节点;

二是Ordering Service组件,用来做排序的一个软件组件;

三是CA,用来给节点颁发证书、管理加入联盟链的成员的软件组件。

首先来讲CA。它的主要功能是将证书和私钥交给加入联盟链的节点,节点在这个区块链网络中提交事务交易时,就需要用私钥去签名,这样在这个区块链系统上才能够得到认证,否则就会被拒绝。这是联盟链被称为许可制的链的原因之一。

其余两部分“节点”和“Ordering Service”是Fabric的核心组成部分,正是这两部分完成了区块链最核心的部分——共识机制。

01CA:颁发证书和私钥

首先来讲CA。它的主要功能是将证书和私钥交给加入联盟链的节点,节点在这个区块链网络中提交事务交易时,就需要用私钥去签名,这样在这个区块链系统上才能够得到认证,否则就会被拒绝。这是联盟链被称为许可制的链的原因之一。

其余两部分“节点”和“Ordering Service”是Fabric的核心组成部分,正是这两部分完成了区块链最核心的部分——共识机制。

02背书节点:规范化数据格式

节点软件组件部署在物理的节点上后会有三种类型,其中常用的只有两种类型:一是背书节点,二是确认节点。

当节点连接到Fabric区块链系统的客户端去提交事务交易时,这些交易不是马上就可以广播给这个区块链中所有参与共识的节点的,而是先发送到多个背书节点(每个不同的背书节点可以处理不同的交易数据),由背书节点讲将交易数据格式规范化,对交易数据进行签署,而后再由背书节点把所有在当前时间周期内要打包的交易广播给Order Service组件进行排序。

为什么会有一个背书节点的角色来专门做这件事情?不论是拜占庭容错算法还是基于Paxos的算法,都会先确定一个主节点,由这节点去广播提案,提案也就是今天所讲的Transaction(交易)。在大多数联盟链系统中,通常都会先找出类似主节点的节点(有的只有一个,有的可以是多个),去广播交易数据,而在Fabric里,这种节点叫做背书节点。

03Ordering Service:交易排序

广播的交易数据先后顺序是不确定的,Ordering Service组件也是部署在好几个节点上的,那么他们之间会共同来决定每一笔交易按照什么样的顺序排列好,最终这几个节点会达成一致。实际上Ordering Service组件就是对所有背书节点广播过来的交易数据按照统一的算法进行排序。

这有些像在公链上做共识的过程,矿工打包区块链上交易数据的时候,首先要把交易排定一个序列。

04确认节点:验证、打包、上链

由Ordering Service把交易排好序之后,要写在区块上的数据也就确定了。而后会将这些排好序的交易数据提交给确认节点,确认节点会对排好序的交易数据进行验证,验证的步骤和背书节点类似。这很像公链上其他参与共识的节点需要验证交易数据是否正确的过程。验证无误后,确认节点就会把排好序的Transaction数据打包成区块,然后把区块加入自己维护的区块链中。

确认节点有很多个,这些节点实际上都是同时拿到了这些排好序的交易数据,各自独立地做验证,并打包数据到一个区块,然后把区块加入到自己维护的链上。那么设想一下,由于确认节点拿到的交易数据是经过order service的处理的,是完全一样的,如果经过确认节点验证这些数据没有问题,那么确认节点打包出的区块也就是一样的,由这些区块构成的链也都是一样的。换言之,区块打包好上链之后,就最终确定了,不会也不必再更改。这也就是联盟链的特点——终局性。

联盟链为什么能够做到这一点?因为上述的一系列步骤保证了传送到确认节点的数据是完全一致的,区块在未来不会被丢弃,链条也不会产生分叉。终局性是Fabric共识机制的好处之一。

05Fabric性能提升核心

目前的Fabric共识机制的性能也是比较高的,每秒至少可以支持数百笔交易,甚至1000-2000笔也是可以的。但是在0.6版本之前,Fabric采用的是PBFT去做共识,当节点数量增长到比较多的时候,它的性能就会有较大幅度的下降,因此Fabric在0.6以后就放弃了PBFT而采用了现在的算法。

其中最核心的地方是在排序时用到了Kafka的消息集群,也用到了分布式对象管理的技术Zookeeper,通过这些技术保证Ordering Service排好序的交易数据是完全一样的。Fabric也就没有再使用传统的拜占庭算法、Raft或是Zab等共识算法。但从本质上讲,Fabric与Raft的机制是比较类似的。

2-EOS共识机制-

EOS是公链,它的共识机制是DPOS,与Fabric所用到的共识机制是完全不一样的。

01传统DPOS共识机制45秒确认块

EOS的共识机制其实是BFT-DPOS。而传统的DPOS共识机制是根据节点所持有的权益大小,先选出21个节点,由这些节点来参与共识,并非全部节点都来参与。

这些做共识的节点谁能获得出块权?每一轮次会按照一个随机排序来确定,而出块的时间间隔是3秒。在最初的DPOS机制上,虽然3秒的出块时间看起来很快,但是如果记账节点打包的区块想要得到确认的话,就必须经过45秒。

为什么要经过45秒?因为DPOS规定,区块最少要得到2/3以上的共识节点(见证人节点)的确认,数据才是不可逆的。而原先的DPOS机制下,见证人节点只有在有出块的权利时才能去验证刚才产生的区块。假设一个节点产生了一个块,就需要经过其他14个见证人轮流再出14个块的时间,才能收集到14个见证人对之前打包好的区块的确认。这样经过2/3 以上的见证人确认,第一个打包好的块就是不可逆的了,因此一个区块需要 15个见证人出块的时间,也就是45 秒,才能得到确认,这个速度是比较慢的。

02BFT-DPOS共识机制3秒确认块

因为传统的DPOS的效率比较低,所以后来BM改进了这个算法,将拜占庭的机制引入到了DPOS中。

拜占庭的机制是指将提案或交易广播出去后,当节点接收到广播提案后,马上返回一个确认信息,要么失败、要么成功,而只要接收到超过2/3的节点返回确认的信息,就可以认为这个数据已被确认。

将BFT引入到DPOS上,当见证人A产生区块并广播出去后,其余的节点只要接收到广播的数据,就马上返回确认信息,只要见证人A接收到14个其他见证人对这个区块的确认信息,就会将这个区块放在链上,这个区块就是不可逆的。这就比原来的DPOS快了很多,因为确认信息的接收是并发进行的,所以如果网络条件好,那么在3秒的出块时间内,一个块是很容易得到14个节点的确认的。那么让一个块变成不可逆的确认时间也就变为3秒钟。

03石墨烯技术单线程性能高

EOS使用了石墨烯区块链框架技术,这也是其出块速度很快的原因。

目前区块链主流的框架技术主要包括基于比特币的框架技术、基于以太坊的框架技术、基于超级账本Fabric框架技术以及石墨烯框架技术。

石墨烯技术框架的并发处理能力很强,而且单线程的处理性能也非常高,因此能够做到在3秒内获得14个见证节点的确认信息,并同时处理大量的并发交易。

04更高、更快、更强

3秒的速度已经比较快了,但是后来BM在EOS系统上又做了进一步的改进,让EOS处理性能变得更高。

BM将3秒的出块时间改为了0.5秒,即0.5秒出一个块。但是因为产生块的速度太快,导致下一个出块的见证人节点可能因为网络延迟的问题,还没有接收到前一个节点广播的区块数据时,自己就要开始出块。那么按照规则,轮到该出块的节点就只能将上一个区块丢弃,而上个区块也就没有办法得到确认。

为了解决这个问题,BM又设定了一个规则,将21个见证人节点出块顺序根据他们网络延迟状况事先规定好,即让网络延迟低的节点相邻,各个节点间网络通信的速度最快,这样就让区块在0.5秒内有比较大的概率能够得到14个见证人节点的确认。

当然因为网络状况并不是每时每刻都稳定的,因此BM又想了另一个办法,即每个见证人0.5秒打包一个小块,而且连续打包6个块,也就是说出块时间还是3秒,但是每个节点在3秒内要连续打包6个块。当然这些块较原先机制里的单一的块要小。通过这种方式,一般来说,6个块中的前4-5个小块是有足够的时间在3秒内得到其他见证人节点的确认的。而实际上在实践中,1个块被最终确认的时间大约在1.5秒之内。

至于可能还有被丢弃的块,但是至少提高了大部分的区块确认速度,所以也是可以接受的。

而EOS最大的不安全因素在于21个节点的设置上,其共识节点只有21个,网络中如果超过7个坏节点,那么共识就不能达成,这是EOS的共识机制的主要问题,也是最被人诟病的地方。

今天我们内容就讲到这儿,谢谢大家。

彩蛋

1、转发文章到朋友圈,送50平台积分(不许设置权限、删除,截图发群秘,未进群的小伙伴请先加群秘入群)

2、本篇文章内留言,超过50个赞,送500平台积分(留言限高质量提问、精彩观点分享、参考资料推荐)

以上两项活动时间截止本周三20:00。

3、Q&A、大神考核环节:

小伙伴可在授课公众号文章内留言提问。

DRC精选问题,周三晚8点直播解惑,并开展线上互动Q&A,随后将迎来大神考核,根据课程内容出三道题,每个社区群全部答对的最快的前三名小伙伴将平分600平台积分。​

往期精彩回顾:

张治谈“区块链的诞生及运转”第一讲

张治谈“区块链的诞生及运转”第二讲

张治谈“区块链的诞生及运转”第三讲

张治谈“区块链的诞生及运转”第四讲

张治谈“区块链的诞生及运转”第五讲

张治谈“区块链的诞生及运转”第六讲

张治谈“区块链的诞生及运转”第七讲

张治谈“区块链的诞生及运转”第八讲

张治谈“区块链的诞生及运转”第九讲

张治谈“区块链的诞生及运转”第十讲

张治谈“区块链的诞生及运转”第十一讲

张治谈“区块链的诞生及运转”第十二讲

张治谈“区块链的诞生及运转”第十三讲

张治谈“区块链的诞生及运转”第十四讲

张治谈“区块链的诞生及运转”第十五讲

张治谈“区块链的诞生及运转”第十六讲

张治谈“区块链的诞生及运转”第十七讲

相关文章

网友评论

    本文标题:第十八讲 张治谈“区块链的诞生及运转”:Fabric框架体系与E

    本文链接:https://www.haomeiwen.com/subject/iwjotqtx.html