比特币挖矿计算

我们了解了难度值的概念,现在来看看挖矿计算具体是怎样一个过 程。首先,我们说了挖矿是要抢夺区块打包权,那就得收集需要打包进 区块的那些交易事务,那这些数据从哪来呢?这里有个概念需要大家注 意,打包就像是记账,是把发生的交易事务记录下来存档,但是无论什 么时候打包、谁打包,在网络中发生的交易是持续不断的,就像企业仓 库的进销存业务,无论记账员是一个月还是半个月记一次账,业务是持 续进行的。在比特币系统中,每个人都会将通过钱包进行的转账交易数 据广播到网络中,这些都是属于等待打包的未确认交易数据。这些数据 都会放在一个内存池中,总之就是一个缓冲区,当然,这些数据都会被 接受基本的验证,用以判断是否是不合法的或者是不符合格式的交易数 据。

挖矿程序从内存池中获取用来打包区块的交易数据,接下来就要干 活啦,我们来看一下挖矿的计算公式:

SHA256(

SHA256(version + prev_hash + merkle_root + ntime + nbits + nonce ) )< TARGET

SHA256是一种哈希算法,可以通过对一段数据进行计算后输出一 个长度为256位的摘要信息。SHA256在比特币中使用很广泛,不但用于 挖矿计算,也用于计算区块的哈希值和交易事务的哈希值,比特币对 SHA256算法是情有独钟啊,我们看到在这个公式中,是对参数进行两 次SHA256计算,如果计算出来的值小于那个TARGET (也就是难度目 标值),那就算是挖矿成功了。那么,这些参数都是由哪些组成的呢? 

这些数据字段其实也是区块头的组成部分,将这些参数连接起来, 参与SHA256的挖矿计算。在这些参数中,版本号是固定的值,前一个 区块的哈希值也是固定的值,当前难度也是一个固定的值,那么要想改 变这个公式的计算结果,能改动的参数就只有梅克尔根、区块时间戳和 那个随机数了。

比特币挖矿计算

1.梅克尔根是通过交易事务计算出来的,挖矿程序从内存池中获 取待打包的交易事务,然后计算出梅克尔根,获取交易事务本身也是有 一些优先级规则的,比如根据手续费大小之类,这些细节就不赘述了。

2.区块时间戳是指UNIX时间戳,用于记录区块的产生时间,我们 知道比特币系统是分布式的网络,没有固定的时间服务器,因此每个节 点获得的时间戳都可能是不一样的,由此,比特币系统中设置了规则:

①新产生区块的时间戳要大于之前11个区块的平均时间戳;②不超过当 前网络时间2个小时。所以,后一个区块的时间戳比前一个区块的时间 戳反而小也是可能的。

3.随机数是一个可自由取值的数值,取值范围是0-2的32次方。

我们可以看到,要通过这样的参数来计算出符合条件的值,基本上 也就只能靠暴力计算匹配了,这种不断执行SHA256计算的过程很消耗 算力,因此这个过程被形象地称为“挖矿”。简单地说,挖矿就是重复计 算区块头的哈希值,不断修改该参数,直到与难度目标值匹配的一个过程。

一旦匹配成功,就可以广播一个新的区块,其他客户端会验证接收 到的新区块是否合法,如果验证通过,就会写入到自己的区块链账本数 据中。那么,挖矿的奖励在哪儿呢,不是说矿工成功出一个区块就能得 到比特币作为奖励的吗?那么这里奖励在哪呢?这个奖励其实是作为一 条交易事务包含在区块的交易事务中的,相当于系统给矿工转账了一笔 比特币,这种交易事务由于特殊性,通常称为coinbase交易,这个交易 一般是位于区块中的第一条,比特币系统也正是通过这种挖矿奖励的方 式发行新的比特币,就像央行发行新钞一样。

这个奖励不是无限的,从2009年1月创建出第一个区块,每个区块 奖励50个比特币,然后每21万个区块(大约4年)产量减半,到2012年 11月减半为每个区块奖励25个比特币,然后在2016年7月减半为每个新 区块奖励12.5个比特币。基于这个公式,比特币挖矿奖励逐步减少,直

1-1PP1110413494.jpg

到2140年,所有的比特币(20999999.98)将全部发行完毕,到那个时

候挖矿就只能收入一些交易手续费了。彼时,比特币网络是否还能保持 运行,我们目前也只能持保留意见了。矿工在没有明显的激励情况下, 是否还愿意通过挖矿承担区块打包的责任,现在也很难说。

比特币中的挖矿计算基本就是这个过程了,其实还是很简单的,本 质上就是利用了SHA256计算,有朋友可能有疑问,那第一个区块也就 是创世区块是怎么挖出来的?很简单,创世区块是硬编码直接写进去 的,在比特币的源码中,通过CreateGenesisBlock这个方法写入,并且还 留下了 一句话:The Times03/Jan/2009Chancellor on brink of second bailout for banks。当时正是英国的财政大臣达林被迫考虑第二次出手缓 解银行危机的时刻,这句话是泰晤士报当天的头版文章标题。

玖壹区块链声明

加微信:469649885区块链培训教程
还可免费获取区块链培训班试学名额

分享:

扫一扫在手机阅读、分享本文

区块链评论

玖壹区块链培训

玖壹区块链培训学院简称(玖壹学院http://www.91xiubbs.com/)提供区块链技术培训资料、区块链开发培训视频教程等下载,不过网上自学区块链技术课程必然存在一些缺陷:遇到问题易卡壳、学习周期漫长、无针对性等。区块链培训机构现场面对面的讲授区块链培训课程可以让您和团队在最短时间内掌握正确、系统、高效的区块链实战技术。