分布式一致性算法10:区块链共识算法

一、概述
将区块链的共识算法放到这里,其实只是做个简单的补充。
想了解更多内容,可以参考:
区块链资料汇总
区块链白皮书

二、常见区块链共识机制说明
1、PoW: Proof of Work,工作量证明
工作量证明中,所有参与的节点一起计算区块的Hash值,通过调整区块的一个随机数nonce,得到不同的Hash值。
最终第一个计算出前N位为0的Hash值,获得记账资格,并获取区块的奖励。
其余节点可以快速验证Hash结果,从而快速达成一致(算出这个Hash工作量很大,验证工作量很小)。
此类区块链,采用长链高于短链的原则,也就是如果产生了分区,短链必须遵从于长链的结果,达到最终一致性。

如果要攻破PoW,需要在该网络中,破坏者算力超过全网络算力一半,才有可能破坏最终一致性。

但PoW计算量太大,能耗太高,而且达成一致性的速度太慢,吞吐量就很难提高。

2、PoS: Proof of Stack,权益证明
权益证明网络中,所有参与节点都知道彼此节点的权益(比如,每个Token*该Token持有时间,然后求和)
在达成一致性的时候,权益越大(Token越多,持有时间越久)的节点,越容易被选择为记账节点

如果要攻破PoS,就需要较长时间持有大量的Token,增加了攻击者的攻击成本。

但PoS会导致,强者恒强,造成垄断。与区块链区中心化的目标,背道而驰。

3、DPoS: Delegated Proof of Stake,委托式权益证明
在委托式权益证明网络中,每个节点都知道彼此节点的权益(比如,持有的Token数)
想参与记账的节点,被叫做受托节点,受托节点会进行竞选,要求普通节点投票给他
普通节点不参与记账,而是根据自己的利益,投票给自己选中的受托节点,节点权益越高,投票权重越高
最终,获得最多投票的受托节点进行记账

三、部分区块链项目的共识机制

项目名称 链类型 匿名性 共识机制 合约语言
Bitcoin 公链 匿名 PoW 只是使用合约实现了业务逻辑
Ethereum 公链/联盟链 匿名或私有 22年后为PoS Solidity/Serpent/LLL
EOS 公链 匿名 BFT-DPOS CPP/Web Assembly
Fabric 联盟链 共有或认证 PBFT(classic, batch, sieve) Chaincode

Leave a Reply

Your email address will not be published. Required fields are marked *

*