我正在探索比特币源代码一段时间,并成功创建了一个带有新生成块的本地比特币网络。 现在我试图理解硬叉的过程(如果我在这里使用错误的术语,我指的是区块链被拆分而不是挖掘新的起源)。 我正在尝试在BitcoinCash源代码中找到这种方法,但除了检查点之外到目前为止还没有。
//UAHF fork block.
{478558, uint256S("0000000000000000011865af4122fe3b144e2cbeea86"
"142e8ff2fb4107352d43") }
所以我理解上面的检查点负责链分裂。但我无法在源代码中找到强制执行此规则的位置,即在块号478558之后指定其具有与比特币不同的块的代码。 有谁能让我在这里找到正确的方向?
您在源代码中没有特定的规则说“这是fork启动的地方”。检查点仅用于引导新节点,检查它们以确保正在下载和验证正确的链。
根据定义,硬分叉只是共识规则的变化。本质上,如果您引入新的共识突破规则,任何运行比特币的节点都将拒绝那些不兼容的块,并且一旦一个块被拒绝(并在另一个链上开采),您现在将拥有不同的链。
作为旁注,你应该更改chainparams.cpp
中的默认P2P端口和P2P消息头,这样它就不会尝试与其他比特币节点连接。