gpt4 book ai didi

algorithm - Kademlia iterativeFindNode 操作是否在 k-buckets 中存储找到联系人?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:45:45 25 4
gpt4 key购买 nike

遵循 XLattice 中的 Kademlia 规范,我想知道 iterativeFindNode 操作的确切工作原理以及它对引导和刷新存储桶有何用处。文件说:

At the end of this process, the node will have accumulated a set of k active contacts or (if the RPC was FIND_VALUE) may have found a data value. Either a set of triples or the value is returned to the caller. (§4.5, Node Lookup)

找到的节点将返回给调用者,但规范没有指定返回后如何处理这些值。特别是在刷新和引导的上下文中:

If no node lookups have been performed in any given bucket's range for tRefresh (an hour in basic Kademlia), the node selects a random number in that range and does a refresh, an iterativeFindNode using that number as key. (§4.6, Refresh)

A node joins the network as follows: [...] it does an iterativeFindNode for n [the node id] (§4.7, Join)

运行 iterativeFindNode 操作本身是否足以刷新联系人的 k 桶,或者规范是否忽略了应将结果插入联系人桶?

注意:iterativeFindNode 操作使用底层 RPC 并通过它们可以更新指定的 k-buckets:

Whenever a node receives a communication from another, it updates the corresponding bucket. (§3.4.4, Updates)

但是,只有 FIND_NODE RPC 的接收者会被插入到 k-buckets 中,来自该节点的响应(包含 k-contacts 列表)将被忽略。

最佳答案

However, only the recipient of the FIND_NODE RPC will be inserted in the k-buckets, and the response from that node (containing a list of k-contacts) will be ignored.

我不能代表 XLattice,但在 bittorrent kademlia 实现方面工作让我觉得很奇怪。

传入请求未验证为可达节点(NAT 和防火墙问题),而对传出 RPC 调用的响应是节点确实可达的良好指标。因此传入请求只能添加为尚待验证的暂定联系人,而传入响应应立即用于路由表维护。

但是区分响应中包含的三元组和响应本身很重要。三元组未经验证,另一方面,响应本身可以很好地验证该节点的 active 。

总结:

传入请求

  • 对路由表半有用
  • 需要测试可达性

传入响应

  • 立即对路由表有用

响应中的元组

  • 自己没有用
  • 但您最终可能会在查找过程中访问它们,因此它们可以成为响应

关于algorithm - Kademlia iterativeFindNode 操作是否在 k-buckets 中存储找到联系人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24402802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com