Решения
Некоторые описанные выше проблемы детально рассмотрены Коэном в работе «Incentives Build Robustness in BitTorrent» (http://bitconjurer.org/BitTorrent/bittorrentecon.pdf).
Архитектура сети BitTorrent предлагает интересные пути решения данных проблем. Следует заметить, что вряд ли какую-то из стратегий можно назвать идеальной, и, скорее всего, в дальнейшем мы станем свидетелями эволюционного процесса, где будут развиваться варианты как решения, так и собственно проблемы:
>■ дефектные файлы. Если на ранней стадии развития Интернета основным источником информации о файле было его имя (взглянув на файл Madonna - Frozen.mp3, вы наверняка догадаетесь о его содержании), то сегодня ввиду причин, описанных выше, на подобную информацию полагаться не стоит. Системы рейтинга файлов также нельзя назвать эффективными - в основном из-за нежелания большинства пользователей лишний раз после загрузки предоставлять свои файлы. В BitTorrent эта проблема решается на более высоком уровне - за содержание файла отвечает его распространитель. Таким образом, информацию о подлинности предоставляемых данных надежнее всего получать на форумах, где публикуются как ссылки на новые торрент-файлы, так и мнения пользователей об их качестве. За использование подобной структуры оценки в свое время высказались и создатели сети eDonkey2000;
>■ пользователи-эгоисты. Пиринговые сети зачастую ведут учет количества отданных пользователем файлов и начисляют соответствующие баллы за предоставленные широкие каналы. Проблема здесь также весьма банальная: информация о баллах хранится у клиента, а следовательно, ничего не мешает ему преднамеренно увеличить их количество. Подобная фикция весьма хорошо отражена в Kazaa Lite, где при подключении к сети FastTrack все клиенты имеют неизменный рейтинг в 1000 баллов (к чему бы?). В BitTorrent данная проблема решена своеобразно - оценки за более широкие каналы
возрастают, однако соответствующая информация хранится у клиента, который загружает файл. Вносит ли это справедливость в систему обмена? В общем-то, не очень, так как баллы начисляются за качество соединения между двумя клиентами. Если компьютер А предложил компьютеру Б весьма широкий канал, то по правилам BitTorrent единственным вознаграждением для А станет возможность приоритетных загрузок с компьютера Б. При условии, что и А, и Б содержат интересную друг для друга информацию, система работает идеально, так как два «щедрых» компьютера по максимуму используют канал связи. Однако если на жестком диске Б ничего ценного нет, то «щедрость» А остается невознагражденной; >• неполные файлы. Участие в системе обмена трекер-сервера дало программистам BitTorrent возможность внедрить алгоритм, предотвращающий появление неполных файлов. Поскольку трекер хранит информацию о сегментах, которые были успешно загружены на каждую машину, то загрузка файла новыми клиентами принудительно начнется с наиболее редкого сегмента. Если клиент BitTorrent загружает крупный файл, разбитый на 200 частей, то это вовсе не означает, что процесс начнется с сегмента №1, а закончится №200. Клиент всегда получает сегмент, занимающий последнее место по распространенности, что в идеале после 200 подключений к центральному серверу даст возможность выложить в пиринговую сеть файл целиком.