# 区块链入门教程05：什么是挖矿

By [liskywalker](https://paragraph.com/@liskywalker) · 2023-07-19

---

挖矿（英语：Mining）是指通过执行"工作量证明" (PoW) 算法来获取加密货币，例如比特币，由于此名称源自对现实采矿的比喻，进行挖矿工作的人通常称为矿工。

比特币矿工通过解决具有一定工作量的工作量证明机制问题，来管理比特币网络 —— 确认交易并且防止双重支付。中本聪在白皮书中写道：“在没有中央权威存在的条件下，既鼓励矿工支持比特币网络，又让比特币的货币流通体系有了最初的货币注入源头。”中本聪把通过消耗CPU的电力和时间来产生比特币，比喻成金矿消耗资源将黄金注入经济。比特币的挖矿与节点软件主要是通过点对点网络、数字签名、交互式证明系统来发起零知识证明与验证交易。现在主要是使用GPU进行挖矿。

比特币挖矿的过程可以简单概述为：矿工们通过在一个被称为 "工作量证明" (PoW) 的算法中使用算力来竞争获得比特币奖励。这一过程之所以被称为“工作量证明”，是因为只有那些证明投入了足够资源（工作）的参与者（矿工）才有机会赢得奖励。类似于矿工们使用算力来解一道数学题。约每 10 分钟，就会有一位胜出的矿工获得奖励。 挖矿奖励有两种： (1)“区块奖励”，即新发行的比特币。区块奖励目前设定为 6.25 个比特币（但会在 2024 年 5 月初减半，然后在四年后再减半，以此类推）； (2) 与当前区块中所有交易相关的各种手续费。

在比特币白皮书中将挖矿过程简单概括如下： 1、新交易向所有节点广播。 2、每个节点将新交易收集到一个区块。 3、每个节点为它的区块寻找工作量证明。 4、当一个节点找到了工作量证明，就向所有节点广播这个区块。 5、节点只有在区块内所有交易都是有效的且之前没有被消费的情况下接受这个区块。 6、节点通过使用当前区块的哈希值作为上一个哈希值在链中创建下一个区块的方式表示对当前区块的接受。

首先,矿工是负责向账本提交更新的人,只有成功完成工作证明的矿工才能添加新的区块。这是比特币协议规定的。矿工可以从节点广播到网络上的待处理交易池中自由选择有效的交易。这些交易被收集到“内存池”。矿工会根据交易费用从内存池选择交易,以获得更高的收入。这形成了一个交易费市场,有助于确保有限的区块空间得到公平使用。第一个完成工作证明的矿工会把他提出的新区块广播给更多节点,然后这些节点会检查该区块是否遵循协议规则。 主要规则是: (1)区块中的交易都有效; (2)新区块正确引用前一个区块,在链上编号正确。 如果区块遵循协议,节点就会传播给其他节点验证。 通过这种方式,新区块在网络中传播,直到被广泛接受。但是,经常会发生这种情况:多个矿工几乎同时完成工作证明,并同时向网络广播新区块。另外,由于网络延迟,不同节点接收新区块的时间也略有不同。要注意的是,不同矿工的新区块可能略有不同,因为他们选择包含不同的交易。当两个矿工同时发布不同的新区块时,会在网络上传播两个竞争的版本。网络倾向选择让链增长更快的版本为正确版本。 我们来解释为什么网络倾向于选择让链增长更快的版本。假设80%的矿工选择版本A,开始为下一个区块进行工作证明计算，剩余25%的矿工选择版本B。版本A拥有更多的矿工更可能首先完成工作量证明,并将新版本广播到网络。由于节点倾向于选择最长的链,版本A很快就会在网络中占据主导地位。实际上,随着链的增长,版本B被选择的可能性会逐渐减小。

最后总结一下比特币挖矿的过程：

1.  矿工使用特定的硬件设备(矿机)来进行算力计算,目的是找到一个随机数(nonce值),使得算出的目标哈希值小于网络难度目标。
    
2.  一旦一个矿工算出满足条件的目标哈希,就可以构建一个新的区块,打包未确认交易,成为第一个解决该区块算力证明问题的矿工。
    
3.  该矿工会把新区块广播到比特币全网,其他矿工验证后会接受该区块并添加到自己的区块链中。
    
4.  网络中如果出现多个相竞争的新区块,会以算力占优势的那条链为主,网络会趋向于选择难度较大的链。
    
5.  新增区块的矿工可以获得一定数量的比特币奖励以及该区块中交易的手续费,作为挖矿的收益。
    
6.  difficulty目标周期性调整,保证区块链稳定生成一个区块约每10分钟。
    
7.  挖矿难度越高,需要越强大的算力才能解决问题,从而维持比特币区块链网络的安全。
    

#bitcoin #BTC #比特币 #Ethereum #区块链入门教程

---

*Originally published on [liskywalker](https://paragraph.com/@liskywalker/05)*
