购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.1 区块链中的节点类型

本节将要具体介绍区块链的构架与节点。区块链的去中心化是通过P2P网络实现的。在P2P网络中的每个节点都是相互独立的,节点之间可以直接进行信息传递,不需要第三方机构。区块链网络中,节点主要分为两种:全节点和轻节点。全节点保存了区块链中的全部信息,轻节点只储存了部分信息,它们在不同场景下有不同的应用,下文将对区块链中的P2P网络进行具体介绍。

5.1.1 P2P网络架构

P2P网络是一种点对点的网络结构,网络中的每一个节点都是一个单独的个体,没有主次之分,都处于一种共同的平等状态。P2P网络不需要单独的中心服务系统,每一个节点通过网络来共享资源,这些资源共享的实现无须经过中间第三方就可以直接被其他对等节点访问。在P2P网络中,每一个节点既是这些共享资源的提供者,又是资源的获取者。P2P网络是区块链数据传输的基础,可以说,没有P2P网络,就没有区块链的发展。

P2P网络的优势主要体现在以下5个方面。

(1)去中心化:网络中所有的资源与服务直接存放在节点上,无须中心结构的介入,实现了去中心化。

(2)可扩展性:当P2P网络中加入新的节点时,网络中的需求增加,但与此同时,新节点也会提供相应的资源与服务,这样网络中的资源的供求关系依旧保持平衡。理论上来讲,增加新节点不但不会影响P2P网络的运行,而且会增加信息获取效率,这就是可扩展性。

(3)健壮性:P2P网络中的节点都是相互独立的,节点是以自组织的方式建立起来的,允许节点自由地加入与离开网络。当一个节点出现故障时,并不会影响到整个网络,这一特性使P2P网络具有很强的耐攻击性和健壮性。

(4)隐私保护:P2P的信息传递是在各节点之间进行的,不需要经过集中环节,这大大降低了信息泄露的概率。另外,每一个节点都会提供中继转发功能,从而使节点能够更好地隐藏在众多的网络实体中,向数据发送方提供更好的匿名隐私保护。

(5)负载均衡:P2P网络的每一个节点不仅是资源的提供者而且是资源的使用者,资源分布在多个节点上,使网络负载更加均衡。

根据节点的连接分布方式,P2P网络可以分为两大类:一种是非结构化的P2P网络,另一种是结构化的P2P网络。

在非结构化的P2P网络中,两个节点之间的连接是随机的,没有经过特定的拓扑结构连接。这种结构网络建立起来很容易,少数节点加入或退出时,P2P网络仍然能够保证其稳定性。但是非结构化的网络也存在一个明显的缺点,即索引效率低。当一个节点想要从网络中寻找信息时,需要向全网中的所有节点询问,这样会耗费大量的时间,如果请求的信息很少见,那么请求失败的概率就会很大。

而结构化的P2P网络的各个节点是通过特定的网络拓扑结构连接的,这会大大提升信息的索引效率。但是,当它遇到大量的节点退出时,网络结构会遭到破坏,效率也会随之大幅下跌。

接下来介绍P2P网络与传统客户端/服务器(Client/Server,C/S)结构网络。

在传统的C/S网络架构下,客户端进行操作时需要先向服务器请求,服务器再对其做出响应。这种情况下,客户端越多,服务器的负担越重,当客户端数量超出服务器处理能力时,就会出现网络堵塞的现象。在公链网络中,由于去中心化的要求,不需要集中向一个中间结构传递信息,节点之间只需要点对点进行信息交流,就能够有效地负担网络负载,使P2P网络的容量远远超过传统的C/S结构网络。

公链采用P2P网络架构的最主要原因是,在去中心化的世界中,不存在一个可信的服务器节点,任何带有服务器节点的存在都与去中心化的宗旨背道而驰。此外,公链由于其公开性,其网络结构需要具有容纳上万乃至数十万个节点的能力,在这种情况下,P2P网络结构是最佳选择。P2P网络中的每一个节点都拥有自己的区块链的数据副本,不需要依赖任何其他节点就可以验证区块和交易的合法性。区块链网络中的节点主要有两种,一种是全节点,另一种是轻节点,下文将详细叙述它们的功能和区别。

5.1.2 全节点

全节点是一个保存着区块链中所有交易信息的节点。以比特币系统为例,在比特币系统中,全节点维护一个完整的区块链数据副本,它包含了从创世块到最新的区块中所有账户的交易历史。全节点是比特币网络中功能最为丰富、安全性最高的节点,它管理着用户的钱包,用户可以使用全节点在比特币网络上发布交易。这种全节点与一个单独的电子邮箱服务器相似,不需要任何其他服务器或第三方服务器就能独立处理信息。

全节点的功能主要有4个。一是区块链数据库。全节点维护一个完整的区块链副本,同时为其他轻节点提供服务,如简单支付验证(SPV)。二是钱包。全节点管理用户的账户,用户可以使用全节点发起交易,也可以使用全节点生成收款地址,接收他人的转账。三是路由。全节点收到邻居节点转发的交易和区块时,对它们进行验证,如果是合法的交易和区块,全节点会继续将这些数据转发给其邻居节点,全节点的路由功能及P2P节点的健壮性保证了区块链网络中任意一笔交易最终都能传播至整个网络。四是挖矿。全节点可以收发交易和区块,参与到挖矿中。全节点从自己的交易池中选择一批交易费最高的交易,将这些交易打包成区块,然后进行挖矿并获得挖矿奖励。需要指出的是,比特币0.16版本之后,客户端版本已经不再支持CPU挖矿,这是因为比特币当前的挖矿难度所需要的算力已经远远超出了普通CPU的计算能力,使用普通个人计算机几乎不可能挖出一个区块。因此,当前比特币中的矿工已经采用专门用于高速哈希计算的ASIC芯片进行挖矿了。

全节点有如下特点:全节点需要参与到区块链网络中的共识,并且维护整个区块链数据库。因此全节点一直是在线状态,在本地硬盘上维护完整的区块链信息,基于此,全节点可以独立检验交易的正确性;此外,全节点一直在监听网络中的交易,并且将合法的交易纳入交易池;全节点决定哪些交易会被打包到区块里,同时也会监听网络中来自其他节点产生的新区块。由于区块链共识通过竞争产生,区块链中可能会产生分叉链,全节点有权决定沿着哪一条链挖下去。

由于全节点维护所有的区块链交易信息,这也导致区块链存储的信息很大,动辄数百GB甚至TB。在比特币早期,所有的节点都是完整的节点,发展到今天,在维护一个全节点需要的资源消耗越来越多的情况下,对于普通用户来说,维护一个轻节点是更好的选择。

5.1.3 轻节点

轻节点仅仅储存所有区块链中区块头的信息及其他与自己有关的信息,而不需要储存全部区块链数据,具有如下特点。

(1)轻节点不需要一直在线,也不需要参与区块链中的共识,当轻节点上线时,只需要向全节点获取最新的区块头即可。

(2)存储内容少。轻节点只存储所有区块链中的区块头数据。比特币系统中,一个区块头的大小大概为80字节,假定当前区块高度为60万,一个轻节点存储区块头也只需要48 MB,占用的存储很小。因此,轻节点可以在移动设备上运行。

但轻节点有一个较大的缺陷:无法独立验证交易数据的真实性。由于轻节点只存储区块头不存储区块中的交易,当钱包收到对方发送的交易时,无法确认这笔交易是否已经被确认上链,这时就需要借助全节点进行确认。轻节点确认交易的行为称为简单支付验证。 vVwixml3R0UQiDT9BEjKFsCA0PtRrDVPCxnRAoPtvDIRn9zBK2zJzQsl+7A3VGa7

点击中间区域
呼出菜单
上一章
目录
下一章
×