龙空技术网

跟大家一起学习区块链技术系列之一 比特币之分叉的检测

链圈007 87

前言:

今天我们对“getnetworkinfo过时了”都比较注意,你们都需要分析一些“getnetworkinfo过时了”的相关文章。那么小编也在网络上汇集了一些关于“getnetworkinfo过时了””的相关文章,希望我们能喜欢,兄弟们一起来学习一下吧!

不管是软分叉还是硬分叉,没有更新版本的节点或矿工都可能会使用或传播不正确的信息,这将会造成一定的经济损失。特别的,未更新版本的节点会传播和接受一些新版本节点认为无效的交易,这样它永远没有办法成为大家公认的最好的一条链。未更新的节点可能还会拒绝传播已经加入到最好的链或即将成为最好的链中的区块或交易,所以它无法提供完整的信息。

比特币核心有检测硬分叉的代码,是通过观察区块链的工作量证明实现的。如果一个没有更新的节点收到的区块头比它认为的最好的一条链的工作量大至少六个块或更多的工作量,节点会通过RPC getnetworkinfo的结果给出一个警告,并且执行 –alertnotify命令,如果设置了的话。这警告操作者未更新的节点无法切换到最好的一条链上了。

全节点也会检查区块和交易的版本号。如果最近收到的区块或交易的版本号比节点用的版本高的话,就可以假定它没有使用现在的共识规则。比特币核心相同的通过RPC getnetworkinfo报告这个情况,并且执行 –alertnotify命令,如果设置了的话。

不管是哪种情况,区块和交易数据如果来自很明显的没有使用最新规则的节点的话,那么这个数据就是不可信赖的。

SPV客户端通过连接几个全节点可以检测出可能的硬分叉,确保这些节点都在一个链上,拥有相同的区块高度,当然由于传输延时和可能存在过时的块,也可以加减几个区块来判断。如果存在偏离,客户端可以从这些节点断开。

SPV客户端也可以监视区块或交易的版本号的增加,确保他们处理的或创建的都是符合最新规则的交易。

标签: #getnetworkinfo过时了