http://www.7klian.com

一文相识以太坊 P2P 网络事情道理

假如你想查阅更多关于以太坊 P2P 网络的内容,可以拜见下面一些由以太坊社区成员孝敬的文章:

以太坊的 P2P 网络是如何事情的?

以太坊的官方客户端节点软件Geth,基于一种包围层维护机制 (称作 Kademlia 漫衍式哈希表)实现了对等节点发明协议(RLPx 节点发明协议)。固然 Kademlia 是为了在 P2P 网络中有效地定位和存储内容而设计的,以太坊的 P2P 网络只用它来发明新的对等节点。

当某个客户端第一次启动时,它的 db 是空的,只知道 6 个硬编码的引导节点。随后,当客户端开始发明对等节点,客户端依据上面描写的机制,将节点插手 db 和 table。

Kademlia

以太坊网络中,每个客户端节点都配备有一个enodeID,之后将此 ID 用 SHA3 算法散列为一个 256 位的值。Kademlia 利用 XOR 操纵界说间隔,因此两个 256 位的数字之间的间隔是他们的按位异或值(bitwise exclusive OR)。每个对等节点都拥有一个包括 256 个差异的桶(buckets)的数据布局,每个桶 i 中存储与本节点间隔在 2i-1 到 2i 之间的 16 个节点。为了发明一个新的对等节点,以太坊节点选择本身作为方针 x,从桶中寻找到 16 个与方针 x 最近的节点,之后请求这 16 个节点,让它们从本身的桶中各找出 16 个与方针 x 「更近」 的节点并返回,这样以来,会获得至多 16x16 个新发明的节点。之后请求这 16x16 个新发明的节点中离方针 x 最近的 16 个节点,让它们返回与 x 更近的 16 个节点。这个进程一连迭代,直到没有新节点被发明。

「Peer to Peer」 by Felix Lange

第二种数据布局是称作 table 的短期数据库。当客户端重启时 table 是空的。table 包括 256 个桶,每个桶存储至多 16 笔记录。每笔记录存储其他以太坊节点的信息——节点的 ID,,IP 地点, TCP 端口和 UDP 端口。假如记录中的某个节点对付 findnode 动静持续响应失败,多于 4 次时将被移出 table。

原文标题:《科普 | 领略以太坊的 P2P 网络》(Understanding Ethereum’s P2P Network)

Vasilios Darlagiannis, (2010). P2P Systems and Overlay Networks, [PDF file] Retrieved from:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读