Code Monkey home page Code Monkey logo

atticavoting's Introduction

AtticaVoting

Attica Voting Project

Attica Logo

Attica

The current practices in place to administer national democratic voting are heavily riddled with security vulnerabilities. It was demonstrated publicly how to obtain full administrative access to what are called Direct-Recording Electronic voting machines with no special tools in under two minutes. The DRE machines are still being used across the nation as well as other poor voting practices. Attica proposes a solution to addressing these current security vulnerabilities by implementing a consensus voting protocol on a distributed ledger. The commit and reveal structure allows any individual who voted to check and track that their vote was counted. The votes are committed through the Hedera Hashgraph Consensus Service to be sure there is no double sending, counting, or voting from unregistered individuals.

Motivation

The motivation for this project comes from the poor voting practices across the nation. While it is understood that part of this problem is due to the fact that each state is in charge of its own voting policy. This makes it very difficult for there to be implemented standards across the nation. This being said, we hope that the use of Attica by a state founded university will set an example of what we can do better. Digital voting is a topic of high interest among cyber security professionals and we hope to have a large positive contribution on the direction of this technology.

Tech/framework used

Built with

Features

Our project provides consensus validation for every vote casts and administration. Currently there is no technology that provides this service with provable security up to the Byzantine Fault Tolerance.

Prerequisites

  1. Node.JS, tested with v12.16.1

  2. Hedera Hashgraph account

  3. DragonGlass API Keys

  4. PGP keypair, can be generated multiple ways including here

Usage

Setup

  • Install node dependencies with npm install

Starting an Election

  • Start the script with npm run start

  • Once you get to the 404 page add /elections/dogs or elections/CSU to the URL

Finishing an Election

  • Start the tallying script with npm run tally

  • Follow the menu prompts for the topic ID and PGP key information

Authors

  • Derek Larkins
  • Waylon Jepsen
  • Maddie Mihevc
  • Christian Ferguson

atticavoting's People

Contributors

0xjepsen avatar djblackbelt avatar mmihevc avatar

Watchers

 avatar  avatar

atticavoting's Issues

Ballot Item: T-Shirts

in Client/App.js call candidate card (Defined in Client/Components/Candidate.js) to create the ballot item for the Evergreen T-Shirts

New Ballot Item: ASCSU Constitution

Call the new ballot tool, in Client/App.js to generate a ballot item for the approval of the ASCSU constitution.

Maybe include a jpeg resembling a constitution if it looks nice?

New Ballot Item: Senatorial Election

From Saml cookie, get the college of the voter.

Display senate candidates for that college.

Present students with a ballot for their college.

Each college has seats (Vote for college of primary major).

Some colleges have more senators than others.

Ballot Randomizations

This will likely be done in App.js

Randomize the order in which ballot cards are displayed

Note: This is to prevent anyone from saying "We lost because we weren't at the top"

Hedera Object

Creating Hedera object to handle account initialization, vote submission, and mirror server subscription.

Hedera Vote Submission

Handling the vote submitted in Server/api/modules/submit.js. Submitting the vote through the Hedera object.

Vote Encryption

Handling vote encryption and formatting (preferably on front-end, if not back-end).

New Ballot Item tool

Create a new file for ballot generation, in the client/components directory.
Include imports and create a new card generation method.
The method should be able to generate a ballot item with a yes or no vote option.

This will specifically be used later to create the ballot item of ASCSU election approval.

New Ballot Item: President and VP

Create a Ballot item for President and VP in App.js use candidate card from Components/Candidate.js

Need to get images from ASCSU

Figure out E-mail Service for Receipt & Tracking Instructions

We need to figure out which E-mail Service we want to use for for Receipt & Tracking Instructions (to voters). Needs to be SPF framework compatible. 3rd Party like Survey Monkey may not be best. Need to test and ensure Office 365 won't kick it back or put it in the junk folder. Ideal if it comes from Colostate.Edu

Save Login Inputs

  • save the inputs from the login boxes in order to send in the post request to the server

Fix Image Issue

  • Add static file support
  • add images folder to Server with all candidate images
  • point static file to images folder
    • app.use(express.static('dist')); (for example)

Senatorial Item Write in.

Need to accommodate for a write-in.

Should be done in App.js

Make a check box, when checked open another text box if there is more than one seat up for election.

Submit Candidate

  • send post request from Candidate.js with the name of the chosen candidate to the server-side
  • located in the handleVote function which is called from the Candidate Card function

Connect Checkboxes with Submit

  • In Candidate.js, need to set-up a check to make sure only one checkbox is selected for each position.
  • Then once the submit button is clicked it needs to take all of the data from the checkboxes and submit that.

Receive JSON from Server

  • recieve JSON file from server in Candidate.js
  • in handleJSON function process JSON file and set variables in App.js in order to be passed to Conformation.js

Tmux workspace setup

Integrating a Tmux environment on the work VM to handle multiple connections and persistent logging.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.