Municipal Voting Goes On-Chain: Encrypted, Verifiable Real World Elections

Devcon 8 · 6 Nov 2026 · 8:21

Punit, who works on threshold cryptography in the Shutter Network ecosystem, presents an encrypted, verifiable voting system built for a Munich city staff council election. Voters log in through the city system and receive a pseudonym, the browser encrypts each ballot with proofs that it is valid, and a committee of key operators decrypts only the encrypted totals, using ElGamal encryption and attached cryptographic proofs. A dashboard lets anyone check the results. Limits include coercion, vote buying, key custody and the lack of post-quantum protection, and political elections would need independent review and a legal framework first.

Speakers

Topics

From Devcon 8, hosted by Ethereum Foundation.

Transcript

[music] >> Yes, hello everyone. Let's dive right into it. Imagine checking an election result yourself. And without knowing how what what everyone's choices are. That's what we are building for Munich staff council election. I'm Puneet working in threshold cryptography for shutter network. Let's see what the election is about. The voters are Munich staff employees, [snorts] Munich city employees, and they're choosing their staff council.

That's the person who represent your interest or their interest at the work. Traditionally, what happens is a staff would mark a paper ballot and submit it in person. The election board would then check the result and count the votes. We are bringing this familiar process online and on chain. So, what do we need to preserve this election while moving on chain? Let's start with voter. They need to be on the city's electoral roll. But once they cast their ballot, their choices would anyway remain private. And that secrecy would be a legal requirement this time.

Then there's the result. The election board will be like responsible for it. But anyone should be able to count the votes and should should see that their votes were counted correctly. This leads naturally to crops. We can have censorship resistance. That guarantees ballot inclusion. Open source would let any auditor or election board recount or check the counting code. And security carry through the secrecy and accountability requirements basically. Now, let's dive into how the voting process would look like.

We have a city's existing login which we connect to private voting system. After logging login, the voters registry issues a masked identity called a pseudonym. So, the real voter's identity does not go on chain. Uh when they cast their ballot with this masked identity, the browser then encrypts those choices and before the ballot gets published on chain. Now, we have an encrypted ballot. Uh how do we count it and check it without opening the choices?

The browser attaches proofs for that uh that every candidate's counts is allowed within a selected range and adds up to the voter's budget B. Anyone can check these proofs by reading the ballot and they're tied to the election key and the ballot key as well. Now, we have the uh encrypted counts. Now, we get the encrypted counts, add to get the encrypted totals per candidate. Uh then we have a committee of committee of operators called keepers which generate decryption shares and along with a proof that they have along with a proof that that basically means that basically

means that their share is correct. Now, these boxes would show the three cryptographic principles we use in this process. Uh there's homomorphic counting for which we use ElGamal which gives us the sum ability to do the sum we need. Uh we use the Dilith same Dilith methods for ballot proofs and decryption shares. Uh so, reviewers have a one construction to follow. And for the shared key custody, we reuse shutters keeper services and joint key generation methods.

Uh so, ballot proofs and the key generation is like a separate process. Now, a secure system would also need to make sense to people using it. So, we built a dashboard that explains everything in plain language and let's voters find their ballot. The view here is about the encrypted counting uh where the voters can read the cryptographic data. Also, auditors can switch to a more technical view where they need like underlying evidence. Now, the dashboard basically repeats every check in the browser and anyone can build another verification tool on it using the public data from blockchain.

Let's talk about the limits we have. These are generally about where people can vote and the device they use. Also, who holds the key pieces like the keepers. At home, someone can pressurize a voter to to cast their ballot and revoting can help, but that does not remove every form of coercion or like vote buying and stuff. So, voters can Also, voters can control what they retain. So, if they retain their ballot key, let's say, then that that can let them reveal their choices in future.

We cannot enforce this relation. Now, long-term secrecy is mandatory, but right now we don't have PQ updated things, but we are working towards it. Also, the keepers infrastructure should be um reusable and changeable for with with every um with every election so that the keepers are always online and does not collude to reveal individual choices. Yes, and now I don't have much time, but where could this lead? It is a start. We start with Munich staff council election.

The experience gained here will be informing other internal elections in the city and then probably non-political elections. Political elections would be a longer-term possibility, but that would need like independent review and right legal framework first. Yes, so I think I'm done. >> Thank you. Any questions from the audience? We have one here. >> Can anyone like if I casted a vote can I how can I verify that I cast X party X member?

>> Um you if you have your ballot key already in the browser then you can check uh in the dashboard where you voted like for what for whom you voted. But that should be your responsibility. We don't hold any ballot key or the pseudo name which we create just to ensure that it cannot be tied with with the voters real identity. >> So there've been quite some voting pilots over the past decade. I built one in 2017. Um the main problem was always okay how to get the adoption flow going for that as well and to make sure that everything is secure. So how did you um how did Munich come about? Can you tell a little more about uh

>> Yes, so Munich was experimenting with University of Munich. And we had a connection there basically so uh they wanted a public verified voting and also not to reveal voters' identity and Shutter was fitting very much into it. Uh yeah, so it's kind of a pilot project for now but can be reused in the real voting for Munich city employees. Yeah. >> Thank you. One last question. No. >> [clears throat] >> So you mentioned that I would be able to prove to somebody that I voted a specific way.

I- isn't that a drawback? I mean that's that can open open up a path to coercion. >> Um you cannot prove as in you voted for this candidate. You can prove that you voted and you yourself can see the vote. Like you yourself can see the choice but the individual choices will never get revealed. Only the candidate totals get revealed like the totals which candidate >> Yes, so say there's no way for me to reveal say to a potential briber that I voted some way. >> Yes.

>> Okay. Thank you very much. >> [music]