E-Voting: Blockchain-based Remote Electronic Voting


Electronic transformation of political systems has become a challenging task in recent years. Applying cryptography to voting and electoral processes is crucial for democracy. The lack of trust placed in Remote Electronic Voting (REV) systems poses the main obstacle to adoption. Transparency measures and additional public security tests (e.g., public intrusion tests), such as the publication of the source-code, actively contribute towards public verifiability, and hence, trust placed in REV systems. Serving as a transparent, immutable, and distributed ledger, Blockchains (BC) offer new benefits for REV. Instead of relying on a single, centralized authority, a system of distributed, equivalent authorities can be used. Further, BCs serve as a highly replicated, tamper-proof audit trail, which enables the verification of cryptographic proofs, crucial for REV. 

In order to evaluate the feasibility of deploying a BC-based REV system, in 2018, the first version of Provotum 1.0 was proposed and implemented in the context of a Master's Project. Currently, the Provotum 2.0 prototype is documented below, showing a fully end-to-end verifiable voting process, implemented using a dedicated public permissioned Proof-of-Auhtority BC, based on Ethereum. Also, different new directions are explored as well, for instance, deploying a custom-built BC, developed in Rust, in order to achieve Universal Cast-as-Intended Verifiability.


General Information

Reference: Research Project
Source of funding: UZH
Project Duration: Since 01.03.2019

Approach (Provotum 2.0)

The tutorial on a "Practical Introduction to Blockchain-based Remote Electronic Voting" as presented at the IEEE International Conference on Blockchain and Cryptocurrency (ICBC 2020), May 2-6, 2020, Toronto, Canada, as a Virtual Conference refined the technical details.



  • Docker and Docker Compose
  • Make sure you create a github.json with a valid access token, otherwise you won't be able to pull from GitHub packages
  • Even though the full tutorial code is dockerized, it takes (a) some Docker expertise and (b) sufficient RAM and CPU to make it run smoothly on Linux or Windows.
  • Unfortunately, macOS is not supported
  • Thus, if you don't want to locally deploy it, simply follow the tutorial and take a closer look the code as you see fit.
  • The practical part of the tutorial is based on the code of Provotum 2.0, which was developed by Moritz Eck, Alex Scheitlin and Nik Zaugg in the scope of their Master Project with the CSG@IfI.  

Setting up a short demo election on your local OS

  1. git clone git@github.com:christiankiller/master-project-evoting.git
  2. Set up your github.json
  3. ./docker-prebuilt-up.sh
  4. docker ps and verify all components are running by visiting the following links with your favorite web browser
    1. Voting Authority on
    2. Sealer 1 on
    3. Sealer 2 on
    4. Sealer 3 on
    5. Voter Frontend on

If everything is running smoothly so far, you can continue by following the tutorial steps.

Setting up a demo election on a remote VPS

  1. Make sure the image is Docker-ready, which saves you some time
  2. Follow the steps above for the local OS
  3. Use ssh -D 5000 -C -q -N [REMOTE-IP] to enable -D Dynamic application-level port forwarding, -C use compression, -q quiet mode, -N macOS specific (Do not execute a remote command.  This is useful for just forwarding ports.)
  4. Set up a proxy in your browser as shown in the screenshot here


  • Christian Killer, Bruno Rodrigues, Eder John Scheid, Muriel Franco, Moritz Eck, Nik Zaugg, Alex Scheitlin, Burkhard Stiller: Provotum: A Blockchain-Based and End-to-End Verifiable Remote Electronic Voting System; IEEE 45th Conference on Local Computer Networks (LCN), Sidney, Australia, November 2020, pp 1–12.
  • C. Killer, B. Rodrigues, E. Scheid, M. Franco, B. Stiller: Practical Introduction to Blockchain-based Remote Electronic Voting; IEEE International Conference on Blockchain and Cryptocurrency (ICBC 2020) - Virtual Conference, Toronto, Canada, May 2-6, 2020, Tutorial 2. Tutorial Repository
  • C. Killer, B. Rodrigues, R. Matile, E. Scheid, B. Stiller: Design and Implementation of Cast-as-Intended Verifiability for a Blockchain-based Voting System; 35th Annual ACM Symposium on Applied Computing (SAC 2020)  - Virtual Conference, Brno, Czech Republic, March 30 - April 3, 2020, ISBN 978-1-4503-6866-7, pp. 286-293. Open Access (PDF, 2 MB) ACM
  • C. Killer, B. Stiller: The Swiss Postal Voting Process and Its System and Security Analysis. 4th International Joint Conference on "Electronic Voting" (E-Vote-ID 2019), Bregenz, Austria, October 1–4, 2019, In: R. Krimmer, M. Volkamer, V. Cortier, B. Beckert, R. Küsters, U. Serdült, D.Duenas-Cid (eds.) "Electronic Voting", Lecture Notes in Computer Science (LNCS), Vol. 11759, Springer International Publishing, Cham, Switzerland, pp. 134–149.  Paper + Presentation

Master Project Reports

Provotum 1.0

  • R. Matile, C. Killer: Privacy, Verifiability, and Auditability in Blockchain-based E-Voting, 2018, Master’s Project, University of Zurich, Project Report

Provotum 2.0

  • M. Eck, A. Scheitlin, N. Zaugg: Design and Implementation of Blockchain-based E-Voting, 2020, Master's Project, University of Zurich, Project Report


Inquiries may be directed to the CSG project team:

Christian Killer

Bruno Rodrigues

Eder Scheid

Muriel Franco

Prof. Dr. Burkhard Stiller
University of Zürich, IFI
Binzmühlestrasse 14
CH-8050 Zürich

Phone: +41 44 635 67 10
Fax: +41 44 635 68 09