乐趣区

区块链中的P2P

区块链中 P2P 介绍

p2p 是什么
为什么区块链需要 P2P
比特币、以太坊、超级账本和 EOS 的 P2P 对比

P2P 是什么

P2P 作为区块链网络中去中心化的标识 P2P 全称对等式网络(peer-to-peer),又称点对点技术,是无中心服务器、依靠用户群(peers)交换信息的互联网体系;与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。

优势

可在网络的中央及边缘区域共享内容和资源。在客户端 / 服务器网络中,通常只能在网络的中央区域共享内
由对等方组成的网络易于扩展,而且比单台服务器更加可靠。单台服务器会受制于单点故障,或者会在网络使用率偏高时,形为瓶颈。
由对等方组成的网络可共享处理器,整合计算资源以执行分布式计算任务,而不只是单纯依赖一台计算机,如一台超级计算机。
用户可直接访问对等计算机上的共享资源。网络中的对等方可直接在本地存储器上共享文件,而不必在中央服务器上进行共享。

p2p 网络的三个特性

离散性:构成系统的节点并没有任何中央式的协调机制。
伸缩性:即使有成千上万个节点,系统仍然应该十分有效率。
容错性:即使节点不断地加入、离开或是停止工作,系统仍然必须达到一定的可靠度。

为什么区块链会选择 P2P 作为网络基础
上面介绍 P2P 的时候说过,他是无中心服务器的,中心服务器就意味着,当受到攻击的时候,中心服务器一旦宕机,整个网络和服务就会出现问题。而 P2P 网络的优势在于,每个节点既是客户端又是服务端,所以当受到攻击时,任何一台机器垮掉,也不会影响整体的服务。区块链的核心是去中心化,这和 P2P 网络的观念不约而同,所以选择 P2P 的理由也就很充分。

通过区块链技术学习 P2P
首先看一下 P2P 的整体技术点:

首先是如何发现 peers,在 P2P 网络中,发现节点是最开始、最重要和最难的一部分;
节点之间建立链接;发现节点之后,就要进行握手链接,确定节点之间的通信协议等
节点之间的通信;链接建立之后,就可以正常的进行通信了;

以上三点解决之后,基本就可以实现一个简单的 P2P 网络。如果想要实现一个比较完整的 P2P 网络,当然还有很多的细节需要考虑,比如说,节点发现协议,快速定位节点,安全性,节点的加入和退出机制,节点的心跳保活等。我们主要介绍的是 DHT 分布式哈希表的知识点;
比特币、以太坊、超级账本和 EOS 都使用了 DHT 的具体实现;
区块链:Gossip 协议超级账本:Gossip 协议以太坊:Kademlia 协议 EOS:自己实现的 P2P 协议

比特币
节点发现 新节点启动后,想要参与协同运作,必须发现其他的比特币节点,也就是至少需要发现一个比特币网络中的节点,并建立联系。
新节点找到对等体的方法:- 种子节点:使用多个 DNS 服务器(比特币节点专用)来解析比特币节点的 IP。- 节点引荐:如果不知道 DNS,则必须知道至少一个比特币节点的 IP。
节点链接节点向 peer 节点发送 version 消息开始握手,peer 节点需要检验版本,秘钥等数据,验证通过,会返回 verack 消息。握手消息完成,节点发送包含自己 IP 地址和 addr 的消息给 peer 节点,对等节点收到,继续向它的对等节点发出 addr 消息,这样新节点的 IP 地址就会在 P2P 网络中广播出去(Gossip 协议的 Rumor-Mongering);
因为网络中,节点可以随时加入和离开,所以所有的节点必须在一个节点退出的时候,寻找新节点,并且在其他节点启动的时候,对其进行帮组。
超级账本

退出移动版