Inspiration
The most recent U.S. presidential elections highlighted the need for provable voting - being able to establish that your vote is truly your vote. Voting is also important for DAOs and blockchain governances. Further, voting is a way to establish a more robust consensus for oracles, for example in determining the price of an asset which is less subject to manipulation than relying on a single exchange or provider - a circumstance which has led to many instances of loss in defi hacks. We seek a way that individual voters can give their view of truth which other smart contracts can rely on.
What it does
Voters are registered pseudonymously, Votes are encrypted for privacy. All takes place in a smart contract published on the binance smart chain (BSC). A result is made available to be consumed by other smart contracts, which can keep track of the results. Voters can query the contract to ensure that their encrypted and pseudonymous vote was properly tabulated.
How we built it
A solidity contract was written using encryption tools and a map of voters. Voters are registered by the contract owners, and provide both addres and public keys to the contract. Each vote is verified, unencrypted, and added to the publicly available list of votes.
Challenges we ran into
Unencrypting data based on users (voters) public keys rather than just their ethereum addresses was a challenge.
Accomplishments that we're proud of
Many other voting projects using blockchains have been implemented, however in this case the entire implementation is on a single contract, making the system more robust and transparent, and better suited to deployment by oracle providers on BSC.
What we learned
We learned a lot about development paths - git, circleci, visual studio code, solidity libraries, and deployment. We learned a lot about existing oracle systems and the security dangers which they create.
What's next for Voted
The system will need refinement for specific application and enabling users / voters with a simple to use interface.
Log in or sign up for Devpost to join the conversation.