网赚论坛

标题: 由Bitcoin Unlimited软件在2017年1月29日生产出大小超标的区块的声明 ... [打印本页]

作者: wni13986paq    时间: 2018-1-13 17:33
标题: 由Bitcoin Unlimited软件在2017年1月29日生产出大小超标的区块的声明 ...

闪电HSL


<font style="color:rgb(62, 62, 62)"><font face="&quot"><font style="font-size:18px">
BUIR-2017-01-29:由Bitcoin Unlimited软件在2017年1月29日生产出大小超标的区块的声明

在2017年1月29日,因为Bitcoin Unlimited 1.0.0软件bug导致了Bitcoin.com矿池意外生产出一个大小超过1MB的区块。Bitcoin Unlimited项目积极认真和严肃地对这个问题做出对应解决措施,并且避免将来发生类似的事情。


事情经过

在2016年12月22日,Bitcoin Unlimited代码仓合并了一个改变新区块的coinbase交易占空间大小的代码。这个改变是作为合并请求164[1](pull request 164)的一部分包含在1e085736更新确认(commit 1e085736)。为了支持非常大的区块,这个合并请求植入了BUIP040和增加了额外的特性,以及优化了内存管理[2]。这些变化都包含在了2017年1月27日发面布的Bitcoin Unlimited 1.0.0。

这些变化引入了一个bug,使得节点生成新区块时,如果矿工添加了一个自定义的coinbase交易信息,这个区块的尺寸就可以超过节点指定的最大可生产的区块尺寸大小( Maximum Generate size)。

在2017年1月29日,Bitcoin.com矿池使用Bitcoin Unlimited 1.0.0挖矿,挖到了一个区块,hash为000000000000000000cf208f521de0424677f7a87f2f278a1042f38d159565f5 [3]。由于Bitcoin.com添加了Coinbase交易信息,其软件并没有考虑这个信息导致的区块尺寸增加,导致了这个区块的大小为1,000,023字节。

这个区块因为尺寸太大,会被所有的Bitcoin Core节点和设置了EB参数为1MB的Bitcoin Unlimited节点全部拒绝。所有的矿工,包括Bitcoin.com矿池,都没有在这个超标的区块上进行挖矿,而是在这之前的区块链顶端挖矿。

因为部分Bitcoin Unlimited节点的EB参数设置为了大于1MB的值,这些节点在高度450529接受了这个区块。这些节点中的一部分被Bitcoin Core节点列为了24小时禁止连接,但是所有节点依然和全网保持了良好的连接。






答复

这个超标区块产生后,Bitcoin.com矿池的运营立即联系了Bitcoin Unlimited开发者,请求做问题诊断。他们提供了一个立即解决问题的办法,降低可生产的最大区块大小值(bitcoin-cli setminingmaxblock 999000)。其他使用Bitcoin Unlimited挖矿的矿池也被尽可能快地通知到了这一个情况。

这个bug的正确诊断是在ViaBTC池的帮助下完成的。修复bug的的合并请求259[4](pull request)已经更新确认。

为什么在测试环节没有发现这个漏洞?

在网络中只有运行Bitcoin Unlimited节点在其默认设置情况下才会接受大于1MB的区块。因此在代码QA测试环节中,这个漏洞导致的超标区块没有触发任务错误。在BU的专用测试网络中("nolnet"或"no-limit network")都曾经有集中于测试生产大于1MB区块的环节,所有的大于1MB的区块均没有报警。


接下来的工作

Bitcoin Unlimited项目将吸取这一次错误经验。我们正在采取以下步骤来解决这个问题和改进我们的流程:

<ul>
新增加一个单元测试,测试生产特定大小尺寸的区块。

<div align="left"><font face="宋体"><font style="font-size:12pt">在生成区块(CreateNewBlock)的最后一步,区块在广播前将被检测是否小于1MB。这个检测在>1MB区块情况已经存在,(译者注:指全网接受>1MB区块为合法区块的情况下),但是在




欢迎光临 网赚论坛 (http://www.caifuba.net/) Powered by Discuz! X3.1