# 科普 | 如果两名矿工同时挖出新区块，会怎样？

By [bitone](https://paragraph.com/@bitxyz) · 2022-07-08

---

众所周知，比特币挖矿是矿工们通过算力竞争，不断试错随机数，直到找到合适的随机数，新的区块被挖出。

挖矿是全网矿工的集体行为，所有矿工都在挖矿，那么有没有可能多名矿工同时挖出新的区块呢？

这概率非常小，但还是有可能的。如果出现多名矿工同时挖出新区块的情况，那出块奖励该给谁呢？取舍标准是什么呢？今天我们就来解答这些问题。

矿工挖出区块后，会第一时间将新区块发布出去，新区块经其他矿工验证合法（符合比特币系统的规则）后，就会接受该区块，并在该区块的基础上开始挖下一个区块。

假设有两名矿工A和B同时挖出第N个区块，这时区块链就形成了一个短暂的分叉，并假设A矿工出块的链称A链，B矿工挖出的链称B链。矿工A和B都会将自己挖到的区块广播出去，其他矿工节点可能先收到A矿工发布的新区块，也可能收到B矿工发布的区块，然后，他们将分别在各自接收到的新区块后延伸区块链。

假设后来A链上的矿工先挖出第N+1个区块，这时该区块挖出者会向全网广播第N+1区块的信息，其他矿工节点监测到有新的合法区块被挖出，就会停止继续挖第N+1个区块（无论之前他是在A链上挖还是在B链上挖），会选择在该链上挖下一个（N+2）区块，这也就意味着A链胜出，第N个区块的出块奖励归矿工A所有（严格地说，矿工B也得到了区块奖励，但因为矿工B挖出的区块不在最长链上，变成孤块，所以出块奖励也就无效了）。

反之，如果第N+1个区块在B链上先被挖出，那么所有的矿工都会在B链上继续挖下一个区块，第N个区块的出块奖励归矿工B所有。

为什么会这样呢？因为比特币系统规定，只认最长合法链，这也是所有矿工的共识，所以当一个合法的新区块被挖出后，所有矿工将在此区块的基础上挖下一个区块，因为这对所有矿工而言，都是最经济、利益最大化的选择，而另外一条链将被矿工抛弃，弃链上的区块也称为孤块。

如果在第N+1个区块，A链和B链再次出现同时出块的情况（这种情况的概率极小），两条链将继续竞争，直到某条链率先挖出新的区块，其他矿工会选择最长合法链继续挖矿，抛弃另一条链。

被抛弃那条链挖出的区块在分出胜负之前，也都是合法的，同样有出块奖励，等确定某条链为最长合法链之后，另一条链就成了弃链，弃链上的奖励将不被认可。

如果某个区块高度，有多名矿工同时挖出区块，此刻，他们挖出的区块都是合法的，区块链会因此出现临时性的分叉，所有矿工会在自己最先监测到的区块上继续挖下一个区块，直到一方先挖出合法的新区块，所有矿工都会在更长的合法链上挖矿，这就是比特币的最长合法链机制，区块奖励将会给在最长合法链上出块的矿工。另一条链将会被抛弃，在弃链上得到的系统奖励也将不被认可。所以，矿工挖出新区块后，越快发布对矿工越有利。

---

*Originally published on [bitone](https://paragraph.com/@bitxyz/o5A8gdGVOqKLAt5VuMOV)*
