Deploying a Nationwide Referendum On-Chain
Devcon 8 · 4 Nov 2026 · 22:04
Felix Maduakor, a core developer of opn.vote, describes running the ABSTIMMUNG21 nationwide referendum in Germany on-chain, using a blind signature scheme on Gnosis Chain with sponsored transactions through Gelato. Of about 20,000 voters who received credentials, roughly 13,000 cast votes on-chain for about $53 in transaction costs. Lessons include a 30 minute ballot outage when the sponsorship wallet drained and confusion over credential documents; changes since include removing the centralized validation server, moving to ERC-4337 and exploring a mixnet.
Speakers
Topics
From Devcon 8, hosted by Ethereum Foundation.
Transcript
[music] [music] Hello everyone. I'm Felix from uh Open Vote and we built a blockchain based e voting system that we deployed last year for the first time and um I want to showcase or I want to explain to you like what we learned uh doing the um um deployment and um yes and how it is to to build a system that's used by ordinary people. So uh we are from like I'm from a um nonprofit organization in in in Germany and uh so we are like I'm the the the the person who is like in charge of the blockchain development
there and um yes so we had in total over uh 12,000 votes on chain and um yeah let's let's dive into it first of all about the vote. So it was a um referendum in Germany organized by Abstimong 21. Um Abstimong 21 is a nonprofit organization in in Germany and um up to last year um all of the votes have been done only via postal voting. Um in some cases like in in one referendum we had over 200,000 votes and via postal voting and this uh um yeah it's on one side quite costly like each vote costed on average like €2 and um
and it takes quite a lot of time to to count the votes. So last year was the first time that we decided to implement a an e- voting system and um yes and uh and for this we implemented uh open vote. Uh so why did we actually use the blockchain? Um the major reason for us is that we want to have like less reliance on us as the voting operator and to put this um and and to put like rules for the execution and um and um like um and and how it will be executed all onchain so that um you can check on
the chain like what's actually executing on um um in the in the specific referendum. Um yes and of course there are also different different um um um um different good things about blockchain but what what what we also like is the openness so that you have um um that you cannot just block a specific voter from from casting a vote and um yeah so these are the reasons why we choose to to to use blockchain technology to to to to implement the system.
Um so what are the requirements for online voting? In our case, we have like a very broad um um voter set like a very broad set of voters. So we had uh this year uh someone who who voted who was blind. We had last year um um um like in in all age groups uh people who who voted. So um it's very important for us that uh the system is like uh easy can be easy used and there's no wallet setup and um you can use it without knowing anything about uh transaction costs or uh blockchain in general and um yeah this is quite important for us so that um it's inclusive and accessible for the
for for the public. So how did it work? Like first of all you need to have uh so so the referendum is only in Germany and uh you either need to have the German ID card with which you are able to uh verify your identity or you or you do it via a postal pin. um the postal pin. With the postal pin, you would um uh it would check your address that you are living in Germany. And um so first of all, you you do your identity identity verification and after the identity verification is done, you would create your voting key and um the voting key is uh created um in your browser. So it's a browser based application and um yes and
after you receive your voting key you receive two uh PDF documents. So two two documents which is on one side the um the uh voting key and on the other side you have the election permit. So with the um election permit is actually the document that you will use to um to cast your vote in the in the voting phase. And the voting key is pretty much just a seat seat key that you can use as like which is the seat key. Um we we need both of them because um in case you lose your election permit, you can regenerate it with the voting key and um in case you lose the vote uh in in case you lose
the v voting key, you can just use your um election permit to cast your vote. Um for the referendum we have two different um two different phases and the first phase is just the registration phase and in the registration phase you would get these two documents which you need to keep safe and um yes and um then after that you can go into the um voting phase where you just import your election permit. you you see your um you see your um um ballot and you can fill out the ballot and the vote is um cast on chain.
Okay. So the participation in last in in the election in the referendum of last year was um about 45,000 people that were authorized. So 45,000 people did the um did the verification of their identity. We had over 20 thou,000 people who um created the credentials. So who received the documents and stored them and at the end we had uh 13,000 people who who cast their vote and um put their vote on chain. We also had a few recasts. So you would be able to like so everyone who voted was able to recast their vote and um yes and there we had like over 300 in total. we had uh 63,000
u people um who who who um um voted in the election of um uh in the referendum of 2025. So let's look at the implementation. So how does it actually work? First of all overview of the protocol. So this is um this is basically a blind signature scheme. So you have the um voter client which um uh which uh which um verifies their identity with the authorization provider. After that the voter would go to the register and at the register he um would um receive a blinded credentials. Um with these
blinded credentials which is literally the the documents that you have seen in the in the in the slides before the voter is able to cast their vote. So um they encrypt their ballot, they cast their vote um and send it onchain and um yes and we need sponsorship rules um so because the voter does not have any any any cryptocurrency any native coins. So um so for this we have like sponsorship rules so that the um um um transaction can be cast at the end of the vote. the election coordinator publishes the um the telly and um and the the vote results and the private key so everyone is able to to verify the the
um the results of the vote. So for the submission in 2025, we did um a few changes and um because in that year the most important thing for us was to see like will people actually use the system and um we did a few changes on the submission side and I will go on on each of them a little bit um deeper later. So we used SVS a signature validation server. This is a centralized entity uh which would verify the credentials offchain and which also would forward the transaction to uh gelato. So gelato is a transaction relayer a service that
we used to um to um send the transactions onchain. Um both of them couldn't change anything um about the um like like like couldn't change any vote but they are um but they would be able to to um to to harm the availability so they need to be available um during the vote. Um yes so which chain did we use? Uh we used chain. Um the benefit of Gnosis chain is that the transactions fees are like very low. Um and um and we can have a stable coin as um we can have a stable coin as native coin. So we don't need to take a bet on which uh
like like how uh about the prices of the of the um of the native coin and um yeah and it had like um decentralized block production. So it's yeah it's decentralized and um yes the negative side of it or like one drawback of course is it's not uh um with as much assets secured as Ethereum for example but yes um we used ESC 2771 for the transaction so not 4337.
Um so why did we use this um this setup and um the main reason is that we um that that we wanted to have more certainty in the in the in the vote submission for the first deployment and um with Gelato we had the benefit of um like having a SDK and it was pretty easy to implement and um and it did not change on the like like yeah it only changed as the negative effect the elability Um yes and we didn't need to handle like each of the submissions. Uh so yes um for the off-chain um credential validation we yeah it's pretty much the
the same reason we wanted to have more certainty on the deployment side and um and um and um since the user journey or the journey that um um was the most important thing for the first deployment of the system. Both of these aspects we have actually removed in in in current in the current system and um yeah I will explain about that also a little bit more. So first of all the lessons. So what did we what did we learn or what what is the outcome of the of the uh referendum um the transaction costs have been like $53 in total for around 13,000 votes which is quite low. But the interesting
part here is that uh actually 12% of the submissions or 12% of the votes accounts for uh almost 90% of the of the um of the votes that have been onchain. And uh yeah, so so what happened here? Um what happened is that um as as soon as we sent out the the campaign for the for the invite for the um for the um um election um um most of the people actually voted instantly like within within the first hour and uh we got into a new tier or like in an out tier of of Gelato and uh which meant that each vote didn't cost like one cent or below one
cent but over three cent And this kind of drained our our sponsorship wallet within within uh within a few minutes. And um yes and there was like a 30 minutes delay that we in like a 30 minutes um um um um was the ballot submission uh unavailable and in that time um we received like 102 support requests and around 900 um uh rejected submission attempts. Um yes um credential custod was also something that uh we are working on right now and we have seen that uh there are like like voters confu were a little bit confused
about these um with the specific documents. Um also they lost documents and uh also the import um or the the the import of the documents um was sometimes a bit uh tricky um like especially like if you use for example third party tools for Q for for scanning the QR code um it potentially get your your uh your um credential potentially get gets uh leaked um yes so on the network privacy Um especially for a blind signature scheme it's like reads and writes are quite important. Um so what we exploring here is to use Anon uh RPC um from the
Ethereum Foundation um to have like private reads um and for the private rights we um um this is the the the next topic that we are like uh working on um and which will be a little bit more complex uh with usually some some kind of mixet needed for the submission of the ballots. Um, of course, we would be happy if uh if the on the network layer would provide this already for us and we don't need to build it. But um yes, we will see where where where we go there.
So what were the changes since uh since the the election from 2025 and it is that we um we removed the the the centralized entities. So the SVS that I have have shown you before which was only part of the first election. This has been removed for the current ele for the current referendum and um so all credentials are checked onchain and um also we are we moved from um uh 2771 to 4337 with pimiko. So we have now we using now a open standard for submission. So even in case our client would go down people would be able to cast their vote through a third through a third client. Um and also the the
rules for submissions are fully verifiable. So all of the sponsorship rules are not anymore like stored on a on a some kind of back end on on on on a service but they are now uh stored onchain and um yeah and third party clients can can implement them. So what we're exploring next and what we're working on is um that we like the most important thing for us is that to to um to put um both phases in one so that we have registration and voting in one phase instead of having um instead of having two separate phases for that and um this is also connected with the with the submission. So um so there we
are exploring the mix there we exploring mixnet for ballot submission and um yeah this would kind of also solve the credential issuance uh problem. So um so these are the aspects that we are currently working on and um if you are uh interested in that field just scan the QR code and um and uh reach out to us and um yeah and also verifiable clients is also some interesting part that um we are currently exploring. So, um, yeah, I think that's pretty much all about the about the election, about the referendum and, uh, yes.
>> All right. Thank you, Felix. Please an applause to Felix and to this amazing what a journey. Yeah. I mean, thank you so much for explaining this experience with us and to make us aware. So yes, there are questions actually from the from the public and for who doesn't it yet we have a QR code there to do live questions. Let's go with the first more voted question and which it says in indeed this seems like a huge use case. Why is not being adopted that widely yet? It's it's I think it's quite interesting like um especially e- voting is like a really small field like when you go to e- voting conferences um um
they are like there's like we are almost the only one there with a especially with a blockchain solution and in general it's like a really tiny field and um yes um I I think the use case for to use the blockchain for for evoting is a is it's a great fit And um yes and um and um yeah and um and also in Germany there are not many companies or many many providers for for for e- voting solutions. So um it's a little bit sad that we have to do it. Um but um yeah but uh yeah it is um yes >> again
>> about about the block. Yes. C can you just >> Oh the blockages. Okay. Oh yes. So like as you have seen like it's quite um like we had to take like a lot of shortcuts already in the in in in in our system like with using 2771 instead 4337 and um and um it's um like to use it right now it's still quite complicated um like um it's still quite complicated
and Um, additionally like if you go into the into the um into the um theory of of like into the the current science of e voting, you can see that they are not really like there's a little bit of skepticism about blockchain in general. And um we are there and we need to always explain why we use blockchain and what's the benefit of blockchain and and um yes and this is unfortunately like for me I I feel like a little bit strange because these are like all cryptographers so it's uh but um yeah this is unfortunately the state that that that that is currently and uh we
hope that we are also doing a part of it to to change that. All right, hopefully that answer it. So there are a few more questions. Explain how this scheme prevents votes buying. Yeah, this this is a very interesting question because this is also when you look into um like there's already evoting in Estonia, there's evoting in um in uh Switzerland and um like there there is already evoting um and and and and when you talk with the people who are deploying the systems, you you you feel that it's about the environment in which you are actually deploying the
system. So for example in Switzerland vote buying and coercion it's not a big issue. Um if you look in the theory of e voting then it's a huge issue. If you look into blockchainbased e voting it's also a huge issue. So um what I think is like really important is to understand like for in in which environment are you actually deploying your system and and for against like which attacker are you are you deploying it. So even if you look into um France like France are is now creating like their their own guidelines for e- voting and in Germany we are also creating guidelines for for e- voting and even
there these guidelines are quite different in France the most important thing is um transparency in in Germany it's end to end verifi end to end verifiability so um yes so right now like um um vote buying is on on our end um it it is on the to-do list, but it's not on the on the first spots. Like the the most important thing that we want to change right now is that we that we um have more people uh voting like that that that we have a less drop off. Like in our in our first deployment, we had 20,000 people who who wanted to vote, who received credentials, but we had onchain only 13,000 people who voted.
And we need to get these 7,000 people uh also to cast their vote. And uh this is something that we need to improve on our system to make this uh possible. >> All right, we have last 10 seconds. So are you actually engaging with authorities in Germany and somewhere else? >> Um >> very brief. Guess not. >> Yes. In future. Yes. Let's say let's say yes. Yeah. >> All right. Thank you again, Felix. This was amazing. An amazing use case. And we're going to go next with a next um session other few minutes, five minutes break if you want to refresh yourself and we see you.
[music]