How to implement users?
A voter produces a statement of how they wish to vote.
The voter blinds the vote, attaches the blinded vote to a proof of their identity, and signs it.
The central authority receives the blinded vote and verifies the signature. If the signature is correct, the central authority signs the blinded vote.
The voter unblinds the signed vote and uploads it to a repository or adds it to a blockchain anonymously.
The central authority must be able to produce one signed, blinded vote for every unblinded vote produced. So if there are 50,000 votes signed by the central authority collected, the central authority must be able to produce 50,000 blinded votes signed by voters.
The signed, blinded votes show who voted. The unblinded votes show how many votes each candidate or proposal got. There is no way to map the blinded votes to the unblinded votes, so there is no way to tell who voted for what.