主页 > imtoken.im > 比特币现金中添加的 Checkpoint 到底是什么,它的影响是什么?

比特币现金中添加的 Checkpoint 到底是什么,它的影响是什么?

imtoken.im 2023-02-18 05:32:42

第0章简介

BCH在11月份的硬分叉升级中,诞生了BCH和BSV两种币种。 abc开发团队给BCH加了一个叫Checkpoint的东西,BSV社区对此嗤之以鼻。 本文解释了什么是检查点。

第 1 章 比特币节点如何验证区块

任何被下载、安装和运行的全节点都会从比特币网络中获取区块并验证这些区块以更新节点的账本。 当一个节点通过 p2p 网络获得一个新的区块时,它会执行一个验证程序来识别该区块是否是一个有效的区块。 比特币区块的验证标准如下:

1. 验证工作量证明,即验证区块头的哈希值是否小于当前目标值。

2.验证MerkleRoot是否是从区块体中的交易中获取的,即重构区块Merkle树得到的树根,是否等于区块头中的hashMerkleRoot值。

3.验证块是否大,即检查块大小是否在设置的范围内。 (BTC表示数据块体不能大于1M,隔离验证块不能大于3M;BCH表示块不能大于32M;BSV现在不能大于128M)

4. 验证只有一笔Coinbase交易,即一个区块,矿工只能奖励自己一次。

5.验证所有交易,即遍历区块中的所有交易,检查是否为合法交易。

以上是比特币节点的标准验证区块程序(BTC、BCH、BSV同)。 这部分代码称为 CheckBlock 函数。

第二章 添加Checkpoint检查点验证规则

在大多数情况下,比特币节点按照上面的标准验证区块程序来验证区块,但是可以添加额外的规则,即添加一个 Checkpoint。

Checkpoint 是节点验证块中的补充规则。 这个补充规则是:

Checkpoint是指定一个区块高度的区块哈希值必须等于某个哈希值。

Checkpoint是一段数据。 该数据由块高度值和相应的哈希值组成。 所有的检查点都将存储在一个名为 CheckpointData 的数据块中。 以下是 BCH 网络上的历史 Checkpoint 值。

怎么搭建比特币节点_比特币节点是如何收到交易的_比特币节点是什么

我们可以看到在11111这个高度有一个Checkpoint,是2009年4月16日挖出来的,估计是中本聪前几个人挖的。

怎么搭建比特币节点_比特币节点是什么_比特币节点是如何收到交易的

上图中最后一个Checkpoint是在11月15日BCH硬分叉时添加的,区块高度556767是BCH和BSV分裂后BCH挖出的第一个区块的高度。 该区块被 BSV 拒绝。

Checkpoint由开发团队编写到节点软件中,也可以开发编写一个函数,指定在某种情况发生后由该函数添加一个Checkpoint。 节点软件在验证区块时,会查找CheckpointData数据,判断是否需要将某个区块高度添加到Checkpoint的验证规则中。

Checkpoint 中指定的块高度必须在写入前挖出。

当节点软件搜索CheckpointData,发现某个区块高度是Checkpoint,那么节点在验证这个区块时,会在上一章的5条验证规则中加入第6条,即这个区块高度的hash value 必须等于 Checkpoint 中指定的哈希值。 如果不相等,则为废块,将被丢弃。

第三章Checkpoint有什么用?

一个节点只要将Checkpoint的区块识别为合法区块,就可以防止该高度之前的所有区块被其他势力重组,尤其是避免重组区块被51%优势算力攻击。

我们必须确认的是,区块的哈希值是不可伪造的。 当指定一个区块高度为某个哈希值时,意味着这个区块高度的区块是不可更改的。 即使你有超过51%的算力比特币节点是什么,你也不可能让这些有Checkpoint的节点软件听从你去改变这个区块。

任何一个区块都包含前一个区块的哈希值,这意味着执行Checkpoint的节点已经识别了指定的区块,也识别了该区块之前的所有区块。

Checkpoint在一定程度上改变了最长链为有效链的原则,只有包含Checkpoint的最长链才是有效链。

Checkpoint可以用来部署协议分叉,所有节点统一运行带有Checkpoint的全节点软件,然后一旦Checkpoint的区块被挖出,之后所有的协议都可以统一更改。 这也是UAHF的原理。 BCH从2017年8月1日分叉后,每次分叉升级都使用Checkpoint进行部署。

比特币节点是什么_怎么搭建比特币节点_比特币节点是如何收到交易的

Checkpoint的协议变更是明确告诉整个生态,这个区块高度之后协议会发生变化比特币节点是什么,大家要注意升级。

第 4 章 Checkpoint 有什么问题?

需要澄清的是,很多人认为Checkpoint给了开发者更多的权力,但我不这么认为。 因为节点软件是由开发者编写的,所以开发Checkpoint只是为了明确标明协议未来会如何变化。 这相当于我们这些写文章的人,用粗体和红色高亮标记一个重点内容。 Checkpoint是用来告诉矿工和其他生态节点,我们需要明确改变一些东西,这些东西不允许被链上51%的算力否决。

请注意,上面说的是“链上否决权”,即一旦算力选择同意Checkpoint的节点软件,无论算力有多大,都可以独立挖出有Checkpoint的链。 通过更大算力的 51% 攻击,不可能重组 Checkpoint 之前的区块。 只能重组后续块。

这意味着 Checkpoint 本身就是一个链下治理工具。 大家通过链下讨论来讨论是否接受Checkpoint以及后续所有的协议规则变更。 如果接受并部署,就没有回头路可走。

那么Checkpoint有什么问题呢? 对于喜欢纯粹通过链上算力投票的矿工来说,这只会是不利的。 相信算力、有决定权的人会觉得Checkpoint不好,而热爱链下治理的人会觉得Checkpoint是个好工具。

第五章结论

祝世界和平,祝BCH和BSV社区和平共处,阿门。