libtorrent 2.0 una versión que rompe compatibilidades y retrasa a WebTorrent
Se acaba de realizar la introducción de una versión importante de la biblioteca libtorrent (también conocida como libtorrent-rasterbar), llegando esta a su nueva version 2.0, que ofrece una implementación de BitTorrent que es eficiente en términos de consumo de memoria y utilización de CPU.
En esta nueva version lanzada se realizan cambios en el algoritmo usado SHA-1 a SHA2-256, esto debido a que el primero tiene algunos problemas, también se presentan la transición para vincular árboles hash separados a cada archivo y la aplicación y algunas cosas mas.
Para quienes desconocen de la biblioteca, deben saber que esta es utilizada por clientes torrent como Deluge, qBittorrent, Folx, Lince, Miro y Flush (no debe confundirse con la otra biblioteca libtorrent utilizada por rTorrent). El código libtorrent está escrito en C ++ y distribuido bajo la licencia BSD.
Principales cambios en libtorrent 2.0
En esta nueva version presentada de libtorrent 2.0 se destaca por la adición de soporte para el protocolo BitTorrent v2, que se aleja del uso del algoritmo SHA-1, que tiene problemas con la selección de colisiones, a favor de SHA2-256.
Con el uso del algoritmo SHA2-256 se garantiza tanto el control de la integridad de los bloques de datos como para los registros en índices (info-diccionario), lo que rompe la compatibilidad con DHT y trackers.
Aun que el uso de este algoritmo presenta problemas con los enlaces magnet a torrents, es por ello que con hash SHA2-256, se propone un nuevo prefijo «urn:btmh:» (para torrents SHA-1 e híbridos, se usa «urn:btih:»).
Dado que el reemplazo de la función hash rompe la compatibilidad del protocolo (un campo con un hash de 32 bytes en lugar de 20 bytes), el desarrollo de la especificación BitTorrent v2 se llevó a cabo inicialmente sin tener en cuenta la compatibilidad con versiones anteriores y se realizaron otros cambios significativos en la composición, como el uso del árbol hash Merkle en los índices para reducir el tamaño de archivos torrent y verificación a nivel de bloque de los datos descargados.
Los cambios en BitTorrent v2 también destacan la transición para vincular árboles hash separados a cada archivo y la aplicación de la alineación de archivos en partes (sin agregar relleno después de cada archivo), lo que le permite deshacerse de los datos duplicados cuando hay archivos idénticos y facilita la identificación de diferentes fuentes para los archivos.
También se destaca que se mejoró la eficiencia de codificar la estructura de directorios en torrent y se agregaron optimizaciones para procesar una gran cantidad de archivos pequeños.
Por otra parte, para suavizar la coexistencia de la version BitTorrent v1 y BitTorrent v2, es posible crear archivos torrent híbridos que incluyan, además de estructuras con hashes SHA-1, índices con SHA2-256.
Estos torrents híbridos se pueden usar con clientes que solo admiten BitTorrent v1.
Finalmente, también se comenta en las notas de esta nueva version que el soporte esperado del protocolo WebTorrent en libtorrent 2.0 se ha pospuesto hasta la próxima versión significativa, la cual mencionan que no se lanzará hasta finales de año (si todo va sobre la marcha) debido a problemas de estabilidad no resueltos.
Y es que hay que recordar que la integración propuesta de WebTorrent en la biblioteca libtorrent le permitirá participar en la distribución de contenido no solo a través de los navegadores de los visitantes del sitio web, sino también a través de clientes de torrent estacionarios que usan la biblioteca libtorrent, incluidos Deluge y qBittorrent (rTorrent no afecta el cambio, ya que usa una biblioteca libtorrent diferente).
La implementación de WebTorrent agregada a libtorrent se escribe en C ++ y, si se desea, se puede portar a otras bibliotecas y clientes de torrent (el WebTorrent original se escribe en JavaScript).
Por lo tanto, se pueden formar redes híbridas con participantes capaces de interactuar con redes basadas en BitTorrent y WebTorrent.
Si quieres conocer mas al respecto sobre la nota de esta nueva version liberada de la biblioteca libtorrent, puedes consultar los detalles dirigiéndote al siguiente enlace.