Is this possible to create online election/voting system on ethereum? Is anyone working on it? How you would insure that people wouldn't create second account and vote second time? Is this possible to restrict voting ability based on your citizenship(i am not in favor of this stupidity, but it should be possible at the beginning for it to be used by countries).
2 Answers
A voting system can be implemented on Ethereum, and infact the official solidity document has an example on just this.
http://solidity.readthedocs.io/en/develop/solidity-by-example.html
To answer the second part:
How you would insure that people wouldn't create second account and vote second time? Is this possible to restrict voting ability based on your citizenship?
You can create a membership contract that has a list of addresses belonging to registered voters, allowing only those listed to cast a vote on your voting contract.
As the blockchain transactions are public, implementing anonymity can be off-loaded to an external Oracle (https://medium.com/@mustwin/building-an-oracle-for-an-ethereum-contract-6096d3e39551) or wait for zk-snark to be implemented for validation of zero-knowledge transaction validation.
This is a subject of research. E-voting systems are not simple, they should verify a list of properties like Ballot privacy, Individual verifiability, Eligibility, Accuracy, Universal Verifiability, Receipt-freeness, Coercion-Resistance...
Clearly, Etheruem is not sufficient on its own.