Проект "Свободные голосования"

Электронная системы голосований через интернет
Текущее время: 24 ноя 2024, 01:44

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 214 ]  На страницу 1, 2, 3, 4, 5 ... 22  След.
Автор Сообщение
СообщениеДобавлено: 25 сен 2011, 01:04 
Не в сети
Аватара пользователя

Зарегистрирован: 29 авг 2011, 22:10
Сообщения: 214
Откуда: С-Петербург
Итак, подумал я тут намедни о делах наших скорбных. И посетили меня мысли, вроде как не безинтересные. Ибо должно оно быть крайне просто и надёжно.

За основополагающие принципы берём - распределённо, защищённо (зашифрованно) и устойчиво к любым локальным отказам.

Для упрощения, предлагаю рассмотреть сначала систему без шифрации, т.е. в предположении что данные невозможно фальсифицировать, а систему шифрации наложить отдельно, т.е. она должна быть независимой от основной логики. Что бы это осуществить, вся работа должна происходить в виде обмена файлами, прямого и-или безадресного.

Система должна иметь субъектов обладающих правом голоса (граждан) и давать возможность проводить между ними голосования.
Для этого нужно следующее:
1. каждый гражданин должен иметь свой уникальный идентификатор (SZ).
2. каждый гражданин должен иметь возможность поставить на голосование один вопрос в оговорённый промежуток времени.
3. каждый гражданин должен иметь возможность получить список всех поставленных в данный момент на голосование вопросов и проголосовать по любым из них.
4. каждый гражданин должен иметь возможность передать право голоса по любому вопросу любому другому гражданину и отозвать его обратно в любой момент.
5. каждый гражданин должен иметь возможность проверить, как был учтён его голос в голосовании по любому поставленному вопросу.

Из этого видно, что нужно иметь ещё две сущности, т.е. вопрос поставленный на голосование (QS) и результат проведённого голосования (RF).

Вопрос поставленный на голосование (QS), это собственно текст вопроса и момент времени окончания голосования о нему. Результат голосования, это сам вопрос (QS) и список идентификаторов граждан со сделанным ими выбором (SZ_ANS). Т.е. конечным документом однозначно выражающем волю граждан является результат голосования (VR).

Работает это так:
Некий гражданин формулирует вопрос для голосования, т.е. создаёт соответствующий файл и выкладывает его в распределённую сеть.
Все желающие могут считать этот файл и проголосовать, т.е. создать файл голоса, содержащий ссылку на вопрос, ID проголосовавшего гражданина и его решение. Этот файл так же выкладывается в распределённую сеть.
Все, кого интересует результаты голосования по данному вопросу, постоянно сканируют распределённую сеть и загружают появляющиеся там файлы голосов.
В момент времени, когда заканчивается голосование, фиксируются результаты. Массив полученных файлов и является результатом голосования (VR), что и есть окончательный документ.

Здесь есть некоторая сложность - так как для подведения итогов нужно знать количество граждан в текущий момент. А так как число граждан величина не фиксированная, то получать её актуальное значение можно путём проведения голосований-пустышек, на которые клиентскими программами автоматически генерируется голос с любым (так как он не используется) выбором. Число проголосовавших и будет являться актуальным, на данный момент, числом граждан.
Так как голосования по всем вопросам проводятся асинхронно, то для обработки результатов по какому либо голосованию используется ближайший по времени опрос числа граждан.

Передача голоса осуществляется отправкой файла соответствующего содержания от гражданина передающего голос гражданину получающему голос. Аналогично можно передавать и чужие полученные голоса.
Конечно ничто не мешает передать голос сразу нескольким гражданам или, уже передав голос, проголосовать самому. Такие коллизии разрешается при создании массива результатов голосования по времени передачи (акуальна самая поздняя передача голоса) и по глубине вложений передач, (актуальна наименее вложенная).

_________________
Изображение Если бы другие не были дураками, мы бы ими были. (C)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 01:09 
Не в сети
Аватара пользователя

Зарегистрирован: 29 авг 2011, 22:10
Сообщения: 214
Откуда: С-Петербург
Возникает вопрос о разбиении вопросов поставленных на голосование (QS) на группы по каким либо признакам.
Cами группы и признаки принадлежности к ним формируются путём постановки соответствующих вопросов на голосование.
Например гражданин, поставивший на голосование вопросу о создании некой группы, после получения результатов голосования имеет возможность создать файл соответствующего вида и выложить его в распределённую сеть.
В последствии любой гражданин, при постановке своегно вопроса на голосование имеет возможность указать группу (группы), к которым принадлежит этот вопрос.
Так же при передаче голоса, можно указывать группы для каких действительна и группы для каких не действительна передача голоса.

В предложенной схеме вся работа осуществляется клиентскими программами без серверов или каких либо выделенных узлов.
Для работы в режиме голосования клиентская программа должна загружать все файлы текущих вопросов для голосования и автоматически генерировать ответ на опрос "сколько нас ?".
У пользователя отображаются список вопросов (возможно с разбиением на группы, но для этого нужно так же скачивать все существующие в сети файлы групп).
У каждого вопроса так же указано время окончания голосования. После его окончании вопрос убирается из списка.
Пользователь может проголосовать на любой вопрос любое число раз. Актуальным будет последнее решение.
Так же пользователь может поставить интересующий его вопрос в режим фиксации. Тогда программа должна скачивать все файлы с ответами на данное голосование и собирать их в массив результата.
Текущее актуальные результаты голосования отображаются. В момент окончания голосования формируется файл результатов.
Клиентская программа должна так же позволять поставить вопрос на голосование. Т.е. пользователь должен иметь возможность сформулировать вопрос и поставить принадлежность его к группам.

Сложность вызывает обратная связь, т.е. обязательно, что бы предотвратить зафлуживание, нужно ограничить граждан в возможности ставить вопросы на голосования. Хотелось бы сделать это несколькими путями -
Во первых период, с которым можно ставить вопросы должен быть обратно пропорционален числу имеющихся переданных голосов.(И прямо пропорциональным числу граждан).
Во вторых должны быть влияние на этот период результатов предыдущего инициированного голосования. Ведь гражданином может быть и идиот, и просто тролль. Т.е. если по поднятому вопросу воздержалось более заданного значения от числа граждан, то вопрос идиотский и никому не нужный.
Так же сложность обратной связи возникает с отзывом голосов, т.е. некто, получив некое число переданных голосов может пользоваться предоставляеемыми ими льготами.
Например ставить новые вопросы чаще чем остальные. Влиять на результат против желания владельцев голосов, невозможно, но и лишить привелегий тоже затруднительно.

Перечисленные сложности обратной связи вызваны тем, что любое получение (как и любая передача) данных должна быть инициированна самим пользователем.
Соответственно файлы ему не нужные, например запрос на отзыв голоса, он может игнорировать.
Решение тут возможно следующе - периодическое подтверждение своего права голоса. Это так же необходимо в связи с тем, что право голоса должно быть оплачено соответствующим взносом.

Подтверждение права голоса (CF), формируется из электронного чека оплаты взноса на текущий период, числа переданных гражданину голосов и проведённого голосования специального вида "о подтвержении прав".
После формирования файл CF отправляется в распределённую сеть.
Тогда, в дополнение к вышеприведённой схеме, при получении результатов голосования необходимо так же получение и сохранение всех CF файлов проголосовавших пользователей.
Так же при получении файла постановки вопроса на голосование, для проверки необходимо получение CF файла данного пользователя.

В минимальный необходимый набор вроде как всё укладывается. Намедни я разрисую виде диаграмм обменов-взаимодействий, дабы всё стало понятнее.
В настоящее время в таком режиме можно использовать любую пиринговую сеть. Лично я предпочитаю FreeNet.
Клиентская программа такого вида тоже трудности не представляет, ибо у неё интерфейс связи реализуется через готовый клиент пиринговой сети.

_________________
Изображение Если бы другие не были дураками, мы бы ими были. (C)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 01:16 
Не в сети
Аватара пользователя

Зарегистрирован: 29 авг 2011, 22:10
Сообщения: 214
Откуда: С-Петербург
Здесь так же не рассмотрены вопросы времени жизни файлов и это решается архитектурой пиринговой сети.
Но это не лучшее решение, т.к. основная часть файлов имеет чётко ограниченное время жизни.

Так же не рассмотрены вопросы синххронизации времени. Ведь момент окончания голосования не значит, что уже не придут фалы отосланный ДО того, как голосование окончилось. Но руководствоваться временем записанным в присланном файле тоже нельзя, так как фальсификация времени очень проста.

_________________
Изображение Если бы другие не были дураками, мы бы ими были. (C)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 12:52 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
1. Вы не учитываете возможность тайных голосований;
2. Проблемы комбинации тайных голосований и делегирования голосов в вашей системе никуда не исчезают;

Цитата:
В предложенной схеме вся работа осуществляется клиентскими программами без серверов или каких либо выделенных узлов.

Рекомендую все-таки рассматривать возможность использования серверов в качестве буферных "клиентов". Для стабилизации структуры распределенной сети.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 13:03 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
3. Еще одна проблема которую вы не учитываете - фильтрация пользователей для голосований. Нельзя к голосованиям в определенном регионе допускать пользователей из других регионов.

Цитата:
Пользователь может проголосовать на любой вопрос любое число раз. Актуальным будет последнее решение.


Опять-же, вы не учитываете возможное наличие тайных голосований.

Цитата:
В момент окончания голосования формируется файл результатов.


Учитывая задержки распределенной сети, лучше формировать результат не в момент окончания голосования, а чуть позже.

Цитата:
Это так же необходимо в связи с тем, что право голоса должно быть оплачено соответствующим взносом.


Т.к. вопросы будут стоять более всего по управлению нашим государством, налоги которые платят все граждане я лично считаю таким взносом.

Кроме того, учитывая распределенность, куда именно вы собираетесь перечислять взнос? При наличии определенных реквизитов для этого система перестает быть распределенной. И еще - куда будут уходить деньги, перечисленные на взнос? Кто ими будет распоряжаться?

Цитата:
В настоящее время в таком режиме можно использовать любую пиринговую сеть. Лично я предпочитаю FreeNet.


Минус этого решения в том что пользователю придеться дополнительно устанавливать еще и эту сеть. Идеально было-бы включить ее поддержку в единственную программу, через которую будут производиться и голосования.

Резюме

1. Большим минусом вашего варианта я вижу то, что вы НЕ рассматриваете сложности связанные с тайными голосованиями.

2. Вторым большим минусом я вижу глобальность голосований в вашей системе. Вы не описали механизма голосований в ограниченных группах (субъектах голосования);

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 16:03 
Не в сети
Аватара пользователя

Зарегистрирован: 29 авг 2011, 22:10
Сообщения: 214
Откуда: С-Петербург
Андрей писал(а):
1. Вы не учитываете возможность тайных голосований;
2. Проблемы комбинации тайных голосований и делегирования голосов в вашей системе никуда не исчезают;


Это проблема не столько техническая, сколь идеологическая.
Т.е. возможность тайного голосования и возможность контролировать свой голос (возможно многоступенчато делегированный) взаимоисключающие.

Моё мнение, что тайное голосование вообще излишне, т.к. мне так никто и не смог привести пример, когда это действительно востребованно.
Т.е. всё на уровне - хочется испортить воздух, но что бы никто не узнал кто это сделал. И разные прочие варианты ухода от ответственности за свои действия.

Но тем не менее можно будет иметь такую, но внесистемную, возможность, ежели в том возникнет необходимость.

Андрей писал(а):
Цитата:
В предложенной схеме вся работа осуществляется клиентскими программами без серверов или каких либо выделенных узлов.

Рекомендую все-таки рассматривать возможность использования серверов в качестве буферных "клиентов". Для стабилизации структуры распределенной сети.


Любой компьютер с запущенной клиентской программой доступа к пиринговой сети может исполнять такую роль. И естественно, чем их больше, тем всё быстрее и устойчивее.
Возможно и даже нужно иметь шлюзы в обычный инет, т.е. сайты на которых отображаются вопросы, результаты голосований, принятые решения и ведутся логи.
Но это именно шлюзы, т.е. любой желающий может запустить такой сервис.
К серверам в общепринятом смысле они не имеют отношения, скорее снифферы.

_________________
Изображение Если бы другие не были дураками, мы бы ими были. (C)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 16:29 
Не в сети
Аватара пользователя

Зарегистрирован: 29 авг 2011, 22:10
Сообщения: 214
Откуда: С-Петербург
Андрей писал(а):
Цитата:
В момент окончания голосования формируется файл результатов.


Учитывая задержки распределенной сети, лучше формировать результат не в момент окончания голосования, а чуть позже.


Это техническая проблема синхронизации времени.
Т.е. если в сети имеются источники точного времени выдающие заверенные отметки, то можно заканчивать сбор ответов позже, чем срок окончания голосования и отсеивать то, отметки времени которых вне заданной границы.

Если же оканчивать сбор голосов точно в момент окончания голосования, то заверенную метку времени должны иметь только те, кто собирает результаты голосований.

Андрей писал(а):
Цитата:
В настоящее время в таком режиме можно использовать любую пиринговую сеть. Лично я предпочитаю FreeNet.


Минус этого решения в том что пользователю придеться дополнительно устанавливать еще и эту сеть. Идеально было-бы включить ее поддержку в единственную программу, через которую будут производиться и голосования.


Естественно.
Так как проект FreeNet опенсорсный, то разработчик интерфейса ОО просто встраивает его в свой проект.
Я полагаю что технически это должно выглядеть (unix like) как связка двух программ, программы низкоуровневого взаимодействия с пиринговой сетью и программы пользовательского интерфейса.

Тогда все глобальные и структурные нововведения будет поизводится редко и вдумчиво, а пользовательские интерфейсы могут быть в любом разнообразии и для любых нужд.

Андрей писал(а):
3. Еще одна проблема которую вы не учитываете - фильтрация пользователей для голосований. Нельзя к голосованиям в определенном регионе допускать пользователей из других регионов.


Проблема много глубже, чем кажется, так как разделия пользователей может происходить множеством взаимоперекрывающихся способов.
По территориальному, религиозному, культурному, возрастному.

И я пока не вижу способов отсеивать пользователей внешними средствами.
Т.е. злонамеренный пользователь будучи кришнаитом и проживая в Сыктывкаре вполне может голосовать за исламистов и за Урюпинск.

Тут можно только подумать, как сделать подобный троллинг не нужным и не интересным. Возможно разделением взносов на части, т.е. есть часть глобальная, единая для всех, а для участия в какой либо локальной группе нужно доплачивать ещё. Тогда доплата имеет смысл только за те группы, влияние на деятельность которых действительно важно пользователю.
Ведь крайне глупо оплачивать членство в не итнересующей группе только с той целью, что бы троллить единственным и практически не влияющим ни на что голосом.

Так же это то возможно организовать как обязательное участие в какой либо из главных групп. Типа - пользователь, что бы получит глобальное право голоса, обязан быть членом одной, любой на его выбор, территориальной группы.

_________________
Изображение Если бы другие не были дураками, мы бы ими были. (C)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 20:51 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Kuguar писал(а):
Андрей писал(а):
1. Вы не учитываете возможность тайных голосований;
2. Проблемы комбинации тайных голосований и делегирования голосов в вашей системе никуда не исчезают;


Это проблема не столько техническая, сколь идеологическая.
Т.е. возможность тайного голосования и возможность контролировать свой голос (возможно многоступенчато делегированный) взаимоисключающие.

Возможность контролировать свой голос при тайном голосовании - вполне нормально реализуется и даже уже реализовано. Проблема возникает при делегировании. Здесь главная проблема что пользователь может проверить как проголосовали его голосом, но не может проверить как проголосовал тот, кому он доверил проголосовать своим голосом.

Kuguar писал(а):
Моё мнение, что тайное голосование вообще излишне, т.к. мне так никто и не смог привести пример, когда это действительно востребованно.
Т.е. всё на уровне - хочется испортить воздух, но что бы никто не узнал кто это сделал. И разные прочие варианты ухода от ответственности за свои действия.

Пример:
Производятся выборы главы какого-нибудь огородного товарищества. При открытом голосовании те члены товарищества, которые голосовали против избранного кандидата НЕ получат каких-либо услуг, которые новый глава быстрее отдаст тем, кто голосовал за него. Смысл, надеюсь, понятен.

Даже без учета наличия криминала есть множество областей в которых тайные голосования необходимы.

Kuguar писал(а):
Но тем не менее можно будет иметь такую, но внесистемную, возможность, ежели в том возникнет необходимость.

Андрей писал(а):
Цитата:
В предложенной схеме вся работа осуществляется клиентскими программами без серверов или каких либо выделенных узлов.

Рекомендую все-таки рассматривать возможность использования серверов в качестве буферных "клиентов". Для стабилизации структуры распределенной сети.


Любой компьютер с запущенной клиентской программой доступа к пиринговой сети может исполнять такую роль. И естественно, чем их больше, тем всё быстрее и устойчивее.

Я это к тому, что тот "клиент", который будет устанавливаться на серверах, должен иметь возможность не запускать GUI. В общем-то, это больше технический вопрос.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 21:07 
Не в сети

Зарегистрирован: 17 июн 2011, 18:14
Сообщения: 2543
Kuguar писал(а):
Андрей писал(а):
3. Еще одна проблема которую вы не учитываете - фильтрация пользователей для голосований. Нельзя к голосованиям в определенном регионе допускать пользователей из других регионов.


Проблема много глубже, чем кажется, так как разделия пользователей может происходить множеством взаимоперекрывающихся способов.
По территориальному, религиозному, культурному, возрастному.

Реализованный вариант вам чем-то не нравиться? Разделение всех голосований по субъектам и настройка фильтров по конкретным субъектам. Сейчас реализовано два фильтра - территориальный и обычное членство. Но это не означает что их нельзя расширить.

Kuguar писал(а):
И я пока не вижу способов отсеивать пользователей внешними средствами.
Т.е. злонамеренный пользователь будучи кришнаитом и проживая в Сыктывкаре вполне может голосовать за исламистов и за Урюпинск.

Пока у нас принято для территории невозможность ее изменения чаще чем раз в месяц. Таким образом можно хотя-бы немного противостоять желанию пользователей "прыгать" по разным субъектам.

Kuguar писал(а):
Тут можно только подумать, как сделать подобный троллинг не нужным и не интересным. Возможно разделением взносов на части, т.е. есть часть глобальная, единая для всех, а для участия в какой либо локальной группе нужно доплачивать ещё. Тогда доплата имеет смысл только за те группы, влияние на деятельность которых действительно важно пользователю.
Ведь крайне глупо оплачивать членство в не итнересующей группе только с той целью, что бы троллить единственным и практически не влияющим ни на что голосом.

В соседней ветке я уже написал что я об этом думаю. Я согласен с идеей, но не согласен с вариантом ее реализации через оплату права голоса.

_________________
7BF9BDC16428245B55CF04EF4A609CA44E0F6E68


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2011, 21:13 
Не в сети

Зарегистрирован: 19 июл 2011, 19:26
Сообщения: 1494
Цитата:
Возможность контролировать свой голос при тайном голосовании - вполне нормально реализуется и даже уже реализовано. Проблема возникает при делегировании. Здесь главная проблема что пользователь может проверить как проголосовали его голосом, но не может проверить как проголосовал тот, кому он доверил проголосовать своим голосом.

Мы же вроде решили что делегирование при тайном голосовании использоваться не будет?

_________________
89DC B598 306B 26C8 B9AA 5C0C CFB6 7184 B2B2 FF17


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 214 ]  На страницу 1, 2, 3, 4, 5 ... 22  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB