Descripción general
Esta propuesta trata sobre la adición de una recuperación completa de información a la implementación de I2P de BEP9.
Motivación
BEP9 no envía el archivo torrent completo, perdiendo así varios elementos importantes del diccionario, y cambia el total SHA1 de los archivos torrent. Esto es malo para los enlaces maggot, y malo porque se pierde información importante. Las listas de trackers, comentarios, y cualquier dato adicional desaparecen. Un método para recuperar esta información es importante, y debe añadir lo menos posible al archivo torrent. Además, no debe ser circularmente dependiente. La información de recuperación no debe afectar de ninguna manera a los clientes actuales. Los torrents que son sin tracker (la URL del tracker es literalmente ‘sin tracker’) no contienen el campo adicional, ya que son específicos para usar el protocolo maggot de descubrimiento y descarga, que no pierde nunca la información en primer lugar.
Solución
Todo lo que se necesita hacer es comprimir la información que se perdería, y almacenarla en el diccionario de info.
Implementación
- Generar el diccionario de info normal.
- Generar el diccionario principal, y dejar fuera la entrada de info.
- Codificar en Bencode, y comprimir el diccionario principal con gzip.
- Añadir el diccionario principal comprimido al diccionario de info.
- Añadir info al diccionario principal.
- Escribir el archivo torrent.
Recuperación
- Descomprimir la entrada de recuperación en el diccionario de info.
- Decodificar en Bencode la entrada de recuperación.
- Añadir info al diccionario recuperado.
- Para los clientes conscientes de maggot, ahora puedes verificar que el SHA1 es correcto.
- Escribir el archivo torrent recuperado.
Discusión
Usando el método descrito anteriormente, el aumento del tamaño del torrent es muy pequeño, de 200 a 500 bytes es típico. Robert estará enviando con la nueva creación de la entrada de diccionario de info, y no se podrá desactivar. Aquí está la estructura:
diccionario principal {
Cadenas de trackres, comentarios, etc...
info : {
dicc. principal bencodeado y comprimido menos el diccionario de info y toda la otra
información habitual
}
}