MACI - Why do we need private voting and what are we up to
Devcon 7 SEA·Tue, Nov 12, 2024, 07:12 AM · 10:06
Speaker
MACI is a protocol that can be used to run private on chain polls. This talk will introduce the protocol, dive into some of the technical aspects. Finally we will talk about the team's plans for the future and how the community can get involved to help improve the project.
Transcript
yeah just works works yes I work at PC we do a lot of program of photography cool stuff comes to us we have a booth there yeah this is Macy in five minutes and my private what is important just an agenda will talk through what is Macy in five minutes and why private voting is important. Just an agenda. We'll talk through what is Macy, why do we need it, how it works, and just look into the future. So Macy stands for Minimal Anti-Collusion Infrastructure. And in a nutshell, it's a protocol that allows to run private on-chain voting.
These are some of the properties that we try to push. So collusion resistance is increased because there's only one entity which can be certain of the validity of the vote. If that is trusted, then things get a little bit all the votes are encrypted. You can also, you can edit a vote by newly finding it, but whatever is set on chain must be processed. And even if we talk about this trusted entity, a coordinator, even if they are malicious, they cannot really produce any false output of the vote.
So why do we need this? I mean, I think voting is a very sensible topic. Bribery and collusions happens everywhere. And I think something that a lot of people find very close to. And it's great to work on this for that reason.
But yeah, like, let's take an example, like, which are the funding or voting, where more people coming together can actually make a difference. But if it's easy to collude, then the results can be gained. And also think, like, if you know how people vote, then you can also be conditioned. Like, there's some people just don't want to spend some time going through the candidates or whatever you're voting for. And you see like a famous person, oh, cool, I voted for this.
Why don't I just do it? But if you don't really know, they cannot prove to you that that's actually their valid vote, then you could just maybe think for yourself. And then bribery is reduced because it's hard to prove and it's hard to collude. And our goal is to make voting more democratic and fair. So in a nutshell, the architecture, the smart contracts that work on any EVM chain, there's some circum circuits that can be used, are used to prove that all the votes sent are valid or invalid.
And the tally circuit, which tallies all the votes. So this is a run by this trusted entity, the coordinator, and all the results are posted on chain for everyone to verify. Yeah, there's some SDKs and TypeScript stuff if people want to integrate it. Hopefully you do. And yeah, how does it work?
As a user flow, you come and register into the platform. You register with your Macy key, which is not to be confused with your Ethereum key. You can just prove you're human, prove you own a Zupas ticket, and then you register into the system. Then you can send encrypted votes that only the coordinator is able to decrypt. And you also sign them with this Macy private key, so no one else can send votes on your behalf.
And then as a user, after the coordinator processes everything, you want to verify that everything was done correctly. The votes are encrypted using a CDA, so there's a share key between you and the coordinator. It is signed, and in the vote, you specify who you're voting for, whether it's like a yes or no vote, or like you're giving some sort of weight in which you're voting. And yeah, that's encrypted, send on chain, fully encrypted, and you also send a public key that you used to generate the share key so the coordinator can just reverse the process. To finalize, the coordinator just takes all of the votes and just all the events from these smart contracts and then just generates the secret proofs using the circuits that we talked about, and they'll just post them on chain.
They cannot censor any vote, they cannot prove something that is not happened, so that's some of the cool stuff about it. And yeah, looking into the future, what we try to do is to make it easier for people to use and actually get someone to use it. Some of the research topics that we have planned is to actually decentralize this coordinator figure using MPC and try and make it even more harder to collude. There might be some time to also look into new voting mechanisms, or like funding mechanisms that could be integrated. And maybe we'll also be thinking how to rethink the architecture and kind of integrate it with a lot of other PSE protocol, like Semaphore, R&R, and Exuvia.
Okay, so we are running a DEF CON QV round. There's like 250K put by the impact teams at DEF CON. So you can go and vote. You can try Macy. You just need to prove you're an attendee by using Zupas.
This is what it looks like. Just try it out. Just be gentle, because, yeah, just be gentle with this app. Don't break it looks like. Just try it out.
Just be gentle, because yeah, just be gentle with this app. Don't break it, please. But yeah, that's just showcase how Macie work. And yeah, that's it. Five minutes.
Thank you, Alessandro. Questions? Do you want to try this one for me? Thanks. Sorry, dude.
You mentioned at one point that there was a proof of humanity required for the voting. How do we achieve that without relying on a centralized entity? And also, how do you protect against civil attacks in your voting chain? Yeah, that's a good question. So to prevent civil attacks, we have this concept of gatekeepers.
So you need to prove that's fully customizable. So whoever runs the vote will say, hey, I'm only accepting someone that approves. It's a DEF CON, so by scanning a ticket or, like, on something like an NFT and other things. So that's how we put it against Sibyls. So Macy's is only as good as the Sibyls solution that you decide to use.
And for the trusted assumption is that this coordinated figure could be removed with the NPC. So you have, like like a collaborative snark. I mean, I'm not really good into this stuff. So at a high level, just like instead of having one coordinator, you have multiple and there might be some sort of consensus, some sort of way of, how to say, to make it hard for them to also not post the results and not collude between themselves. But yeah, that's probably where we're going.
And some smart people in PSC that already thought how Macy would look with MPC. So hopefully we'll be able to implement that very soon. I think we have a question at the back there. In the beginning, the receipt, receipt freeness of the vote and that it's impossible to show who you voted for. But what if the user would simply share their private keys and then reveal everything that they did, they would still be able to prove the vote in that situation.
Yeah, that's a good point. So the thing is, like, when you cast a vote, you can nullify it. So I show you, hey, I voted for this, but then you couldn't trust me that I actually did, unless the coordinator colludes with this other entity. And yeah, one of the other issues is if you give out your key, then they will be able to post votes on your behalf. So it's up to the user to not sell the key.
Yeah, that would kind of mess up with the system as well. And hopefully we'll be able to find some good solution for that. Yeah. I think there's a system called something with bear vote, like the animal that has a property like you need an additional salt to prove that it was actually you. And if you provide a wrong salt in the proving process, the result comes off of somebody else's vote.
Okay, I'm not familiar with this, to be honest. But yeah, if you just hit me up later and just describe this, that'd be interesting to talk about. Any other questions? Yeah, I have some questions. There is any possibility you have a credential for get about your knowledge, for example, you know computer science and there is a proposal for some upgrade in the system.
There is any possibility to do this? So like to automate, some sort of execution after the tile is produced? Yeah, the proposal is made, you get a vote, and the calculation of your knowledge is the quadratic voting. And then there's some sort of action that happens after? Like, that's what you mean, like, in, let's say, DAO governance or something?
Yeah. Yeah, okay. That's not something we explore yet, DAO governance. Actually, I talked to a lot of people about it today. So, yeah, that's still possible.
It's the tallies posted on-chain, so they can be automated as a hook. After the tally is fully approved, on-chain is the data, something can happen. That's totally doable, yeah. Yeah, thank you.
Automatic transcript — names and jargon may be misspelled.