Query - Implementing a Voting System

+1 vote
Dear Team,

What would you say would be the best approach to implement a voting system using Multichain?

Could we for instance,

a) Create addresses for each voter and candidate

b) Create new Digital Asset for e.g. CEO_Votes

c) Depending on the Voters stake in the election (Outside the Ledger). Assign equivalent Digital Assets.

d) When the voter votes he/she transfers Digital Votes to the address of the Candidate of choice

e) At the end of the voting process, Balance (CEO Election Asset) in each of the Candidate address should give the votes tally for each candidate

f) We could write a program to rank the candidates by number of Votes and announce the outcome
asked Mar 14, 2017 by Rahul Ramakrishnan

1 Answer

0 votes
Yes, you could do it with an asset in this way, then you get the automatic totalling-up of weighted votes on the chain itself, using the asset balances of each address.

Alternatively you can use a simple stream, where each user indicates their vote in a stream item, and the weighted totally takes place off chain. (Although there's no reason why the weights couldn't be written into another stream as well, for everyone to see them.)
answered Mar 14, 2017 by MultiChain
Whatever system is used, you don't really want anything where the users identity is revealed. Writing data to streams as either hex or hash, can always be hacked in some way, especially in regimes where they access the system in some way ( eg: a hash of a user name, DOB, 10 digit code and the candidate name can be reversed with enough blunt force guesses). Better to have each candidate have their own asset, and for users to be given 1 token for each...they can only vote once, and this could even be done using private key, so the public address would never be linked to a user name. They could also transfer their vote token to an organisation that will vote on their behalf..(like in Philippines where they want a church to vote for them)