lançamento significativo da biblioteca também conhecido como libtorrent-rasterbar, que oferece uma implementação do protocolo BitTorrent, eficiente em termos de consumo de memória e carga de CPU. A biblioteca em clientes torrent como , , , , e (não confundir com outra biblioteca , que é usada no rTorrent). O código do libtorrent é escrito em C++ e sob a licença BSD.
O lançamento é notável suporte ao protocolo , que abandona o uso do algoritmo SHA-1, que possui vulnerabilidades de colisão, em favor do SHA2-256. O SHA2-256 é aplicado tanto para controle de integridade dos blocos de dados quanto para registros nos índices (info-dictionary), o que quebra a compatibilidade com DHT e rastreadores. Para links magnéticos em torrents com hashes SHA2-256, foi proposto um novo prefixo "urn:btmh:" (para SHA-1 e torrents híbridos, usa-se "urn:btih:").
Como a substituição da função de hash quebra a compatibilidade do protocolo (campo com hash de 32 bytes em vez de 20 bytes), o desenvolvimento da especificação BitTorrent v2 foi inicialmente feito sem considerar a compatibilidade reversa e foram aceitas outras mudanças significativas, como o uso de árvores de hash Merkle nos índices para reduzir o tamanho dos arquivos torrent e verificar os dados carregados em nível de blocos.
Entre as mudanças no BitTorrent v2, destaca-se a transição para a vinculação de árvores de hash individuais a cada arquivo e a aplicação de alinhamento dos arquivos por partes (sem adição de preenchimento extra após cada arquivo), o que elimina a duplicação de dados em caso de arquivos idênticos e simplifica a identificação de diferentes fontes para arquivos. A eficiência da codificação da estrutura de diretórios no torrent foi aumentada e foram adicionadas otimizações para lidar com um grande número de arquivos pequenos.
Para suavizar a coexistência do BitTorrent v1 e BitTorrent v2, foi implementada a possibilidade de criar arquivos torrent híbridos, que incluem além das estruturas com hashes SHA-1, índices com SHA2-256.
Esses torrents híbridos podem ser usados com clientes que suportam apenas o protocolo BitTorrent v1. O suporte esperado no libtorrent 2.0 para o protocolo WebTorrent, devido a problemas não resolvidos de estabilidade para o próximo lançamento significativo, que ocorrerá não antes do final do ano.
Fonte: opennet.ru
