【问题标题】:Libtorrent Get File by Merkle hashLibtorrent 通过 Merkle 哈希获取文件
【发布时间】:2021-05-21 09:01:40
【问题描述】:

如何通过 libtorrent 请求知道其 Merkle 哈希的文件?我会很高兴看到一段代码或者只是对逻辑的描述。我是否需要根据 Merkle 哈希下载 .torrent 文件

【问题讨论】:

  • 你想到了bittorrent协议的哪个特性?
  • @the8472 我希望一台 PC 能够从另一台知道文件 Merkle 根哈希的 PC 下载文件。他们都知道对方的IP

标签: bittorrent libtorrent


【解决方案1】:

首先,有两个 BEP 定义了基于 merkle 树的种子。 BEP30BEP52。两者都无法仅基于其 merkle 哈希共享文件,因为它们需要一些额外的数据来构建最小的可行种子,例如片段大小或文件大小。为了支持多个文件、文件名和其他内容,需要一些额外的元数据,这些元数据最终被封装在 infohash 中。因此,torrent 客户端通常处理信息哈希,而不是文件哈希。

您可以通过选择固定文件名和固定片段大小来绕过其中一些要求,然后为您的文件生成规范的元数据表示。在 libtorrent 中,可以通过 create_torrent() API 创建一个仅 v2 的 torrent(BEP52 没有向后兼容性)来完成。

【讨论】:

  • 那么文件路径、文件大小和 BEP52 Merkle Root 哈希是否足以下载文件?
  • 一般情况下:不可以。种子信息字典可以包含任意附加数据,这就是使用信息哈希的原因。只有在您控制两端的 torrent 创建的特制情况下,您才能使用元数据的受限子集。
猜你喜欢
  • 2016-02-10
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多