ZCash (from what I can understand of it) seems like it could be the basis to use. Suppose everyone sets up a wallet and they get paid one ZVoteCoin at voter registration. Then they go home and do a shielded transaction (you didn't even mention anonymity) to their favored candidate. Their wallet should tell them that the transaction went through.
The voters can see that their own transaction went through. Administrators (and everyone else) can count total votes cast at the end of the elections by the balances of the candidates' wallets. That's at least as good as paper ballots in this specific respect.
> and people that shouldn't have a vote didn't vote.
The voter's wallet can be tied to the voter's registration. Again, at least as good as what we have now, in this specific respect.
I think I've just made a more elaborated restatement of what I already said. Could you identify a specific hole in my system? You could point to voting software _in general_ being a bad idea, and that's fair enough. But it doesn't sound like that's what you were saying.
Concerns about vote selling and coercion are already gone. It's practically impossible to actually prevent people from filming their votes as they are cast, and livestreaming my vote to you is just as good as having you sit in my doorway for it.
The beauty of paper ballots is you can spoil them and get a new blank sheet. Sure, livestream yourself filling out your ballot. That doesn't mean you actually cast that ballot. The poll workers will tell you to put your camera away when you're outside the booth on the way to the ballot box.
I don't know where you live but all of the polling places around me are very clear about not allowing photography. Similarly, someone who has pressure to vote a different way has the option of taking that picture to show to their boss and then getting a new ballot after voiding the old one.
If your boss, union leader, controlling spouse, etc. tells you to vote a certain way, they would gain the ability to demand that you give them your identifier if it's public or, if not, login and show them the final vote status. This is very hard to detect and anyone proposing a blockchain needs to learn why election systems are designed the way they are first since this is not a hypothetical problem.
We have plenty of jurisdictions with vote-by-mail who've been doing it for a long time. Long enough that we should have some idea how common this occurrence is. It seems like the answer is that one vote isn't worth nearly enough to risk the penalties involved.
This appears reasonable. Votes are anonymous. Every person gets one vote. The software basically always works.
I would scrap the whole "mobile ID" thing, however. You should fill out a voter registration card to get a unique private key that is imported into your wallet.
I'm afraid there are too many ways this may not work, but I'd be more interested in figuring if there are other similarly fundamental problems to online voting.
You might want to look at some of the issues solved by Helios. Its showing its age at this point but the fundamental design goals are the same as if it were designed today.