Випуск libtorrent 2.0 із підтримкою протоколу BitTorrent 2

Подано значний випуск бібліотеки libtorrent 2.0 (відома також як libtorrent-rasterbar), що пропонує реалізацію протоколу BitTorrent, ефективну з точки зору споживання пам'яті та навантаження на CPU. Бібліотека задіяна в таких торрент-клієнтах, як Deluge, qBittorrent, Folx, Lince, Miro та Flush (не плутати з іншою бібліотекою libtorrent, яка використовується в rTorrent). Код libtorrent написаний мовою C++ та поширюється під ліцензією BSD.

Випуск примітний додаванням підтримки протоколу BitTorrent v2, в якому здійснено уникнення використання алгоритму SHA-1, що має проблеми з підбором колізій, на користь SHA2-256. SHA2-256 застосовується як контролю цілісності блоків даних, так записів в індексах (info-dictionary), що порушує сумісність з DHT і трекерами. Для магнітних посилань на торренти з хешами SHA2-256 запропоновано новий префікс «urn:btmh:» (для SHA-1 та гібридних торентів використовується «urn:btih:»).

Так як заміна функції хешування порушує сумісність протоколу (поле з хеш 32 байта замість 20 байт) розробка специфікації BitTorrent v2 спочатку велася без огляду на зворотну сумісність і до складу були прийняті інші істотні зміни, такі як використання хеш-дерева Меркла в індексах для скорочення розміру torrent-файлів та перевірки завантажених даних на рівні блоків.

Зі змін у BitTorrent v2 також виділяється перехід до прив'язки окремих хеш-дерев до кожного файлу та застосування вирівнювання файлів частинами (без додавання додаткового заповнення після кожного файлу), що дозволяє позбутися дублювання даних за наявності однакових файлів та спрощує виявлення різних джерел для файлів . Підвищено ефективність кодування структури каталогів у торренті та додано оптимізації для обробки великої кількості дрібних файлів.

Для згладжування співіснування BitTorrent v1 та BitTorrent v2 реалізовано можливість створення гібридних torrent-файлів, які включають крім структур з хешами SHA-1, індекси з SHA2-256. Зазначені гібридні торенти можуть використовуватися з клієнтами, які підтримують лише протокол BitTorrent v1. Підтримка протоколу WebTorrent, що очікується в libtorrent 2.0, через невирішені проблеми зі стабільністю відкладена до наступного значного випуску, який вийде не раніше кінця року.

Джерело: linux.org.ru