Inspiration

Democracy is the fundamental bedrock in our societies, but it has been increasingly encroached in recent years following appalling reports of voter frauds and election tampering. Coming from the firm position of upholding such values, we came up with a voting-based system for not just political elections but also a ticketing aid-system for public life as well.

Additionally, we have some consultations with the seatlab. img

Furthermore, based on the literature review of the NFT system, we want a fully decentralized NFT system, which provides advantages such as transparency and security. Finally, based on the challenge description, we want the new infrastructure based for equality.

What it does

In short, it is a peak of the ecology of future life powered by dapp systems concerning both the public and social life. In our app, we have two roles, admins and usual voters. At the start of the voting process, the admin will add the voters individually and start the proposal registration phase. The voters will then submit their proposals along with a short description for voting. The admin will then orchestrate the system into the next stage, which is the voting phase. The voters will be able to cast their vote in this phase and the admin would tally them in the end. At the end of the entire voting, a ranking of projects based on their votes gained will be displayed to every voter. Every action throughout the process is fully decentralised and witnessed by transactions in the blockchain to ensure the transparency of the voting process.

The system comparison is as follows. Start with the existing system. img

New system is as follows. In introducing the ticket generation and ticket voting in the domain. img

How we built it

img We implemented a voting contract. The main problems of electronic voting is how to assign voting rights to the correct persons and how to prevent manipulation. We shows how delegated voting can be done so that vote counting is automatic and completely transparent at the same time.

The idea is to create one contract per ballot, providing a short name for each option. Then the creator of the contract who serves as chairperson will give the right to vote to each address individually.

The persons behind the addresses can then choose to either vote themselves or to delegate their vote to a person they trust.

At the end of the voting time, our system will return the proposal with the largest number of votes.

In summary, three steps are included as follows. img

Challenges we ran into

Since none of the members had come into contact with web3/dapp development, the learning curve at the start was slightly daunting, but once we got hang of it, our development agility quickly ramped up and we managed to come up with innovative ideas based on current implementations. Integration with known APIs (MetaMask, for instance) was also quite time-consuming due to environment incompatibility issues, but the trials do look promising.

Accomplishments that we're proud of

  • Built an end-to-end dApp system.
  • Founded on our baseline implementation, we devised an epistemic electoral system based on plural voting systems
  • that have been proven, in certain aspects, a strong candidate of replacement for some of the existing democratic procedures.
  • Built a further perspective extension of a ticketing system inspired by SeatLab, which brought the democratic process outside the political sector.
  • Learned a TON about dApp development and practical web development in an agile workflow.
  • Made it till the very end :)))

What we learned

  • Blockchain empowered system design
  • dApp development
  • Solidity development
  • Building end-to-end decentralised voting applications
  • Integration with existing crypto systems
  • Resolving complex environmental issues
  • That late night development turns out to be efficient

What's next

  • Deployment.
  • Adding Support for more ERC20 tokens.
  • Dynamic Pricing to mitigate effect of fluctuating price of eth.
  • Adding Support for multiple event admins.
  • Optimizing UI and UX.
Share this project:

Updates