With Polys you create a vote that can only be accessed by voters with specific emails. Each user is represented by a token with a KECCAK-256 hash that is created and stored inside a smart contract – let's call it a registry. After the user supplies the correct token, the registry can create or find the proxy smart contract that represents a specific user – let's call it an alias. The alias, in its turn, allows a vote to be cast on behalf of the voter’s Ethereum account. One could retort: "But the accounts’ addresses are permanent and can be used to track down specific users!" Yes, that's true. But every single time a Polys voter logs in they create a random Ethereum account on their own computer and sign their vote with a token. Of course, when the voter asks the alias to cast a vote, the alias checks if that Ethereum account has permission to do so. So, to recap:

  • Voter receives token
  • Voter createsEthereum account
  • Voter self-signs transaction with token and sends it to registry
  • Registry createsor finds an alias, returns address to voter
  • Voter asks aliasto cast a vote
  • Voter's Ethereum account is checked
Did this answer your question?