① 一个比特币要挖多久
比特币是一种网络虚拟货币。比特币网络通过“挖矿”来生成新的比特币。所谓“挖矿”实质上是用计算机解决一项复杂的数学问题,来保证比特币网络分布式记账系统的一致性。假设挖矿计算能力为100Mhash/s,每天总计算力为4000Ghash/s,那么每24小时可以挖出3600个比特币。
中国的算力已经占到了全世界的75%以上,也就是说全世界有75%的比特币都是made in China。 那么一个比特币要挖多久?
曾经的比特币非常好“挖”,普通电脑CPU就能完成,只需下载软件就可以自动“解题”。但是随着币价上涨,想要“解题”的人越来越多,挖矿的难度也越来越大。现在挖一个比特币需要消耗的计算量普通人根本无力承担,普通电脑就别想了。
业内人士表示,在2014年,每天50万元电费产出100个比特币,仅电费成本每枚就要5000元。但是到了现在,同样的成本已经翻了一倍以上,每枚比特币电费成本高达万元。
在比特币的产生机制里,挖矿奖励是递减的。比特币诞生之初,每记一页账本,矿工就能拿到50个比特币,后来记一页奖励25个,依次递减。就像挖金子一样,一开始挖得多,后来越来越少。每次新增奖励减少一半的时间点,就叫做比特币产量减半。
假设挖矿计算能力为100Mhash/s,在2014年每天总计算力为4000Ghash/s,每24小时挖出3600个比特币。
现在,我们可以这样来理解挖比特币的难度,相当于1亿个骰子扔出小于1亿零50的数字,谁先扔出来,谁就获得记账权。此时,1亿零50就是个哈希值,扔骰子的过程叫做哈希碰撞,而挖矿算力的单位就是每秒钟多少次哈希碰撞。
目前比特币全网算力达到236万万亿次哈希碰撞每秒,相当于20多万个50米长的标准游泳池里面水滴的数目。但即便是这么大的算力,也需要10分钟左右才能碰撞到一个符合要求的哈希值。
2012年比特币进行了第一次产量减半,2016年7月,比特币进行了第二次产量减半,目前记一页账本获得的奖励是12.5个比特币。下一次减半会发生在2020年左右,而到2040年比特币总数不会再增加,总量是2100万枚。
相关视频:一个比特币要挖多久
② 比特币挖矿的难度和算力
难度是对挖矿困难程度的度量,即指:计算符合给定目标的一个HASH值的困难程度。
difficulty = difficulty_1_target / current_target
difficulty_1_target 的长度为256bit, 前32位为0, 后面全部为1 ,一般显示为HASH值:, 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 分钟调整一次),有明显的滞后性。你认为是哪种调整方式更合理呢?为什么呢?欢迎在留言区分享你的观点。
④ 比特币越挖越多怎么办
比特币越挖越多会导致挖矿难度变得更大。
随着比特币越挖越多,剩余的数量将会越来越少,这就意味着继续挖矿的难度增大,挖一枚币的耗能与之前相比可能要翻好多倍。
比特币在开采完之前没有出现重大协议更改,矿工将只能获得交易费作为奖励。