Voting DAO

Stack

Next.js

Solidity

Introduction

This project was developed as part of my coursework in "Smart Contracts and Decentralized Blockchain Applications" at the University of Basel. Tasked with creating a practical blockchain application, I chose to focus on a voting mechanism, fully aware of the intricacies and challenges, such as vulnerability to Sybil attacks, associated with implementing voting systems on the blockchain. This project serves as a conceptual exploration into decentralized autonomous organizations (DAO) for voting. Additionally, in a seminar during the same course, I authored a paper titled "Analysis of Voting Mechanisms in Decentralized Autonomous Organizations", which delves deeper into these mechanisms, offering a critical evaluation of their functionalities and limitations in a DAO context.

Tech Stack

  • Blockchain Platform: Ethereum
  • Smart Contract Language: Solidity
  • Token Standard: ERC-20
  • Web Development: Next.js for building the marketplace
  • Blockchain Development Tools: Web3.js library and Truffle Suite
  • Deployment: Ropsten testnet

Functionality

  1. Proposal Creation: Users can create voting proposals, specifying the title, description, eligible voters, and voting duration.
  2. Tokenized Voting Rights: The system uses ERC20 tokens to represent voting rights.
  3. Dynamic Voting System: Eligible voters can vote on proposals within the specified timeframe, with votes represented as token transactions.
  4. Additional Voting Rights: The proposal manager can grant voting rights to additional participants.
  5. Result Determination: The system automatically determines the outcome of the vote based on token counts and marks the proposal as completed.

The code is available on Github.