挖矿算法
挖矿算法: h(block hash) <= target 算法: 使用 SHA-256 安全哈希算法进行计算
1.为什么要调整挖矿难度?
出块时间太短会导致问题: 可能出现多分叉。此时比特币系统中的大部分算力资源维护在分叉节点上,耗时较长,给可能存在的51%攻击留了时间。
D:\web3学习\自学笔记\resource\image-20250105174043215.png
2. 不给51%攻击留机会怎么调整挖矿难度?
2.1 调整周期: 每 2016 个区块调整一次,约为两个星期。
2.2 调整公式: target = target * (2016 个区块实际用时) / (2016 * 10min)
- 如果实际用时变短,阈值变小,难度上升。
- 如果实际用时变长,阈值变大,难度下降。
3. 如何调整目标阈值?
比特币系统代码: 诚实节点不会接受恶意节点修改的阈值。
- 根据全网难度计算目标阈值。
- 修改区块头中的 Nonce 和时间戳生成新的哈希值。
- 网络难度的调整自动影响目标阈值,无需矿工手动干预。
4. 比特币节点的两种分类
| 比特币节点的分类 | 全节点 | 轻节点 |
|---|---|---|
| 在线情况 | 一直在线 | 不是一直在线 |
| 外存数据 | 在本地硬盘上维护完整的区块链信息 | 只保存每个区块块头 |
| 内存数据 | 内存里维护UTXO集合,便于快速检验交易的正确性 | 只保存跟自己相关的交易 |
| 验证交易 | 监听比特币网络上的交易信息,验证每个交易的合法性 | 只能验证与自己相关的交易合法性 |
| 交易打包 | 决定哪些交易会被打包到区块里 | 无法检测网上发布的区块的正确性 |
| 验证区块 | 监听别的矿工挖出来的区块,验证其合法性 | 可以验证挖矿的难度 |
| 挖矿 | 挖矿:1.决定沿着哪条链挖下去,2.当出现等长的分叉时,选择哪个分叉 | 只能检测哪个是最长链,不知道哪个是最长合法链 |
5. 挖矿设备
5.1 GPU: 用于大规模的并行计算,适用于一般计算需求。 5.2 ASIC: 专门为挖矿设计的芯片,性能优化用于特定币种,除非两个币使用相同的 mining puzzle。
6.矿池管理者与矿工
6.1 矿池管理者 (Pool Manager) : 管理矿池的运作。 6.2 矿工 (Miner) : 参与挖矿的个体或实体,通过计算工作量来获得奖励。
提问
比特币是如何保证安全性的?
1 密码学 2 共识机制