精华内容
下载资源
问答
  • 共识算法,可以理解为是为了实现分布式一致性协议而产生的一系列流程与规则。当分布在不同地域的节点都按照这套规则进行协商交互之后,最终总能就某个/某些问题得到一致的决策,从而实现分布式系统中不同节点的一致...

    共识算法,可以理解为是为了实现分布式一致性协议而产生的一系列流程与规则。当分布在不同地域的节点都按照这套规则进行协商交互之后,最终总能就某个/某些问题得到一致的决策,从而实现分布式系统中不同节点的一致性。

    起源

    早期的计算机应用大都是单体架构,即单个处理器就能够承接所有的计算任务、读写任务等,那时候的计算机只需要负责将自己收到的任务按序执行、提交并返回即可,因此在那个时期,研究人员的主要研究内容是如何将单核处理器的性能优化到极致。然而,随着互联网的出现与发展,数据量呈现爆发式增长,单靠一个处理器已经无法满足常规的业务需求,分布式系统架构横空出世。

    分布式系统简单来说就是一系列处理器/节点通过消息交互的形式协同处理一系列的事务,从而达到横向扩展性能、提升灾备属性的效果。为了能够达到横向扩展,需要所有节点共享相同的数据副本,自然而然地也就解决了单点故障的问题。分布式系统极大提升了单体架构的性能上限,但也不可避免地引入了分布式一致性问题。分布式一致性问题指的是:

    在分布式系统中,当某些节点出现异常时,如何保证整个系统对外的表现仍然一致。

    这里需要关注3个词语,即“某些”、“异常”以及“一致”。

    一致:分布式一致性大致分为强一致性、弱一致性、最终一致性,由于各个分类涉及的细节较多,本文不做过多赘述。

    异常:在分布式系统中,不同节点通常分布在不同的地域,因此同一时间不同节点的状态可能不受控。节点可能出现一些良性错误,例如宕机、网络延迟/断开等;也可能出现一些恶意错误,例如伪造消息、向不同节点发送不同的投票等。良性错误通常是由于机器/网络故障导致的节点暂时不在线,通过人为介入是可以恢复到宕机之前的状态的,因此不会对整个系统的安全性造成威胁;而恶意错误也就是我们通常所说的拜占庭错误,则可能由于某些节点的恶意攻击导致整个集群出现不可预估的崩溃。

    某些:为了应对上述两种不同类型的错误(非拜占庭错误与拜占庭错误),我们需要设计不同的协议来解决/容忍有限量的错误。通常来说,非拜占庭容错的共识算法能够容忍不超过1/2的节点出现良性错误;拜占庭容错的共识算法能够容忍不超过1/3的节点出现良性/恶意错误。

    分布式系统的一致性问题早在上世纪七八十年代就开始了研究,奠定了非常扎实的理论基础,不过在后来相当长的一段时间内理论研究几乎停滞。直到近年来,区块链系统的出现又促进了分布式一致性问题研究的蓬勃发展。本文将分别介绍分布式领域内一些非常重要的模型假设/定理/理论等。随后,将从传统分布式一致性算法与典型区块链共识算法的角度剖析共识算法的发展历程。

    网络模型

    分布式系统建立在许多通过网络连接或者其他方式进行消息通信的节点之上,而网络通信的不确定性会限制共识算法的设计。通信模型定义了不同消息延迟对于分布式系统的限制能力。总的来说,一共存在三种类型的通信模型,分别是同步模型、异步模型与部分同步模型。

    (1) 同步模型(Synchronous model)

    在同步模型中,所有节点之间的消息通信都存在一个已知的延迟上界,并且不同节点处理事务的相对速度差值有一个已知上界。同步模型是一个非常理想的通信模型,在现实生活中几乎不可见,但是在分布式系统的理论研究中却发挥着及其重要的作用,许多早期的分布式一致性算法都是在同步网络假设下设计的。

    (2) 异步模型(Asynchronous model)

    在异步模型中,上述的假设上界都不存在,因此异步模型比较符合现实的互联网环境。异步与同步相比,是一种更通用的情况。一个适用于异步系统的算法,也能被用于同步系统,但是反过来并不成立。在异步模型中设计一个正确的共识算法已经被证明是不可能的。

    (3) 部分同步模型(Partial Synchronous model)

    部分同步模型是界于同步模型与异步模型之间的一种通信模型,于1988年由Dwork, Lynch等人在论文[1]中提出。该模型中假设存在一个全局稳定时钟GST(Global Stabilization Time),在GST之前整个系统可能处于异步状态,但是在GST之后,整个系统可以恢复到同步状态。部分同步模型的时序假设比较贴合现实世界中对共识算法的需求,即共识总是可以在同步状态下完成,然而一旦网络出现问题,共识可能会进入一段时间的阻塞,直至网络恢复正常。

    拜占庭将军问题

    1982年,Leslie Lamport、Robert Shostak和Marshall Pease三位科学家发表了一篇论文[2],提出了著名的拜占庭将军问题。拜占庭将军问题首次假设了分布式系统中存在恶意节点的情况,并给出了在同步网络模型下的解法(虽然在此之前,同步模型与异步模型还没有明确的定义)。在拜占庭将军问题中,节点不止会出现宕机或者断网等良性错误,还有可能出现任意情况的拜占庭错误,例如硬件或者软件故障导致的节点不按程序逻辑运行,甚至于节点程序被人恶意操纵等等。总之,拜占庭错误更加贴近于实际生活中面临的故障模型,同时它也是分布式系统中最难解决的故障模型。

    根据是否容忍拜占庭错误,我们可以将共识算法分为两类:

    CFT类共识算法:仅能够容忍宕机、网络延迟/断开等良性错误的共识算法

    BFT类共识算法:除了能够容忍上述错误,还能够容忍任意类型的恶意攻击的共识算法

    FLP不可能定理

    1985年,Fischer、Lynch和Patterson三位科学家发表了论文[3],提出了著名的FLP不可能定理。作为分布式系统领域内最重要的定理之一,它给出了一个非常重要结论:在一个异步通信网络中,只要存在一个故障节点,那么就不存在一种完美的共识算法可以正确的终止。

    FLP的出现,从理论的角度告诉人们可以不用再想方设法地去设计一个异步网络中始终能够达成一致的共识算法。因此,后续的共识算法设计中通常会在某些方面做出妥协,例如网络假设不再是异步模型而是选择部分同步模型,即允许存在一定时间的异步网络状态,该期间无法达成共识,但是只要网络恢复到同步状态,就可以立即完成共识,这样虽然对于系统的活性有一定的影响,但是只要能够保证系统的安全性,依然是一个可接受的共识算法。

    CAP理论

    2000年,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。此后,CAP理论正式成为分布式领域的公认定理:一个分布式系统最多只能同时满足如下三种特性中的两种:

    一致性(Consistency)

    可用性(Availability)

    分区容错性(Partition tolerance)

    在分布式系统尤其是区块链系统中,营造一个高可用甚至永远不会出错的网络环境需要付出高昂的代价。因此一般来说,区块链系统必须满足分区容错性这一特质。那么对于区块链系统来说,就只能在一致性与可用性之间做出权衡与让步。例如大型公链系统中有成千上万的节点运行在世界的各个角落中,因此几乎不可能设计出一个强一致的共识算法保证所有节点同时对外提供一致的读写服务。PoW算法是通过牺牲强一致性,退而求其次地满足最终一致性、可用性与分区容错性。尽管PoW网络随时有分叉的可能性,即已经上链的区块有可能被回退掉,但是随着时间的推移,靠前的区块得到越来越多的确认,那么其被回退的可能性就越来越低,以至于达到一种几乎不可能被回退的最终一致性。在此期间,每一个节点都可以正常的对外提供读写服务。

    总结
    通过前人的研究,我们已经能够大致理解了一个共识算法能够正确运转的条件:即在一个传统的分布式系统中,一个实用的共识算法需要能够安全地运行在部分同步网络模型中。其实,早期分布式一致性算法的研究大都集中在非拜占庭的部分同步网络模型环境下,例如经典的Paxos、ViewStamped Replication、ZAB等。直到PBFT算法的提出,才出现了第一个可实用的拜占庭容错共识算法原型。上述这些算法本身已经能够非常好地解决一致性的问题,因此在相当长的一段时间内,都没有新型共识算法被提出。但是近年来,随着人们对于共识算法可理解性、易实现性、吞吐量等要求的不断提高,涌现出了非常多优秀的共识算法,例如CFT类的RAFT、BFT类的HotStuff等。

    在区块链系统或者说比特币出现之前,已经有非常多的应用从单数据中心单数据库模式转变成了多地多中心的分布式数据库模式,然而此类的应用通常还是部署在同一个机构/公司内部服务器上。与此不同的是,在区块链这样一个承载着价值传输的分布式系统上,节点可能分布在全球各地,并且不受任何单一的机构/组织控制,因此区块链共识算法必须要考虑到恶意节点的存在,保证区块链上的价值不会被恶意节点操纵,即区块链共识算法是需要容忍拜占庭错误的。而为了能够应对拜占庭攻击,不同的区块链系统走上了不同的道路。

    在公有链中,常见的选择是通过工作量证明算法(PoW)来防止拜占庭攻击,由于每次竞争出块权都需要解决一个非常复杂的数学难题,因此在这第一步就已经阻挡了绝大多数的攻击者;其次,每一个新构造出来的区块都必须经过其他矿工节点的验证,因此不可能在区块中包含非法/重复的交易;而如果想要伪造一条包含非法交易的链,除非攻击者掌握全世界范围内超过50%的算力,这显然是不可能的,即便存在这样一条链,一旦被发现有非法交易存在必然会导致该链信誉的下降从而导致巨量的损失,这对于攻击者来说显然也是不合算的。最终,上述的规则会引导所有尝试出块的节点都到一条“正确的最长链”上竞争,因为这样做才是利益最大化的选择。

    在联盟链中,常见的选择是通过理论完备的BFT共识算法来防止拜占庭攻击。由于联盟链的共识节点通常由参与方机构管理,因此准入门槛本身就比较高;其次,联盟链中的共识缺乏经济激励,因此需要通过更强的理论来进行约束。然而完全按照一个共识算法的原型来实现的话,依旧会存在一些问题。例如,传统PBFT算法中主节点是固定的,如果能够控制主节点,即便不让它打包非法交易,也可以控制它偏向性地打包某些账户的交易,从而导致其他账户的交易被阻塞而无法上链。因此,在应用BFT共识算法的过程中,还需要为区块链特性加上一些特殊的功能,例如选择不可预测的主节点,为节点加上信誉值从而通过信誉值来选择主节点等。

    敬请期待下篇《什么是共识(生活篇)》

    对于共识算法有兴趣的小伙伴,可以添加小助手桔子(18458407117)加入技术交流群,欢迎您和我们共享观点,共论区块链的无限未来~

    作者简介
    端豪
    趣链科技基础平台部共识算法研究小组

    参考文献
    [1] Dwork C, Lynch N, Stockmeyer L. Consensus in the presence of partial synchrony[J]. Journal of the ACM (JACM), 1988, 35(2): 288-323.

    [2] Lamport L, Shostak R, Pease M. The Byzantine generals problem[M]//Concurrency: the Works of Leslie Lamport. 2019: 203-226.

    [3] Fischer M J, Lynch N A, Paterson M S. Impossibility of distributed consensus with one faulty process[J]. Journal of the ACM (JACM), 1985, 32(2): 374-382.

    展开全文
  • 随着区块链技术地不断发展共识机制也会不断优化,未来可期。 END 上一篇:科普 | 什么是51%算力攻击? 『声明:本文为作者独立观点,不代表白话区块链立场,本内容仅供广大加密爱好者科普学习和交流,不构成投资...

    这是白话区块链的第1250期原创 

    作者 | 郭立芳
    出品|白话区块链(ID:hellobtc)

    当你开始涉猎区块链或加密货币时,似乎经常会遇到 PoW、PoS 等烧脑名词。今天,我们就来聊聊,什么是 PoW、PoS、DPoS。

    PoW、PoS、DPoS,用一句话概括,就是区块链的三种主流共识机制。

    区块链,通俗地说,是一个去中心化的账本。只是这个账本与传统账本不同,不是由会计或少数几个人来记账,而是人人都可以参与记账。

    而且,这个记账需要一个大家都认可的规则,即“怎样记账才是有效”,而这个大家认可的规则就是区块链的共识机制。

    比如,你们一大家人计划去国外旅游,通过商议后,选了泰国,那么到泰国去旅游就是你们家形成的共识。而商议的方式,是少数服从多数,而少数服从多数就是你们家确定旅游目的地的共识机制。

    同样,PoW、PoS、DPoS,分别代表区块链网络的三种主要记账规则,它们的作用非常大,直接关系到记账权和相关收益的分配。不夸张地说,共识机制是区块链的灵魂。

     01 
    PoW(Proof-of-Work)
    工作量证明机制

    工作量证明,简单来说 ,就是一份用来确认你做过一定量工作的证明。它就像你的大学毕业证,证明了你确实有四年大学的学习经历。工作量证明机制,就是用工作量结果来证明贡献大小,再根据贡献大小确定记账权和奖励。

    这个证明过程,是依赖计算机进行数学运算进行的。可以理解为:大家都去解答同一个题目,谁先算出来,谁就负责记账,并得到相应报酬,这个报酬就是网络产生的数字货币。

    比如,在比特币的网络系统里,谁先解题出来,谁就先得到比特币作为奖赏。

    PoW 的优点是,完全去中心化,公平公正,不需要中心化的管理机构,用户(即节点)之间实现了公平竞争,谁先解出题目,谁就获得相应收益。

    其主要缺点是浪费能源。大家一起算题目,都要耗费算力,而最终有效的只有一个用户所做的功,其他人做的都是无用功。

    而计算机是靠电力来带动的,大家一起用计算机算题,其实也耗费了大量电力资源。比如比特币就是采用 PoW 共识机制,每年需要消耗价值几十亿美元的电力,一直遭人诟病。

     02 
    PoS(Proof-of-Stake)
    权益证明机制

    权益证明机制,即拥有越多股权,就可以获得更多奖励。这里的股权是指你持有的数字货币的数量和时间,根据它来分配权益,类似股票的分红制度。

    你持有的币越多,持有的时间越长,即币龄(币龄=持币数*持币时间)越大,就能拿到越多的分红,也就有更大的记账权利。

    PoS的优点有三个:

    一是耗能少,不需要像工作量证明机制一样,耗费大量的能源。

    二是作恶成本高昂,想要攻击网络的话,必须要有51%的币龄,这个难度就很大了,不但需要大量的币,还要持有足够长的时间;

    三是达成共识的时间短,网络环境好的话,可实现毫秒级速度。

    PoS 的缺点有两个,一是持币趋于集中化,因为持有的币越多,时间越长,分配的收益越大,获得的币越多,使币过于集中;另一个是流动性变差,持币有收益分配,就没有动力去套现,会屯币不动,开启躺赚模式,导致币的流动性变差。

     03 
    DPoS
    委托权益证明机制

    DPoS 委托权益证明机制,是在 PoS 基础上优化而来的,通过投票选举的方式,选出生产者,代表他们履行权利和义务,而不是用算力来决定。

    如果生产者不称职,随时可能会被投票出局。投票的权重和分配的收益,都是按照持有的加密货币数量占总量的百分比来计算的,51%的股东的投票结果是不可逆且有约束力的。

    DPoS 和股份制公司类似,普通的股民不能进董事会,要通过投票选举代表来组成董事会,用每个人手上的数字货币计算权重,再根据权重投票选举出能代表他们权益的人,代理记账。

    DPoS 的优点是,记账节点数量少,协作高效,记账效率高。其缺点是减弱了去中心化的程度,由选出的代表进行记账,存在一定的中心化控制。

     04 
    结语

    目前,还没有任何一种共识机制是完美的,都有各自的短板。随着区块链技术地不断发展,共识机制也会不断优化,未来可期。

    END

    上一篇科普 | 什么是51%算力攻击?

    『声明:本文为作者独立观点,不代表白话区块链立场,本内容仅供广大加密爱好者科普学习和交流,不构成投资意见或建议,请理性看待,树立正确的理念,提高风险意识。文章版权和最终解释权归白话区块链所有。』

    欢迎长按二维码

    阅读白话区块链入门连载

    ↓↓↓

    喜欢请点「在看」????

    展开全文
  • 自Filecoin主网上线以来,...那么Filecoin共识机制是什么?为什么收益会减少呢? 1、EC共识机制是什么? 与传统的POW和POS共识机制不同,Filecoin采用的是EC(Expected Consensus)共识机制,即预期共识。那些提供更

    自Filecoin主网上线以来,随着矿工节点不断增多,以及全网有效算力的增加,单TiB的挖矿收益正在持续减少。从主网上线之初的0.23FIL/TiB,到现在0.0859FIL/TiB,单TiB收益下降约60%。
    而说到挖矿收益,就必须要清楚Filecoin的共识机制,以及它如何影响挖矿收益。那么Filecoin共识机制是什么?为什么收益会减少呢?

    1、EC共识机制是什么?

    与传统的POW和POS共识机制不同,Filecoin采用的是EC(Expected Consensus)共识机制,即预期共识。那些提供更多有效存储的矿工节点,将有更大的概率赢得区块打包竞选,获得区块对应的奖励。
    整体而言,奖励的分配将根据矿工算力占全网的比例进行,占比越大,那么分配的奖励也就越多。

    2、为何产量在下降?

    单TiB收益其实就是在既定的周期内,投入1TiB算力在全网获得的平均挖矿收益,现在我们认定的是24小时。其计算公式为:

    全网收益=24小时FIL产量-24小时FIL销毁量
    单TiB收益=近24小时全网收益/全网有效算力

    所以,单TiB收益与全网挖矿产量呈正相关,与全网有效算力呈负相关。关于挖矿产出,Filecoin总量为20亿,挖矿产出占比55%,采用6年减半的通缩释放机制。但Filecoin在铸造代币的时候引入了网络基准线,其中30%为简单供应,70%为基线供应。
    网络基准线初始值为2.5EiB,按照每年100%速度增加,在全网算力达到基线供应的标准后,释放70%基线部分的奖励。目前算力已经达到基线标准,并且算力增速也在不断加快,全网每天释放的总奖励也在逐渐增多。所以,在全网有效算力不变的情况下,单TiB的收益理论上是要变多的。
    而关于全网有效算力方面,主网上线之初全网矿工总数就300多,而目前已经达到1885名,增加近6倍。同时,全网有效算力也在以日均31PiB的速度在增加,这意味着影响单TiB收益的基数也在迅猛增长。就整体而言,有效算力的增长比例高于24小时FIL的产量,所以单TiB的挖矿收益在减少。

    此外,过度燃烧的Gas费也是导致单TiB收益减少的重要因素。目前参与Filecoin网络挖矿的人很多,导致网路拥堵,Gas居高不下,通过Gas燃烧销毁的FIL很多,而这部分也是出自于矿工身上,平摊下来也成为单TiB收益减少的重要原因。
    虽然目前单TiB收益在减少,但这并不是一件坏事。有效算力增多,说明有更多的人参与Filecoin生态建设,对项目的长期发展和价值提升来说是件好事。
    而Gas燃烧的部分,也是Filecoin通缩经济的一环,燃烧掉的FIL将打入黑洞地址,无法参与市场流通,流通的FIL减少,也将有助于提升FIL的价值,保证Filecoin更长远的发展。

    展开全文
  • 从早期的分布式一致性算法的缓慢发展到现如今区块链共识的百花齐放,共识算法的发展已经走过了四十年左右的时光。不同的共识算法的侧重点不同,因此它们所面临的问题、环境也不一样。本文将从如下几个不同角度对共识...

    —— Part1 共识的分类 ——

    从早期的分布式一致性算法的缓慢发展到现如今区块链共识的百花齐放,共识算法的发展已经走过了四十年左右的时光。不同的共识算法的侧重点不同,因此它们所面临的问题、环境也不一样。本文将从如下几个不同角度对共识算法进行分类:

    ▲容错类型

    根据是否容忍拜占庭错误,可以将共识算法分为两类。

    1)拜占庭容错共识算法:PBFT、PoW、PoS、DPoS

    2)非拜占庭容错共识算法:Paxos、Raft

    是否容忍拜占庭标志着该算法是否能够应用到低信任的网络当中。通常来说,公有链环境中必须使用拜占庭容错算法,而联盟链中可以根据联盟参与方之间的信任程度进行选择。

    ▲算法确定性

    根据算法的确定性,可以将共识算法分为两类。

    1)确定性共识算法:Paxos、Raft、PBFT

    2)概率性共识算法:PoW、部分PoS

    确定性共识指的是共识决策一旦达成,就不存在回退的可能性,这一类通常是传统的分布式一致性算法及其改进版本。而概率性指的是已经达成的共识决策在未来有一定的概率会被回退,虽然这个概率随着时间的推移会趋于为0,这一类通常是应用在公有链上的区块链共识算法。

    ▲选主策略

    根据选主的策略,可以将共识算法分为两类。

    1)选举类共识算法:Raft、PBFT

    2)证明类共识算法:PoW、PoS

    选举类共识指的是通过投票选择出块节点,同一个节点可以连续多轮作为出块节点存在,这一类通常是传统的分布式一致性算法及其改进版本。证明类共识算法指的是出块节点需要通过某种方式证明自己具备某种能力,从而获得出块权,这一类的共识算法通常每一轮的出块节点都不相同,从而保证了出块权的公平性,通常应用在公有链上。

    —— Part2 非拜占庭容错共识算法 ——

    Paxos

    Paxos是第一个异步网络模型下能够保证正确性且容错的共识算法。在此之前,FLP明确指出在异步网络模型中,只要存在节点故障,就不可能存在一个可终止的共识算法。因此Paxos也做出了一定的牺牲:Paxos牺牲了一定的活性从而保证了系统的安全性,即在系统处于异步状态时暂停共识的推进,只要有半数以上的节点恢复至同步状态之后,就可以推进共识,完成终止。

    在Paxos中,会存在一个或者多个节点同时想要竞选成为协调者(也叫做提案者Proposer),而每一轮共识最终只会选出一个Proposer进行最终提案值的选择。Proposer提出一个决策值,并收集其他参与者节点(也叫做接受者Acceptor)的投票。最终,Proposer会宣布选定的最终决策值。如果能够达成一个最终决策的话,该决策值会被传递到对此感兴趣的节点(也叫做学习者Learner)中。可以看出,Paxos是一个保证了公平性的算法,即所有节点都可以竞选成为Proposer,没有哪个节点拥有特殊的权利。
    在这里插入图片描述
    图1.Basic Paxos共识流程

    Paxos在一定程度上给出了一种异步网络下分布式一致性问题的解决范式,但是它本身的算法过于晦涩难懂,以至于Lamport本人也在Paxos发表之后又写了一篇论文[1]来重新解释Paxos的流程。同时,一个Paxos算法的正确实现也被证实是非常有难度的挑战,有兴趣的读者也可以阅读Google的实践论文[2]来理解实现过程中的一些权衡与考量。

    Raft

    Paxos诚然是一个非常有影响力的共识算法,可以说奠定了分布式一致性算法的基础,但是由于其难以理解以及实现难度非常之大,想要实现一个完整的Paxos算法非常的困难。因此,出现了非常多的Paxos变体,其中最著名的当属Raft共识算法。

    Raft是一种用来管理日志复制的一致性算法,旨在易于理解。它具备了Paxos的容错性和性能,不同之处在于它将一致性问题分解为相对独立的三子问题,分别是领导选取(leader election),日志复制(log replication)和安全性(safety)。这使得Raft更好理解并且更容易应用到实际系统的建立中。

    在Raft中,每一个节点一定会处于以下三种状态中的一个:Leader(主节点)、Candidate(候选节点)、Follower(从节点)。在正常情况下,只有一个节点是Leader,剩下的节点是Follower。Leader负责处理所有来自客户端的请求(如果一个客户端与Follower进行通信,Follower会将信息转发给Leader),生成日志数据(对应在区块链中即负责打包)并广播给Follower节点。Follower是被动的:他们不会主动发送任何请求,只能单向接收从Leader发来的日志数据。Candidate是在选举下一任Leader的过程中出现的过渡状态,任何一个节点在发现主节点故障之后都可以成为Candidate并竞选成为Leader。

    Raft算法将时间划分成为任意不同长度的term(任期)。任期用连续的数字进行表示。每一个任期的开始都是一次选举。如果一个Candidate赢得了选举,它就会在该任期的剩余时间担任Leader。在某些情况下,选票会被瓜分,有可能没有选出Leader,那么,另一个任期将会开始,并且立刻开始下一次选举。

    每一台服务器都存储着一个数字作为当前任期的编号,这个数字单调递增。当节点之间进行通信时,会互相交换当前任期号,若一个节点的当前任期号比其它节点的小,则会更新为较大的任期号。如果一个Candidate或者Leader意识到它的任期号过时了,就会立刻转换为Follower状态。当一个节点收到过时任期号的请求,就会直接拒绝这次请求。
    在这里插入图片描述
    图2.Raft共识流程

    总结
    Paxos和Raft都是故障容错(Crash Fault Tolerance)共识,是非拜占庭问题的容错技术。非拜占庭是指分布式的系统中存在故障(crash fault),但不存在恶意(corrupt)节点的场景(即可能消息丢失或重复,但无错误消息)下的共识达成问题,是分布式共识领域最为常见的问题。相比较于Paxos,Raft更为简洁,同时可以保证同等的容错能力和性能。

    —— Part3 概率性共识算法 ——
    PoW
    工作量证明(Proof of Work,PoW)最早在1993年由Cynthia Dwork与Moni Naor在学术论文[3]中提及,并于同年由Markus Jakobsson与Ari Juels正式提出了“工作量证明”这个概念[4]。起初,PoW主要用于防止垃圾邮件的产生。2008年,PoW作为共识算法应用在比特币系统中。PoW有以下3个基本属性:

    1)数学难题:PoW共识算法设计了一个数学难题(Mathematical Puzzle),要求节点在生成新区块之前,需要消耗一定的计算资源才能获得难题的解,从而将区块广播到网络,并且其他节点可以轻易验证这个解的有效性。

    2)哈希算法:哈希算法(Hash Algorithm)是一种能够把任意长度的输入变换成固定长度的输出的算法,可被记为y = hash(x),不同的输入x得到的输出y各不相同。除此之外,在已知x时可以快速计算得到y,但是在已知y的情况下,通常只能通过穷举法才能逆推出x。由于哈希算法具有正向快速、逆向困难的特性,常使用哈希算法来设计PoW的数学难题。

    3)生成区块:在一轮区块生成中,系统通过对输出值设定条件来调整数学问题的难度值,节点在成功解出问题并通过验证上链后,将会获得相应的奖励。

    在生成新的区块之前,PoW会预设目标值,要求出块节点计算出的哈希值小于该目标值,以此来表示PoW的难度。为了生成区块并获得奖励,出块节点首先收集一组交易打包成一个区块,并开始尝试解决数学问题进行出块。

    在此期间,出块节点需要生成随机数,同当前区块数据与前一个区块的哈希进行多轮哈希运算,计算当前区块的哈希值:
    在这里插入图片描述
    直到当前区块哈希满足条件:
    在这里插入图片描述
    此时的nonce即为本次数学问题的答案,出块节点将当前区块的哈希、nonce值、前一个区块的哈希作为区块头部数据加入当前区块,如图3所示。然后将该区块广播到区块链网络中,等待验证通过后,出块节点就可以取到相应的奖励。
    在这里插入图片描述
    图3.PoW区块结构表示

    PoS

    前面提到的工作量证明共识算法,就是通过算力来争夺“领导者”的资格,但是工作量证明过程中的大量资源浪费,导致其很难被更大规模的应用接受。对此,有人开始尝试直接使用“股权(Stake)”作为标准进行“领导者”资格的竞选,并随之产生了权益证明(Proof of Stake,PoS)共识算法。

    PoS的思想来源于社会:一个人拥有的股份量越多,其获得的股息和分红就会越高。如果区块链系统也采用这种方法进行维护,不需要过多的资源消耗,也能够使得区块链资产有自然的通胀。节点通过投入一定量的通证参与共识,根据通证持有情况获得打包新区块的权利并获得奖励。目前,以太坊也有转向PoS的以太坊2.0计划。

    为了描述通证持有情况,PoS共识算法引入了“币龄”的概念。币龄(Coin-age)表示节点持有部分通证的时长,当节点将通证作为“股份”投入后,这部分通证就开始积累币龄,币龄的计算方式如下:
    在这里插入图片描述
    在使用了这部分通证后,无论是用来进行区块生成或者简单的交易,这部分通证对应的币龄将被销毁。在最初的PoS共识算法中,币龄是进行评判的重要标准,节点在区块生成时所使用的币龄越高就越容易产生区块,这可以在一定程度上制约短期投机行为。

    PoS共识算法在进行区块生成时,将同时考虑币龄与哈希运算难度,使得节点只需要消耗很少的计算资源就可以完成区块生成。

    DPoS

    委托权益证明(Delegated Proof of Stake,DPoS)共识算法[5]中,选举人通过选举产生代表,由代表进行直接的区块产生,选举人通过选举代表人间接行使竞争出块的权利。委托权益证明共识算法,实际上就是通过一系列选拔规则对候选人进行制约,并制定一套投票规则。普通参与者通过投票的方式从候选者中选拔出委托人,并由委托人进行出块,不满足要求的委托人将会被取消权限,并重新选举产生新的委托人。

    DPoS保留了一定的中心化特性,因此能够保证高效率的交易吞吐,速率可以比肩常见的中心化机构,例如Visa、Mastercard等。在该算法中,去中心化的特性主要体现在对于生成区块的权利可控。即股东通过投票,选择自己信任的代表节点,并由代表节点进行区块链数据的维护。

    —— Part4 总结 ——

    上述提到的共识算法大多用于公链场景,比如比特币,以太坊等,由于公链场景下节点规模庞大,因此较难采用确定性的分布式一致性算法。PoW通过工作量证明的方式来达到较高的安全性以及去中心化程度,相较于PoW,PoS牺牲了一定的安全性来降低能源消耗,而DPoS以更为激进的方式,选举出较少节点来提升共识效率。

    在企业级场景下,节点数量不会非常多,但是对于交易吞吐量以及最终确定性要求较高,因此常用联盟链方式来进行建设,从而满足企业级需求。在实际应用场景中,由于拜占庭容错问题,常会使用PBFT及其变体拜占庭容错类共识算法。

    对「共识专栏」感兴趣的小伙伴,添加小助手桔子(18458407117)加入技术交流群,直面大咖一对一问答~

    作者简介
    袁超
    趣链科技基础平台部共识算法研究小组

    参考文献
    [1] Lamport L. Paxos made simple[J]. ACM Sigact News, 2001, 32(4): 18-25.
    [2] Chandra T D, Griesemer R, Redstone J. Paxos made live: an engineering perspective[C]//Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. 2007: 398-407.
    [3] Dwork C, Naor M. Pricing via processing or combatting junk mail[C]//Annual International Cryptology Conference. Springer, Berlin, Heidelberg, 1992: 139-147.
    [4] Jakobsson M, Juels A. Proofs of work and bread pudding protocols[M]//Secure Information Networks. Springer, Boston, MA, 1999: 258-272.
    [5] Delegated Proof of Stake https://github.com/dacplayproject/cpp-play/wiki/Delegated-Proof-of-Stake

    展开全文
  • 极简区块链共识协议

    2021-01-11 11:31:08
    区块链作为典型的分布式系统,其共识核心的设计和实现一直困扰着开发者。如何设计一种简单而高效的共识协议一直是学术界和工业界追求的目标。比特币的设计虽然简单,但性能低下且共识结果具有一定随机性,因此不适用...
  • 摩杜云相关负责人表示:“数字化发展要靠数字技术,数字技术的生命力在于持续创新,不断创造价值。云、AI、网络等是关键的数字技术。” 麦肯锡的研究发现,新冠疫情发生以来,进一步加速了产品/服务的数字化进程。...
  • 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。近年来,区块链成为全球互联网领域,特别是金融互联网界快速升温、越来越热的概念。在中国,区块链更是引发越来越多的人、...
  • 而我国小飞象共识算法通过一种创新性的多值拜占庭共识应用,在容忍1/3的恶意节点的同时,突破了异步共识算法在性能上的设计挑战,不仅解决了异步共识算法设计的理论难题,而且在性能上大幅提升并全面超越了当前工业...
  • 共识算法 目前以太坊中有两个公式算法的实现,分别为clique和ethash。其中clique是PoA共识的实现,ethash是PoW共识的实现,其相应的代码位于go-ethereum/consensus目录下。 PoW (ethash) PoW定义 PoW与PoA不同之处...
  • PoW共识算法

    千次阅读 2021-09-02 21:01:10
    PoW共识算法 Proof of Work(工作量证明):PoW PoW历史进程 PoW的学术研究早在1993年就开始了。1993年,美国计算机科学家、哈佛大学教授辛西娅 · 德沃克(Cynthia Dwork)首次提出了工作量证明思想,用来解决垃圾...
  • 万字长文:解读区块链7类共识算法

    千次阅读 2021-02-19 11:29:56
    摘要:本文将对区块链中常见的七类共识算法进行介绍,希望对读者探索区块链有所帮助。 区块链技术起源于比特币,最初是比特币等数字货币的一种底层技术,区块链融合了密码学、组网技术、共识算法、智能合约等多种...
  • 什么我们要专门写一篇文章来分析区块链的发展阶段? 最核心的目的是希望帮助当下区块链从业人员或者希望进入区块链行业的人,又或者是希望借助区块链技术改善所处行业发展的朋友,能够理清现在区块链技术处于一个...
  • 原标题:共识机制:权益证明机制(POS)在区块链系统框架中,共识层提供了全网对交易和区块的共识,是接在区块链中产生信任的方法和机制。目前常用的共识机制有三种: Proof of Work工作量证明,简称PoW;Proof of ...
  • 基于DAG的IOTA共识算法

    2021-04-21 09:55:06
    针对传统区块链和比特币在高并发交易受限的问题,研究人员提出了一种基于有向无环图的新型加密货币。...这种新型加密货币的分布式网络主要特征被称为tangle,同时讨论了IOTA协议中所使用的共识策略和算法。
  • 目前,以电动化、智能化、网联化、共享化为发展趋势已在汽车行业内达成普遍共识。尤值得一提的是,智能化是汽车产业“新四化”的核心。这从智能驾驶逐渐走进寻常百姓的生活可见一斑。 汽车智能化的到来必将引起其...
  • 原标题:电脑硬件的发展历程中 什么是电竞SSD?身处21世纪的人们,早已经习惯了各类电子设备的充斥,并全方位的体验着智能设备所带来的便利。那么,我们平常所熟知的计算机设备,到底由那些重要部件组成,它们又是...
  • 时间证明(time certificate)共识算法

    千次阅读 2021-06-27 18:02:16
    时间证明(time certificate)共识算法 摘 要   这个世界的本质是被时间烙印下的种种痕迹,如果你想改变之前的结果除非你能穿越时空。通过时间去证明无法篡改且达成合理事实的算法称之为时间证明算法。   时间...
  • 共识算法PBFT和Raft

    千次阅读 2021-11-14 14:13:54
    共识算法学习记录--保持更新前言一、为什么需要共识算法?二、经典的共识算法2.1.PoW2.2.PoS2.3.RPCA2.4.DPOS2.5.PBFT三、总结四、参考文献 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的...
  • 通过对近700项科技趋势的综合比对分析,其中最值得关注13项科技发展趋势,你知道吗? 1、物联网 在2045年,最保守的预测也认为将会有超过1千亿的设备连接在互联网上。它们所创造并分享的数据将会给我们的工作和生活...
  • DPoS 不是独立提出的共识算法,而是直接被 BM 应用到比特股项目中,在稳定运行了 3 年多后,又接着被 BM 构造成可复用的区块链工具箱:石墨烯。 虽然应用得很早,但 DPoS 算法直到 2017 年才被 BM 单独拎出来作了一...
  • 互联网的发展诞生了很多新的事物,区块链作为一个新兴产物,它们的“共识机制”也在不停的更迭,这种历程和CPU架构的升级非常相似。如果说共识是区块链的基础,那共识机制就是区块链的灵魂。 在区块链上,每个人都会...
  • 当前区块链的共识算法有许多种。主要可以归为一下四类: (1):proof of work(pow)类的共识算法: 主要包括区块链鼻祖比特币采用的共识机制已经其他数字货币,比如莱特币。该算法的核心思想就是:所有的节点...
  • 12 月 23 日,在深链财经主办的”2020 年非共识大会暨 DeepChain 年度影响力颁奖典礼”上,Conflux 联合创始人兼 CTO 伍鸣博士发表题为《公链如何成为 DApp...
  • “数字湖北”发展驶入新阶段 五大倡议引领“懂行”共识 2021年作为“十四五”的开局之年,从政府工作报告到“十四五”规划,都对加快数字经济发展提出了新要求和新目标,其中数字产业化和产业数字化更是成为重中之...
  • Highway协议基于Casper原始的CBC规范PoS权益证明区块链架构发展而来,并且实现了明显的改善。大多数区块链均采用拜占庭容错(BFT)共识协议设计而成。一般来说,“拜占庭容错”协议是指区块链网络在一组分布式自治...
  • 关于DAG共识的调研

    千次阅读 2021-09-02 10:15:08
    DAG 是什么常见共识机制主链DAG共识朴素DAG平行链DAG问题与挑战 这是自己看的一篇综述,参考里面的分类并对现在的一些DAG共识做的简要理解,后面会对一些共识的论文做学习笔记。 若有错误之处还请批评指正。 ps: ...
  • 在今年中央发布的“十四五”规划中,重点提出了“加快数字化发展建设数字中国”的目标任务。 随着我国各行业企业纷纷开展数字化转型相关工作,如何通过运用云计算、大数据、人工智能等新一代信息技术,实现从底层...
  • 元宇宙整合了现今计算机领域的诸多新技术,以此为基础构建和产生了新型的、...虚实接口才是元宇宙发展的重中之重。虚实接口也即虚实交互,元宇宙要求沉浸感、参与度等,其本质就需要提供远超现今的新型显示和新型交互。
  • 区块链的共识机制: 总结来说,一个协议就是一套规则,它有助于: · 确保在线交易的可行性; · 消除双重损毁的可能性; · 确保参与者不作弊。 区块链协议还包含: · 确定性的逻辑规则; · 以加密技术和密码学...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,074
精华内容 23,229
关键字:

发展共识是什么