Wydanie libtorrent 2.0 z obsługą protokołu BitTorrent 2

Wprowadzono główne wydanie libtorrent 2.0 (znane również jako libtorrent-rasterbar), oferujące wydajną pod względem pamięci i procesora implementację protokołu BitTorrent. Biblioteka jest używana w takich klientach torrentów jak Deluge, qBittorrent, Folx, Lince, Miro i Flush (nie mylić z inną biblioteką libtorrent, która jest używana w rTorrent). Kod libtorrent jest napisany w C++ i rozpowszechniany na licencji BSD.

Wydanie wyróżnia się dodaniem obsługi protokołu BitTorrent v2, w którym odchodzi się od stosowania algorytmu SHA-1, który ma problemy z selekcją kolizji, na rzecz SHA2-256. SHA2-256 służy zarówno do kontroli integralności bloków danych, jak i do wpisów w indeksach (info-słowniku), co narusza kompatybilność z DHT i trackerami. W przypadku linków magnetycznych do torrentów z hashami SHA2-256 proponowany jest nowy przedrostek „urn:btmh:” (w przypadku torrentów SHA-1 i hybrydowych używany jest „urn:btih:”).

Ponieważ zastąpienie funkcji skrótu psuje kompatybilność protokołu (pole skrótu ma 32 bajty zamiast 20 bajtów), specyfikacja BitTorrent v2 została początkowo opracowana bez uwzględnienia kompatybilności wstecznej i przyjęto inne istotne zmiany, takie jak użycie drzew skrótów Merkle w indeksach aby zmniejszyć rozmiar plików torrent i sprawdzić pobrane dane na poziomie bloku.

Zmiany w BitTorrent v2 obejmują także przejście na przypisywanie każdemu plikowi osobnych drzew haszujących oraz zastosowanie wyrównywania plików w częściach (bez dodawania dodatkowego dopełnienia po każdym pliku), co eliminuje duplikację danych w przypadku identycznych plików i ułatwia identyfikację różne źródła plików . Poprawiona wydajność kodowania struktury katalogów torrent i dodane optymalizacje do obsługi dużej liczby małych plików.

Aby wygładzić współistnienie BitTorrenta v1 i BitTorrenta v2, zaimplementowano możliwość tworzenia hybrydowych plików torrent, które oprócz struktur z skrótami SHA-1 zawierają indeksy z SHA2-256. Tych torrentów hybrydowych można używać z klientami obsługującymi tylko protokół BitTorrent v1. Ze względu na nierozwiązane problemy ze stabilnością oczekiwane wsparcie protokołu WebTorrent w libtorrent 2.0 zostało opóźnione do następnej głównej wersji, która ukaże się dopiero pod koniec roku.

Źródło: linux.org.ru