Visão Geral
Esta proposta é sobre adicionar recuperação total de informações à implementação do BEP9 no I2P.
Motivação
O BEP9 não envia o arquivo torrent inteiro, perdendo assim vários itens importantes do dicionário, e altera o total do SHA1 dos arquivos torrent. Isso é ruim para links maggot e ruim porque informações importantes são perdidas. Listas de rastreadores, comentários e qualquer dado adicional desaparecem. Um meio de recuperar essas informações é importante, e precisa acrescentar o mínimo possível ao arquivo torrent. Também não deve depender de forma circular. A informação de recuperação não deve afetar os clientes atuais de nenhuma maneira. Torrents que não possuem rastreador (a URL do rastreador é literalmente ‘sem rastreador’) não contêm o campo extra, pois são específicos para usar o protocolo maggot de descoberta e download, que não perde a informação em primeiro lugar.
Solução
Tudo o que precisa ser feito é comprimir a informação que seria perdida e armazená-la no dicionário de informações.
Implementação
- Gerar o dicionário de informações normal.
- Gerar o dicionário principal, deixando de fora a entrada de informações.
- Codificar com Bencode e comprimir o dicionário principal com gzip.
- Adicionar o dicionário principal comprimido ao dicionário de informações.
- Adicionar informações ao dicionário principal.
- Escrever o arquivo torrent.
Recuperação
- Descomprimir a entrada de recuperação no dicionário de informações.
- Decodificar a entrada de recuperação com Bencode.
- Adicionar informações ao dicionário recuperado.
- Para clientes com reconhecimento maggot, agora você pode verificar se o SHA1 está correto.
- Escrever o arquivo torrent recuperado.
Discussão
Usando o método delineado acima, o aumento no tamanho do torrent é muito pequeno, de 200 a 500 bytes é típico. Robert será distribuído com a nova criação de entrada do dicionário de informações, e isso não poderá ser desligado. Aqui está a estrutura:
dicionário principal {
Strings de rastreadores, comentários, etc...
info : {
dicionário principal bencode comprimido com gzip menos o dicionário de informações e todas as outras
informações usuais
}
}