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


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.


Install rust or update to the latest versions.

curl -sSf | sh
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
rustup update stable
cargo install --git

You will also need to install the following packages:


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


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


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.


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.


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


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.