乐读窝

区块链浪潮:连接技术与应用

乐读窝 > 科普学习 > 区块链浪潮:连接技术与应用

第2章 P2P网络

书籍名:《区块链浪潮:连接技术与应用》    作者:贾英昊



2.1  P2P网络的概念


P2P  (  Peer-to-Peer  )网络即点对点网络,是无中心服务器、依靠用户群(Peers)交换信息的互联网体系(图2-1),是分布式网络的一种。通常而言,该网络中各个节点之间的地位是对等的。与有中心服务器的中央网络  C/S  系统(Client-Server)(图2-1)不同,点对点网络的每个节点既是客户端,也是服务器。节点之间依靠相互间的连接进行信息交流,各节点共享它们所拥有的资源(如磁盘存储空间、网络带宽、处理器使用率等)来提供服务和内容。因此,当新节点加入网络时,整个系统的容量也相应增大。

图2-1  C/S网络模式和P2P网络模式

与  C/S  网络模式相比,P2P  网络尤其适用于共享文件:在  C/S  结构中,资源存储在一个中心服务器里,在固定的带宽下,请求下载的用户越多,平均下来每个用户的数据传输越慢。而对  P2P  网络而言,许多节点存储着同一份文件的副本,当有人需要下载它时,可以同时从多个节点进行下载,而自己已下载的文件,也可同时上传给其他正在下载的节点,因此网络越大,速度越快。P2P  网络充分利用了网络中其他对等节点的带宽,而不只是利用文件来源节点的带宽。

在共享文件方面的成功,使  P2P  网络广受欢迎,但是由于大部分共享的文件是流行音乐和电影,侵权的问题也使  P2P  网络饱受诟病。在一个典型的  P2P网络中,数据可以随意复制,副本可以任意保存。但是资产显然是不可以随意复制、存在多个副本的。中本聪创建的比特币项目,保留了  P2P  网络的“分布式”特征,也解决了资产在  P2P  网络中转移的问题:资产在不同的地址之间流动,而不是简单“复制”;矿工在交易信息的过程中,将核实资产的去向。以下将对比特币的  P2P  网络进行具体说明,这一模式或可对使用区块链技术解决版权保护等问题提供启发。



2.2  比特币中的P2P网络


在比特币网络中,每个节点可随机连接到其他节点,节点也可随时加入网络或离开网络。整个网络的节点总数是不确定的。各个节点在进行信息更新时,它们并不是实时一致的,而是只需在一定时间内达到一致。也就是说,部分节点的退出或崩溃,并不会带来整个网络的瘫痪;用户的加入和退出并不会对整体网络产生太大影响。

节点与节点之间的信息交换,主要以交易广播的方式体现。交易广播通过泛洪(flooding)的方式来实现。具体来说,节点发起一个交易的时候,会将这笔交易的信息告知所有相邻节点,相邻节点将根据存储的历史交易信息校验这笔交易是否可以进行,如果校验通过,这一交易信息会继续接力传播给下一批相邻节点。交易信息会像涟漪一样在节点群里扩散、传播开来。当节点接收到的交易信息与该节点交易池的信息重合,即表明这一信息已经传播一次,这才终止广播。由于每个交易有独一无二的哈希值,通过哈希值查询交易信息是否重复非常方便。

需注意的是,在  P2P  网络中,由于带宽等原因,信息的传递往往是有延迟的。因此不同节点的交易池内容略有不同。如果有人发起双重支付攻击,并且两笔支付到达了同一个节点,诚实的节点将会仅保留一个交易,另一个不再广播,最终网络中不同的节点可能在短时间内存在记录不同交易的分歧,但是没关系,随着时间的推移,共识机制保证了最终只会记录一笔交易,使得双重支付攻击无法成立。

简要而言,比特币项目在  P2P  网络中建立起一个现金支付系统,主要依靠以下因素:节点之间地位对等;交易信息在节点间以泛洪的方式传播;节点检查交易是否成立;由共识机制确定合法的交易信息。



2.3  P2P网络的局限性与权衡


P2P  网络的优势如容错、可扩展的传输速度、数据安全性等,但在区块链项目中,这是以低交易处理能力为代价的。目前如火如荼的公链竞争中,许多项目都在交易处理能力上大显身手(例如宣称“每秒可处理过万笔交易”等),也从侧面表明了这是现有区块链技术尚待解决的问题。事实上,随着越来越多的节点被添加到其网络中,信息在节点间的传输延迟逐渐积累,信息传播至全网络所需的时间越来越长。因此,P2P  网络项目均需在低交易吞吐量和中心化之间进行权衡。当设置少部分“超级节点”进行交易信息的校核时,可提高交易信息的处理效率,但同时也使得网络变得中心化。在一个所有节点的地位都相同的网络中,所有节点都进行了交易的校验,将造成一定程度的重复劳动与资源浪费。

区块链技术令人兴奋,与其去中心化的特点有很大关联,而去中心化很大程度上是由  P2P  网络作为基础的。P2P  网络是一个非常均衡的构想,然而也需要付出一定的资源作为代价。在均衡的网络与提高工作效率之间,尚需进行取舍。建立一个高效率的点对点网络,还需要我们共同在通信技术上继续进步。