Secret Polls: Securely participate in polls without anyone knowing what you voted for using Nillion Blind computation
Secret Polls, provides a novel mechanism for taking blind polls. Explained in full detail in the github read me.
Welcome to Secret Polls where we can create polls of only which the end outcome is known. These polls are completely blind/secret in the sense that we can only see the end result of the polls without knowing the participants. Nobody but the person who participated in that poll will ever know what she/he voted for apart from themselves. Neither the poll creator, nor any third can ever know this information
How the platform works: Poll owners can create polls to resolve, questions, concerns etc. Polls can have a cap for participants and expiry periods in which no one else can participate again. Polls also have visibility, in the sense of whether the poll owners want the general populace to be able to access his/her poll and see the results or keep a poll private restricting access to only those that have a link (or even in the future passwords ). A Poll consists of a question and 4 options. Once A poll has been concluded a poll owner can see the results.
Poll participants can choose to participate in polls they have access to with the full knowledge that the knowledge of what they picked is secret will never be known. poll participants can also see the results to the polls they have access to
This Project is solely built on top of Nillion. We use the Nillion Network as the privacy layer. That allows for people to create polls another people to anonymous answer these polls without any party being the wiser about what option a person picked.
There are two main components in this project, a lightweight backend and the nillion javascript blind app. This project allows people to create polls which are blind computation programs behind the scenes without knowing in advance the parties that might wish to participate in the polls, we do this by generating nada programs only on demand i.e when a poll owner is ready to compute.
The full flow goes like this. User A creates a Poll configured with different options and visibility level, visibility governs who can participate in the poll. When a poll is created we only store the user id, the question and the poll options, as well as poll configs.
Now other users B, C and D can gain access to a poll and choose to participate secretly, i.e they do not want it known what option they picked but they want to participate. They choose an option an submit, under the hood this submission is a nillion secret integer storage operation where the interger stored is which option the user picked.
When these participants vote on the poll, thier secret input ids and parties get stored on the backend server.
Now when a poll has expired or all the max number of participants have interacted with poll, or if the owner decided to end the poll early, in other words, once we have a conclusion event. That is when we dynamically create a secret program that represents the poll, the inputs of the anonymous participants are then binded and the poll creator A, then uploads and computes the result of the poll, seeing which option won, what total votes each options gets, without knowing who actually participated.