有人知道分布式哈希映射(DHT)的好java框架吗?
前段时间我和Overlay Weaver一起工作,但是这里缺少一个好的文档,所以我只用它来制作一个丑陋的黑客原型......但现在我需要可靠的代码.或者是否有人为OverlayWeaver找到了一个好的文档?
如果dht框架支持Chord或Kademlia并且可以在我的java应用程序中调用它将是完美的.
或者有人知道更好的方法来保存分布式系统中可靠且故障安全的短字符串数据吗?
我正在考虑实现一个 DHT,其中通过将后继地址添加到存储的值中来链接数据项,如果每个节点可以具有以下三种有序状态之一:空 -> 数据 -> 数据,并且所有对等点都会获得后继地址一致且正确的顺序?或者这里有可能出现永久分叉吗?
好吧,让我们说我有一个DHT运行10个客户端,其中包含大量数据.
恶意客户端运行我的程序的备用版本是否相对容易,这可能会对我的数据执行潜在的破坏性操作(例如替换密钥,删除密钥,更改数据,删除整个DHT等等). ..)
我该如何防止这种情况发生?
我只能想到:
校验和验证程序,只允许那些连接.但这会被黑客攻击吗?
使用某种密钥验证每个DHT客户端.
有谁知道如何防止这种情况?提前致谢.
我已经研究 DHT,尤其是 kademlia 一段时间了。我正在尝试实现一个在 Kademlia DHT 上运行的 p2p 网络。我希望能够向整个网络传播消息。根据我的研究,使用了八卦协议,但是当我已经使用 dht 来存储对等点时,添加另一个全新的协议来传播消息似乎很奇怪。是否有像 Kademlia 这样的可以在 DHT 拓扑上工作或与 DHT 拓扑一起工作的八卦协议?
我有一个小网络,我想用Bittorent跟踪器服务.但重要的是,在此网络中共享的信息不会意外地溢出分布式哈希表,从而允许未知对等体累积.我拥有跟踪器的所有常规功能,但我不知道如何强制客户端连接禁用某些控件(即DHT)并将群中的其他人暴露给外部连接.
协议规范中是否存在类似的控件?如果没有,实施它会涉及什么?
为什么Kademlia Distributed Hash Table使用UDP作为其网络传输协议,即使它不可靠?
节点:DHT 网络上的客户端。
Peers:尝试下载特定资源的客户端。
假设 DHT 网络是一个连通图,但没有节点可以访问所有其他节点(这种消费与 DHT 网络覆盖的互联网是完全连接的普遍看法相反)。
叠加在 DHT-network 上的 Peer-network 还是连通图吗?为什么?
我一直在做一些DHT抓取来弄清楚各种 BitTorrent 客户端的受欢迎程度。在我收集的结果中,一些最常见的版本字符串来自将自己标识为“BigUp”的客户端,但我找不到任何具有此名称的内容。以下是BEP10握手返回的版本字符串示例:
BigUp/11 libtrt/1.1.0.0 Downloader/12430
BigUp/11 libtrt/1.1.0.0 Downloader/12440
BigUp/11 libtrt/1.1.0.0 Downloader/12450
BigUp/12 libtrt/1.2.0.0 Downloader/12460
BigUp/12 libtrt/1.2.0.0 Downloader/12470
BigUp/12 libtrt/1.2.0.0 Downloader/12480
BigUp/12 libtrt/1.2.0.0 Downloader/12490
BigUp/12 libtrt/1.2.0.0 Downloader/12500
BigUp/12 libtrt/1.2.0.0 Downloader/12510
BigUp/12 libtrt/1.2.0.0 Downloader/12520
BigUp/12 libtrt/1.2.0.0 Downloader/12530
BigUp/12 libtrt/1.2.0.0 Downloader/12540
BigUp/12 libtrt/1.2.0.0 Downloader/1940
BigUp/12 libtrt/1.2.0.0 Downloader/1950
BigUp/12 libtrt/1.2.0.0 Downloader/1960
BigUp/12 libtrt/1.2.0.0 Downloader/1970
BigUp/12 libtrt/1.2.0.0 Downloader/1980
BigUp/12 libtrt/1.2.0.0 Downloader/1990
BigUp/12 libtrt/1.2.0.0 Downloader/2010
Run Code Online (Sandbox Code Playgroud)
版本号一直到BigUp/5 libtorrent/0.16.0.0
,但这些并不常见。此外,他们共享的种子也很奇怪。以下是最常见的信息哈希示例:
3b2e1b303703b733f6407becc1140eae937d55ac
3b2e1b303703b733f6407becc1140eae937d55ac
4b21bf8f097a4e018ba2d2badf353012d686cd17
b16a48675e0fdb371238e4a6b075807bbd544c40
bd2045ad99b2f29f655ba566f26aedf50eae2780
d89a935c6e8c151b7b1a8278597a8dcba7d468b3
dbab2707740d3d3dadb16d1ea4d602959573cd05
dbf9a9a2815488c32a9c44aeb0af8ad04a33ebac
dde57ab80b8d0313f823e22e70af75ef6ec22882
debeeb0f4cad5861b322e55b8b18ed11169a27f4
Run Code Online (Sandbox Code Playgroud)
在我设法解析为 torrent …
我想显示全息链中特定应用程序的所有用户列表,以使活跃用户能够与某人达成协议。给定数据流的链接性质,获取所有用户列表的最佳实践是什么?
创建一个链接到所有用户以访问完整用户列表的中央代理是否有意义?有没有一种更好的方法?
我正在开发一个使用 js-ipfs 的浏览器应用程序。在我发布 ipfs 地址(例如 /ipfs/Qm...)后,我成功获取返回的名称(即 /ipns/Qm..)。但问题是我无法在其他任何地方(本地节点的网关、公共网关等)解决它,但在同一个浏览器应用程序中,这是非常有问题的......
如何解决这个问题?我相信这与浏览器不支持 DHT 有关,但不知道如何解决它......
我在DHT流量的bencoded字典中找到了一个条目,由BitTorrent生成,我不明白,也无法在http://bittorrent.org/beps/bep_0005.html的DHT规范中找到任何内容.
使用wireshark进行数据包查询和响应的示例:
query = {"a":{"id":".=...4...R..%..s~..;"}, "q":"ping", "t":"..oo", "v":"UThK", "y":"q"}
response = {"r":{"id":"..=..x......o....w/%"}, "t":"..oo", "v":"UT..", "y":"r"}
Run Code Online (Sandbox Code Playgroud)
完整的十六进制转储可以在这里找到:http://pastebin.com/SMB4f8LR.
此示例中的条目是"v":"UThK"
查询和"v":"UT.."
响应中的条目.它的目的是什么?
有人可以帮我理解160位(SHA-1)哈希中最重要的字节是什么吗?
我有一个C#代码调用加密库来计算数据流中的哈希码.结果我得到一个20字节的C#数组.然后我从另一个数据流计算另一个哈希码,然后我需要按升序放置哈希码.
现在,我正在努力了解如何比较它们.显然我需要从另一个中减去一个,然后检查结果是否为负,正或零.从技术上讲,我有2个20字节的数组,如果我们从内存角度看一下开头的最低有效字节(较低的内存地址)和最后的最高有效字节(较高的内存地址).另一方面,从人类阅读的角度来看它们,最重要的字节在开头,最不重要的是在结尾,如果我没有弄错,这个顺序用于比较GUID.当然,如果我们使用一种或另一种方法,它将给我们不同的顺序.哪种方式被认为是比较哈希码的正确或传统方式?在我们的情况下,这一点尤为重要,因为我们正在考虑实现一个应该与现有的哈希表兼容的分布式哈希表.
dht ×13
bittorrent ×5
kademlia ×5
networking ×3
p2p ×2
.net ×1
browser ×1
c# ×1
distributed ×1
endianness ×1
gossip ×1
graph ×1
holochain ×1
ipfs ×1
java ×1
javascript ×1
js-ipfs ×1
sha1 ×1
udp ×1