比特币区块链的区块具有一个大小限制——1MB。工作量证明的难度是被校准过的,这样每10分钟可以创建1个区块。矿工希望每一个区块包含的交易数量最大化,因为矿工可以收取交易费。从逻辑上讲,随着比特币的不断普及,平均区块大小越来越接近其极限。
在这种环境下,看到挖掘出很多空块(empty block),这实在令人惊讶。空块即空区块并不是说完全是空的,它里面包含一笔交易:coinbase交易,这笔交易将挖矿奖励分配给矿工(目前为 12.5BTC)。重要的是要知道,空块的挖掘并不比全块(full block)更加容易,更加便宜或者更快。各大矿池的空块比例浮动也很大。例如,BitFury,BitClub Network和Kano CKPool并不挖空块。
为什么会有空块?
当矿池从对手那里接收到一个新区块时,矿池需要执行一些行动:下载全区块,验证区块交易,定义这个新区块。在此期间——尽管时间很短,为了不浪费算力,他们会开始挖掘新区块。只包含coinbase交易,所以前一个区块并不会因重复交易而使他们无效化。
无需验证的挖矿现象(或者SPV挖矿)可以在Kaiko区块链页面查看到,空块的挖掘是紧接着正常区块被挖掘出之后进行的,当内存池远远未空时。
空块数量下降
在过去几个月里,空块的份额已经下降了,虽然所有矿池的计时并不全相同。其背后的理论原因是:挖矿软件获得提升,尤其是Bitcoin Core 0.12, 减少了由一个矿池开采的区块的验证与新非空块挖矿之间的时间。
这些改善包括:
允许预先计算矿工验证区块中所有交易所需要做的一些工作,而不是在创建区块的时候再做。
Relay Network配置改善:一种交易的技术简化优先,帮助矿工决定区块包含哪些交易。
Bitcoin Core GetBlockTemplate改善——个体矿工可以通过这种改善请求区块的组成来优化挖矿。
这是坏事吗?
比特币网络的整个重点在于处理交易。因此,空块经常被批判为‘不良行为’,因为为网络创造的价值非常小,并且加速通货紧缩和从‘诚实’矿工那里窃取劳动果实。
然而,这也可以被当作是为了平衡比特币网络的中心化趋势:赢得一个区块的矿池可以立即开始下一个区块的挖掘工作,因为他们已经知道哪些交易被包含在 区块中。而其他矿工首先要下载的交易,然后生成一个不包含这些交易的新区块。只挖掘块头(block header)可以被认为限制了中心化的好处。
从技术上讲,这很容易阻止,例如通过包含一种连接在块头中的所有以前的交易的coinbase哈希。近期空块数量下降表明这一问题可以通过改进协议来解决,因为这些改进降低了空块吸引力。另外,区块奖励的逐渐减少和对交易费的依赖增加都可能会让挖掘空块的利润越来越小。
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。