首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点发现协议-节点表条目

节点发现协议-节点表条目
EN

Ethereum用户
提问于 2019-03-21 14:30:57
回答 1查看 286关注 0票数 2

我目前正在尝试理解ethereum中的节点发现协议。我找到了一些文档,其中之一是:https://github.com/ethereum/devp2p/blob/master/discv4.md

它说,节点之间的距离是通过以下方式确定的

代码语言:javascript
复制
distance(n₁, n₂) = keccak256(n₁) XOR keccak256(n₂)

其中n是节点ID。

接下来,有关邻居的信息存储在一个由‘k桶’组成的路由表中。

我不明白的是下面这句话:

代码语言:javascript
复制
For each 0 ≤ i < 256, every node keeps a k-bucket for nodes of distance between 2^i and 2^(i+1) from itself.

假设我们有n1 = 0x80n2 = 0xF0。为了保持简单,我们不散列,只使用id。所以我们得到了以下距离:d = 0x70。现在MSB不同了。我现在把信息储存在哪个桶里?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-03-22 17:29:29

你必须明白,距离越远,它就可以简单地被解读为不同的位。假设n1 = 0x80,以位为单位为1000,000。因此,每个is的遥远位置是这个路由表:

代码语言:javascript
复制
0th 1000 0000
1th 1000 000x
2th 1000 00xx
3th 1000 0xxx
...

每一行都包含k个对等点,其中包含关于所述对等点的信息,例如它们的对等地址、网络地址、.但在论文中,它被称为k桶。

在您的示例中,n1希望与n2通信,然后它将检查它的路由表,并查看远处是:

代码语言:javascript
复制
7th 1xxx xxxx

然后,它将把消息发送到k桶,在本例中,它只是n2,所以它将直接发送给n2。

想了解更多信息,我建议你看这个视频:https://www.youtube.com/watch?v=w9UObz8o8lY。或者你想深入挖掘这篇论文:https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/68628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档