浅谈区块链分布式一致性算法 ,和“唐盛链”GEAR共识机制

[摘要]目前,尽管区块链上的共识机制有很多种,但没有一种是完美无缺的,这也就意味着没有一种是适合所有应用场景的。本文重点介绍传统分布式一致
目前,尽管区块链上的共识机制有很多种,但没有一种是完美无缺的,这也就意味着没有一种是适合所有应用场景的。本文重点介绍传统分布式一致性算法,并结合国内自主研发的创新型区块链共识机制“唐盛链”(唐盛,代表其研发机构:唐盛(北京)物联技术有限公司),为有关机构研发区块链应用提供参考。
\

主流的传统分布式一致性算法其实只有一个:Paxos。包括Raft在内的其他算法,都属于Paxos的变种,或特定假设场景下的Paxos算法。

1. Paxos算法

Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法,其解决的问题是分布式系统如何就某个值(决议)达成一致。

从工程实践的意义上来说,通过Paxos可以实现多副本一致性、分布式锁、名字管理、序列号分配等。比如,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后得到的状态就是一致的。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。后续又增添多个改进版本的Paxos,形成了Paxos协议家族,但其共同点是不容易工程实现。

Lamport在2011年的论文Leaderless Byzanetine Paxos中表示,不清楚实践中是否有效,考虑Paxos本身实现的难度以及复杂程度,此方案工程角度不是最优,但是系统角度应该是最好的。

2. Raft算法

Paxos协议的难以理解是出了名的,斯坦福大学的博士生Diego Ongaro把对其的研究作为了自己的博士课题。2014年秋天,他正式发表了博士论文CONSENSUS: BRIDGING THEORY AND PRACTICE,并给出了分布式一致性协议的一个实现算法,即Raft。

在论文正式发表前,Diego Ongaro还把与Raft相关的部分摘了出来,形成了一篇十多页的文章In Search of an Understandable Consensus Algorithm,即人们俗称的Raft论文。

Raft算法主要注重协议的落地性和可理解性,让分布式一致性协议可以较为简单地实现。Raft和Paxos一样,只要保证n/2+1节点正常就能够提供服务;同时,Raft更强调可理解性,使用了分而治之的思想把算法流程分为选举、日志复制、安全性三个子问题。

在一个由Raft协议组织的集群中有三类角色:Leader(领袖)、Follower(群众)、Candidate(候选人)。Raft开始时在集群中选举出Leader负责日志复制的管理,Leader接受来自客户端的事务请求(日志),并将它们复制给集群的其他节点,然后负责通知集群中其他节点提交日志,Leader负责保证其他节点与他的日志同步,当Leader宕掉后集群其他节点会发起选举选出新的Leader。

常见共识机制

当我们描述传统分布式一致性算法时,其实是基于一个假设——分布式系统中没有拜占庭节点(即除了宕机故障,没有恶意篡改数据和广播假消息的情况)。而当要解决拜占庭网络中的数据一致性问题时,则需要一种可以容错的算法,我们可以把这类算法统称为拜占庭容错的分布式一致性算法。而共识机制,就是在拜占庭容错的分布式一致性算法基础上,根据具体业务场景传输和同步数据的通信模型。

由于目前常见的共识机制都是在区块链数据结构的业务场景中运用,因此下文列出的共识机制主要用于区块链网络。

1. 工作量证明机制(Proof of Work, POW)

POW依赖机器进行数学运算来获取记账权,资源消耗相比其他共识机制高、可监管性弱;同时,每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。第一个运用POW的是比特币系统,它能够使更长总账的产生具有计算性难度,平均每10分钟有一个节点找到一个区块。

如果两个节点在同一时间找到区块,那么网络将根据后续节点的决定来确定以哪个区块构建总账。从统计学角度讲,一笔交易需在6个区块(约1小时)后被认为是明确确认且不可逆的;然而核心开发者认为,需要120个区块(约一天)才能充分保护网络不受更长的、已将新产生的币花掉的攻击区块链的威胁。

尽管出现更长区块链的现象不太可能发生,但任何拥有巨大经济资源的人还是有机会制造一个更长的区块链,或者具备足够的哈希算力来冻结用户的账户。

2. 股权证明机制(Proof of Stake, POS)

股权证明机制已有很多不同变种,但基本概念是产生区块的难度应该与用户在网络里所占的股权成比例。这里以点点币(Peercoin)和未来币(NXT)举例:点点币使用一种混合模式,用用户的股权调整挖矿难度;未来币则使用一个确定性算法随机选择一位股东来产生下一个区块,这一算法基于用户账户余额来调整被选中的可能性。

3. 授权股权证明机制(DPOS)

每个股东可以将其投票权授予一名代表,获票数最多的前100名代表按既定时间表轮流产生区块。所有代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬,如果一个平均水平的区块含有100股作为交易费,则一名代表将获得1股作为报酬。

网络延迟有可能使某些代表没能及时广播他们的区块,而这将导致区块链分叉。这一问题不太可能发生,因为制造区块的代表可以与制造前后区块的代表建立直接连接,确保能够得到报酬。

该模式每30秒便可产生一个新区块,在正常的网络条件下区块链分叉的可能性极小,即使发生也可以在几分钟内得到解决。

4. 实用拜占庭协议(PBFT)

PBFT是一种基于消息传递的一致性算法,算法经过三个阶段达成一致性,这些阶段可能因为失败而重复进行。

假设节点总数为3f+1,f为拜占庭错误节点:

(1)当节点发现leader作恶时,通过算法选举其他的replica为leader;

(2)leader通过pre-prepare 消息把它选择的value广播给其他replica节点,其他replica节点如果接受则发送 prepare,如果失败则不发送;

(3)一旦2f个节点接受prepare消息,则节点发送commit消息;

(4)当2f+1个节点接受commit消息后,代表该value值被确定。

\

该算法主要应用在hyperledger fabric等联盟区块链或私有区块链场景中,容错率低、灵活性差,超过1/3的节点作恶就会导致系统崩溃,并且不可动态添加节点(部分论文讨论了动态节点的PBFT算法,但是理论和实践上都有比较强的假设条件)。

5. 唐盛链的GEAR共识协议(Group Estimate and Rotate)

唐盛链是国内基于区块链技术的自主研发创新,唐盛是其研发机构——唐盛(北京)物联技术有限公司的简称。

GEAR协议也是由唐盛(北京)物联技术有限公司自主研发的共识协议,通过轮转记账(rotate)、集体评估(group estimate)和齿轮共识路由(gear)三个子协议组成,结合区块链数据结构和点对点网络通信的特点,实现安全、高效、去中心化、应用场景灵活的数据同步共识。目前,该协议已经在“唐盛链”中得到应用。

协议的参与者包括轮转见证人(rotate witness)、一级集体评估人(voter)、二级集体评估人(valuer)。Voter作为接入共识网络的用户,既是系统的使用者也是一级集体评估人,按照其所持代币加权评估选举出轮转见证人,轮转见证人按照等概率轮流记账(产生区块)。二级集体评估人是在评估事件发生时由轮转见证人转化而来,通过加权平均的接近率抢夺一次记账机会。

传统分布式一致性算法和区块链共识机制的异同点

1. 相同点

Append only

时间序列化

少数服从多数

分离覆盖(即长链覆盖短链区块,节点大数据量日志覆盖小数据量日志)

2. 不同点

传统分布式一致性算法并不考虑拜占庭容错,只假设所有节点仅发生宕机、网络故障等非人为问题,没有考虑恶意节点。

传统分布式一致性算法面向数据库或文件,而区块链共识机制面向交易或价值传输。

结论:

新兴的区块链技术,一方面前景广阔,另一方面在实际应用中依然有很多问题需要进一步解决。唐盛链GEAR共识协议的创新,是国内业界的一次颇具关注价值的尝试。




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。