Skip to content

Commit

Permalink
Update ying-fen-cha.md
Browse files Browse the repository at this point in the history
内容重复。
  • Loading branch information
sunyihoo authored Dec 6, 2024
1 parent 6eb6c4f commit c3d70d2
Showing 1 changed file with 0 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,6 @@

当这个分叉实现在网络中部署时,一定比例的矿工、钱包用户和中间节点可能会采用并运行这个实现。首先,网络将会发生分叉。基于原始共识规则实现的节点将拒绝任何根据新规则创建的交易和区块。此外,遵循原始共识规则的节点可能会与向它们发送这些无效交易和区块的任何节点断开连接。因此,网络可能会分裂为两个部分:旧节点只会保持与旧节点连接,而新节点只会与新节点连接。一个基于新规则的区块会在网络中传播并导致网络分裂为两个。新矿工可能会在新区块的基础上挖矿,而旧矿工将在旧规则的基础上挖掘另一条链。由于连接到两个独立网络,分区的网络将使得根据不同共识规则运作的矿工不太可能接收到对方的区块。

对于软件开发者来说,“分叉”一词还有另一种含义,这给“硬分叉”一词增添了困惑。在开源软件中,当一组开发者选择遵循不同的软件路线图并开始竞争性地实现一个开源项目时,就会发生分叉。我们已经讨论了导致硬分叉的两种情况:共识规则中的错误和对共识规则的有意修改。在有意修改共识规则的情况下,软件分叉将先于硬分叉发生。然而,要发生这种类型的硬分叉,必须开发、采纳和启动一种新的共识规则的软件实现。

试图改变共识规则的软件分叉的例子包括比特币 XT 和比特币 Classic。然而,这两个程序都没有导致硬分叉。虽然软件分叉是一个必要的先决条件,但它本身并不足以导致硬分叉发生。要发生硬分叉,必须采纳竞争性的实现并激活新的规则,由矿工、钱包和中间节点完成。相反,比特币核心有许多替代实现,甚至软件分叉,它们不改变共识规则,除非存在错误,否则可以在网络上共存并互操作而不会导致硬分叉。

共识规则在验证交易或区块时可能以明显和明确的方式存在差异。这些规则也可能以更微妙的方式存在差异,比如在应用于比特币脚本或数字签名等密码原语的共识规则的实现上。最后,由于系统限制或实现细节所施加的隐含共识约束,共识规则可能以意想不到的方式存在差异。一个例子是在将比特币核心 0.7 升级到 0.8 时发生的未预期的硬分叉,这是由于用于存储区块的 Berkeley DB 实现的限制引起的。

在概念上,我们可以将硬分叉分为四个阶段:软件分叉、网络分叉、挖矿分叉和链分叉。这个过程始于开发者创建了一个具有修改后共识规则的替代客户端的实现。

当这个分叉实现在网络中部署时,一定比例的矿工、钱包用户和中间节点可能会采用并运行这个实现。首先,网络将会发生分叉。基于原始共识规则实现的节点将拒绝任何根据新规则创建的交易和区块。此外,遵循原始共识规则的节点可能会与向它们发送这些无效交易和区块的任何节点断开连接。因此,网络可能会分裂为两个部分:旧节点只会保持与旧节点连接,而新节点只会与新节点连接。一个基于新规则的区块会在网络中传播并导致网络分裂为两个。

新矿工可能会在新区块的基础上挖矿,而旧矿工将在旧规则的基础上挖掘另一条链。由于连接到两个独立网络,分区的网络将使得根据不同共识规则运作的矿工不太可能接收到对方的区块。

## 矿工和难度的分歧

Expand Down

0 comments on commit c3d70d2

Please sign in to comment.