找回密码
 立即注册

扫一扫,登录网站

首页 百科 查看内容
  • 6065
  • 0
  • 分享到

POW矿池挖空块原理和解决方案

2018-10-26 09:55

来源: 闪电HSL

POW挖空块的原理


针对上面50W高度和最新高度区块,我们需要进一步详说。在矿池在对最新高度区块链进行挖矿之前,是要对50W高度这个区块进行验证的。如果验证成功,在“50W+1”这个新组装的区块高度上挖矿才是合法的,如果50W高度是一个非法的区块,那所有的矿池是要回到“50W”高度去挖矿的。

但验证区块是需要时间的,因为各个矿池的软硬件不同,我们假定一个平均时间,10秒钟验证1M的区块。在验证结束之前,矿池是无法确认这个区块是不是合法,也就无法确认是否应该添加“50W+1”高度的最新区块。

而组装一个最新高度的区块也是需要时间的,拿到一个区块模板开始组装,往里填写父区块哈希值和在内存池里挑选交易填充进区块体,这都是需要时间,我们假定需要0.1秒。

在验证“50W”高度区块时,和填充交易进“50W+1”区块里,有一个提前,填充的交易是绝对不能和50W高度里已经打包的交易相重的。不然你这个最新高度区块就会是非法的。

而“50W”高度这个区块从挖出到广播到所有的矿池中也是需要时间的,广播区块有分两步。第一步是广播区块头;第二步是广播区块体。区块体非常小,只有80字节,比一笔交易还小,广播特别快,所有矿池可以非常快拿到区块头。有了区块头就可以拿到组装新高度区块的“父哈希值”。区块体是包含所有交易的那部分,一般非常大,比如2500笔交易就接近1M了。btc最大可以接近1M,加外3M的隔离见证区块。而BCH曾经打包出21M的区块体。所有矿池收到区块体就要时间更长了,这叫网络延迟。我们假定网络延迟平时是0.5秒。

矿池挖矿最简单的做法是:一个矿池只要在拿到区块体,才能确认区块体里有哪些交易。而只有验证完整个区块,才能知道这个“50W”高度的区块是否合法。然后再开始组装最新高度区块,然后再挖矿计算小于目标值的哈希值。那在拿到区块体,和验证完整个区块,再加上组装最新高度区块,的时间长度是多少?0.5+10+0.1=10.6秒。

如果一个矿池按上述过程来挖矿,那就在这10.6秒钟的时间内是无法挖矿的,矿机是无效工作时间。而且矿机还是在开机耗电的。

如果一个矿池按下面的过程来工作:拿到区块头,就开始组装一个新的“50W+1”高度的区块,但因为无法确认这个50W高度区块里的交易和是整个区块是否合法,所以这个“50W+1”高度的区块,矿池并不对区块体填充额外的交易,只填充一个Coinbase奖励交易。这个“50W+1”高度的区块,只有区块头,外加一个Coinbase奖励交易——这就是一个空块——然后就直接开始挖矿。这样操作,在全网出现一个新块时,矿也只需要等待拿到区块头和组装空块的时间,就可以开始挖矿。这个时间就非常短了,平时不到0.5秒。这样就比10.6秒,节省了10秒多的时间。

而按上述过程挖矿,矿池在收到完整50W高度区块体和验证完50W高度区块,这个过程是10.6秒。在上述0.5秒到10.6秒的时间里,矿机如果计算出了一个随机数小于目标值,那矿池就成功挖到了一个空块。如果矿机没有计算出小于目标值的随机数,那矿池就会放弃这10.1秒的挖矿时间,然后改成组装一个填充了交易的“50W+1”高度的最新高度区块进行挖矿。

上述就是挖空块的全部逻辑。

版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。
相关新闻
发表评论

请先 注册/登录 后参与评论

    回顶部