比特币网络与P2P

P2P⽹络架构

⽐特币采⽤了基于国际互联⽹(Internet)的P2P(peer-to-peer)⽹络架构。P2P是指位于同⼀⽹络中的每台计算机都彼此
对等,各个节点共同提供⽹络服务,不存在任何“特殊”节点。每个⽹络节点以“扁平(flat)”的拓扑结构相互连通。在P2P⽹络
中不存在任何服务端(server)、中央化的服务、以及层级结构。P2P⽹络的节点之间交互运作、协同处理:每个节点在对
外提供服务的同时也使⽤⽹络中其他节点所提供的服务。P2P⽹络也因此具有可靠性、去中⼼化,以及开放性。早期的国际
互联⽹就是P2P⽹络架构的⼀个典型⽤例:IP⽹络中的各个节点完全平等。当今的互联⽹架构具有分层架构,但是IP协议仍
然保留了扁平拓扑的结构。在⽐特币之外,规模最⼤也最成功的P2P技术应⽤是在⽂件分享领域:Napster是该领域的先
锋,BitTorrent是其架构的最新演变。


⽐特币所采⽤的P2P⽹络架构不仅仅是选择拓扑结构这样简单。⽐特币被设计为⼀种点对点的数字现⾦系统,它的⽹络架构
既是这种核⼼特性的反映,也是该特性的基⽯。去中⼼化控制是设计时的核⼼原则,它只能通过维持⼀种扁平化、去中⼼化
的P2P共识⽹络来实现。


“⽐特币⽹络”是按照⽐特币P2P协议运⾏的⼀系列节点的集合。除了⽐特币P2P协议之外,⽐特币⽹络中也包含其他协议。例
如Stratum协议就被应⽤于挖矿、以及轻量级或移动端⽐特币钱包之中。⽹关(gateway)路由服务器提供这些协议,使⽤⽐
特币P2P协议接⼊⽐特币⽹络,并把⽹络拓展到运⾏其他协议的各个节点。例如,Stratum服务器通过Stratum协议将所有的
Stratum挖矿节点连接⾄⽐特币主⽹络、并将Stratum协议桥接(bridge)⾄⽐特币P2P协议之上。我们使⽤“扩展⽐特币⽹络
(extended bitcoin network)”指代所有包含⽐特币P2P协议、矿池挖矿协议、Stratum协议以及其他连接⽐特币系统组件相
关协议的整体⽹络结构。

节点类型及分⼯

尽管⽐特币P2P⽹络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分⼯。每个⽐特币节点都
是路由、区块链数据库、挖矿、钱包服务的功能集合。⼀个全节点(full node)包括如图所⽰的四个功能:

比特币网络与P2P_第1张图片

每个节点都参与全⽹络的路由功能,同时也可能包含其他功能。每个节点都参与验证并传播交易及区块信息,发现并维持与
对等节点的连接。在图所⽰的全节点⽤例中,名为“⽹络路由节点”的橙⾊圆圈即表⽰该路由功能。
⼀些节点保有⼀份完整的、最新的区块链拷⻉,这样的节点被称为“全节点”。全节点能够独⽴⾃主地校验所有交易,⽽不需
借由任何外部参照。另外还有⼀些节点只保留了区块链的⼀部分,它们通过⼀种名为“简易⽀付验证(SPV)”的⽅式来完成
交易验证。这样的节点被称为“SPV节点”,⼜叫“轻量级节点”。在如上图所⽰的全节点⽤例中,名为完整区块链的蓝⾊圆圈即
表⽰了全节点区块链数据库功能。
挖矿节点通过运⾏在特殊硬件设备上的⼯作量证明(proof-of-work)算法,以相互竞争的⽅式创建新的区块。⼀些挖矿节点
同时也是全节点,保有区块链的完整拷⻉;还有⼀些参与矿池挖矿的节点是轻量级节点,它们必须依赖矿池服务器维护的全
节点进⾏⼯作。在全节点⽤例中,挖矿功能如图中名为“矿⼯”的⿊⾊圆圈所⽰。
⽤⼾钱包也可以作为全节点的⼀部分,这在桌⾯⽐特币客⼾端中⽐较常⻅。当前,越来越多的⽤⼾钱包都是SPV节点,尤其
是运⾏于诸如智能⼿机等资源受限设备上的⽐特币钱包应⽤;⽽这正变得越来越普遍。在中,名为“钱包”的绿⾊圆圈代
表钱包功能。
在⽐特币P2P协议中,除了这些主要的节点类型之外,还有⼀些服务器及节点也在运⾏着其他协议,例如特殊矿池挖矿协
议、轻量级客⼾端访问协议等。 

交易池

⽐特币⽹络中⼏乎每个节点都会维护⼀份未确认交易的临时列表,被称为内存池或交易池。节点们利⽤这个池来追踪记录那
些被⽹络所知晓、但还未被区块链所包含的交易。例如,保存⽤⼾钱包的节点会利⽤这个交易池来记录那些⽹络已经接收但
还未被确认的、属于该⽤⼾钱包的预⽀付信息。
随着交易被接收和验证,它们被添加到交易池并通知到相邻节点处,从⽽传播到⽹络中。

你可能感兴趣的:(区块链)