-
Notifications
You must be signed in to change notification settings - Fork 71
Modules: Voting
As of testnet V0.4.0, this page is out of date. Please refer to the code for reference.
This module contains logic for voting. It consumes the delegation module to tally votes and should similarly be consumed by all other modules that want to handle 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 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
Votes go through a number of stages, conditional on the type of vote.
- Prevoting
- (Optional) Commit
- Voting
- Completed
- One person, one vote
- One coin, one vote
- 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-governance 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.