Domain Governance – E-voting

Problem identification:  Anonymous Electronic Voting System on Public Blockchains

Why Blockchain: 

The main benefit of using blockchain in voting systems is the assurance that the votes have not been manipulated. This fact makes the system more trustworthy by the voters.

Main properties of a trusted voting system:

  • Auditable
  • Verifiable

The main issue with the current voting system is the difficulty to guarantee the integrity of the votes. 

It is common knowledge that there is an uncertainty regarding the validity of the votes, some maybe altered, or some may be not counted at all.

Furthermore, more votes could have been added to the ballot box. On the other hand, organizing a ballot is time-consuming and cost expensive.

Functional Description 

The entities that participate on the system are:

  • Identity Validator
  • Voter registration administrator
  • Voting administrator:
  • Smart-contract administrator
  • Voters

The system utilizes Smart Contracts to:

  • Store the Voting whitelist
  • Enable/disable users
  • Store the stealth voter wallets
  • Store the encrypted votes
  • Count the encrypted votes and voters
  • Publish the vote result
  • Verify the vote result

The system uses the following technologies:

  • Stealth addresses
  • Zero knowledge (proof-of-vote): 
    • Used to prove possession of specific information (e.g. secret key) without revealing that information.
  • Homomorphic encryption (Asymmetric public key cryptography)
    • Allows computation to be performed directly on encrypted data. 
    • Paillier encryption

The voting process includes the phases:

  • Setup Phase
    • Entity: Voting Administrator
      • Setups Zero Knowledge proofs (proof-of-vote).
      • Provides voting whitelist.
      • Creates homomorphic encryption keypair (encrypting/decrypting votes). 
      • The public key is available to voters through a smart contract. (1)
    • Entity: Smart Contracts Administrator
      • Publishes Verification Smart Contract.
      • Publishes the Voting Whitelist.
      • Publishes the Voting Session Smart contract.
      • Publishes the public key that the voters use for encrypting their votes.
  • Voter Validation Phase
    • Entity: Voter Registration Administrator
      • Creates and enables a stealth user voter wallet (anonymous voting).
    • Entity: Identity Validator
      • Validates the identity of the voter and enables him to vote.
  • Voting Phase
    • Entity: Voter
      • Casts the votes and sign the ballot using its own validated identity.
      • Encrypts each vote in the ballot using the public key (1). 
      • Creates a proof-of-vote, provide the vote without exposing sensitive information about it.
      • Publishes the encrypted ballot directly to blockchain using the stealth voter wallet.
    • Entity: Smart Contracts Administrator
      • Open/Close the vote session
  • Tallying Phase
    • Entity: Smart Contracts Administrator
      • Smart Contracts adds all the ballots together and publish the encrypted result.
    • Entity: Voting Administrator
      • Fetch the encrypted sum of all ballots, decrypt it and create the proof-of-result of the plain text result
      • Validate result and provide Proof-of-Result.
    • Entity: Smart Contracts Administrator
      • Sends the proof-of-result to the smart contract.
      • Smart Contract verifies the proof-of-result.
      • Publish the proof-of-result.
  • Auditing Phase
    • Entity: Voting Administrator
      • Can use the private key for decrypting all votes and check if both results are equal.
    • Entity: Voter
      • Can verify if own vote is stored on blockchain.
    • Entity: All
      • Can check the total of voters and the votes

Technology used

  • Blockchain: Ethereum
  • Main characteristics of the chosen blockchain
    • Public blockchain
  • Consensus mechanism: Proof-of-Work
  • Smart Contracts 
    • Chosen Programming Language: Solidity

Current status

  • The project’s code repository is public on github, url:https://github.com/eddieoz/haal .
    This project is being developed under the Apache License. The last commit was on Oct 4, 2019.

Focus point commentary indicating the value of the case study in relation with learning modules

Learning Modules Focus Points

Peer-to-Peer database design Ethereum Blockchain

Encryption techniques Asymmetric cryptography
Zero-knowledge proofs

Consensus Proof-of-Work

Digital Signatures Anonymity in blockchain transactions

Smart Contracts Smart Contracts Development

Privacy and Property Rights Stealth addresses
Zero-knowledge proof

Blockchain-based Decentralized Applications Decentralized application


  • Voting Administrator can decrypt the votes (privacy). All participants must trust it.

Alternatives Approaches: