快捷搜索:  as

比特币中本聪共识的特点优势介绍

导读

本文是Rebase社区的Harry在《全名挖矿月》Nervos专场活动上做的分享。

比特币共识也称为中本聪共识(Nakamoto Consensus),经历了10年的运行证清楚明了它的安然性和浩繁优点,不过中本聪共识也由于它的吞吐量不高不停饱受诟病。CKB共识是中本聪共识的改进版,经由过程三大年夜立异,在不当协安然性的条件下,实现了吞吐量的提升,并办理了自私挖矿的问题。

中本聪共识的优点

1.安然性高

中本聪共识经历了很多的进击,仍旧稳定运行了十年。而且,今朝没有任何一个事情量证实机制整体逾越中本聪共识。其它的协议要么有很强的安然假设,要么会引入新的进击。

•安然假设: 比如应用PoS的Algorand要求持有Token的人时候维持在线来接管消息。

•新的进击: PoS的Nothing-at-stake Attack,Long-range Attack,这些进击在PoW中是不存在的。

2.带宽使用好

在带宽使用方面,我们可以用一个简单的模型来衡量共识协议的吞吐量。

最左侧蓝色的部分是用来同步终极确认买卖营业的带宽比例,这部分是真正的TPS;中心血色部分是被共识协议“挥霍”的带宽比例;最右侧白色部分是未被使用的带宽。

在带宽必然的环境下,想要前进 TPS,能够做的只有两件事:

1)低落共识协议“挥霍”的带宽比例

2)低落未被使用部分的带宽比例

为了加快区块的传播,中本聪共识应用了Compact block relay,Compact block中包孕:

•80字节的区块头

•短买卖营业id

•猜测的发送方有而接管方没有的买卖营业

终极1MB的区块只必要广播13KB的区块消息,节约传输的每一个字节。在这一点上,中本聪共识已经做得异常好了,没有被共识协议挥霍什么带宽。

其它很多协议,它们将贵重的带宽资本挥霍在成员间的通讯上,比如Algorand用一个大年夜小为300KB的区块证书来向用户证实一个区块被提交。

3.通用性好

中本聪共识可以确保在区块天生时就能确定全局买卖营业顺序,这是和智能合约的编程模型相兼容的。而很多其他拓扑布局的替代协议要么放弃全局买卖营业顺序,要么必要颠末很长的光阴才能确认,这极大年夜地限定了其效率上的提升或者功能上的富厚。

中本聪共识哪些地方可以改良

1.带宽使用不够

在比特币隔离见证(Segwit)之后每个区块对应的数据增添到了4MB(1MB区块+3MB隔离见证数据);比特币的IPv4 节点带宽中位数在 2016 年时是33Mbit/s,在 2017 年 2 月,这个数字达到56Mbit/s,是2016年的1.7倍。带宽增添了,而比特币收集的吞吐量却没有增添。

我们可以想到,假如能够根据带宽状况来动态调节吐吞量就好了。

2.勉励问题

中本聪共识中,自私挖矿是有利可图的,自私挖矿会增添孤块率,使得正常的出块数量削减。鄙人一个难度调剂周期,协议会觉得挖矿难度太高,会低落挖矿难度,结果会使自私挖矿一方在单位光阴内挖到的币增添,从而得到比正常挖矿更多的收益。

我们可以想到,假如可以避免自私挖矿就好了。

更好的中本聪共识——CKB共识

为了办理中本聪共识碰到的问题,CKB共识带来了三个立异:

•两步买卖营业确认: 低落孤块率

•动态调剂区块距离和区块奖励: 更好的使用带宽

•难度调剂斟酌所有区块: 防止自私挖矿

结果带来了几个方面的提升:

•机能提升

•安然提升

•公道性提升

后面我们逐一解读。

两步买卖营业确认

前面提到,在带宽前提必然的环境下,中本聪共识已经对带宽进行了异常好的使用,以是提升中本聪共识的吞吐量只能做两件事:

•更大年夜的区块

•更小的出块光阴

更大年夜的区块导致了在区块广播是必要更多的传输光阴,在这个历程中,其它的矿工就有更大年夜的可能发明一个区块,导致这个区块成为孤块;更小的出块光阴相称于低落了出块难度,让发明区块更轻易,也轻易导致孤块率的增添。当孤块率高到必然程度,上面两个措施都不能让吞吐量继承增添。

而且孤块还会对收集的安然和机能孕育发生很大年夜的影响。

安然方面,如下图,孤块率高会导致进击者可以以远低于51%的算力构造出一条最长的链。

机能方面,孤块会占用带宽资本,影响收集吞吐量。

从上面的阐发,要想突破吞吐量的限定,就必要低落孤块率。

那若何低落孤块率呢?

孤块的呈现是由于区块广播的延迟,而区块广播的延迟主如果由于同步Fresh Transaction(发送方有而接管方没有的买卖营业)。

CKB共识采纳两步买卖营业确认来缓解这个问题。下图是CKB共识中区块的数据布局:

•区块头(header)中放置区块的元信息

•区块确认区(commitment zone)中是确认的买卖营业

•提案区(proposal zone)中会放置买卖营业id,用于n个高度后的区块切实着实认

•叔块头(uncle headers)和叔块提案区(uncles‘ proposal zones)会放置叔块的相关信息

每个矿工只容许打包前面h-m到h-n之间提案区以及叔块提案区的买卖营业。

从上图中可以看到,当前高度为h(Height: h)的区块只能打包从window区域内(h-m到h-n)遴选出的提案区买卖营业,叔块提案区的买卖营业也可以进行打包。这就包管了矿工老是有足够的买卖营业可以打包,从而打消了同步Fresh TransacTIon带来的区块广播的延迟,终极低落孤块率。

而且由于在compact block中已经包孕了所有已确认买卖营业的id,矿工在新区块中不会将这部分买卖营业包孕进来,让矿工可以很轻易的为买卖营业确认做供献,并得得手续费。

动态调剂区块距离和区块奖励

经由过程设定一个固定的孤块率,鄙人一个难度周期(Epoch)动态调剂难度。

假如孤块率低于设定值,阐明收集可以处置惩罚更多的买卖营业,鄙人一个难度周期可以继承低落难度,这个时刻出块光阴将会低落,吞吐量会增添,区块奖励会响应削减。

反过来,假如孤块率高于设定值,阐明收集处置惩罚不了这么多买卖营业,鄙人一个难度周期应该前进难度,会使出块光阴增添,吞吐量会下降,区块奖励也响应增添。

在CKB区块浏览器(https://explorer.nervos.org/)中,我们可以经由过程区块的信息来部分验证上面提到的历程。

从上图中可以看到,一个区块包孕了以下信息:

•Epoch: 0 — 当前的难度周期序号为0

•Epoch Start Number: 0 — 当前Epoch开始的区块高度(block height)为0

•Epoch Length: 1250 — 当前Epoch包孕了1250个区块,也便是区块高度从0到1249

•Difficulty: 37522 — 当前Epoch难度值为37522

•Block Reward: 1000 CKB — 每个区块的奖励为1000 CKB

•Uncle Count: 0 — 叔块数量为0

这些信息在当前Epoch 0中的1250个区块中都是相同的。

鄙人一个Epoch,也便是从区块高度为1250开始,挖矿难度值有必然的变更(如上图):

•Epoch: 1 — 当前的难度周期序号为1

•Epoch Start Number: 1250 — 当前Epoch开始的区块高度(block height)为1250

•Epoch Length: 838 — 当前Epoch包孕了838个区块,也便是区块高度从1250到2088

•Difficulty: 75044 — 当前Epoch难度值为75044

•Block Reward: 1491.64677805 CKB — 每个区块的奖励为1491.64677805 CKB

•Uncle Count: 0 — 叔块数量为0

Epoch 1相对付Epoch 0难度值变大年夜,导致吞吐量(区块数量)削减,区块奖励增添,然则Epoch的奖励总和没有变更:

Epoch 0: 1250 * 1000 CKB = 1,250,000

Epoch 0: 838 * 1491.64677805 CKB = 1,250,000.0000059

经由过程以上的信息可以不雅测到因为孤块率的变更引起的Epoch难度值的调剂。但因为今朝还无法知道全部Epoch的孤块率是若干,以是无法不雅测到孤块率对付Epoch难度调剂的影响的很直不雅的联系。

防止自私挖矿

前面提到,中本聪共识中自私挖矿是有利可图的,钻研发明是由于收集难度的调剂只斟酌区块数量这一个维度。那CKB是若何办理这个问题的呢?

在CKB共识中,下一个Epoch的难度调剂不光是谋略已确认区块的数量,还会将孤块以及叔块斟酌进来,是以进击者不能应用自私挖矿的要领来使得收集低落难度,以是也不能应用同样的算力得到更多的收益,终极自私挖矿在CKB中变得无利可图。

着末

着末再强调一下CKB共识的优点:“CKB共识是中本聪共识的改进版,经由过程三大年夜立异,在不当协安然性的条件下,实现了吞吐量的提升,并办理了自私挖矿的问题“。但CKB共识照样一个新闹事物,必要光阴的验证,我们也会持续的关注CKB共识的最新进展和发明。

您可能还会对下面的文章感兴趣: