.jpg)
一、比特币挖矿的难度和算力
难度是对挖矿困难程度的度量,即指:计算符合给定目标的一个HASH值的困难程度。
difficulty= difficulty_1_target/ current_target
difficulty_1_target的长度为256bit,前32位为0,后面全部为1,一般显示为HASH值:0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, difficulty_1_target表示btc网络最初的目标HASH。 current_target是当前块的目标HASH,先经过压缩然后存储在区块中,区块的HASH值必须小于给定的目标HASH,区块才成立。
例如:如果区块中存储的压缩目标HASH为 0x1b0404cb,那么未经压缩的十六进制HASH为
所以,目标HASH为0x1b0404cb时,难度为:
比特币的挖矿的过程其实是通过随机的hash碰撞,找到一个解 nonce,使得块hash小于目标HASH值。而一个矿机每秒钟能做多少次hash碰撞,就是其“算力”的代表,单位写成 hash/s或者 H/s
算力单位:
比特币系统的难度是动态调整的,每挖 2016个块便会做出一次调整,调整的依据是前面2016个块的出块时间,如果前一个周期平均出块时间小于10分钟,便会加大难度,大于10分钟,则减小难度,目的是为了保证系统稳定的每过 10分钟产出一个块,所以难度调整的时间大概是2周(2016* 10分钟)
全网算力是btc网络中参与竞争挖矿的所有矿机的算力总和。当前难度周期全网算力会影响下一个周期的难度调整,如果全网算力增加,挖矿难度增大,单台矿机固定时间的产出就会减少。目前全网算力大概是24.42EH/s,一台蚂蚁S9矿机的算力大概是14TH/s
那么,已知当前全网算力,下一个周期难度将如何调整呢?
根据公式:
因为出块时间要稳定在10分钟,也就是600s:
那么,在3.46e+12的难度下,一台算力为14TH/s的矿机平均要花多长时间才能出一个块呢?
根据公式:
有:
结果大概是12270天
二、什么是比特币挖矿难度如何调整原理是什么
比特币挖矿难度(Difficulty),是对挖矿困难程度的度量,挖矿难度越大,挖出区块就越困难。目标值(Target)与挖矿难度成反比。难度越高,目标值越小。而难度目标是目标值通过转化得到,是一个只有 4个字节的字段(为了便于理解,本文将难度目标等同目标值处理)。比特币系统正是通过调整区块头中难度目标来控制挖出区块所需平均时间的。
目标值是个长度为 256比特的字符串,换句话说目标值约有 2^256种可能的取值。调整难度目标就是调整目标值在整个输出空间的占比。
举例说明:挖矿就如射击,所有射出去的子弹都会落在一个很大的靶子上。难度目标就是这个大靶子上圈出一个范围,这个范围越小,被射中的难度就越高。调节难度目标,就是调节这个圈在整个靶子上的占比。
挖矿算力增大,单位时间射击的次数就越多,目标范围被射中所需的时间就越短。反之,挖矿算力减小,目标范围被击中所需的时间就越长。而比特币系统追求的平均出块时间为 10分钟,这时候就需要调整难度目标来实现。
02如何调整难度目标?
比特币系统是怎样调整难度目标的呢?在《白话区块链入门 080|数说比特币,了解比特币必须知道这 10个数字》一文中,我们介绍了比特币系统每过 2016区块(大约为 14天时间),会自动调整一次难度目标。所有区块高度为 2016整数倍的区块,系统就会自动调整难度目标。如果上一个难度目标调整周期(也就是之前 2016个区块),平均出块时间大于 10分钟,说明挖矿难度偏高,需要降低挖矿难度,增大难度目标(准确地说是目标值);反之,前一个难度目标调整周期,平均出块时间小于 10分钟,说明挖矿难度偏低,需要缩小难度目标。
03难度目标的可调范围
比特币系统设定,难度目标上调和下调的范围都有 4倍的限制。举例说明:假设上一个难度目标调整周期内的 2016个区块,由于算力暴涨,只用 7天就全部挖出来了,通过难度目标调整,将难度目标缩小一倍,可以将平均出块时间维持在 10分钟左右,但如果算力暴涨,前 2016个区块全部挖出只用了 1天,那么难度目标最小只能调整为原来的四分之一。
04总结
比特币的算力是持续波动的,比特币系统通过难度目标的调整,使得平均出块时间维持在 10分钟左右。难度目标和挖矿难度成反比,挖矿难度越大,难度目标越小。当区块高度为 2016的整数倍时,比特币系统就会在该区块上,自动调整难度目标。如果上一个难度目标调整周期内,平均出块时间超过 10分钟,那么降低挖矿难度,增大难度目标;反之则提高挖矿难度,减小难度目标。难度目标上调和下调的范围都有 4倍的限制。
比特币每 2016个区块(大约 14天)调整一次挖矿难度,相比于 BCH每个区块都调整(大约 10分钟调整一次),有明显的滞后性。你认为是哪种调整方式更合理呢?为什么呢?欢迎在留言区分享你的观点。
三、挖矿到底在计算什么
比特币挖矿到底在计算什么?如何看待比特币挖矿,比特币的挖矿对于不同的矿工而言是一种竞争记账权的合作记账行为,在合作的大框架下有序地竞争。也就是利用电脑硬件计算出比特币的位置并获取的过程称之为挖矿。挖矿既能生产比特币,又能保障交易信息,下面来具体解释挖矿。
比特币在2017年底暴涨至将近20万人民币一枚,不仅火了数字货币行业,更是火爆了区块链行业,正因为如此,很多人想方设法去挖矿,获取比特币来实现自己的财富自己,首先,”比特币“挖矿是怎挖的,比特币是一中虚拟货币,基于区块链技术。如果我们简单地把区块链的区块比作一个个的账本,那么”挖矿“就是“打包”过去十分钟整个区块链网络的交易,把这些交易写入新的区块,那么就“打包”完成,那就是完成了“挖矿”。完成了挖矿之后就获得了系统分发给你的比特币。这就是比特币“挖矿”比较简化的说法,当中的原理和运行还是相当复杂的。
如何分配“打包权”
比特币的价格超过2w元一个,每一次获得“打包权”,完成工作就会获得12.5个比特币(会随时间递减),获利可谓相当丰厚。
天下熙熙皆为利来天下攘攘皆为利往,只要有利润的地方就有人。网络上矿工众多,那么如何确定应该分配给哪个矿工去做这事呢?
比特币的创始人中本聪采用这种方法:采用一种叫“工作证明(Proof Of Work,简称POW)机制,即工作量的证明。
这种方法通常来说只能从结果证明,因为监测工作过程通常是繁琐与低效的。这是用来确认你做过一定量的工作,但是监测工作的整个过程极为低效,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。
我们可以比喻成,要证明您会开车技术好,企业不可能给您几天时间,跟着您在市区上走。但是,你可以提供驾驶证和之前在公交车公司当公交车司机的工作证明,来说明您得能力。你要获得这个能力需要付出大量的时间和精力,但是企业验证却非常简单。
比特币这种加密系统所使用工作量证明机制的证明是哈希现金,需要算出对应的哈希函数。哈希现金是一种工作量证明机制,它是亚当·贝克在1997年发明的,主要用于抵抗邮件的拒绝服务攻击及垃圾邮件网关滥用。在比特币之前,哈希现金被用于垃圾邮件的过滤,也被微软用于hotmail等产品中。
对于比特币这种加密系统所使用的哈希函数,它需要具备以下的性质:
1.免碰撞,即不会出现输入x≠y,但是H(x)=H(y)
2.隐匿性,也就是说,对于一个给定的输出结果H(x),想要逆推出输入x,在计算上是不可能的。
3.不存在比穷举更好的方法,可以使哈希结果H(x)落在特定的范围。
比特币在区块链的生成过程中使用了POW机制,一个符合要求的区块哈希函数由N个前导零构成,零的个数取决于网络的难度值。
要得到合理的区块哈希码需要经过大量尝试计算。当某个节点提供出一个合理的区块哈希值,那就是说明该节点确实经过了大量的尝试计算,那么系统就把”打包权“分配给该节点(矿工)
当然这不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件,所以当节点(矿工)拥有占全网n%的算力时,该节点基本上就是有n/100的概率找到区块哈希。那就是意思上说比拼算力。
当能不能记住前面几个0,然后可以使用呢?不能的,因为难度值不一样, 0的数量就不一样。而且要证明的数是一个哈希码,而且需要验证的工作量证明非常庞大,基本上无法造假。只存在一个方法:穷举!
那么意味着,你不仅要算出你的哈希值,还需要对比对不对,如果不对的话继续算。
所以需要大量的显卡进行大量的并行运算,获取哈希值。让我们来看看,矿场是一个怎么样的存在:
这些矿场都是用很贵的显卡来算,他们的算里是人工的N倍。如果单靠人力,算十年都没有它们工作一小时的工作量大。
比特币和传统货币不同,美元和英镑这种法币由央行和金融机构管理,进行转账交易时这些机构也同时参与,而比特币只在分布式账本中进行交易,每一项交易就储存在比特币的全球网络节点中,不可复制,不可篡改。所以每个储存数据的节点都会有相应的奖励,目前已经开采的节点有1700万个,比特币总量只有2100万个,意味着还有400万个比特币待开采。
四、比特币挖矿难度与收益计算
比特币挖矿难度与收益的计算关系是矿工关注的焦点。随着BCC分叉后,矿工为追求更高收益而频繁迁移,这一现象背后的驱动力在于收益与难度之间的紧密联系。收益的计算基于难度调整,比特币每2016个块周期调整一次难度,难度通过计算目标值的困难程度来体现。
比特币挖矿难度的公式为 diff= diff_1_target/ target,其中 diff_1_target是难度为1时的目标值,是常数,一个很大的数字。比特币的难度计算涉及到 diff_1_target和当前网络目标值(target),通过公式 diff= 0x1d00ffff/ target可以得出具体值。
网络调整难度的目的是保持出块速度平均在每10分钟一个块,每2016个块周期调整一次,以确保周期内平均出块速率与10分钟保持一致。调整难度的时机由周期内剩余区块数量决定,计算公式为该周期剩余区块数量= 2016-(当前区块高度% 2016)。
挖矿收益计算基于计算出的区块哈希值需要小于当前target值,这个值是一个从0到(2^256)-1的范围,需要通过矿机的暴力破解来计算。难度与算力的关系明确:难度越大,需要的算力就越大。以单位为1Th/s的标准算力为例,一天的收益计算如下:
一天能够计算的哈希次数= 1T* 86400
收益= 1T* 86400/ D/( 2* 32)*块收益
基于上述公式,可计算当前挖矿的理论收益,并据此制作BTC和BCC的收益计算器。理解原理后,使用现成的计算器输入算力,即可得知产出的币量及其价值,从而决定挖哪种币更划算。通过汇集历史数据,可以直观观察到难度和收益的变化趋势。
本文来自用户投稿,不代表币大大立场,如若转载,请注明出处:https://czxurui.com/jys/155150.html


发表回复
评论列表(0条)