• 区块链共识机制


    一、什么是共识

    举个例子,你约了一帮人玩游戏,玩游戏之前要定下游戏规则,规定好输赢的奖惩措施。游戏规则需要每个参与游戏的人同意并达成一致,这样才能保证整个游戏的公平性,让每个参与者都玩得开心。这个游戏规则则是“共识协议”。

    在区块链中也一样,共识是一个决策过程,它的目标是确保所有参与者在添加新数据块后,能就其当前状态达成一致。换言之,共识协议确保了一条链的正确性,并为做出贡献的参与者提供了激励措施。共识协议对区块链来说是非常重要的,它可以防止一个人单独控制整个系统,并确保每个人都遵守网络规则。以比特币区块链为例,虽然中本聪创造了比特币区块链,但TA对这条链并没有所有权,比特币区块链完全是透明和开放的,网络中的每个节点都是平等的。

    总结来说,一个协议就是一套规则,它有助于:

    · 确保在线交易的可行性;

    · 消除双重损毁的可能性;

    · 确保参与者不作弊。

    区块链协议还包含:

    · 确定性的逻辑规则;

    · 以加密技术和密码学作为安全基础;

    · 使网络协议得以延续的激励措施。

    目前行业里有多种区块链协议,其中PoW(工作量证明)PoS(权益证明)是最早的协议,通常也是其它共识协议的原型。让我们来看看它们各自有什么优缺点。

    1、Proof-of-Work(PoW)

    工作原理:很难找到解决方案,但很容易检测结果的正确性。

    使用范围:公有链

    使用案例:比特币、以太坊、莱特币。

    要添加一个新块,参与者必须证明TA已经完成了多少量的工作。更准确地来说,要证明TA解决了一个非常困难的任务,即找到了符合特定规则的哈希值。第一个找到正确哈希值的人即可获得在链上添加新块的机会。

    因此,参与PoW意味需要大量的计算资源成本,如电费、CPU等。尽管点对点的可扩展性不错,但PoW处理交易的效率很低。它的另一个问题是,参与者的动机通常是为了致富而不是为了维护“正义”。随着时间的推移,降低挖矿费用和佣金,会极大地影响网络安全。

    PoW的优势在于,能确保两个互不信任的参与者在一个网络中工作。任何人都可以加入网络,而不需要任何许。尽管点对点的可伸缩性很高,但是事务处理率仍然很低。

    2、Proof-of-Stake (PoS)

    工作原理:网络信任验证者,验证者抵押自己的资源作为创建块的能力保障。抵押的资源越大,网络允许这个验证者创建块的概率就越高。

    使用范围:公共/私有区块链。

    使用案例:Cosmos、Tezos、Ethereum也正准备从PoW转向PoS。

    PoS的技术特点是没有复杂和不必要的计算。网络参与者不与其他人竞争,而是抵押他们的资源,如在以太坊区块链中的抵押以太币,并等待他们被选中来创建一个新的块。

    参与者对网络安全很看重,因为他们自己手里持有网络中的TOKEN。系统根据参与者所拥有的 “股权”来选择验证者,如参与者拥有5%的股份,那么将验证网络中5%的交易。PoS的想法是验证者持有的“股份”比例越高,TA操纵验证程序的兴趣就越低。

    与PoW算法一样,PoS中交易的完成是概率性的。尽管与PoW相比,PoS的交易速度相对较快,但它仍然需要TOKEN。有人指出,拥有大量股份的验证者将会有更大概率被选中,因此会导致“富者更富”。

    3、Delegated-Proof-of-Stake (DPoS)

    工作原理:参与者将新块的生产委托给一小群被选出来的、数量固定的验证者。竞争激烈,但回报丰厚。

    使用范围:公共/私有区块链。

    使用案例:Eos、Bitshares

    DPoS通过减少验证者的数量来提高交易速度以及创建块的速度。验证者是TOKEN持有者通过投票选出来的,新块由验证者而不是TOKEN持有者创建。每票的权重由投票人的资产总和决定。投票人可以在任何时候投票给验证者。这决定了网络的高度灵活性,如果大多数验证者失败或出现问题,那么社区将立即投票选出新的验证人来替代他们。

    每个新块的产生需要1-2秒的时间。与PoS相比,DPoS更快更公平,因为被委托的验证人将会与为他们投票的人共享获得的奖励。

    4、Proof-of-Activity (PoA)

    工作原理:PoW和PoS的混合。

    使用范围:公共区块链。

    使用案例:Decred。

    活动证明(PoA)结合了PoW和PoS协议,这意味着参与者可以挖矿或抵押权益来验证区块。因此,PoA协议在矿工和普通网络成员之间提供了平衡。

    5、Proof-of-LocaTIon (PoL)

    工作原理:信标用于查看处于同步状态的节点,然后用临时标记来标记其存在。

    使用范围:公共区块链。

    使用案例:FOAM、PlaTIn。

    位置证明(PoL)允许用户保护特定的GPS位置,从而在网络上进行身份验证。这个区块链协议依赖于BFT信标,它在区块链中记录地理位置和时间标记,从而防止系统中断和欺诈。

    6、Proof-of-Importance (PoI)

    工作原理:和PoS类似,但是有影响排名的附加条件。

    使用范围:公共区块链。

    使用案例:NEM。

    算法和PoS类似,但包含三个部分:账户内的TOKEN数量;账户活跃度;帐户持有人在网络上花费的时间。

    第一个参数在验证交易的评级中起着至关重要的作用;第二个和第三个参数只是帮助建立账户的“价值”。TOKEN的数量越小,其他参数的影响越大。

    因此,一个拥有数十万TOKEN的账户,由于其活跃性和上网时间,可以将重要性系数提高近3倍。反之,拥有数亿TOKEN的人,如果不够活跃以及上网时长不够,其重要性将降低。

    7、Proof-of-Elapsed-TIme (PoET)

    工作原理:块是在相同的时间里以及受信任的环境中创建的。

    使用范围:私有/联盟区块链。

    使用案例:Intel。

    英特尔开发了自己的区块链协议,IntelLedger。

    该系统类似于工作证明,但使用的电力较少。该算法不是参与者解决密码难题,而是在受信任的执行环境环境中工作,如Intel Software Guard Extensions(SGX)。PoET协议保证这些块是随机生成的,不受其它因素干扰。

    8、Proof-of-Authority (PoA)

    工作原理:用于银行和保险公司的半中心化区块链协议。

    使用范围:联盟/私有区块链。

    使用案例:Kovan、Rinkeby、Giveth、Tomochain、Rublix、Swarm City、Colony、Go-Chain。

    与PoS和DPoS类似,在POA中,验证人节点保护区块链并生成新的区块。区块链上的新块只有在验证器达到最大值时才会创建。区块链上的新块,只有当验证人节点达到最大值时才会被创建。

    通过预先选定验证人,Proof of Authority并没有那么去中心化。因此,这种共识协议更适合私有或者联盟区块链,如银行和保险公司。所有验证人的身份都是公开的,可由任何第三方进行验证。因此,验证人的行为是为了使网络利益最大化。

    9、Proof of Capacity (PoC) or Proof of Space (PoS)

    工作原理:矿工可执行的工作量取决于其磁盘可用空间量。

    使用范围:公共区块链。

    使用案例:Burstcoin、Bitcoin Ore。

    PoC类似PoW,但两者有个显著区别,在PoC中,不需要做大量的工作来验证每个区块,这些工作在”PlotTIng”(绘图)的过程中提前完成了,此过程的结果用于后面验证每个块。Plotting是生成称为“plotting file”的特殊文件的过程,该文件存储大量预先计算好的哈希值。最短的解决方案被授予挖掘下一个块的权限。PoC具有高效、成本低和分布式的优点。

    10、Proof-of-Concept (PoC)

    PoC可用于任何领域,括投票追踪、记录存储、法律文件等。PoC可以是没有任何支持代码的原型,也可以是具有基本功能集的最小可行产品(MVP)。PoC是组织内部用来更好地理解特定项目的模型。

    共识协议是区块链不可分割的一部分。它们有助于实现公正,也能避免当一个或部分参与者节点失败时,系统出现故障。其次,也有助于互不信任的参与者在去中心化的环境中达成“共识”。

    上文只简单介绍了部分共识协议,还有很多协议未囊括其中,如Practical Byzantine Fault Tolerance(PBFT)、Proof-of-Brain (PoB)、Proof-of-Physical-Address (PoPA)、Proof-of-Bank-Account (PoBA)等。在蜂巢学院公开课第三课上,将详细介绍比特币的共识协议(PoW)。导师吴为龙(趣派科技CTO),是行业早期参与者和第一批区块链开发者,他将会结合自己多年的行业经验,为大家通俗易懂地讲授比特币的起源、发展、治理等各种知识,让大家离区块链更近一步。

  • 相关阅读:
    Flagger on ASM——基于Mixerless Telemetry实现渐进式灰度发布系列 2 应用级扩缩容
    Flagger on ASM·基于Mixerless Telemetry实现渐进式灰度发布系列 1 遥测数据
    HTML特殊符号整理
    jq代替jsdom操作部分
    js操作html的基本方法
    使用for循环疑难问题
    使用盒子定位布局时margin和padding使用
    四使用浮动div布局
    解决Junit单元测试 找不到类 ----指定Java Build Path
    微信服务号申请、认证、认证后申请商家支付接口
  • 原文地址:https://www.cnblogs.com/crocuta/p/13330457.html
Copyright © 2020-2023  润新知