Что вы думаете об использовании биткойны в качестве системы голосования со следующими признаками:
- общественности: означающий, что,
- каждый может создать голосование к определенному вопросу
- каждый может проверить и проверить идентичность и количество голосов за избирателя
- анонимно: голос избирателя не может быть связан с ним, но только к (достаточно большим) бассейном избирателей
Я имею в виду следующее "алгоритм":
- 1. Создание вопроса и ответов
Одна транзакция Bitcoin (: = ТХ) представляет собой вопрос. выходы TXa являются Bitcoin адреса избирателей (: = addr_init_voter1, addr_init_voter2, ...), и они недвусмысленно Matchable с идентичностей (: = id_voter1, id_voter2, ...) (например, открытые ключи, которые также хорошо построить сеть доверия) избирателей, например, в публичной базе данных (например: сервера ключей) или Ид-blockchain или что-то другое.
Входы TXa не имеет большого значения. Как правило, человек, который задает вопрос, обеспечат достаточное количество биткойнов для всех избирателей, проверять получатель, а затем подписать вход. Другая возможность состоит в том, что каждый избиратель обеспечивает его долю себя и таким образом TXa должен быть подписан всеми избирателями. Может быть, есть возможность (я так и не нашел еще и я не вижу возможность сделать это), чтобы оказать биткойна в TXa всех избирателей, так что через некоторое время после голосования в Bitcoins будет передан обратно к ним.
Важная частью является то, что ТХ только считается правильным вопросом, если все выходы (в сумме и адрес), считается действительными все избирателями.
Для каждого возможного ответа Bitcoin адрес задан (: = addr_answer1, addr_answer2, ...) на вопрос создателя (у него есть личные ключи к ним), к которому избиратели могут, наконец, передать их биткойны.
- 2. anonymisation из Bitcoins
Поскольку addr_init_voter1 идентифицирует id_voter1 как его владелец, Bitcoins должны быть переведены на другой адрес. Так voter1 создает целую кучу новых адресов (: = addr_anon1_voter1, addr_anon2_voter1, ...) создает и чеки (: = txANON1, txANON2, ...) с другими избирателями в виде:
Код:
txANON1 {
входы: addr_init_voter1, addr_init_voter2 (сумма = 0,7 * общее (: = amountFrom (ТХ) К (addr_init_voter2))), ...
выходы: addr_anon1_voter1 (сумма = 0,5 * всего), addr_anon2_voter1 (сумма = 0,5 * всего), addr_anon1_voter2 (сумма = 0,7 * всего)
}
txANON2 {
Входы: addr_anon1_voter1 (сумма = общая), addr_init_voter2 (сумма = 0,3 * всего), ...
выходы: addr_anon3_voter1 (сумма = amountof (addr_anon1_voter1)), addr_anon2_voter2 (сумма = amountof (addr_init_voter2) (eg.:0.3*total)), ...
}
входы: addr_init_voter1, addr_init_voter2 (сумма = 0,7 * общее (: = amountFrom (ТХ) К (addr_init_voter2))), ...
выходы: addr_anon1_voter1 (сумма = 0,5 * всего), addr_anon2_voter1 (сумма = 0,5 * всего), addr_anon1_voter2 (сумма = 0,7 * всего)
}
txANON2 {
Входы: addr_anon1_voter1 (сумма = общая), addr_init_voter2 (сумма = 0,3 * всего), ...
выходы: addr_anon3_voter1 (сумма = amountof (addr_anon1_voter1)), addr_anon2_voter2 (сумма = amountof (addr_init_voter2) (eg.:0.3*total)), ...
}
- сделки запутать, кто владеет Bitcoin на определенном addr_anon {я} _voter {j}. Они проверяются на правильную сумму сумм от каждого владельца адреса, прежде чем подписать их и после того, как один избиратель дал согласие со сделкой сделка не может быть изменен. Таким образом, есть фаза, здание, в котором сделка построить, а затем фазу проверки, в которой она проверяется каждым владельцем ввода.
- 3. голосования и подсчета голосов
На самом деле голосовать избиратель должен передавать свои биткойны к ответу адрес (или несколько адресов в весовом голосования (например .: 30% для Answ1 и 70% для Answ2)).
чтобы получить результат голосования один должен:
- рассчитывать и добавить количество всех транзакций до конца голосования (определяется blocknumber) на адрес ответа
- убедитесь, что все этот Bitcoins происходит в сделке ТХА (я считаю, что это называется цветные биткойны)
- недействительное весь голос, если есть сделки с addr_answer {м} к другому адресу в блоке перед блоком голосов завершающего, потому что они могли быть снова использованы в этом голосовании.
Есть достаточное количество этих операций, сделанных между избирателями каждый избиратель имеет несколько адресов в его бумажнике, которые подытожены такое же количество Bitcoins, как передается от TXa к addr_init_voter {j}, если не избиратель не дал свои монеты другому избирателю. Вы не можете добавить биткойны к txANON {к}, которые не происходят в TXa или другой txANON {л}. избиратели (или их программное обеспечение) должны проверить это перед подписанием
[/ LI]
применимой на практике следующие черты должны также справедливы:
- значение (votecoin) << значение (Bitcoin (сумма (Bitcoin) == сумма (votecoin)), либо вы проголосовали бы или взять деньги?
- должен существовать клиент, который автоматически создает и проверяет txANON и подсчитывает и проверяет голосование в разумные сроки
- ...
Хммм .. вы получите ли то, что я имею в виду? Это работает?
Если это уже реализовано где-то пожалуйста, дайте ссылку. В противном случае, пожалуйста, реализовать!
Если у меня есть время, я буду стараться, чтобы кодировать этот материал сам, но я до сих пор найти приличный (не ява) (Java ненавистник) документированную библиотеку.
мне нравится https://github.com/jgarzik/picocoin самый на данный момент. особенно из-за GOTOS до выходных меток в функциях
Я действительно не считаю, что это как метод для проведения политических выборов (хотя бы возможность по всему миру прямой демократии, если это работает), но больше в качестве инструмента для достижения consens о дизайне интерфейса или спецификации своего рода программного обеспечения или аппаратных средств, без вызов и формирование нескольких комитетов по всему миру.
Поэтому, пожалуйста, ответить. Это не имеет значения, если вы считаете его дерьмо или хорошо. Может быть, я могу начать опрос позже ...