BTC挖矿难度

​ btc的挖矿其实就是一直在不断尝试nonce,找到一个合适的nonce这样就有得到了记账权利,也就是所谓的挖出了一个区块,那么,挖矿到底是算什么

区块结构

在bitcoin的源代码中可以看到:

class CTransaction
{
public:
    // Default transaction version.
    static const int32_t CURRENT_VERSION=2;

    // The local variables are made const to prevent unintended modification
    // without updating the cached hash value. However, CTransaction is not
    // actually immutable; deserialization and assignment are implemented,
    // and bypass the constness. This is safe, as they update the entire
    // structure, including the hash.
    const std::vector<CTxIn> vin;
    const std::vector<CTxOut> vout;
    const int32_t nVersion;
    const uint32_t nLockTime;

private:
    /** Memory only. */
    const uint256 hash;
    const uint256 m_witness_hash;

    uint256 ComputeHash() const;
    uint256 ComputeWitnessHash() const;
}

这个就是交易的结构

btc-head

挖矿就是一直在进行hash计算,直到找到一个符合难度要求的值。

区块链演示的图中可以看到:

block-min

当在创世区块中写入数据时,因为前面的区块hash值改变了,迫使后面的信息也修改了,这样就是非法的数据

block-min

每个区块需要重新挖矿,这样才是一条正常的数据。

block-min

挖矿难度

​ 原本中本聪设计的是一个公平的完全去中心化的一个数字货币系统,每个人都可以使用个人电脑进行挖矿。然而,有利可图时大量新算力不断加入,矿工竞争激烈,使得单个矿工的挖矿成功率几乎为零。2011 年起矿池出现,大量矿工纷纷加入矿池,以稳定收入,摊薄成本。大量算力融入,使得比特币挖矿难度越来越大

​ 在比特币最开始的阶段,一台普通的pc就可以进行挖矿,当越来越多的人参与到挖矿中时,挖矿变得越来越难,现在一台普通的pc挖到区块的概率几乎是0,比特币挖矿经历了从普通pc机挖矿,到GPU挖矿,到专用ASCI芯片挖矿,后来普通的个人已经挖不到矿,现在普遍是矿场矿池来挖矿。目前可以在最新的区块看到挖矿难度:

block-min

挖矿难度在每隔2016个区块调整一次,大约是14天的时间,调整挖矿难度,这样保证每次的出块时间在10分钟左右。

如上述的bits= 386689514, 16进制数是:0x170C69EA

coefficient系数: coefficient = 0x0C69EA

exponent指数: exponent = 0x17 表示实际表示的数字,0x17表示实际挖矿出来的hash要有0x17=23个实际数数据

target = coefficient * Math.pow(2,8 * (exponent-3))

实际hash: 00000000000000000041ff1cfc5f15f929c1a45d262f88e4db83680d90658c0c

bits值越小,难度越大,越难挖矿,需要的算力更多。

算力

​ 在btc.com中可以看到算力和挖矿的难度,算力一直处于上升,难度也处于上升趋势。

block-min

下面是算力单位:

  • H/s : 是最小的单位,每秒做一次计算机随机的hash碰撞,就叫做Hash/s 单位简写成 H/s
  • KH/s : 1KH/s=1000H/s 通常 K=千的意思,每秒1,000次哈希运算
  • MH/s :1MH/s=1000KH/s M是兆,1M=1000千 ,1MH/s=每秒1,000,000次哈希
  • GH/s:1GH/s =1000MH/s 每秒计算1,000,000,000次哈希。
  • TH/s :1 TH/s =1000GH/s 每秒计算1,000,000,000,000次哈希。
  • PH/s:1 PH/s =1000TH/s 每秒计算1,000,000,000,000,000次哈希。
  • EH/s:1 EH/s =1000PH/s 每秒计算1,000,000,000,000,000,000次哈希(18个0)。

block-min

​ 随着挖矿难度的增加,需要的算力增加,挖矿设备需要的电力也在增加,有相关报道说挖矿消耗全球电力的0.5%,每挖出一枚需要消耗普通家庭耗电超过10年的用电,也就是这个原因,不同机构和人研究新的不需要消耗大量电力的共识,如pos,