Libtorrent 通过 Merkle 哈希获取文件

Libtorrent Get File by Merkle hash

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

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

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