База данных, состоящая из одной таблицы со следующими полями:
- идентификатор (ИД);
- выбор пользователя.
"Идентификатор" уникален и либо вводится пользователем (любой набор символов), либо выбирается из предложенных системой. Система (база данных) не знает пользователя, поэтому не может предложить ему идентификатор, который бы был хоть как-то связан с его личностью, кроме как случайно.
"Выбор пользователя" - голос пользователя, выбирается из списка элементов, созданного в момент создания базы.
База данных создаётся тогда, когда все возможные варианты выбора определены.
База доступна всем и каждому в
любой момент времени, начиная с момента создания и до
голосования, которое будет после текущего. До начала голосования любой пользователь может проверить, что база пуста. В момент голосования и после - он может проверить свой голос, предоставить другим пользователям проверить его голос (если сообщит им свой ИД), проверить голоса других пользователей (если они предоставили ему свои ИД) и самое главное - пересчитать результаты голосования.
Для большей "честности" базу данных можно скопировать в любой момент на носитель пользователя (причём "в любой момент" означает, в том числе, в момент активного голосования других пользователей). Это позволит исключить попытки модификации базы в момент голосования и, конечно, после. На скопированной базе можно выполнить все те же проверки, что и на общей базе, но, дополнительно, можно сравнить голоса в скопированной базе с голосами в общедоступной или с голосами из другой скопированной базы (скопированной другим пользователем).
По данным Wikipedia, на 2011 год в России - 142 914 136 человек. Не такая уж это и большая база данных получится.
Недостатки:
- Проблема ввода/выбора ИД - это чисто человеческая проблема: встречаются люди, которые не могут придумать уникальный набор символов :)
- Компрометация системы. Возможна ситуация, когда пользователь до голосования сообщает, что его ИД будет таким-то и он так-то проголосует, но в момент совершения выбора (в кабинке) меняет голос (оставляя заранее выбранный ИД), после чего всем сообщает, что "вот! видите!". (Ситуацию с "занятым" ИД в момент совершения выбора можно решить, если пользователь заранее "забронирует" этот ИД.)
Комментариев нет:
Отправить комментарий