为什么比特币矿池要挖空块
扫描二维码
随时随地手机看文章
比特币挖矿是一个有趣的话题,没有进行调查的话一开始会难以理解。关于挖矿的一个特殊主题是空块,人们经常好奇为什么矿池要挖空块。
重新讨论空块
矿池是比特币矿工的集合,矿工聚集在一起找到并验证约每十分钟产生的区块。大多数的时候,当矿工挖出一个特定区块时,区块是填满待确认交易的。矿工得到12.5BTC的奖励和这个区块的手续费。在早期,区块不是很满,因为比特币不像现在这么受欢迎。最近区块已经满了,并经常达到1MB最大区块大小。
在网络上挖出来的区块不仅有填满交易的区块,还有空区块。空块实际上也有一笔交易,我们称之为coinbase交易,位于每个区块的第一部分。矿池挖空块的主要原因是,他们一直在不停进行运算。人们最大的疑虑是,这些致力于挖空块的矿工导致了这些天的交易拥堵。
不间断的挖矿
挖矿是一项不停进行的挖矿比赛。当矿工通过找到一个区块的时候赢得比赛的时候,他们也准备好要进行下一场比赛,并且几乎是立刻开始再次竞争。
但是,当一个矿池算出一个区块,它必须下载并执行一些功能才能验证包含的交易。与此同时,矿池也收到下一个广播的区块头(连接到一个区块80字节的数据),于是矿池开始致力于下一个区块。不仅是矿工致力于挖矿,他们还清点竞争者挖到的区块。矿工不会停止休息,他们希望可以不断挖到尽可能多的区块。
这有点像是一位赢得Daytona 500 的全国运动汽车竞赛协会车手还希望在Talladega 比赛上获得领先位置。计算机科学教授兼比特币爱好者Jorge Stolfi简单解释了矿工为什么要挖一个空块:
“交易手续费是为了奖励矿工将所有他们能打包的交易打包到他们的候选区块中,”Stolfi解释说,“但是,一个矿工可以在没有拿到N个区块的时候,就开始挖N+1个区块,这是因为他只需要拿到区块N的哈希值,并通过特定的技巧快速得到它。”
“在这种情况下,矿工必须以一个空块N+1开始,即使有些交易正在他的队列中等待打包:因为,不知道区块N内容的情况下,他无法检查这些交易是否有效。如果他是幸运的,他也许能算出这个区块N+1,甚至在他完成下载区块N的内容之前。这就是为什么会有空区块。”
超过87000个空区块
从比特币创立以来,空块非常的常见。例如,从创世块开始一直到第360189个区块,区块链上已经挖出了85295个空块。这意味着从2009年开始到2015年6月——约23.68%的区块是空块。挖一个空块投入的工作量与填满区块达到最大容量投入的工作量没什么不同。从2015年开始,挖空块的数量已经减少,一些矿池表示他们完全不挖空块。到目前为止,只有1笔交易的区块是第87885个区块。
根据Bitfury Analytics的数据显示,Bitfury 矿池选择不挖空块。
矿工选择挖空块的想法在某种程度上是正确的,但是否是坏事又是一个不同的故事。从早期开始,一直存在关于区块的争论。