Skip to content

挖矿过程

目录

  1. 挖矿概述
  2. 区块构造
  3. 工作量证明
  4. 难度调整
  5. 矿池挖矿
  6. 常见问题

挖矿概述

挖矿的作用

1. 创建新比特币(区块奖励)
2. 验证交易
3. 保护网络
4. 维持出块时间(约 10 分钟)

挖矿奖励:
  区块奖励(Coinbase):
    初始 50 BTC
    每 210,000 块减半
    目前 (2024):3.125 BTC
  
  交易费用:
    区块中所有交易的费用总和

矿工类型

1. 个人矿工
   使用 ASIC 矿机独立挖矿
   收益不稳定但独立

2. 矿池矿工
   贡献算力到矿池
   获得稳定的小额收益

3. 矿场
   大规模部署矿机
   追求最低电费

区块构造

区块模板

Coinbase 交易:
  创建新比特币的特殊交易
  输入:无(新生成)
  输出:奖励 + 费用
  
Coinbase 脚本:
  包含区块高度(BIP 34)
  矿池可包含额外数据

交易选择:
  按费率从高到低
  填满区块大小限制

区块头构造

80 字节区块头:

版本号(4 字节):
  协议版本

前一区块哈希(32 字节):
  链接到前一个区块
  保持链的连续性

Merkle 根(32 字节):
  所有交易的汇总哈希

时间戳(4 字节):
  Unix 时间戳
  需要 >= 中位数时间

难度目标(4 字节):
  编码的 PoW 难度

Nonce(4 字节):
  "只用一次"的数字
  矿工不断改变以找到有效区块

工作量证明

PoW 计算

核心方程:
  SHA256(SHA256(block_header)) < target

过程:
  1. 构造区块头(80 字节)
  2. 计算哈希 = SHA256(SHA256(header))
  3. 检查 hash < target
  4. 如果不满足,改变 nonce,重复

目标值:
  从难度转换而来
  目标越小,难度越大

挖矿的本质

粗暴算法:
  for nonce = 0 to 2^32 - 1:
    header = make_header(transactions, nonce)
    hash = SHA256(SHA256(header))
    if hash < target:
      return block  // 找到有效区块!
    if has_new_transactions:
      recalculate_merkle_root()
      nonce = 0  // 重置 nonce

预期工作量:
  平均需要 2^32 / 2 ≈ 21 亿次哈希
  现代 ASIC:秒级完成

难度调整

难度调整机制

目标:维持 10 分钟的平均出块时间

调整周期:
  每 2,016 个区块(约 2 周)调整一次

公式:
  新难度 = 旧难度 × (实际时间 / 目标时间)
  
  实际时间 = 最后 2,016 个区块的时间
  目标时间 = 2,016 × 10 分钟 = 20,160 分钟

限制(BIP 307):
  调整最多 4 倍(上下)
  防止极端波动

难度历史

初期(2009-2012):
  10 分钟左右一个区块

GPU 时代(2012-2013):
  难度迅速增加

ASIC 时代(2013-现在):
  难度呈指数增长
  当前难度 ≈ 最高点

未来趋势:
  取决于比特币价格
  价格高 → 更多矿工 → 难度上升

矿池挖矿

矿池工作机制

流程:

1. 矿工连接矿池
   提供工作地址

2. 矿池分配工作
   发送区块模板
   包含相对较低的难度(Share difficulty)

3. 矿工进行计算
   尝试找到满足共享难度的哈希

4. 提交工作证明
   矿工提交找到的哈希

5. 矿池汇聚
   收集所有矿工的工作
   组合成真正满足网络难度的区块

6. 矿池奖励
   按贡献度分配奖励
   考虑难度和提交量

矿池收益分配

PPLNS (Pay Per Last N Shares):
  基于最近提交的 N 个工作
  浮动收益

PPS (Pay Per Share):
  每个提交的工作都有固定收益
  矿池承担方差风险

FPPS (Full Pay Per Share):
  PPS + 交易费用分享

常见问题

Q1: 挖矿还赚钱吗?

A:

  1. 取决于电费成本
  2. 当前中国:可能亏损
  3. 冰岛、伊朗:电费便宜,可赚钱
  4. 个人挖矿:几乎不可能,应加入矿池

Q2: 为什么难度这么高?

A:

  1. 比特币价格高
  2. 更多矿工进入
  3. 更多算力投入
  4. 难度自动调整

Q3: 能否修改难度算法?

A:

  • 可以,通过软/硬分叉
  • 但会改变经济激励
  • 不太可能发生

Q4: GPU 还能挖比特币吗?

A:

  • 不能,ASIC 太强大了
  • 可以挖其他币(ETH、XMR)
  • GPU 没有竞争力

Q5: 矿池会偷走我的比特币吗?

A:

  • 可以设置提取地址
  • 矿池无法强制转向
  • 信誉好的矿池通常可信