剖析区块链(八):核心技术之P2P网络

看到P2P大家第一印象可能会是网络借贷、信息中介等概念,会想到宜人贷、人人贷、陆金所等平台。这种P2P借贷平台与我们所说的区块链中的P2P并不是

同一个东西,但却与区块链中的P2P有共通之处,

在P2P借贷平台中,通过网络服务点对点地撮合借款人和出借人。在区块链中是如何做到的呢?今天就来带领大家了解一下被誉为区块链系统中“重要基石”的P2P技术。

剖析区块链(八):核心技术之P2P网络

P2P,即Peer to Peer,翻译为点对点,常称之为对等网络。是一种没有中心服务器、依靠用户群交换信息的互联网体系。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能。

传统的中央网络系统是C/S结构,即client/server(客户端/服务端),都有一个中心化的服务器,我们用所用的客户端应用发出请求,然后服务器给我们返回一些行为、数据之类。日常生活中我们去一些论坛贴吧发帖或者写评论,过程一般都是:写一段文字点击发送之后,这段文字通过网络传输发送到贴吧的中央服务器里,然后服务器再将这段文字展现在贴吧,让每个人都能看见。包括我们常用的支付宝、微信等应用去转账的时候,给对方打的钱并不是我们表面所见那样对方直接就收到了,而是要先经过它们中心化的服务器去清算,再转交给对方手里。

这种中心化的服务器就像是枢纽站一样,掌控着所有用户的数据,管理很方便,同时缺点是显而易见的:一旦崩溃的话,就会导致全网的服务挂掉,比如之前的鹿晗事件导致微博服务器瘫痪。在安全性方面,如果中央服务器被黑客入侵,或者病毒感染,就能够很快的将病毒辐射到所有的客户端用户,如果用户数量很庞大的话,甚至会影响到社会的稳定。中央服务器对用户数据的掌控性太强,如果一个商家道德底线过低,可能会肆意分析、售卖我们的数据;这些都是中心化服务器

的潜在问题;

剖析区块链(八):核心技术之P2P网络

而对等网络(P2P)的出现,其初衷便站在了上述那种中心化网络的的对立面。在对等网络里,每一个网络节点,所具有的功能,在逻辑上是完全对等的,全网无特殊节点,不存在谁是服务端,谁是客户端;每一个节点在对外提供服务的时候,也在使用别的节点为自己提供类似的服务;在P2P网络中,每个网络节点,具有相同的数据收发权限,也就是每一个节点都可以对外提供全网所需的全部服务;也正是因为这,任何一个节点垮掉,都不会对整个网络的稳定性构成威胁。

区块链系统之所以选择P2P作为其组网模型,就是因为两者的出发点都是去中心化,可以说具有高度的契合性。中本聪在白皮书中提过,在电子现金系统中,第三方系统是多余的,没有价值,意思就是整个系统不要依赖任何特殊的第三方来完成自身系统的运转。P2P网络的优势就是全网平等、无特殊节点,两者的思想高度契合,P2P技术也已发展成熟,所以对于区块链来说是一大利器。并且如果实现真正意义上点对点式的交易

,那么无疑是一个突破性的技术,我们普通人可以省下一大笔之前被中介拿走的“中间费”,在安全性能方面也将更加可靠。

由于对等网络,全网无特殊节点,每个节点都可以提供全网所需的全部服务,没有中心节点把控全网发号施令,保证了数据的自由流通,平等手法,保证了区块链系统在底层通信信道上的平等性,正是因为P2P网络的这些优势特性,可以说对等网络奠定了区块链系统的重要基石;

根据结构可以将P2P系统细分为四种拓扑形式:

一、 中心化拓扑:即存在一个中心节点保存了其他所有节点的索引信息,索引信息一般包括节点 IP 地址、端口、节点资源等;

二、 全分布式非结构化拓扑:移除了中心节点,在 P2P 节点之间建立随机网络,就是在一个新加入节点和 P2P 网络中的某个节点间随机建立连接通道,从而形成一个随机拓扑结构。新节点加入该网络的实现方法也有很多种,最简单的就是随机选择一个已经存在的节点并建立邻居关系。

剖析区块链(八):核心技术之P2P网络

例如比特币,使用 DNS 的方式来查询其他节点,DNS 一般是硬编码到代码里的,这些 DNS 服务器就会提供比特币节点的 IP 地址列表,从而新节点就可以找到其他节点建立连接通道。新节点与邻居节点建立连接后,还需要进行全网广播,让整个网络知道该节点的存在。全网广播的方式就是,该节点首先向邻居节点广播,邻居节点收到广播消息后,再继续向自己的邻居节点广播,以此类推,从而广播到整个网络。这种广播方法被称为泛洪机制,该机制存在两个问题:泛洪循环(节点 A 发出的消息经过节点 B 到 节点 C,节点 C 再广播到节点 A,这就形成了一个循环)和响应消息风暴问题(如果节点 A 想请求的资源被很多节点所拥有,那么在很短时间内,会出现大量节点同时向节点 A 发送响应消息,这就可能会让节点 A 瞬间瘫痪)。

三、 全分布式结构化拓扑:将所有节点按照某种结构进行有序组织,比如形成一个环状网络或树状网络。而结构化网络的具体实现上,普遍都是基于 DHT(Distributed Hash Table,分布式哈希表) 算法思想。DHT 只是提出一种网络模型,并不涉及具体实现,主要想解决如何

在分布式环境下快速而又准确地路由、定位数据的问题。具体的实现方案有 Chord、Pastry、CAN、Kademlia 等算法,其中Kademlia是以太坊网络的实现算法,很多常用的 P2P 应用如 BitTorrent、电驴等也是使用Kademlia。

四、 半分布式拓扑:吸取了中心化结构和全分布式非结构化拓扑的优点,选择性能较高(处理、存储、带宽等方面性能)的结点作为超级结点(英文表达为SuperNodes或者Hubs),在各个超级结点上存储了系统中其他部分结点的信息,发现算法仅在超级结点之间转发,超级结点再将查询请求转发给适当的叶子结点。通俗点说:一个新的普通节点加入,先选择一个超级节点进行通信,该超级节点再推送其他超级节点列表给新加入节点,加入节点再根据列表中的超级节点状态决定选择哪个具体的超级节点作为父节点。这种结构的泛洪广播仅发生在超级节点之间,就避免了大规模泛洪存在的问题了。

半分布式结构也是一个层次式结构,超级结点之间构成一个高速转发层,超级结点和所负责的普通结点构成若干层次。EOS和如今的比特币都是采用的该网络结构

剖析区块链(八):核心技术之P2P网络

不同结构的 P2P 网络,会有不同的优点和缺点,结合不同的使用场景,很多项目都是选择最优最适合的P2P网络结构来满足不同的要求。

以上就是对于区块链中P2P的介绍,欢迎大家评论转发,如果对你有所帮助不胜荣幸。


分享到:


相關文章: