I am novice solidity developer and I am trying to develop a voting application on ethereum
Requirements of application are -
1) There should be candidate and voter registration form
2) Voter should be able to login using some authentication mechanism like username , password
3) Each voter should be able to vote only once
4) Result of voting should be visible to everyone
Things that I have tried -
I have developed a smart contract for voting in candidate and voter are of
struct type in which respective attributes of candidate and voter are stored.
Data of candidates and voters is stored in array of structures. Functions are written in smart contract to vote , to get count of no. of voters and candidates, to insert a voter and candidate etc.
Issues I am facing -
1) How shall I authenticate voter and candidate ?
2) Shall I create new account using
personal.newAccount() command for every candidate and voter ?
3) Can one account have multiple addresses ? so that I can create multiple addresses for different voter and candidate ?
4) According to answer of this question
message.sender() shall be used for authenticating user. I am not able to understand that how every user will have different addresses ? Is it address of account that we can create using
personal.newAccount() command ?
5) As ethereum is permission less block chain ,how to implement/simulate authentication and authorisation with the help of which one can control who can participate in a private block chain network?