BTC笔记-07-挖矿
BTC-挖矿
回顾两种节点类型
全节点
- 一直在线
- 在本地硬盘上维护完整的区块链信息
- 在内存里维护 集合,以便快速检验交易的正确性
- 监听比特币网络上的交易信息,验证每个交易的合法性
- 决定哪些交易会被打包到区块里
- 监听别的矿工挖出来的区块,验证其合法性
- 挖矿
- 决定沿着哪条链挖下去? -> 最长合法链
- 当出现等长的分叉的时候,选择哪一个分叉? -> 最先听到的
轻节点
- 不是一直在线
- 不用保存整个区块链,只要保存每个区块的块头
- 不用保存全部交易,只保存与自己相关的交易
- 无法检验大多数交易的合法性,只能检验与自己相关的那些交易的合法性
- 无法检测网上发布的区块的正确性
- 可以验证挖矿的难度
- 只能检测哪个是最长链,不知道哪个是最长合法链
挖矿设备
- 早期使用通用计算机的 ,挖矿计算哈希值仅用到通用 中的部分指令,计算机的内存等大部分也是闲置的
- 之后使用 , 并行计算的能力是闲置的,浮点计算的能力也用不上
- 现使用
Application Specific Integrated Circuit
芯片,专为挖矿设计的芯片
通用 -> 专用
矿池
单个矿工像是买彩票,挖中概率很低,挖中奖励很大,收入并不稳定。对于整个网络而言是 分钟一个区块,而对一个矿工而言可能数年才挖出一个区块,而在出块前的成本是没有回报的。并且矿工还需要承担全节点的其他功能
因此出现了 mining pool
矿池,一个矿池具有一个 pool manager
矿主,下面拥有很多 miner
矿工
在矿池中,矿主只需要负责计算哈希值,而全节点的其他功能由 pool manager
完成,同时矿工使用的 ASIC
芯片也无法完成全节点的功能
当一个矿池挖出区块时,由矿池中的矿工分红。这里仍然需要用到工作量证明:
例如当前比特币网络要求的 nonce
为前 位为 ,而在矿池中的矿工挖到了 nonce
前 位为 的 almost valid block
,矿工可以将此块(称为 share
)提交给矿主用作工作量证明
当矿工挖到一个区块时,是否可以不告知矿主而自己偷偷发布以获取出块奖励?
并不能,矿工的任务是由矿主发布的,矿工仅负责尝试 nonce
,分配给矿工的块的出矿奖励地址是矿主的,矿工即使发布了也无法获得收益
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通