如何使比特币硬分叉

How to make bitcoin hard fork

我研究比特币源代码有一段时间了,并且已经成功地创建了一个带有新创世块的本地比特币网络。
现在我正在尝试理解硬分叉的过程(如果我在这里使用了错误的术语,我指的是区块链分裂而不是挖掘新创世纪的过程)。
我试图在 BitcoinCash 源代码中找到这种方法,但到目前为止除了检查点之外还没有找到任何地方。

//UAHF fork block.
  {478558, uint256S("0000000000000000011865af4122fe3b144e2cbeea86"
          "142e8ff2fb4107352d43") }

据我了解,上述检查点负责链分裂。但是我无法在源代码中找到执行此规则的位置,即指定在块号 478558 之后具有与比特币不同的块的代码。
谁能帮我指明正确的方向?

您在源代码中没有指定 "this is where the fork starts" 的特定规则。检查点仅用于引导新节点,检查它们以确保正在下载和验证正确的链。

硬分叉的定义只是共识规则的改变。从本质上讲,如果你引入新的 consensus-breaking 规则,任何 运行 比特币的节点将拒绝那些不兼容的块,一旦一个块被拒绝(并在另一条链上开采),你现在将有不同的链条。

附带说明一下,您可能应该更改 chainparams.cpp 中的默认 P2P 端口和 P2P 消息 headers,这样它就不会尝试连接其他比特币节点。