Fairly easily. All smart contracts check that the alias that is trying to cast a vote actually exists and has permission to vote (interaction with the so-called Access Control List smart contract). Then it checks if that alias has already voted.

Did this answer your question?