BTC笔记-07-挖矿

BTC-挖矿

B站视频链接


回顾两种节点类型

全节点

  • 一直在线
  • 在本地硬盘上维护完整的区块链信息
  • 在内存里维护 UTXO 集合,以便快速检验交易的正确性
  • 监听比特币网络上的交易信息,验证每个交易的合法性
  • 决定哪些交易会被打包到区块里
  • 监听别的矿工挖出来的区块,验证其合法性
  • 挖矿
    • 决定沿着哪条链挖下去? -> 最长合法链
    • 当出现等长的分叉的时候,选择哪一个分叉? -> 最先听到的

轻节点

  • 不是一直在线
  • 不用保存整个区块链,只要保存每个区块的块头
  • 不用保存全部交易,只保存与自己相关的交易
  • 无法检验大多数交易的合法性,只能检验与自己相关的那些交易的合法性
  • 无法检测网上发布的区块的正确性
  • 可以验证挖矿的难度
  • 只能检测哪个是最长链,不知道哪个是最长合法链

挖矿设备

  • 早期使用通用计算机的 CPU,挖矿计算哈希值仅用到通用 CPU 中的部分指令,计算机的内存等大部分也是闲置的
  • 之后使用 GPUGPU 并行计算的能力是闲置的,浮点计算的能力也用不上
  • 现使用 ASIC Application Specific Integrated Circuit 芯片,专为挖矿设计的芯片

通用 -> 专用


矿池

单个矿工像是买彩票,挖中概率很低,挖中奖励很大,收入并不稳定。对于整个网络而言是 10 分钟一个区块,而对一个矿工而言可能数年才挖出一个区块,而在出块前的成本是没有回报的。并且矿工还需要承担全节点的其他功能

因此出现了 mining pool 矿池,一个矿池具有一个 pool manager 矿主,下面拥有很多 miner 矿工

pool manager

miner

miner

miner

miner

在矿池中,矿主只需要负责计算哈希值,而全节点的其他功能由 pool manager 完成,同时矿工使用的 ASIC 芯片也无法完成全节点的功能

当一个矿池挖出区块时,由矿池中的矿工分红。这里仍然需要用到工作量证明:

例如当前比特币网络要求的 nonce 为前 50 位为 0,而在矿池中的矿工挖到了 nonce40 位为 0almost valid block,矿工可以将此块(称为 share)提交给矿主用作工作量证明

当矿工挖到一个区块时,是否可以不告知矿主而自己偷偷发布以获取出块奖励?

并不能,矿工的任务是由矿主发布的,矿工仅负责尝试 nonce,分配给矿工的块的出矿奖励地址是矿主的,矿工即使发布了也无法获得收益

posted @   buzzing  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示