区块链四种类型的节点:全节点、超节点、轻节点和挖掘节点,比特币节点如何验证一个区块,CheckBlock函数

目录

区块链四种类型的节点:全节点、超节点、轻节点和挖掘节点

挖掘节点

满节点和超节点

光节点或轻量级节点(或瘦节点)

确认不是共识

比特币节点如何验证一个区块

CheckBlock函数。

为什么独立校验是去中心化共识的重要组成部分

独立校验的作用


区块链四种类型的节点:全节点、超节点、轻节点和挖掘节点

以比特币区块链为例,主要有四种类型的节点:全节点、超节点、轻节点和挖掘节点。Full、super和light节点执行类似的功能,而挖掘节点执行完全不同的功能。

在深入研究这些节点是什么以及它们做什么之前,最好将区块链从根本上看作是一个分类账或事务列表——至少在本例中是这样。所有类型的节点都以某种方式参与构建或维护该列表。

挖掘节点

关于挖掘是什么以及它是如何工作的已经写了很多,但是为了本文的目的,将挖掘节点简单地看作是为区块链生成块的节点。

挖掘节点确认应该放入“列表”中的块,该过程称为“挖掘”。“当人们谈论比特币网络,尤其是在其能源消耗的背景下,他们通常指的是矿商网络和专用于应用的集成设备(ASIC)机器。”

挖掘节点实际上并不负责维护区块链,它们只负责创建要添加到其中的块。在创建这些块之后,它们将通过网络发送到完整的节点,节点将验证它们并将它们添加到区块链。

满节点和超节点

顾名思义,全节点负责保存和分发整个区块链分类账的副本。因此,它们在网络中扮演着至关重要的角色,因为它们是验证区块链历史的关键。

整个节点能够验证事务,一直返回到genesis块,在发布时,整个区块链的大小为200GB。一些人估计,比特币网络上有超过1万个可操作的完整节点。

然后,这些节点将区块链传播到网络上的所有其他节点,以确保维护最受信任的区块链。节点越多,网络的分散化程度就越高,黑客入侵的难度也就越大。

根据完整节点的传入和传出连接的数量,还可以将其称为超级节点或监听节点。

超级节点通常24小时工作,以帮助连接其他完整节点,并将区块链分布到整个网络。它们作为信息或重新分发的中继,以确保每个人都拥有正确的区块链副本。

光节点或轻量级节点(或瘦节点)

执行类似于完整节点的功能,但是它们不保存整个区块链副本,而是只包含其中的一部分。

Light节点只下载以前事务的块头,以确认区块链的有效性,并将此信息传递给其他节点。

块头是给定块的摘要,它包含关于它被散列到的前一个块的信息、它被挖掘到的时间,以及一个惟一的标识号,称为nonce

一般来说,光节点连接到父节点,通常是一个完整的节点;它维护了区块链的完整副本。由于轻量级节点存储的区块链更少,并且不能帮助通过网络传播大量数据,因此它们不需要像完整节点或超级节点那样强大,并且拥有和维护它们也要便宜得多。

也就是说,如果一个完整的节点被黑了,并且持有一个错误的区块链副本,那么light节点可以将这个区块链作为false排除,并向完整的节点确认它应该维护的正确的区块链。可以将一组轻节点看作是一群支持您的朋友,帮助您保持一个完整的节点在直线和窄点上。

使用轻节点有助于进一步分散区块链网络,并以比全节点更低的成本将真正的分类帐分散到更大的距离。

确认不是共识

确然是验证交易,共识是工作量证明规则

节点通过遵循一些规则来验证区块链。当整个网络遵循这些规则时,所有节点都应该有助于生成相同的区块链。应该注意的是,验证实际上发生在挖掘块之前;

确认和共识是不一样的。当挖掘节点对事务的顺序达成一致,而不是对哪些事务是有效的达成一致。

假设我有1BTC,然后把0.25BTC转给我的同事Yessi。目前她的钱包里有25亿比特币。为了确认这是有效的,比特币网络将“要求”完整的节点确认我有足够的硬币,以及交易后Yessi将拥有多少。

一旦交易有效,矿商将抢购该交易,以增加一个区块,并通过工作证明进行验证

比特币节点如何验证一个区块

任何一个下载并安装运行的完整节点都会从btb网络中获取区块,并验证区块,以此更新节点的账本。当一个节点通过p2p网络获得一个新区块时,都会执行验证程序,以识别这个区块是不是有效的区块。比特币区块的验证标准如下:

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

2、验证MerkleRoot是否是由区块体中的交易得到的,即重构区块Merkle树得到的树根,看是否和区块头中的hashMerkleRoot值相等

3、验证区块大,即看区块大小是否在设定范围之内。(数据区块体不能大于1M,隔离验证区块不能大于3M;BCH是区块不能大于32M;BSV现在是不能大于128M)

4、验证是否只有一个Coinbase交易,即一个区块,矿工只能给自己奖励一次。

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

以上就是比特币节点(BTC、BCH、BSV都一样)标准的验证区块程序,这部分代码叫

CheckBlock函数。

为什么独立校验是去中心化共识的重要组成部分

为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?

这是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒绝,因此,该交易就不会成为总账的一部分。

矿工们必须构建一个完美的区块,基于所有节点共享的规则,并且根据正确工作量证明的解决方案进行挖矿,他们要花费大量的电力挖矿才能做到这一点。如果他们作弊,所有的电力和努力都会浪费。

独立校验的作用

独立校验还确保了诚实的矿工生成的区块可以被纳入到区块链中,从而获得奖励。行为不诚实的矿工所产生的区块将被拒绝,这不但使他们失 去了奖励,而且也浪费了本来可以去寻找工作量证明解的机会,因而导致其电费亏损。