Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
src
.gitignore
Cargo.toml
README.md

README.md

edge_voting

This module contains logic for voting. It currently supports binary and multi-option elections with optional commit/reveal schemes using the Blake2Hash function as the hashing algorithm.

Setup

Install rust or update to the latest versions.

curl https://sh.rustup.rs -sSf | sh
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
rustup update stable
cargo install --git https://github.com/alexcrichton/wasm-gc

You will also need to install the following packages:

Linux:

sudo apt install cmake pkg-config libssl-dev git clang libclang-dev

Mac:

brew install cmake pkg-config openssl git llvm

Voting Lifecycle

Votes go through a number of stages, conditional on the type of vote.

  1. Prevoting
  2. (Optional) Commit
  3. Voting
  4. Completed

Tally types

  • One person, one vote
  • One coin, one vote

Voting types

  • Binary votes
  • Multi-option votes
  • Commit-reveal votes

Prevoting

The prevoting stage marks the creation of a vote. Additionally, in this stage no voting can take place. This is currently being used by the edge-signaling module.

Commit

The commit stage is used for votes that require commit-reveal schemes. Within this stage, all participants submit commitments. After the commit phase, all participants should reveal.

Voting

The voting stage doubles as a reveal phase when the vote uses a commit-reveal scheme and simply a general public vote otherwise.

Completed

The completed stage marks the ending of a vote, meaning no further votes will be considered in a tally.

You can’t perform that action at this time.