Обзор
Это предложение о добавлении полного восстановления информации в реализацию BEP9 для I2P.
Мотивация
BEP9 не отправляет весь торрент-файл, теряя таким образом несколько важных элементов словаря и изменяя общий SHA1 торрент-файлов. Это плохо для maggot-ссылок и плохо, потому что теряется важная информация. Списки трекеров, комментарии и любые дополнительные данные исчезают. Способ восстановления этой информации важен и должен добавить как можно меньше в торрент-файл. Также он не должен зависеть от чего-либо циклически. Информация для восстановления не должна влиять на текущих клиентов никаким образом. Торренты, которые не имеют трекера (URL трекера буквально ’trackerless’), не содержат этого дополнительного поля, так как специфичны для использования протокола maggot для обнаружения и загрузки, который изначально не теряет информацию.
Решение
Все, что нужно сделать, это сжать информацию, которая будет потеряна, и сохранить её в словаре информации.
Реализация
- Сгенерируйте обычный словарь информации.
- Сгенерируйте основной словарь, и исключите запись информации.
- Преобразуйте в Bencode и сожмите основной словарь с помощью gzip.
- Добавьте сжатый основной словарь в словарь информации.
- Добавьте информацию в основной словарь.
- Запишите торрент-файл
Восстановление
- Распакуйте запись для восстановления в словаре информации.
- Декодируйте запись для восстановления.
- Добавьте информацию в восстановленный словарь.
- Для клиентов с поддержкой maggot теперь можно убедиться, что SHA1 корректен.
- Запишите восстановленный торрент-файл.
Обсуждение
Используя вышеописанный метод, размер увеличения торрента очень мал, типичное значение составляет от 200 до 500 байт. Роберт будет поставлять с новой записью создания словаря информации, и она не сможет быть отключена. Вот структура:
основной словарь {
Строки трекера, комментарии и т.д...
информация : {
сжатый с помощью gzip основной кодированный в bencode словарь за вычетом словаря информации и всей другой обычной информации
}
}