请选择 进入手机版 | 继续访问电脑版

Hello~游客

[登录] 或 [注册]
搜索

区块链论坛 - 币云网

发表于 2019-1-31 17:15:33 2218 浏览 0 回复

区块链挖矿原理

矿池在对最新高度区块链进行挖矿之前,是要对“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”高度的最新高度区块进行挖矿。


上述就是挖矿的全部逻辑。


27

主题

27

帖子

115

积分

注册会员

Rank: 2

积分
115
QQ
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表

币云网简介:

币云网专注于区块链论坛社区服务平台

区块链项目快讯,区块链项目讨论交流

目标做最好的区块链社区交流服务平台

希望为推动国内区块链技术尽绵薄之力

联系我们
QQ:305522695
微信:yun305522695
邮箱:biyuns@qq.com
工作时间:周一至周五 09:00 - 21:00
主办方:江西星伊网络技术服务有限公司

|站长统计 |网站地图 |手机版 |小黑屋 |币云网 ( 赣ICP备17006012号-3|

Copyright © 2015-2018 币云网 - 区块链论坛 版权所有

GMT+8, 2019-4-20 22:17 , Processed in 0.033003 second(s), 28 queries Powered by Discuz!