区块链中的共识
共识是一种已在区块链中使用的分布式计算概念,以提供区块链网络上所有对等节点同意单一版本事实的方法。 此概念先前已在本章的分布式系统部分中讨论过。 在本节中,我们将讨论区块链技术语境下的共识。 这里介绍的一些概念仍然与分布式系统理论相关,但它们是从区块链的角度解释的。
粗略地说,以下描述了共识机制的两个主要类别:
- ·基于证据的,领导者选举抽奖,或中本共识,其中领导者随机选出(使用算法)并提出最终价值。 这一类别也被称为完全去中心化或无需许可类的共识机制。 这种类型以PoW机制的形式很好地用于比特币和以太坊区块链。
- ·基于BFT的是一种基于多轮投票的更传统的方法。 这类共识也称为联合体或许可类型的共识机制。
当节点数量有限时,基于BFT的共识机制表现良好,但它们不能很好地扩展。 另一方面,基于领导者选举抽奖(PoW)类型的共识机制可以很好地扩展,但执行速度非常慢。 由于在该领域的重要研究正在进行,新型共识机制也正在出现,例如在Ripple网络中使用的半去中心化型。 Ripple网络将在第16章“可选的区块链”中详细讨论。 还有其它各种提议,它们试图在可扩展性和性能之间找到适当的平衡点。 一些值得注意的项目包括PBFT,Hybrid BFT,BlockDAG,Tezos,Stellar和GHOST。
这里介绍了当前可用的共识算法,或者在区块链的语境中正在研究的共识算法。 以下不是详尽的列表,但它包括所有值得注意的算法。
工作证明(Proof of Work – PoW):这种类型的共识机制依赖于证明在提出网络接受值之前已经花费了足够的计算资源。 此方案用于比特币,莱特币和其他加密货币区块链。 目前,它是唯一一种被证明能够成功抵御区块链网络上的任何共谋攻击的算法,例如女巫攻击。 女巫攻击将在第5章“比特币介绍”中讨论。
赌注证明(Proof of Stake – PoS):该算法的工作原理是节点或用户在系统中拥有足够的赌注; 也就是说,用户已在系统中投入足够的多,以至于该用户的任何恶意尝试都会超过在网络上执行此类攻击的好处。 这个想法最初是由Peercoin引入的,它将用于名为Serenity的以太坊区块链版本。 PoS中的另一个重要概念是货币年龄,这是从总体时间和未花费硬币数量得出的标准。 在这个模型中,提出和签署下一个区块的机会随着货币年龄而增加。
委托的赌注证明(Delegated Proof of Stake – DPoS):这是对标准PoS的创新,其中在系统中有赌注的每个节点可以通过投票将交易验证委托给其他节点。 它用在BitShares区块链中。
经过时间证明(Proof of Elapsed Time – PoET):英特尔于2016年推出,PoET使用可信执行环境(TEE)通过保证等待时间在领导者选举过程中提供随机性和安全性。 它要求Intel Software Guard Extensions(SGX)处理器为其提供安全保障。 在英特尔Sawtooth Lake区块链项目的背景下,第15章Hyperledger将更详细地讨论这一概念。
存款证明(Proof of Deposit – PoD):在这种情况下,希望参与网络的节点必须先存进安全保证金,然后才能开采和提出阻止。 这种机制用于Tendermint区块链。
重要性证明(Proof of Importance – PoI):这个想法与PoS有很大不同。 PoI不仅依赖于用户在系统中拥有多大的赌注,而且还监视用户对令牌的使用和移动,以便建立信任和重要性级别。 它用于NEM币区块链。 有关此货币的更多信息,请访问NEM的网站:https://nem.io。
联邦共识或联合拜占庭共识(Federated consensus or federated Byzantine consensus):该机制用于恒星共识协议。 此协议中的节点保留一组公信任的对等方,并仅传播已由大多数受信任节点验证的那些交易。
基于声誉的机制(Reputation-based mechanisms):顾名思义,领导者是根据其在网络上经时间建立的声誉选出的。 它基于其他成员的投票。
PBFT:此机制实现状态机复制,提供对拜占庭节点的容忍。 包括PBFT,PAXOS,RAFT和联合拜占庭协议(FBA)在内的各种其它协议也被使用或已被提议用于分布式系统和区块链的许多不同实现中。
活跃证明(Proof of Activity – PoA):该方案是PoS和PoW的组合,其确保以伪随机但统一的方式选择赌注保管者。 与PoW相比,这是一种相对更节能的机制。 它采用了一种名为“追随Satoshi”的新概念。 在该方案中,将PoW和PoS组合在一起以实现共识和良好的安全级别。 该方案更节能,因为PoW仅在机制的第一阶段使用,在第一阶段之后切换到PoS,其消耗可忽略的能量。 我们将在第6章比特币网络和支付中进一步讨论这些想法,其中协议在高级比特币协议的背景下进行审查。
容量证明(Proof of Capacity – PoC):该方案使用硬盘空间作为挖掘块的资源,这与使用CPU资源的PoW不同。 在PoC中,硬盘空间用于挖掘,因此也称为硬盘驱动器挖掘。 这个概念最初是在Burstcoin加密货币中引入的。
存储证明(Proof of Storage – PoS):该方案允许存储容量的外包。 该方案基于以下概念:特定数据可能由节点存储,被该节点用作参与共识机制的手段。 已经提出了该方案的几种变体,例如复制证明,数据占有证明,空间证明和时空证明。