Возможно заголовок получился неправильный, но все очень просто. Есть неограниченное количество клиентов (человек, который пользуется программой) для написания сообщений. Все похоже на форум или чат, но нет сервера, который принимает и отправляет (а значит и синхронизирует) сообщения. Нужно, чтобы общий поток имел сквозную нумерацию, чтобы:1) нельзя было изменить порядок сообщений (время появления)2) передавать сообшения целыми серями.С первым пунктов примерно понятно - нужно, чтобы сообщения отображились в том порядке, в котором были созданы, плюс-минус какое-то разумное время, но чтобы у всех участников порядок был одинаковым. Одинаковый порядок нужен для того, чтобы при запросе вновь подключившегося участника он бы мог запросить: "у меня последнее сообщение номер 1000, есть ли что-то новенькое?". Будет ли система работать (без злоумышленников), если использовать просто метку времени (хватит ли точности часов у пользователей, чтобы не было пропущенных сообщений, например). И будет ли она работать, если злоумышленник укажет меньшее время, чтобы его сообщение появилось раньше какого-либо.То есть нужна какая-то нумерация, которая привязана к уже существующим сообщениям. Сначала показалось, что можно делать хэш сообщений, которые есть у клиента и отправлять его как подпись вместе с новым сообщением, но это не снимает проблемы со "старыми" сообщениями, когда можно посчитать хэш только десяти первых сообщений вместо тысячи(текущего количества).Мне кажется, что эта проблема уже где-то была решена. Вдруг кто-то знает, как такое можно сделать?
|