第0章 弁言
在11月份BCH的硬分叉晋级时,产生了两个币,BCH和BSV。abc开发组为BCH添加了一个叫Checkpoint的东西,BSV社区种种挖苦。本文表明Checkpoint毕竟是什么。
第1章 比特币节点怎样验证一个区块
任何一个下载并安装运转的完备节点都市从比特币网络中获取区块,并验证区块,以此更新节点的账本。当一个节点经过p2p网络取得一个新区块时,都市实行验证步骤,以识别这个区块是不是好效的区块。比特币区块的验证标准如下:
1、验证事情量证实,即验证区块头的哈希值小于如今目标值。
2、验证MerkleRoot对否是由区块体中的买卖取得的,即重构区块Merkle树取得的树根,看对否和区块头中的hashMerkleRoot值相称。
3、验证区块大,即看区块轻重对否在设定范围之内。(BTC是数据区块体不克不及大于1M,断绝验证区块不克不及大于3M;BCH是区块不克不及大于32M;BSV如今是不克不及大于128M)
4、验证对否仅有一个Coinbase买卖,即一个区块,矿工只能给本人嘉奖一次。
5、验证一切的买卖,即遍历区块内一切的买卖,反省对否是合法的买卖。以上就是比特币节点(BTC、BCH、BSV都一样)标准的验证区块步骤,这局部代码叫CheckBlock函数。
第2章 增长Checkpoint反省点验证端正
比特币节点在绝大大多情况下都是按外表的标准的验证区块步骤举行验证区块的,但可以到场分外的端正,就是到场一个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值必需即是Checkpoint里指定的哈希值。假如不相称,那就是一个废块,会被丢弃掉。
第3章 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是一个好东西。
(作者:闪电HSL,内容来自链得得内容开放平台“得得号”;本文仅代表作者看法,不代表链得得官方态度)
版权声明:本文来自互联网整理发布,如有侵权,联系删除
原文链接:https://www.yigezhs.comhttps://www.yigezhs.com/wangluozixun/42224.html