Мне интересно, как вы подошли бы к реализации социальной сети, подобной BitTorrent. У него может быть центральный сервер, но он должен иметь возможность работать в режиме одноранговой сети без связи с ним:
Если сеть всего региона отключена от Интернета, она должна иметь возможность передавать обновления от пользователей внутри региона друг другу.
Однако, если какой-то компьютер получает сообщения с центрального сервера, он должен иметь возможность передавать их.
Существует некоторый разумный уровень идентификации; некоторые компьютеры могут рассылать неполные/неверные сообщения или проводить DOS-атаки. Он должен иметь возможность описывать некоторую информацию как полученную от более надежных компьютеров, а некоторую — с менее надежных.
Однако теоретически он должен иметь возможность использовать любой компьютер в качестве сервера, динамически оптимизируя сеть, чтобы обычно только быстрые компьютеры с достаточным количеством Интернета работали в качестве сидов.
Сеть должна иметь возможность масштабироваться до сотен миллионов пользователей; однако каждого конкретного человека интересует менее тысячи каналов.
Он должен включать некоторые функции конфиденциальности, подобные Tor.
Чисто теоретический вопрос, хотя и навеянный недавними событиями :) Надеюсь, кто-нибудь его реализует.