当前位置:首页 > 比特币新闻 > 正文

更大区块门:Bitcoin Unlimited节点如何实现区块链接受“大”区块

来源: 互联网时间:2016-11-29 09:30:00

Bitcoin Unlimited在共识层关注如何保护比特币的货币属性,区块大小不是网络共识的关键,因技术问题,区块大小在不同网络层的接受上可能是一个潜在的问题。本文介绍了Bitcoin Unlimited的更大区块(EB)在单个节点上从逻辑角度分析其如何工作。后续文章将描述这种“节点扩展”行为如何促进在网络使用一种动态的和有机的区块大小来实现扩展。

gate

比特币是货币。 如果你同意这一点,那么你可能也同意,爱丽丝应该不能凭空创造出比特币,鲍勃应该不能花两次相同的比特币,而卡罗尔应该不能自由花属于爱丽丝或鲍勃的比特币。

这些属性—我们都直观地认出好货币必须有的—由比特币网络上的每个节点执行。如Satoshi Nakamoto所述:

1

5. 网络

1) 新的交易向全网进行广播;

2) 每一个节点都将收到的交易信息纳入一个区块中;

3) 每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;

4) 当一个节点找到了一个工作量证明,它就向全网进行广播;

5) 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;

6) 其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。

图1 Satoshi白皮书的摘录。如果一个区块保存了比特币的货币属性,则接受该区块。

这些规则的实施发生在每个节点的共识层中。我们称之为共识层,部分原因是人们对这些规则有着广泛的共识:它们只是使比特币作为货币运作所需的规则。

1-F01PwawjWHlzQY0kG-reKQ

图 2:根据Satoshi白皮书,如果节点中的所有交易都是有效的并且尚未花费,则节点接受该区块,也就是说,接受的条件是区块保留了比特币的货币属性。

图。 2可视化表达了节点扫描新区块中的每个交易的过程。如果所有的交易都是有效的,并且没有被花费,那么货币属性被保留。这个最新的区块成为新的“链的顶端”,代表最新版本的比特币账本。挖矿节点开始寻找一个建立在这个新的链顶端上的新区块。当矿工找到一个这样的区块,就会重复同样的过程,比特币的区块链再次延长。

到现在为止一切还挺好。 每个人都同意并理解规则是什么。

但是如果有一个技术原因,接受一个特定的区块可能是个坏主意(即使该区块仍然保留比特币的货币属性)?记住,比特币网络由通过物理通信连接的计算机硬件组成的通信,因此受物理硬件性能的限制。一个区块可能包含很多的交易,从而可能使矿工担心它永远不会到达中国防火长城另一边的矿工,或者节点操作员可能担心存储它会占用太多的硬盘驱动器的空间或验证节点的处理器需要过多的时间。

Bitcoin Core对这个模糊的问题,即接受什么样的区块可能是一个坏主意,给出一个非黑即白的答案。Bitcoin Core说,如果区块大于1 兆字节,那么它必须被拒绝(其拒绝方式与如果一个包含双花的区块被拒绝相同)。因此这个规则存在于Core的共识层。 如果所有其他节点对这个模糊问题给出相同的非黑即白的答案(图3a),则其工作正常,但是如果网络中足够部分不同意(例如,因为区块是满了)并且认为接受1.5 兆字节的区块的想法也很好(记住1兆字节只是对6年前做一个决定),结果是Core节点开是“分裂网络”(图3b)。Core用户将再也看不到他们的交易被确认(或确认非常缓慢),使用Core的矿工将浪费他们试图扩展错误区块的算力。 这是一个可以避免的负面结果。

3

图3、 因为区块大小限制是Core节点的共识层的一部分,如果网络开始允许大于1兆字节的区块,则Core节点将从比特币网络分裂。

在我们描述Bitcoin Unlimited节点处理同样问题的方式之前,请注意,Core的区块大小规则不像我们考虑的其他两个规则(即那些要求区块中的所有交易必须有效且尚未花费的规则)。这个附加规则不是强制执行比特币的货币属性,而是一个解决比特币网络的物理承受能力的临时性技术限制。 事实上,与在网络周围传输区块有关的技术约束已经进入Core的共识层。

在Bitcoin Unlimited,共识层只关心保持比特币的货币属性。Unlimited节点将非货币属性问题进行模糊化处理,哪些区块可能因为技术原因在共识层之外,然后使用模糊的方式接受:节点先进行猜测,然后如果猜测错误,改变主意!

1-Gl4071aAjjR7Tp91sujteg

图4 Bitcoin Unlimited节点的更大区块(EB)之门示意图。开口的宽度表示节点的区块大小限制。小于此限制的区块立即通过门到达共识层。更大的区块被门挡住。 只有在过多的区块的顶部挖矿挖到了足够数量的附加区块,门才会打开。 需要多少额外的区块来打开门被称为节点的接受深度(AD)。

节点通过使用可以被称为“更大区块门”来完成这样的猜测过程。更大区块门首先检查每个新区块的大小(以及可能使区块由于技术原因(例如,sigops的数量和任何大交易的大小)而不得不接受的其他属性[见下面的注释])。 如果区块大小小于“门”,它直接通过门到达节点的共识层。 然而,如果区块过大,则门就会阻止区块,防止其变成区块链新的顶端。只有在过多区块上方堆叠了足够数量的附加区块时,才会打开该门。多少附加的区块数量由用户设置(见下面的注释)。

如果网络的大部分节点同意所讨论的区块是过大的,则最终一个新的区块将逐渐孤立这个过大的区块(即,因为大多数矿工仍将在前一区块上挖矿),如图5中所示。

1-D7okCc2v_pFqALBMU5tJQA

图5 Bitcoin Unlimited节点的“更大区块门”孤立过大的区块。 因为红色区块的顶部没有延续新区块,门从不会打开,红色区块被孤立。

然而,如果网络节点认为这个红色的区块并不是过大的,则新的区块将建立在这个更大的区块上(即,因为大多数矿工已经移动到这个“更大的”区块上)。一旦区块的堆叠达到由节点的接受深度定义的一定高度,则门就会打开,允许区块通过到共识层并且延长链。(用户可配置节点的接受深度。)与Core节点不同,如果网络作为一个整体开始接受更大的区块,则Unlimited节点将不会导致网络分裂。

6

图6 Bitcoin Unlimited节点的“更大区块门”允许更大的区块。在其上建立了一定数量的区块之后,门就会打开并且区块被接受。这个动画对应于接受深度2(AD=2)。 注意,动画稍有误导:如当前编程的,门将保持打开,直到节点看到行中的144个非过大的区块。

当然,也可能两个链基于—图5和图6的混合物构建。然而,更大区块门工作仍然不变。 一旦一个红色区块上面有足够的区块,门就会打开,作为一个可能的链的顶端,呈现红色区块和在它上面的区块。 如果它比当前链更长,则当前链头将被替换。如果没有当前链长,当前链条顶端将被保留。

因为更大区块的逻辑存在于共识层之外,所以节点以相同的方式处理更大的区块,这一点并不关键。 每个节点运算符可以通过适当地配置其节点的更大区块门来自由地表达他对于使区块“更大”的意见。 通过成千上万的节点运营商和矿工表达他们喜好的累积效应,一个“有交的区块大小限制”自然涌现出现。 这将是我们下一篇文章的主题。

致谢

作者衷心感谢Roger Murdock,Andrea Suisani(sickpig),Andrew Stone(thezerg),HostFat和Andrew Cli ff ord(solex)对本文早期草案的反馈。

版权

此文档及其图像放在公共领域。

.        .        .

注意

是什么导致了更大的区块?

如PR164所定义,除非其包含不超过Qmax兆字节且不超过20,000 * 上限(Qmax)操作系统专业组,区块才会被认为是更大的。 Qmax可在Bicoin Unlimited中配置。 为了与今天的区块链兼容,在区块≤1兆字节内允许任何交易数量大小。 在大小大于1兆字节的区块中,如果区块包含大小≥qmax(默认情况下为100KB)的交易,则区块为更大的。 对交易大小的这种限制解决了二次散列问题,而没有向共识层添加新规则。这些规则与Core的Qmax = 1相同。

更大区块门打开多长时间?

默认情况下,一旦打开,更大区块门不会重置到关闭位置,直到节点看到一行中的144个非更大区块。否则,产生一系列更大的区块,节点将不断地跟踪区块链顶端。

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。