发布 libtorrent 2.0,支持 BitTorrent 2 协议

libtorrent 2.0(也称为 libtorrent-rasterbar)的主要版本已经推出,提供了 BitTorrent 协议的内存和 CPU 高效实现。 该库用于 Deluge、qBittorrent、Folx、Lince、Miro 和 Flush 等 torrent 客户端(不要与 rTorrent 中使用的其他 libtorrent 库混淆)。 libtorrent 代码是用 C++ 编写的,并在 BSD 许可证下分发。

该版本值得注意的是增加了对 BitTorrent v2 协议的支持,该协议放弃使用存在冲突选择问题的 SHA-1 算法,转而使用 SHA2-256。 SHA2-256 用于控制数据块的完整性和索引(信息字典)中的条目,这违反了 DHT 和跟踪器的兼容性。 对于具有 SHA2-256 哈希值的 torrent 的磁力链接,建议使用新的前缀“urn:btmh:”(对于 SHA-1 和混合 torrent,使用“urn:btih:”)。

由于替换哈希函数会破坏协议兼容性(哈希字段为 32 字节而不是 20 字节),因此 BitTorrent v2 规范最初开发时没有考虑向后兼容性,并采用了其他重大更改,例如在索引中使用 Merkle 哈希树减少 torrent 文件的大小并在块级别检查下载的数据。

BitTorrent v2 的变化还包括向每个文件分配单独的哈希树的转变,以及部分使用文件对齐(无需在每个文件后添加额外的填充),这可以消除存在相同文件时的数据重复,并使其更容易识别文件来源不同。 提高了 torrent 目录结构编码的效率,并添加了处理大量小文件的优化。

为了平滑 BitTorrent v1 和 BitTorrent v2 的共存,已实现创建混合 torrent 文件的功能,其中除了具有 SHA-1 哈希值的结构外,还包括具有 SHA2-256 的索引。 这些混合 torrent 可以与仅支持 BitTorrent v1 协议的客户端一起使用。 由于稳定性问题尚未解决,libtorrent 2.0 中对 WebTorrent 协议的预期支持已推迟到下一个主要版本,该版本要到今年年底才会发布。

来源: linux.org.ru