探索区块链中的共识算法

区块链技术可以解决分布式系统一致性的问题,而区块链的特点是去中心化,要想达到全网数据的一致性,那么整个体系必要有一个统一的协议和机制,确保在网络中存在恶意节点和攻击的情况依然能够维持数据完整性和安全性。可以说共识机制就是解决这个问题的方法,也是区块链的核心。共识机制很大程度上决定了整个区块链系统节点间的相互信任程度,也决定了其他使用者对于区块链上数据的信任程度。良好的共识机制可以提升系统的性能,促进区块链技术的应用。

那么,区块链技术的核心是如何实现共识的呢?接下来从现有区块链技术中的共识机制出发,就共识算法和性能等方面进行探索。

区块链基本架构

首先,我们来了解一下区块链的基本架构模型,如下图所示:

数据层封装了底层数据区块以及相关的数据加密和时间戳等技术;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和案例。在该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。

共识算法

共识算法就是协调全网中所有数据一致性的算法协议,区块链中的各个节点按照该算法协议对数据进行验证确认。当得到大部分节点认可后,真实有效的数据才能写入到区块中,形成不可篡改的数据。

下面我们来看一下共识机制中的不同算法:

1

POW共识算法

POW(Proof of work)是对工作量的证明,通俗来讲,就是通过工作以获得指定成果,用成果来证明曾经付出的努力,这种证明方式需要很大的工作量才能拿到指定成果,但这个成果却很容易验证。她的工作原理如下:第一,交易中的每一条纪录会发布到各个不同的计算机节点;第二,各个节点将检查到的最新纪录打包到一个新的区块上,并且通过哈希运算记账到网络上,将区块发布到网络上,然后下一条纪录将在这个最新的数据下继续进行打包和运算。这个过程有两个重点一是节点的算力,谁的算力强大谁就有可能抢到打包和运算的权利,二是最长链机制,打包和运算的是接着最长的一个链往下进行的。

POW虽然实现简单,安全可靠,网络资源消耗少,但是,它消耗的计算资源过多,产生的分叉概率较高,共识时间也很长。

2

POS共识算法

POS(proof of stake)权益证明,基于拥有的数量和时间获得证明的算法。相比较POW共识机制,POS共识机制备受关注,是根据在网络里拥有的币的数量来竞争记账的权力,你持有的币越多,币龄越久,获得记账权力的概率就越大。采用POS共识机制可以实现区块链的一致性。 当区块链很长时,除了结尾的几个区块,其余已得到全网确认,实现了一致性,而节点的加入或撤离不会影响区块链的一致性和安全性。每个节点完成工作量证明的概率由它所拥有的计算资源决定,攻击者无法通过创建多个公钥地址来提高自己完成工作量证明的概率,这样可以有效抵御Sybil攻击。然而 ,POS共识机制也存在不足之处,比如实现较为复杂,中间步骤较多,存在严重的效率等问题。

3

DPOS共识算法

DPOS(Delegated Proof of Stake)委托股权证明是POS的进化方案,在常规POW和POS中,影响效率之处在于任何一个新加入的Block,都需要被整个网络所有节点做确认。DPOS的优点在于可以通过不同的策略,不定时的选中一小群节点,这一小群节点可以做新区块的创建,验证,签名,这样就大幅度的减少了区块创建和确认所需要消耗的时间和算力成本。

4

实用拜占庭一致性协议(PBTF)

拜占庭一致性协议主要的研究在分布式系统中,如何在有错误节点的情况下,实现系统中所有正确节点对某个输入值达成一致。在去中心化的情况下,利用拜占庭一致性协议可以实现区块链的一致性,去除多余的计算量,避免资源的浪费。此外,在某一时刻 ,只有一个主节点可以提出新区块,其他节点对该区块进行验证 ,避免分叉,缩短了交易确认和区块确认时间,提高了系统效率。但是,拜占庭一致性协议在安全性和扩展性方面还存在问题。以实用拜占庭协议为例,拜占庭一致性协议的安全性依赖于失效节点数量的限制,失效节点数量不超过全网节点的1/3,如果失效节点的数量超过1/3,就会破坏系统的一致性和安全性。

共识机制POW、POS、DPOS以及

PBTF

的优缺点下图所示:

共识机制的性能

(1)安全性:即是否可以防止二次支付、自私挖矿等攻击,是否有良好的容错能力。以金融交易为驱动的区块链系统在实现一致性的过程中,最主要的安全问题就是如何防止和检测二次支付行为以及sybil攻击通过生产大量无意义的节点而影响系统的安全性。

(2)扩展性:主要考虑当系统成员数量、待确认交易数量增加时,随之带来的系统负载和网络通信量的变化,通常以网络吞吐量来衡量。

(3)性能效率:交易达成共识被记录在区块链中至被最终确认的时间延迟,也可以理解为系统每秒可处理确认的交易数量。

(4)资源消耗:在达成共识的过程中,系统所要耗费的计算资源大小,包括CPU内存等。 区块链上的共识机制借助计算资源或者网络通信资源达成共识。

参考文献

⊙> 2017年第9期

⊙> 2016年第42期

—END—

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180722A0NI5R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券