区块链混合共识小结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kesalin/article/details/83993343

区块链混合共识小结

目前市面上常见的混合共识大体有两类:POW + POS 以及 BFT + POW。

POW + POS 又分为三种情况:

  1. POW 与 POS 竞争出块:UBTC
  2. POW 确定 Leader,Leader 负责出块: Bitcoin-NG 为代表,包括 Credo、Hcash
  3. POW 打包出块,POS 最终化:以 Decred 为代表,包括 Casper、Espers

共识简介

POW:即工作量证明机制。节点地位完全平等,竞争记账能力随节点计算能力提升而增强。
POS:权益证明机制。节点地位完全平等,竞争记账能力随节点持有代币数量和时间的增长而增强。
DPOS:委托权益证明。持币者投票选举产生超级节点,由超级节点完成记账。
PBFT:准入节点制度。所有新加入记账的节点,必须由其他节点进行投票准入。
DBFT:委托准入节点制度。节点们委托特定节点投票决定新节点是否被允许参与记账。

PoW 存在很多优点,包括稳定性好、具有较强的容错性、拥有不错的激励机制、支持用户动态加入与退出等,与此同时,由于PoW存在诸如资源浪费、算力集中、吞吐量低、出块时间不固定、51%攻击、分叉解决慢等诸多为人诟病的问题。

因此对于比特币协议的一个常见扩展是修改其共识机制,比如使用PoS(股权证明)而不是算力来实现共识。然而,纯 PoS 共识机制也存在不少问题,例如:无利害关系(nothing at stake)、远距离攻击、卡特尔集团等等。

UBTC 比特联储

市值排行:第468名
共识机制:POS + POW
官方网站:http://www.ub.com/
github:https://github.com/UnitedBitcoin/UnitedBitcoin

POW 和 POS 竞争出块,持币量大者挖矿谜题难度低。平均50%的区块将由PoS挖出,50%将由PoW挖出。POW、POS的出块时间间隔为1分钟,区块奖励保持1个UBTC。

UBTC奖励的锁定期为7200个区块,在UTXO确认数达到4800时,该UTXO才可以被用来做POS挖矿。POS挖矿的权重和UBTC金额关联,因此用户钱包中确认数大于等于4,800的UTXO越多,UBTC金额越大,越容易出块。

Bitcoin-NG

论文链接:nsdi16-paper-eyal.pdf
共识机制:POW + POS

通过 keyBlock 和 microBlock 的双层链结构来提高交易的吞吐量。keyblock 用于选出 leader,microblock 用于记录账本。

keyblock 的块头与比特币的块头类似,只不过包含 leader 的公钥,用于之后的 microblock。 keyblock 的出块间隔为 10 分钟。

当一个节点被选定为 leader,该节点就可以较快的速度产生 microblock,10 秒钟一个 microblock。microblock 打包交易,并用 leader 的私钥签名,

系统的安全性和健壮性建立在 keyblock 的 PoW 机制上,而系统的交易吞吐量则通过 microBlock 的频繁发布得以显著提高。

安全隐患:

一是不能有效阻止自私挖矿;
二是当某个矿工创建 keyBlock 之后,他可以在短时间内发布大量的 microBlock,从而引发系统大量分叉并最终对共识机制的收敛性造成很大影响,同时也大大加重了系统的通信负荷;

Credo

市值排行:第1095名
共识机制:POW + POS
官方网站:https://bitbounce.com/

基本上是 Bitcoin-NG 的实现,只是修改了出块时间间隔。
较高吞吐量:600 tps,100倍于比特币的
较短交易确认时间:大多数情况下为 10 ~ 20秒。

网络周期性地选择单个 Leader 节点来出块。区块链由两种类型的块组成:慢速的 leader blocks,用于确定当前领导者,以及快速的 microblocks,用于携带交易数据。领导者一经选定,就不断地把收到的交易打包到微块中,并广播到网络上。为防止伪造,领导者需用其私钥对其生成的每个微块进行签名。所有其他节点都可以验证这些签名,以验证这些块是否由有效的领导者发布。

动态调整领导者块的PoW难度,以确保网络平均每5分钟生成一次领导者块。微块平均每10秒产生一次。微块也需要PoW计算。领导者可自由选择任意级别的PoW难度,但一旦选择,同样的难度必须适用于该轮中产生的所有微块。

普通账户通过其持有的权益“stake”来提名自己进行代表选举“vote”。抽签并不是秘密,用于随机选择的种子是从前一个领导者块的散列中导出的。因此,一旦产生了领导者块,一组有资格对下一个领导者块进行投票的代表集就确定了。有资格在特定轮次中投票的代表人数限制在1,000人。

Decred

市值排行:第168名
共识机制:POW + POS + DAO
官方网站:https://www.decred.org/
github:https://github.com/decred/dcrd

Fork 自 btcd:go 语言的 Bitcoin 实现。

POW打包记账 + POS投票治理
PoW矿工挖矿产生区块,PoS矿工投票决定区块的合法性,确保在社区意见的情况下主导交易流或对Decred进行更改,实现区块链治理。

PoW 大约5分钟一个块。
PoS来投票决定挖出的区块是否有效,每个区块只需要随机选5张选票进行投票,在至少3张选票通过的情况下区块才被承认有效,可以加到主链上。成功验证区块后得到的奖励为30枚新DCR币,它们将会被分成,60%归PoW矿工,30%归PoS选票持有人,剩下10%预留给参与软件开发的程序员。

PoS的具体机制是由持有DCR的权益人锁定一定数量的DCR购买选票,选票有过期时间,如果过期了还未被选中去投票的话,会全部返回之前购票的货币。购票之后需要等待被矿工挖掘,每个挖出的区块会包含最多20张新鲜选票,这些选票需要等到256个新区块产生后才能成熟,即拥有被选择行使投票权的效力。为了激励矿工把新鲜选票包含在挖出的区块中,会有一个额外的购票费,留给矿工作为奖励。成熟之后如果你的选票顺利被选中去投票,系统会返回购票的货币并加上奖励。每个区块需要随机选5张成熟选票进行投票验证区块的有效性。票价每144个区块(大约12小时)调整一次,目的是将整个选票池控制在40960张。

DAO 自制共识:

步骤1:满足更新的阈值
POW的矿工:至少95%的节点最新的1000个区块都为更新的协议
POS的矿工:至少75%以上的节点需要在2016个区块时间中投票赞成新的协议更新。
步骤2: 投票。
投票将在8064个区块链时间内发生。如果75%的区块表示同意更新,那么更新将会生效。 还没有更新的协议将被允许在一个区块链时间内更新,如果没有更新那么旧的结点将会被主网络舍弃。

Espers

市值排行:第458名
共识机制:POW + POS
官方网站:https://espers.io/
github:https://github.com/cryptocoderz/espers

借鉴自 Decred。

HCash 红烧肉

市值排行:第72名
共识机制:POW + POS
官方网站:https://h.cash/
github:https://github.com/HcashOrg

HC主链借鉴了 Decred 和 Bitcoin-NG 的优点,将Bitcoin-NG中的keyBlock/microBlock双层链结构引入PoW中。

POS投票 keyBlock:为解决自私挖矿问题,引入了Decred中的购票交易以及对区块的投票交易机制,由POW挖出的 keyBlock 必须获得足够的赞同票才会被视为合法。
POW两级挖矿:将PoW的难度划分成两级,矿工解决较高难度的哈希难题即可发布keyBlock,而解决较低难度的哈希难题则发布microBlock。

这样就避免了microBlock的发布受某个矿工的任意操纵,因此PoW矿工和PoS矿工都能参与系统共识并发挥重要作用。

HCash 还设计了双链双币机制,将提高吞吐量的解决方案放到了另一条主链 HyperExchange 上去完成,从而保证HC主链可以在一种更安全、更自治的环境中去专注于底层链技术的研发和迭代。

HCash 主链项目的发展经历了三个阶段:

第一阶段 HShare(C++):Fork 自 Espers,后者 Fork 自比特币,github:https://github.com/HcashOrg/Hshare
第二阶段 HCach(C++):借鉴了石墨烯代码,github:https://github.com/HcashOrg/Hcash
第三阶段 hcd(go):Fork 自 Decred 和 btcd,github:https://github.com/HcashOrg/hcd

TrueChain

市值排行:第26名
共识机制:PBFT + POW
官方网站:https://www.truechain.pro/
github:https://github.com/truechain

一条快链,一条慢链。快链是交易块,处理交易,里面记录的是很多交易。交易打包成区块后经过拜占庭委员会(PBFT)的共识即被确认。慢链是水果块,上链数据,里面记录的是很多水果,水果依次递增,每个水果映射一个交易块。慢链区块包含快链区块的内容,通过挖矿完成慢链区块的打包。

PBFT主要解决交易效率问题,委员会由41个节点组成,当交易网络的交易提交到委员会网络以后,交易能够得到快速的确认。
POW主要解决去中心化问题,每个水果和每个快区块一一对应,而每个水果又会被 POW 再次打包出块,如果想要篡改交易,首先要篡改 POW 里面的水果,就必须控制51%的算力。

以 PoW 为基础,选举产生 PBFT 节点的混合共识机制设计可以保证 PBFT 节点出现问题时及时进行重新选举,并对PBFT节点进行实时监督。PoW 协议选择 BFT 委员会成员的依据是csize(挖出的区块数量)和节点权益的结合。这就提供了一种必要的准入系统,以处理动态的成员以及在许可的环境下切换委员会。

委员会的成员是从慢链的水果中的矿工中选举出来。换届有两种方式:一种固定时间的强制换届(即这里的选举),一种由不当行为触发的特定的换届。

Casper

共识机制:POW + POS

该机制下的每次出块依然还是采用 POW 挖矿机制,但每 100 个区块会增加一个 POS 检查点(checkpoint),通过验证人(validator)来评估区块的最终有效性。创世区块是一个检查点,区块高度为 100 的倍数的区块也是检查点,将这些检查点连起来就组成了一条检查点链(checkpoint chain)。检查点一般会有两种状态:justified 和 finalized,finalized 则表示已经确定为最终有效的,该状态的检查点至少已经存在一个子检查点,justified 则表示该检查点是已经被证明合理的,finalized 的检查点一定是 justified 的,但反过来则不一定。而一个检查点是否有效,是通过多个验证人投票得出的结果。

首先,要成为验证人,是需要投入保证金的,即抵押一定量的以太币作为权益证明,才有资格成为验证人。投入保证金是通过广播一条 deposit 消息进行操作的,只要这条消息是有效的并被打包进区块中,那就能加入验证人集合(validator set),成为其中一个验证人。另外,如果要退出验证人集合,则可以再广播一条 withdraw 消息。不过,需要注意,一旦退出后,该验证人的公钥将被永久禁止再次加入验证人集合。

接着,成为验证人之后,就可以开始投票选举检查点了,通过广播一条 vote 消息到网络中。vote 消息主要包含五个信息:两个检查点 s 和 t,以及这两个检查点的高度 h(s) 和 h(t),以及验证人的公钥 ν。要求 s 必须是 t 的祖先,一般来说,t 就是最新的检查点,而 s 是上一个已经确定为最终有效的检查点。另外,还要求验证人的公钥 v 必须在验证人集合中找得到,否则都认为该投票是无效的。当超过 2/3 的验证人(实际上是 2/3 的总保证金)都投给了 (s, t) 这对检查点时,那 s 就是 finalized 的,t 则是 justified 的。而且,那些投注了 (s, t) 的验证人还会得到货币奖励,得到的奖励是和抵押的保证金成比例的,就是说抵押的保证金越多,得到的奖励越多。这个奖励也可以理解为抵押保证金的利息。

DASH

市值排行:第14名
共识机制:PoSe(proof-of-service) + POW
官方网站:https://www.dash.org
github:https://github.com/dashpay/dash

在比特币基础上发展起来的一种代币。达世币网络是由工作量证明挖矿(比特币所使用的共识机制)机制来负责保护的,并且它使用的是基于11种不同哈希函数的X11算法。其主节点是一种服务证明(proof-of-service)层,这些节点同时作为交易混频器和助推器,此外它也作为达世币管理系统的投票机制。

将stake证明与工作证明集成在一起来产生主节点。为了成为一个主节点,一个人必须拥有1000 DASH。一旦满足了这个要求,就可以通过传统的工作量证明方法来挖掘区块链。

本体

市值排行:第27名
共识机制:VRF + BFT = vBFT
官方网站:https://ont.io
github:https://github.com/ontio/

Ontology共识网络是由Ontology共识管理合约构建的,共识管理合约永久性在Ontology网络中运行,且定期更新共识网络中节点列表,更新共识网络中VBFT算法的配置参数。在发生网络风险时,共识管理合约也支持通过基于Stake的投票,强制更新共识网络中的节点列表。

在VBFT算法参数中,一个重要的参数为共识网络节点的PoS表。VBFT运行过程中,所有节点根据当前的共识PoS表,随机选择每一轮参与共识的节点,由随机选择的节点完成对应轮的共识工作。

VBFT算法可以认为是传统BFT算法在可验证随机方向的一个改进。在VBFT算法中,首先基于VRF在共识网络中依次选择出一轮共识的备选区块提案节点集、区块验证节点集和区块确认节点集,然后由选出的节点集完成共识。

由于VRF引入的随机性,每轮区块的备选提案节点/验证节点/确认节点都不相同,而且难以预测,从而极大提高共识算法的抗攻击性。

VBFT算法可以概述如下:VBFT的每轮共识中,

  1. 根据VRF从共识网络中选择备选提案节点,各个备选节点将独立提出备选区块;
  2. 根据VRF从共识网络中选择多个验证节点,每个验证节点将从网络中收集备选的区块,进行验证,然后对最高优先级的备选区块进行投票;
  3. 根据VRF从共识网络中选择多个确认节点,对上述验证节点的投票结果进行统计验证,并确定出最终的共识结果。
  4. 所有节点都将接收确认节点的共识结果,并在一轮共识确认后开启新的共识。

NEO

市值排行:第13名
共识机制:dBFT
官方网站:https://neo.org/
github:https://github.com/neo-project

NEO实现了一种委托的拜占庭容错共识算法,它借鉴了一些 PoS 的特点(NEO持有人需要对共识节点进行投票)利用最小的资源来保障网络免受拜占庭故障的影响,同时也弥补了 PoS 的一些问题。

全网中的NEO节点分为两类节点:

共识记点,负责和其他共识记点之间进行共识通讯,产生新的区块;共识节点由全网用户通过投票产生。
普通节点,不参与共识,但能够验证和接受新的区块。

参与记账的是共识节点,普通节点可以看到共识过程,并同步账本信息,但不参与记账。总共n个超级节点分为一个议长和n-1个议员,议长会轮流当选。每次记账时,先有议长发起区块提案(拟记账的区块内容),一旦有至少(2n+1)/3个记账节点(议长加议员)同意了这个提案,那么这个提案就成为最终发布的区块,并且该区块是不可逆的,所有里面的交易都是百分之百确认的。

猜你喜欢

转载自blog.csdn.net/kesalin/article/details/83993343