Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 了解Kademlia find_节点并将节点添加到路由表_C#_Kademlia - Fatal编程技术网

C# 了解Kademlia find_节点并将节点添加到路由表

C# 了解Kademlia find_节点并将节点添加到路由表,c#,kademlia,C#,Kademlia,我正在阅读并尝试实现路由表 我使用的是一个160位的地址空间,有一个160k-bucket的数组。据我所知,此实现将根据节点id的前导零位数在存储桶中存储节点id。也就是说,bucket[0]的节点ID有160个前导零(仅1个节点),而bucket[159]的节点没有前导零(占整个地址空间的50%) 问题 使用此实现,在查找距离目标节点最近的k节点时,我是否只需计算目标的前导零并返回k-bucket中的所有内容 使用此实现,我认为没有地方/需要使用Kademlia构建的XOR,因此我认为我的实现

我正在阅读并尝试实现路由表

我使用的是一个160位的地址空间,有一个160k-bucket的数组。据我所知,此实现将根据节点id的前导零位数在存储桶中存储节点id。也就是说,
bucket[0]
的节点ID有160个前导零(仅1个节点),而
bucket[159]
的节点没有前导零(占整个地址空间的50%)

问题 使用此实现,在查找距离目标节点最近的k节点时,我是否只需计算目标的前导零并返回k-bucket中的所有内容


使用此实现,我认为没有地方/需要使用Kademlia构建的XOR,因此我认为我的实现不正确。

首先是一个headup:您链接到的论文是。 160桶阵列路由表布局是一种简化的方法,用于证明本文,稍后的修订版引入了更复杂的基于树的表

也就是说,bucket[0]的节点ID有160个前导零(只有1个节点),bucket[159]的节点没有前导零(占整个地址空间的50%)

可以这样做,但只需计算xor距离中的前导零并将其用作索引就更简单了。即,0共享前缀位=无(0)前导零=
bucket[0]
=距离您自己的ID最远的bucket

问题使用此实现时,在查找距离目标节点最近的k节点时,我是否只计算目标的前导零并返回该k-bucket中的所有内容

下面假设您正在询问如何回答远程节点的查询


平面路由表布局中的存储桶是根据您自己的节点ID进行组织的。当回答对某个任意目标ID的查询时,这不一定与接近该目标的距离一致。因此,最简单的方法是扫描路由表中所有填充的bucket,计算相对于查询目标地址最近的N个节点,然后将它们作为响应返回。避免完全扫描可能会涉及一些问题,但我只针对基于树的布局而不是平面布局进行了此操作。

这应该是两个独立的问题,一个是概念性问题,另一个是如何实现C#@8472中的某些内容,更新后的问题是更重要的概念性问题。