To be fair, it probably only works in Estonia because nobody cares enough about their elections to cheat.
It's not that simple. And I'm a network engineer so I'd think I have a pretty good grasp of it.
Saying we could "Build a voting machine that cannot be hacked" is an extreme oversimplification when you're talking about hundreds of millions of people spread all over the globe. It would have to be some huge datacenter with hundreds or thousands of servers and would be the world's biggest target for hackers.
Imagine I just wanted to let people vote for the Michigan governor election next month online.
1. How exactly do I ensure that only people that live in Michigan vote in the election? Going by IP address would be laughable considering how easy it would be for somebody outside of the state to hop on a proxy server. But at the same time there would be legitimate residents that are out of town and want to vote online. How exactly do you manage that and not have tons of fraud?
2. How do you make sure everybody only votes once? If know my uncle doesn't vote, what's to stop me from going online and using his name to vote for who I want? What's to stop me from using the names of homeless peopleto vote? What about people that are underage voting for their parents? What if the same person tries to vote twice or more from different computers, how are you going to figure out which vote is legit? Have pollsters visit everybody's house?
3. The risk of hacking can't be understated either, and not just by Russia. What's to stop a Republican hacker from launching DDOS attacks in Democratic areas to stop people from being able to vote? Or simply writing scripts to hack people's computers and vote for them? Even if the the voting servers themselves couldn't be hacked there's NO way to stop everybody's computer from being hacked.
I wish it wasn't true, but in reality online voting just wouldn't work, there's no way the results would be trustworthy. Saying "we put a man on the moon" doesn't mean anything, the moon is further away but the logistics of sending someone there are way simpler and there are way fewer people involved.
To point 1 and 2 if you only make online voting available on smartphones and require fingerprints and facial recognition to confirm your identity for each vote then you can cross reference that person's identity with the address where they're registered to make sure they're only voting once in the correct district. You'd need a national database of voters so that no one could register at multiple addresses with a system set up to verify changes of address to remove old registrations when someone needs to register at a new address.
Providing this data would be optional and only required if you want to register for online voting. Other voting options would remain in place until 100% of registered voters agreed to participate.
It wouldn't be perfect but neither is our current system.