We were inspired by blockchains and their ability to store data in a decentralized way. We see an election system as a perfect use case for secure and private blockchain technology!

What it does

Our application uses blockchain to host elections. We keep track of votes for each candidate in a smart contract living in the blockchain. Users vote and query for elections results through transactions. Users can only vote once, and any user is a viable candidate!

How we built it

We built our application in Clarity, which is a relatively new LISP-style language created by Blockstack. All of our tests are in JavaScript.

Challenges we ran into

It is always challenging to learn a new language, especially one in a different paradigm (functional rather than object-oriented). Some of our team members also had no experience with blockchain technology/smart contracts, which made initial progress difficult. Moreover, since we all primarily have a background in traditional web applications (where data is stored on a single server), it was difficult for us to grasp the architecture of blockchain storage. With the help of the Stacks developers we were able to overcome these challenges and build our first smart contract!

Accomplishments that we're proud of

Overall, we are really proud to have built a smart contract from scratch! In creating this project, we learned a lot about blockchain technology and how it can be used to build the apps of the future!

What we learned

Our team learned so much during this hackathon! First and foremost we learned a new programming language, Clarity, which is the language in which our smart contract was implemented. We also learned Mocha, a JS framework used to test the contract's functionality. Finally, we learned about blockchain technology, and how smart contracts can add business logic to a blockchain.

What's next for SmartVoting

Moving forward, our team would like to implement a nicer user interface to interact with our application. A user-friendly website would which interfaces with the smart contract would make the application easier to use and therefore more scalable. We'd also like to add new features to SmartVoting, like restricting the number of users who can run as candidates. It would also be nice if users could query for information about the candidates to make more informed decisions.

Built With

Share this project: