52

区块链混合共识小结

 5 years ago
source link: https://blog.csdn.net/kesalin/article/details/83993343?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

区块链混合共识小结

目前市面上常见的混合共识大体有两类: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,从而引发系统大量分叉并最终对共识机制的收敛性造成很大影响,同时也大大加重了系统的通信负荷;

市值排行:第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人。

市值排行:第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%的区块表示同意更新,那么更新将会生效。 还没有更新的协议将被允许在一个区块链时间内更新,如果没有更新那么旧的结点将会被主网络舍弃。

市值排行:第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(挖出的区块数量)和节点权益的结合。这就提供了一种必要的准入系统,以处理动态的成员以及在许可的环境下切换委员会。

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

共识机制: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) 的验证人还会得到货币奖励,得到的奖励是和抵押的保证金成比例的,就是说抵押的保证金越多,得到的奖励越多。这个奖励也可以理解为抵押保证金的利息。

市值排行:第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. 所有节点都将接收确认节点的共识结果,并在一轮共识确认后开启新的共识。

市值排行:第13名

共识机制:dBFT

官方网站: https://neo.org/

github: https://github.com/neo-project

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

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

共识记点,负责和其他共识记点之间进行共识通讯,产生新的区块;共识节点由全网用户通过投票产生。

普通节点,不参与共识,但能够验证和接受新的区块。

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK