比特币挖矿的难度和算力

作者: 糙米薏仁汤 | 来源:发表于2018-03-27 16:00 被阅读2714次

    难度

    难度是对挖矿困难程度的度量,即指:计算符合给定目标的一个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为

    0x0404cb * 2 ^ (8 * (0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000
    

    所以,目标HASH为0x1b0404cb时, 难度为:

    0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF / 0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.67 pdiff
    

    算力

    比特币的挖矿的过程其实是通过随机的hash碰撞,找到一个解nonce,使得块hash小于目标HASH值。 而一个矿机每秒钟能做多少次hash碰撞, 就是其“算力”的代表, 单位写成 hash/s或者H/s

    算力单位:

    1 KH/s = 1000 H/s  
    1 MH/s = 1000 KH/s  
    1 GH/s = 1000 MH/s  
    1 TH/s = 1000 GH/s  
    1 PH/s = 1000 TH/s
    1 EH/s = 1000 PH/s
    

    难度调整

    比特币系统的难度是动态调整的, 每挖2016个块便会做出一次调整, 调整的依据是前面2016个块的出块时间, 如果前一个周期平均出块时间小于10分钟,便会加大难度, 大于10分钟,则减小难度,目的是为了保证系统稳定的每过10分钟产出一个块,所以难度调整的时间大概是2周(2016 * 10 分钟)

    全网算力

    全网算力是btc网络中参与竞争挖矿的所有矿机的算力总和。当前难度周期全网算力会影响下一个周期的难度调整, 如果全网算力增加,挖矿难度增大,单台矿机固定时间的产出就会减少。目前全网算力大概是24.42EH/s, 一台蚂蚁S9矿机的算力大概是14TH/s

    那么, 已知当前全网算力,下一个周期难度将如何调整呢?

    根据公式:

    难度 * 2^32 / 全网算力 = 出块时间 
    

    因为出块时间要稳定在10分钟, 也就是600s:

    难度 = 600 * 24.42 * 10^18 / 2^32 =  3.46e+12
    

    那么,在3.46e+12的难度下, 一台算力为14TH/s的矿机平均要花多长时间才能出一个块呢?

    根据公式:

    难度 * 2^32 / 算力 = 出块时间
    

    有:

    3.46 * 10^12 * 2^32 / 14 * 10^12 = 1.06e+9 s 
    

    结果大概是12270天

    当前难度和全网算力可以到https://btc.com/stats/diff查询

    相关文章

      网友评论

        本文标题:比特币挖矿的难度和算力

        本文链接:https://www.haomeiwen.com/subject/fsrscftx.html