挖空块是因为区块的传输需要时间,比如1M区块现在一般需要6秒传完,
那矿池就有1%的概率(6秒/区块间隔600秒),在传输区块N的过程中又挖出了一个块。
这时候矿池就有2个选择:
A、原始方案:在块N传输结束后,才开始在N的基础上挖N+1块,
传输过程中,认为别人还没挖出N块,所以把自己挖出的块,也打包交易,作为N块广播,
当然这样自己的N块大概率被孤立(因为别人已经先于你打包,广播出去了)
B、改进方案:在收到块N的区块头,还没传完区块数据时,就认为别人已经挖出了N块,开始在N的基础上挖N+1块,
但这就有个问题,N块没传完,不知道别人打包了什么交易,如果N+1打包交易,那有可能打包到N块已打包的交易,就冲突了,
所以用这种提早挖N+1块的方法,如果在6秒内挖出了,那就只能打空块。
也就是说,这6秒的块,矿池
要么选择被孤立掉,损失1%产出(方案A)
要么选择不被孤立,打空块(方案B)
空快里包含比特币吗?如果大区块成功了,这些空块里的BTC是不是就可以利用起来了?
包含基础奖励的12.5BTC,但没有打包交易费的奖励(现在约1.5BTC)
矿池每打一个空块,就会损失1.5BTC的打包手续费,所以矿池都在想尽办法,不打空块。