四、比特币挖矿算法的调整原理以及为什么要调整挖矿难度

600 阅读2分钟

挖矿算法

挖矿算法: h(block hash) <= target 算法: 使用 SHA-256 安全哈希算法进行计算

1.为什么要调整挖矿难度?

出块时间太短会导致问题: 可能出现多分叉。此时比特币系统中的大部分算力资源维护在分叉节点上,耗时较长,给可能存在的51%攻击留了时间。

image-20250105174043215.png D:\web3学习\自学笔记\resource\image-20250105174043215.png

2. 不给51%攻击留机会怎么调整挖矿难度?

2.1 调整周期: 每 2016 个区块调整一次,约为两个星期。

2.2 调整公式: target = target * (2016 个区块实际用时) / (2016 * 10min)

  • 如果实际用时变短,阈值变小,难度上升。
  • 如果实际用时变长,阈值变大,难度下降。

3. 如何调整目标阈值?

比特币系统代码: 诚实节点不会接受恶意节点修改的阈值。

  1. 根据全网难度计算目标阈值。
  2. 修改区块头中的 Nonce 和时间戳生成新的哈希值。
  3. 网络难度的调整自动影响目标阈值,无需矿工手动干预。

4. 比特币节点的两种分类

比特币节点的分类全节点轻节点
在线情况一直在线不是一直在线
外存数据在本地硬盘上维护完整的区块链信息只保存每个区块块头
内存数据内存里维护UTXO集合,便于快速检验交易的正确性只保存跟自己相关的交易
验证交易监听比特币网络上的交易信息,验证每个交易的合法性只能验证与自己相关的交易合法性
交易打包决定哪些交易会被打包到区块里无法检测网上发布的区块的正确性
验证区块监听别的矿工挖出来的区块,验证其合法性可以验证挖矿的难度
挖矿挖矿:1.决定沿着哪条链挖下去,2.当出现等长的分叉时,选择哪个分叉只能检测哪个是最长链,不知道哪个是最长合法链

5. 挖矿设备

5.1 GPU: 用于大规模的并行计算,适用于一般计算需求。 5.2 ASIC: 专门为挖矿设计的芯片,性能优化用于特定币种,除非两个币使用相同的 mining puzzle。

6.矿池管理者与矿工

6.1 矿池管理者 (Pool Manager) : 管理矿池的运作。 6.2 矿工 (Miner) : 参与挖矿的个体或实体,通过计算工作量来获得奖励。

提问

比特币是如何保证安全性的?

1 密码学 2 共识机制