← Back to home

Votelik Pollerin

Sybil- and bribery-resistant polling on Farcaster, utilizing World ID and MACI.

Screenshots

Votelik Pollerin screenshot 1
Votelik Pollerin screenshot 2
Votelik Pollerin screenshot 3
Votelik Pollerin screenshot 4
Votelik Pollerin screenshot 5

Problem Statement

Our project introduces a Farcaster Frame template for creating secure and anonymous polls. It uses MACI to enable voting privacy and prevent bribery, Pimlico for account management, and offers World ID as a voter identification method to determine eligibility. This setup enables users to generate polls on Farcaster that are secure against bots, bribery, and collusion.We use World ID for verifying one person per vote, creating sybil-resistant polls and overcoming a challenge not addressed by Twitter and similar platforms. Alternatively, entities such as DAOs can leverage our voting framework by conducting votes restricted to their governance token holders, ensuring a bribery-resistant and accessible platform for governance proposals.Because for every voter a smart account is deployed, voters can execute transactions directly inside a frame and do not need to pay for gas.

Solution

Functionalities we created and tech we used:Voting System: A set of predefined MACI contracts that allow anonymous voting.Contract SignUpWorldcoinGatekeeper: This contract allows to gatekeep MACI signups by requiring new voters to verify with World ID.Poll Creation: A new MACI poll can be registered with our MACI factory.Web Application: A Next.js webapp, designed for easy integration with Farcaster as a frame. Poll details like questions and options are stored in an offchain database linked to the webapp.Voter Registration: Voters need to register using a method defined in the Gatekeeper contract. Our setup uses World ID for verification, employing @worldcoin/idkit-core and the Worldcoin app to create a unique nullifier hash for voting. A Pimlico Safe account is also deployed for each voter, allowing votes without gas fees, using @permissionless library.Voting Process: Registered voters can choose from options set by the poll creator.Result Calculation and Display: Poll outcomes are calculated through zk-snark functions within the MACI poll contract, with results displayed in the frame for public viewing.

Hackathon

ETHGlobal London

2024

Prizes

  • 🏆

    Best use of MACI4th place

    Ethereum Foundation

  • 🏆

    Best World ID Usage1st Prize

    Worldcoin

Contributors