在分布式的状态下,Hedera Hashgraph要实现性能上的质的变化,需要在共识机制上取得突破。Hedera Hashgraph有它独特的哈希图(hashgraph)共识算法以及分片技术。
哈希图(hashgraph)的共识算法由LeeMon Baird发明,它的共识达成机制跟
区块链完全不同。区块链就像一颗有主干的树,要不断地剪掉枝枝叉叉,保持主干的健壮成长。这跟区块链本身的共识机制内在相关,因为只有剪掉枝叉,才能防止分叉失控。区块链通过区块的链接形成一条单一的合法主链,如果有分叉,比如两个矿工同时创建两个区块,区块链最终选择其中的一个区块,另外一个会被抛弃。也就是上面说到的剪掉枝叉。
哈希图(hashgraph)完全不同,它不仅不剪枝,而且它还会编织交错回来。哈希图的底层数据结构是不同的。哈希图的每个事件(类似于“区块”)都不会被抛弃。所有枝节都持续存在,最终重新组合成为一个整体。从哈希图的角度看,这是一种更有效率的数据结构。
(区块链Vs 哈希图)
在哈希图(hashgraph)看来,这种数据结构还可以避免区块链数据结构的一个问题:出块时间间隔设计。在区块链中,为了保证安全,如果新区块产生的时间间隔过短,会产生很多枝枝叉叉,也因此来不及修剪,会出问题。所以,
比特币通过PoW机制,大概每十分钟的出块时间间隔,由此降低区块的产出速度。不过,这不可避免地带来交易吞吐量的瓶颈。
哈希图(hashgraph)的解决方法是,不抛弃事件,结构的增长不会受到限制。任何人都可以创建交易,这样,交易的吞吐量就会大增。从这角度看,哈希图提出了新的思路,它无需修剪,试图用新的数据结构和共识算法实现更高的交易速度。
哈希图的共识机制包括两个主要部分,一是八卦网络(Gossip about Gossip)和虚拟投票(virtual Voting)。
首先八卦网络协议类似于办公室的八卦传播,只要两个人之间八卦一下信息,很快所有人都会知道该信息。
哈希图(hashgraph)中,每个节点都传播新交易,同时也从临近节点接收交易。某个节点收到新交易之后,可能会组合其他交易生成一个新事件(交易的容器,类似于区块),并传播出去。事件有两个哈希,一个指向该节点上次的最新事件,另外一个指向该节点收到的另外一个节点的最新事件,之后对整个事件加上时间戳并签名。之后不断地循环广播,直到所有节点获得相同信息。
八卦算法无法保证某个时刻所有节点状态一致,不过,它可以保证最终某个时刻,所有节点能够对某个时间点前的历史达成一致。
虚拟投票是怎么发起的?哈希图(hashgraph)节点八卦的内容不仅包括新交易,也包括节点间的八卦历史记录,每个节点可以通过八卦来维护一个哈希图。节点会计算其他节点在特定的哈希图中如何投票,无需进行真实投票,可以免去大量的通信。
大体来说,每个节点把自己知道的信息随机八卦给其他节点,每个节点也接收其他节点的八卦信息。接收到的信息之后,创建新的事件,事件会指向自己的最后一个事件以及信息来源节点的最后一个事件。接下来对所有已知事件计算其创建的轮次,确定其是否为该轮次内的见证人事件,然后对所有见证人事件进行选举投票,计算出知名见证人。通过知名见证人,可以确定所有事件的接受轮次,同时通过接受轮次和共识的时间戳,进行虚拟投票。通过虚拟投票决定共识顺序。
哈希图(hashgraph)的投票算法称之为“虚拟投票”,该虚拟投票不要求发送额外信息,可虚拟计算出投票。从理论来看,哈希图的吞吐量较大,它主要的限制来自带宽。如带宽良好,哈希图系统理论上可以处理非常大的吞吐量。
在哈希图(hashgraph)看来,如有快速的家庭互联网连接,它有机会达到VISA网络级别的全球交易性能。Hedera Hashgraph曾使用亚马逊AWS的m4.4xlarge做过实例测试,测试其吞吐量(每秒100字节的交易)的情况,分别使用了1个、2个以及8个地区的计算机节点。在测试中,根据不同的情况,tps从不到50,000到最高500,000左右。而达成最终状态的时间一般在11秒之内,最快的时间可达到0.04秒(当然,在实际运行中不太可能)。
这里涉及到了吞吐量、延迟、节点数和地理分布的权衡。对于分布在全球8个地区的32台计算机,如要达到50,000tps,其达成最终性共识需要3秒。如果延迟控制在7秒以内(一般信用卡所要求的),且要达成200,000的tps,那么,使用分布在8个地区的32台计算机,或分布在2个地区64台计算机,1个地区的128台计算机,都能到这一要求。最终的吞吐量不仅取决于分布式共识算法,也取决于网速、节点数等。
同时还要看到,这里主要是从交易共识和时间戳来看,还没有包括处理交易的事件。如果每个交易需要数字签名,这也需要算力来验证每秒数十万的数字签名。此外,如果交易要“存储千兆字节”文件,那么,这时候因为带宽限制,也会极大的降低系统的速度。
总之,考虑到实际运行的环境,真实的tps会有所下降,但相对于区块链tps不到100的情况,哈希图有机会达到几万,甚至数十万的tps,算是质的突破。
Hedera Hashgraph为了实现更好的性能,还采用了分片技术。分片技术会随着Hedera Hashgraph网络的增长而变得必要。分片可以实现不用每个节点处理每个交易。共识的达成可以并行处理。就像是收费站不再只有一个收费通道,而有多个收费通道。
分片之间相互信任,它允许多分片账本作为一个整体实现异步的拜占庭容错,可以防止双重支付或其他非法状态。每个分片都具有这些属性,且它们之间的消息包含了各自分片的共识证明。节点会被随机分组到不同分片。交易会以正常方式在个体分片中以共识顺序放置。分片中的所有节点仅对源于该分片的交易共识有贡献。分片之间的通信通过不同分片成员之间的消息交换实现。消息是通过推送来交换。每个分片都会记住从其他每个分片处理的最后一条消息的序列号。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。