区块链共识协议最详细的分析

    共识机制是区块链的核心基石,是区块链系统安全性的重要保障。区块链是 一个去中心化的系统,共识机制通过数学的方式,让分散在全球各地成千上万的节点就区块的创建达成一致的意见。共识机制中还包含了促使区块链系统有效运 转的激励机制,是区块链建立信任的基础。

    区块链公链常用的共识机制有 POW、POS、DPOS、BFT 以及多种机制混合而成的共识机制等。共识是指系统节点达成一致的过程,而分布式系统的一致性体现在三个方面:

    ◼  最终性(Termination): 所有进程最终会在有限步数中结束并选取一 个值, 算法不会无尽执行下去。
    ◼  统一性(Agreement): 所有进程必须同意同一个值。
    ◼  合法性(Validity): 输出内容是输入内容按照系统规则生成的,且输出内容合法。
    最终性衡量了达成共识的效率,在一些对交易确认的实时性要求高的场景显 得非常重要,而统一性和合法性表征了共识的安全性。在区块链系统中,去中心 化程度表征了分布式系统的大规模协作程度。因此,我们从效率、安全性和去中 心化程度这三个维度去评价各种共识机制,也就是长铗提出的著名的“不可能三 角”3理论。

1. POW共识机制

        比特币采用的 POW 工作量证明共识机制,在生成区块时,系统让所有节点 公平地去计算一个随机数,最先寻找到随机数的节点即是这个区块的生产者,并 获得相应的区块奖励。由于哈希函数是散列函数,求解随机数的唯一方法在数学 上只能是穷举,随机性非常好,每个人都可以参与协议的执行。由于梅克尔树根的设置,哈希函数的解的验证过程也能迅速实现。因此,比特币的 POW 共识机 制门槛很低,无需中心化权威的许可,人人都可以参与,并且每一个参与者都无 需身份认证。
    同时,中本聪通过工作量证明的机制破解了无门槛分布式系统的“女巫攻击” 问题。对系统发起攻击需要掌握超过 50%的算力,系统的安全保障较强。
    POW 共识的优点可归纳为:
        ◼  算法简单,容易实现,节点可自由进入,去中心化程度高。
        ◼  破坏系统需要投入极大的成本,安全性极高。
        ◼  区块生产者的选择通过节点求解哈希函数实现,提案的产生、验证到共识的最终达成过程是一个纯数学问题,节点间无需交换额外的信息即可达成共识,整个过程不需要人性的参与。
    比特币系统的设定在保证安全性的的前提下,牺牲了一部分最终性。因此,POW 共识算法也存在一些问题:
    ◼  为了保证去中心化程度,区块的确认时间难以缩短。
    ◼  没有最终性,需要检查点机制来弥补最终性,但随着确认次数的增加,达成共识的可能性也呈指数级地增长。 由于这两个方面的问题,一笔交易为了确保安全,要在 6 个新的区块产生后才能在全网得到确认,也就是说一个交易的确认延迟时间大概为 1 小时,这无法 满足现实世界中对交易实时性要求很高的应用场景。
    另一方面,POW 共识算法带来了硬件设备的大量浪费。随着比特币价值的 增长,比特币算力竞赛经历了从 CPU 到 GPU,再到 ASIC 专用芯片的阶段。算力强大的 ASIC 芯片矿机将挖矿算法硬件化,而 ASIC 芯片矿机在淘汰后,没有 其他的用途,造成了大量的硬件浪费。

2. POS共识机制

    POS(Proof of Stake)共识机制,是一种由系统权益代替算力决定区块记 账权的共识机制,拥有的权益越大则成为下一个区块生产者的概率也越大。POS 的合理假设是权益的所有者更乐于维护系统的一致性和安全性。如果说 POW 把 系统的安全性交给了数学和算力,那么 POS 共识机制把系统的安全性交给了人 性。人性问题,可以用博弈论来研究,POS 共识机制的关键在于构建适当的博弈 模型相应的验证算法,以保证系统的一致性和公平性。
    POS 共识机制没有像 POW 那样耗费能源和硬件设备,缩短了区块的产生 时间和确认时间,提高了系统效率。但存在的缺点也有很多,包括:
    ◼ 实现规则复杂,中间步骤多,参杂了很多人为因素,容易产生安全漏洞。
    ◼ 与 POW 共识机制一样没有最终性,需要检查点机制来弥补最终性。

     (1) POS 共识机制的最早实践

    早期 POS 共识机制的实现一般是结合了 POW 共识机制,如点点币(Peer Coin)、黑币(Black Coin)等。其主要思想是区块记账权的获得难度与节点持 有权益的币龄成反比。相比于 POW 共识机制,一定程度减少了数学运算带来的 资源消耗,达成共识的时间也相应地缩短,出块效率提高。 但这种 POS 共识机制的致命弱点在于币龄依赖问题,攻击者在积累长时间 币龄后,挖矿的难度大大降低,容易对系统发起双花攻击。

    (2) 纯 POS 共识机制

    纯 POS 共识机制由节点所持权益(持有数量乘以持有时间)决定区块生产 者,权益比例越高,被选为区块生产者的概率也越大,区块生产者选举过程中没 有挖矿。这种机制的践行者有未来币(NXT)和量子链(QTUM)等。
    纯 POS 共识机制没有引入外部资源,仅仅依靠自身的权益来维护网络安全, 因此其不需要消耗能源来进行计算;而且由于其没有引入外部的资源,因此不会 担心外部攻击,例如外界的算力攻击。但是,这种 POS 共识依然存在很多问题:
    ◼ 无利害关系攻击(Nothing-at-Stake attack)
    基于权益的挖矿不需要像 POW 共识一样投入物理算力和能源的消耗,只需 要持有权益。假设系统中出现了两个分支链,那么对于持有币的“挖矿者”来讲, 矿工的最佳的操作策略就是同时在两个分支上进行“挖矿”,这样无论哪个分支 胜出,对币种持有者来讲,都会获得本属于他的利益,而不会有利益损失。 这导致的问题是,只要系统存在分叉,“矿工们”都会同时在这几个分支上 挖矿;因此在某种情况下,发起攻击的分叉链是极有可能成功的,因为所有人也 都在这个分叉链上达成了共识;而且甚至不用持有 51%的权益,就可以成功发 起分叉攻击。
    ◼ 马太效应
    POS 共识机制下的权益累计由持币数量乘以持币时间得到,它势必形成赢 家通吃的局面。假设电力成本均为 3 币,大户持有 100 币天获得 100 利息币, 小户持有 1 币天,获得 1 利息币。这样大户会倾向于开机获得更多的币天,而 小户倾向于关机,(97,0)是最终博弈的选择。如此,大户获得的币越来越多, 造成富者愈富,贫者愈贫的局面。
小户\大户 开机 不开机
开机 97,-2 0,-2
不开机 97,0 0,0
表:POS 博弈收益矩阵4
    ◼ 记账节点激励问题
    尽管 POS 中的“挖矿”不用消耗算力,运行成本很低,但是也存在如何激 励 POS 矿工的问题。因为一般的 POS 系统是没有新币产生的,矿工只能赚取交 易费,而且在交易费不高的情况下,对矿工的激励十分有限。

    (3)改进的 POS 共识机制

    针对纯 POS 共识机制存在的问题,改进的 POS 共识机制通过设立惩罚制 度来保证系统安全,区块验证者以存入押金的形式参与,对系统恶意攻击的惩罚 力度要比奖励大成百上千倍。
    POS 共识的这种改进方便区块链进行分叉选择和在链上设置检查点,解决 了纯 POS 共识机制的分叉问题,并使共识结果获得了最终性。但是对于如何判 定恶意攻击依然是个备受争议的问题。POS 共识的实行过程始终是一个复杂的 人性博弈过程。 以太坊的 Casper FFG 版 POS 机制将于以太坊第三阶段 Metropolis 中的 第二部分 Constantinople(君士坦丁堡)中投入使用,这是一种融合了改进的 POS 共识和 POW 共识的混合共识。以太坊 Casper FFG 版本的记账人选择和 出块时间都由 POW 共识完成,POS 共识在每 100 个区块处设置检查点,为交 易确认提供最终性,也是这种 POW-POS 混合共识机制优于 POW 共识机制的 地方。

3. DPOS共识机制

    DPOS(Delegated Proof of Share),代理权益证明共识机制,是一种 基于投票选举的共识算法,类似代议制民主。在 POS 的基础上,DPOS 将区块 生产者的角色专业化,先通过权益来选出区块生产者,然后区块生产者之间再轮 流出块。
    DPOS 共识由 BitShares(比特股)社区首先提出,它与 POS 共识的主要 区别在于节点选举若干代理人,由代理人验证和记账。DPOS 相比 POS 能大幅 度提升了选举效率,在牺牲一部分去中心化特性的情况下得到性能的提升。
    DPOS 共识机制不需要挖矿,也不需要全节点验证,而是由有限数量的见 证节点进行验证,因此是简单、高效的。由于验证节点数量有限,DPOS 共识被 普遍质疑过于中心化,代理记账节点的选举过程中也存在巨大的人为操作空间。

    (1) EOS

    EOS 系统中共有 21 个超级节点和 100 个备用节点,超级节点和备用节点 由 EOS 权益持有者选举产生。区块的生产按 21 个区块为一轮。在每轮开始的 时候会选出 21 个区块生产者。前 20 个区块生产者由系统根据网络持币用户的 投票数自动生成,最后一名区块生产者根据其得票数按概率生成。所选择的生产 者会根据从区块时间导出的伪随机数轮流生产区块。
    EOS 结合了 DPOS 和 BFT(拜占庭容错算法)的特性,在区块生成后即进 入不可逆状态,因而具有良好的最终性。EOS 采用的石墨烯技术使其在理论上 能够达到百万级别的 TPS,目前上线的测试网络的 TPS 达到数千量级。同时, 由于 EOS 的记账节点有严格的筛选制度,系统的安全性也很高。
    DPOS 作为 POS 的变形,通过缩小选举节点的数量以减少网络压力,是一 种典型的分治策略:将所有节点分为领导者与跟随者,只有领导者之间达成共识 后才会通知跟随者。该机制能够在不增加计算资源的前提下有效减少网络压力, 在商业环境的实现中将会具有较强的应用价值。
    DPOS 为了实现更高的效率而设置的代理人制度,背离了区块链世界里人 人可参与的基本精神,也是 EOS 一直被质疑的地方。

    (2) Cardano

    Cardano 实行的共识机制 Ouroboros 可认为是 DPOS 共识的一个变种, 而 Cardano 团队更愿意将其表述为 Dynamic POS。与 DPOS 共识的相同之处 是,只有 Cardano 的代币 ADA 持有量超过一定数量的地址(官方数据 ADA 前 2%的地址)才有资格参与区块生产者的选举,持有 ADA 越多的用户,被选为区 块生产者的概率越大。
    Ouroboros协议将物理时间分为纪元(epoch),然后再将纪元划分为区块 (slot),每个纪元持续5天,每个区块持续约20s。每个纪元的区块生产者在上 一个纪元就已经选定,并在下一个纪元中随机选定某个候选人充当各个区块的生 产者,一个候选生产者可能在一个纪元中对生产多个区块。
    Cardano 团队认为 Ouroboros 不同于 DPOS 之处在于,Cardano 记账 人的选举过程是完全随机的,而不是利益相关方选举而来。Ouroboros 共识算 法中引入了一种抛硬币协议(coin tossing protocol),可以保证选举过程的完 全随机性。据 Cardano 团队称,Ouroboros 是目前为止唯一在数学上证明能够 达成近似纳什均衡的 POS 共识机制,但其有效性仍需实际运行效果来检验。

4. BFT共识机制

    (1)PBFT

    最常用的BFT共识机制是实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance)。该算法是Miguel Castro和Barbara Liskov在1999年提出 来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由节点数的指 数级降低到节点数的平方级,使得拜占庭容错算法在实际系统应用中变得可行。
    PBFT是针对状态机副本复制为主的分布式系统执行环境开发的算法,旨在 让系统中大部分的诚实节点来覆盖恶意节点或无效节点的行为。PBFT算法的节 点数量是固定的,节点身份提前确定,无法动态添加或删除,只能适用于节点数 目固定的联盟链或私有链场景中。
    PBFT算法存在的问题:
      ◼  计算效率依赖于参与协议的节点数量,不适用于节点数量过大的区块链
  1. 系统,扩展性差。
  2. ◼  系统节点是固定的,无法应对公有链的开放环境,只适用于联盟链或私
  3. 有链环境。
  4. ◼  PBFT算法要求总节点数n>=3f+1(其中,f代表作恶节点数)。系统的失效节点数量不得超过全网节点的1/3,容错率相对较低。

    (2)DBFT

    考虑到BFT算法存在的扩容性问题,NEO采用了一种代理拜占庭容错算法— —DBFT(Delegated Byzantine Fault Tolerant)。它与EOS的DPOS共识机制 一样,由权益持有者投票选举产生代理记账人,由代理人验证和生成区块,以此 大幅度降低共识过程中的节点数量,解决了BFT算法固有的扩容性问题。
    为了便于在区块链开放系统中应用,NEO的DBFT将PBFT中的将C/S(客户 机/服务器)架构的请求响应模式,改进为适合P2P网络的对等节点模式,并将静 态的共识参与节点改进为可动态进入、退出的动态共识参与节点,使其适用于区 块链的开放节点环境。
    DBFT的算法中,参与记账的是超级节点,普通节点可以看到共识过程,并 同步账本信息,但不参与记账。总共 n 个超级节点分为一个议长和 n-1 个议员, 议长会轮流当选。每次记账时,先有议长发起区块提案(拟记账的区块内容), 一旦有至少(2n+1)/3 个记账节点(议长加议员)同意了这个提案,那么这个 提案就成为最终发布的区块,并且该区块是不可逆的,所有里面的交易都是百分 之百确认的,区块不会分叉。
    NEO 的 DBFT 共识机制下只设置了 7 个超级节点,以一种弱中心化的模式 实现较高的共识效率。目前,这些代理节点是静态选出的,并完全由项目方部署, NEO 由此被外界质疑为过于中心化。
    DBFT 的优点一方面是效率高,NEO 每 15~20 秒生成一个区块,交易吞吐 量可达到约 1000TPS,通过适当优化,性能可达 10000TPS;另一方面是其良 好的最终性,区块不会分叉,以此来验证参与者的身份,保护网络安全,使区块 链能够适用于对交易确认实时性要求高的真实金融场景。
    DBFT 的缺点也不容忽视,一方面体现在较低的容错率,当有 1/3 或以上超 级节点为恶意节点或宕机后,系统将无法提供服务;另一方面体现在超级节点数 量过少,中心化程度高。

5. POW共识机制的回归

    (1) 各种共识机制的比较

        比特币是解决了拜占庭将军问题的分布式账本,在完全开放的环境中,实现 了数据的一致性和安全性。但比特币采用的POW 共识机制被广泛质疑为:
        ◼ 消耗大量能源和硬件设备;
        ◼ 区块同步时间长,扩展性弱,TPS 低。 于是效率更高、被认为更加节能环保的 POS、DPOS、BFT 等共识机制相继 问世,并得到广泛的应用。各种共识机制的特点:
        ◼ 在 POS 共识机制下,全网节点根据权益大小按照某种规则参与区块生 产者的选举,共识过程中节点系统开放。但选举过程效率低下,同时由 于选举过程复杂,伴随着许多安全问题。
        ◼ DPOS 共识通过代理人制度,大幅度提升了 POS 共识的选举效率。但 在共识过程中,节点系统是封闭的,而且去中心化程度低
        ◼ BFT 类的共识机制性能较高并具备良好的最终性,但其容错率低,且由 于节点的扩展性问题,更加适用于相对封闭的节点系统。
   具体优缺点如下表:
共识机制
优势
劣势
POW
1. 安全稳定,节点自由度高
2. 去中心化程度高,节点系统开放
1.扩展性弱,性能低
2.没有最终性
3.造成硬件设备浪费
POS
1. 能源耗费少
2. 去中心化程度较高,节点系统开放
1.实现过程复杂 
2. 存在安全漏洞
DPOS
1.能源耗费少
2. 性能高
3. 具备最终性
去中心化程度弱,节点系统相对封闭
BFT
1.性能较高 
2. 具备最终性 
3. 安全性好
1.去中心化程度弱,节点系统 封闭
2. 容错率低

    (2) POW 共识机制能源消耗的必要性

    正如张首晟教授所言,现实世界的熵总是在增加的6。POW 共识机制将虚拟 世界和现实世界连接起来,分布式系统中达成共识的过程是一个熵减的过程,这 需要现实世界的熵增来平衡,能量消耗即是提供熵增的平衡方式。
    相比于 POW 共识把系统的安全性交给了数学和能量消耗,POS 共识把系 统的安全性交给了人性的博弈。POS 共识是虚拟世界中的一个封闭系统,如果 共识的达成没有付出任何代价,共识的可靠性就可能存疑,人性博弈过程中的混 乱一定会暴露出来。
    POS 的升级模式 DPOS 共识机制的共识过程类似于精英代议制,是一种常 设特权的治理架构,容易产生腐化。卢梭对代议制的描述是:“民意一旦被代表, 终究会被扭曲”。DPOS 共识机制是为了效率而生的,它更加适用于对性能要求 极高的相对封闭的商业系统。
    而对于 BFT 共识机制,由于节点扩展性的缺陷,其共识节点的选择过程一 样是封闭或者需要验证的,因而也更加适用于相对封闭的应用环境。
    信任的产生是需要付出代价的,POW 共识机制所消耗的能量,不仅不是缺 陷,反而是信任产生过程中最有效的平衡机制。

    (3) POW 共识在新一代公链中的大规模应用

    就现实可执行性角度而言,BitMEX 的研究报告7指出,POW 共识机制解决 了区块链分叉的选择、数字货币分发、谁产生区块、什么时间产生区块这四个问 题,而改进的 POS 共识机制只是解决了区块链分叉的选择问题,其他三个问题 都是开放的,需要更好的解决路径。
    包括 Bytom、Aeternity、Aelf、Zilliqa 在内的新一代公链都包含了 POW 共识机制,第二代公链以太坊第三阶段的 Metropolis 也仍是 POS 和 POW 的 混合体。
公链项目
共识机制
Bytom
POW : 人工智能 ASIC 芯片友好型 POW 共识机制。
Aeternity
POW+POS : POW 机制生产区块,重大决策由 POS 机制完成,赋予代币持有者权利。
Aelf
POW+POS : 主链采用 POS 共识机制,侧链采用 POW 共识机制。 POS 共识机制的管理成本很高,因而适用于主链,侧链采用 POW 共识机制可安全、自主运行。
Zilliqa
POW+PBFT : 利用 POW 共识机制的安全性对节点进行验证,验证过的节点交于 PBFT 共识机制决策。
Ethereum 第三阶段 Metropolis
POW+POS : POW 共识机制生产区块,只是在每 100 个区块处利用 POS 人为的设置检查点,赋予最终性。
    上表所列的公链共识机制选择告诉我们,尽管许多公链有自己独特的设计哲 学,但出于安全性考虑,它们依然绕不开 POW 共识机制的保护。对于开放的、 自治度高的公链环境,POW 共识机制有更好的适用性;而 POS 共识过程的管 理成本很高,在算法更改、分叉选择等重大决策过程中,POS 共识机制才有其 使用价值,但这已经是一种相对中心化的决策机制。

     (4) Bytom 的 POW 共识算法

    虽然 POW 共识机制的能源消耗是一种有效的平衡机制,但是 POW 算法的 ASIC 芯片在淘汰之后的大量硬件浪费问题仍需引起关注。Bytom 采用的人工智 能 ASIC 友好型 POW 算法能够减少资源和设备浪费,提升去中心化水平,为 POW 共识机制的进化提供了一个极具建设性的方案。
    Bytom 在 POW 共识机制中引入了 Tensority 算法,是区块链挖矿和人工 智能的桥梁。Tensority 算法包含的矩阵乘法是人工智能中最通用的算法,几乎 所有人工智能设备都能友好地兼容这种算法。同时,Tensority 算法选取的数据 类型是 int8,是一种在插电型 AI 设备通用的数据类型。Tensority 算法的这些 设计可以让智能摄像头、正在充电的 AI 手机等通用型人工智能设备都能参与比 原币挖矿。Tensority 算法可能带来以下的一些场景:
    ◼  区块链共识所需的计算也可以应用于 AI 硬件加速服务,这将产生更大 的社会效益。
    ◼  人工智能友好型挖矿将扩大市场对人工智能 ASIC 芯片的需求,促进芯 片产业的发展,这与当前 GPU 友好型 PoW 区块链对 GPU 市场的提振 效应如出一辙。
    ◼  降低了矿工部署算力的成本,当矿机被淘汰或者闲置时,仍然可以用于 人工智能的加速服务,避免硬件资源的浪费。
    ◼  更多通用型人工智能设备将参与到区块链挖矿中,这将有助于扩大区块 链的渗透率。

猜你喜欢

转载自blog.csdn.net/itleaks/article/details/80228896