Mathematik  |  Informatik


Levin Heimgartner, 2003 | Zürich, ZH


Since the first e-voting trial in Switzerland in 2003, over 300 e-voting trials have been conducted in 15 cantons. Despite these numerous trials, however, e-voting has not yet caught on in Switzerland for technical and various other reasons. 5 years after the first e-voting tests, in 2008, the first modern blockchain was introduced with Bitcoin. This was followed by another breakthrough in 2015 with the launch of the Ethereum blockchain, which made it possible to easily run applications on blockchains, so-called decentralized applications. These blockchain-based applications promise, among other things, more transparency, resilience and security, which are all very important components of an election. This paper tries to use these advantages of the Ethereum blockchain to first design a decentralized e-voting system and then to program it. The work also considers the Swiss legal framework and its relevant requirements for an e-voting system and tries to fulfil them.


Is it possible to build a decentralized e-voting system that can be used for governmental elections in Switzerland on initiatives and referendums?


The practical work process of the paper can be divided into four phases. In a first phase, I practically learned the functionality of the Ethereum blockchain and the Solidity programming language, which is necessary to program the smart contract, the central component running on the blockchain. Then, in a second phase, the legal and practical requirements for the e-voting system were elaborated. These requirements were elaborated with the help of the document «Anforderungskatalog für eidgenössische Volksabstimmungen mit der elektronischen Stimmabgabe», which was issued by the Swiss federal chancellery and includes a catalogue with all the requirements that must be met to carry out electronic elections in Switzerland. Based on these requirements, I then designed my own e-voting system in a third phase, elaborating all the necessary procedures, security measures, applications and more. In a fourth phase, all applications necessary for the e-voting system were programmed.


The final product of the paper is an e-voting system consisting of 6 applications. The core of the system is a smart contract, where the votes are stored and counted among other things. To allow administrators to manage the system, there is an admin web app and a CLI tool. To create user accounts, there is a registration app. Voters can vote and view the status of their vote through a web interface with the voting web app. To ensure that all votes arrive, there is also a relay that forwards the votes to the smart contract. The system implements all the relevant requirements from the «Anforderungskatalog für eidgenössische Volksabstimmungen mit der elektronischen Stimmabgabe», which are trivial for an e-voting system, such as preserving the secrecy of the vote or being universally verifiable. In addition, important concepts such as the separation of powers and the mutual control of people involved in the voting process exist.


It turns out that it is possible to develop a secure design for a decentralized e-voting system. A practical implementation is also possible, but there was not enough time to get the system into a production-ready state where it could have been used for a real political election. In order to implement the project in time, it was not always possible to optimize the applications and some external libraries had to be used. In a future version, these optimizations, such as making the Voting App compatible with screen readers and implementing the functionality of some specific libraries on our own for security reasons, should be implemented.


The paper shows that it is possible to build a decentralized e-voting system that could be used for governmental elections in Switzerland on initiatives and referendums. It was possible to conduct multiple small elections with the system without any problems. However, the exact same system that was coded in the paper could not yet be used for real political elections, because there would still need to be a lot more improvements made, security audits would be necessary, additional tests would need to be conducted and more. A further step would be to expand the system to handle elections, where voters can enter their own input, so the system could also be used, for example, to elect members for the national council.



Würdigung durch den Experten

Dr. Eric Dubuis

This is a project on verifiable, decentralized electronic voting (e-voting). The author shows in a convincing way how a decentralized e-voting system, with the help of smart contracts running on the Ethereum blockchain, can be implemented and deployed. The author’s approach is based on a few trust assumptions only. The system supports individual verification (for voters) and universal verification (by the public). The report is well written and demonstrates the author’s talent and computer science skills.


sehr gut




Kantonsschule Enge, Zürich
Lehrer: Patrik Marxer