了解以太坊的P2P网络
摘要: P2P技术有可能通过利用终端设备的丰富资源来缓解集中式系统的缺点,什么又是p2p?
P2P技术有可能通过利用终端设备的丰富资源来缓解集中式系统的缺点,并且自20世纪90年代以来已被eMule,bitTorrent和Skype等流行软件采用。它也是区块链系统的关键组成部分,如比特币或以太网,也就是Shyft网络衍生自的系统。大多数人都听说过P2P,但不知道究竟是什么。
什么是P2P网络?
点对点(P2P)网络是一种覆盖网络 - 也就是说,它建立在公共互联网之上。在数学上,它可以被视为有向图G =(V,E),其中V是网络中的对等体集合,E是对等体之间的链接集合。每个对等体 p具有唯一的标识号pid。E中的链接(p,q)表示p具有向q发送消息的直接路径; 也就是说,p可以使用q的pid作为目的地通过网络向q发送消息。虽然在底层TCP / IP网络中,类似的IP地址可以转换到附近的物理位置,但很少有这种直接相关。
理想情况下,所有对等体都应通过路径连接。由于各个对等体仅具有网络拓扑和对等成员资格的不完整视图,因此覆盖依赖于中间对等体以将消息转发到覆盖的正确区域。图结构在每对对等体之间提供多条路径,并且通过在对等节点改变的情况下启用连通性来促进弹性。在每个对等级别,图表的连接性反映在与其他对等方的邻接关系中。当对等体加入或离开网络时,相邻对等体可能具有不正确的邻接信息。覆盖维护机制用于保持邻接信息的更新,从而保持所有节点之间的连通性。
P2P网络的参与者将其部分资源提供给其他网络参与者。每个对等体都提供计算周期(CPU),磁盘存储和网络带宽,而无需中央协调实例。与传统的客户端 - 服务器模型相比,同行既是供应商又是网络资源的消费者 - 只有服务器供应和客户消费。因此,P2P网络有可能解决客户端 - 服务器模型的局限性,例如可扩展性和单点故障。
对于加入P2P覆盖的对等体,通常存在最小资源贡献阈值。资源贡献应该是公平的。公平性标准可以规定,例如,任何对等体的平均贡献应该在P2P系统的总体平均值的统计界限内。资源贡献也应该是互利的。如果利益与所贡献的资源相当,则激励用户参与P2P应用程序。
以太坊的P2P网络如何运作?
官方的以太坊客户端节点软件Geth基于称为Kademlia DHT的覆盖维护机制实现其对等发现协议(RLPx节点发现协议)。虽然Kademlia旨在有效地定位和存储P2P网络中的内容,但以太坊的P2P网络仅用于发现新的同伴。
Kademlia
在以太坊网络中,每个客户端节点与一个enode ID相关联,然后进行散列将SHA3转换为256位值。Kademlia通过XOR度量定义距离,因此两个256位数之间的距离是它们的按位异或。每个对等体具有由256个不同桶组成的数据结构,其中桶i存储关于距其自己的节点ID在距离2 ^(i-1)到2 ^ i处的16个对等体的信息。为了发现一个新的对等体,以太坊节点选择自己作为目标x,在其桶中查找最接近目标x的16个节点,并要求它们各自从它们的桶“返回”更接近目标x的16个节点,从而导致最多16x16个新发现的节点。从这些16x16个新发现的节点中,最接近目标x的16个节点然后被要求返回更接近x的16个节点。该过程迭代地继续,直到找不到新节点。
同行通讯
Geth使用UDP连接来交换有关P2P网络的信息。有四种类型的UDP消息。一平消息请求乒乓球在返回消息。这对消息用于确定相邻节点是否响应。甲findnode消息请求的邻居包含业经响应节点16个节点的列表的消息。建立对等连接后,Geth节点通过加密和认证的TCP连接交换区块链信息。
数据结构
Geth客户端在两个数据结构中存储有关其他节点的信息。第一个是名为db的长期数据库,它存储在磁盘上并在客户端重新启动后持续存在。该数据库包含每个客户端已经看到节点的信息。每个db条目包括节点ID,IP地址,TCP端口,UDP端口,发送到节点的最后一次ping的时间,从节点接收的最后一个pong的时间,以及节点未能响应findnode消息的次数。如果从节点收到的最后一个pong的时间超过1天,则该节点将从db中删除。
第二个数据结构是一个名为table的短期数据库。客户端重新启动时,该表为空。该表由256个桶组成,每个桶最多可容纳16个条目。每个条目记录有关另一个以太坊节点的信息-其节点ID,IP地址,TCP端口和UDP端口。如果节点连续4次以上未对findnode做出响应,则将从表中删除该节点。
当客户端首次启动时,它具有一个空数据库,并且只知道六个硬编码的引导程序节点。然后,当客户端开始发现对等体时,它会根据上述机制将它们添加到db和table。
(作者:曲速未来安全区,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)
评论(0)
Oh! no
您是否确认要删除该条评论吗?