chainVote
Using blockchain technology in a voting app. We use the hyperledger fabric framework to create a Java based app that takes in voting data from constituents in a safe, decentralized fashion. Voters can vote on what their represantatives in governement positions should support. In the current version, we have not added login credentials but it will be a vital part of a future update. Our blockchain network is premade using docker for demo purposes.
Getting Started
Follow these instructions if you want to get a copy of the project up and running on your local machine. If you would like to know how to deploy this on a live system, see deployment notes.
Prerequisites
You will need Docker, Gradle, and SoapUI if you want to use this for development or testing.
To install gradle with homebrew:
$ brew update && brew install gradle
with SDKMAN!:
$ sdk install gradle 2.14
or you can just visit the Gradle manually from their website.
You can install the Mac or Windows version of Docker, depending on your needs.
You can download SoapUI from their website as well.
Installing
To get a development environment up and running on your local machine, first you will need to start the blockchain network. I have already provided the paths and the files necessary to get the network running.
docker-compose up
The next step is to make sure gradle builds the necessary resources needed to execute Java on your machine. Navigate to $whereYouHaveSavedTheChainVoteFile/src/github.com/hyperledger/fabric/core/chaincode/shim/java.
gradle -b build.gradle clean
gradle -b build.gradle build
This should add the shim client JAR to your local Maven repository.
Running the tests
Currently our app does not have a connection with the blockchain network we created. But we can still log voter data using a RESTful api such as SoapUI.
Deployment
Additional notes on how to add this to a live system will be incorporated once the app has reached the point of authenticating user data. It needs to make sure the contituents are allowed to vote.
Built With
- Docker - The container used for the blockchain network.
- Gradle - The build system used to work with the Java code.
- SoapUI - Used to test RESTful code.
- Eclipse - Used as the Java code developement environment.
- Hyperledger Fabric - The blockchain framework used.
Authors
License
This project is licensed under the apache license - see the LICESNE.md file for details.
Acknowledgements
- Thanks to IBM developerWorks for their Java Blockchain tutorial.
Log in or sign up for Devpost to join the conversation.