MCPcopy Index your code
hub / github.com/cryptoballot/cryptoballot

github.com/cryptoballot/cryptoballot @v0.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.0 ↗ · + Follow
155 symbols 351 edges 20 files 50 documented · 32%

Browse by type

Functions 126 Types & classes 29
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CryptoBallot

docs crates.io checks codecov

CryptoBallot is a cryptographically secure decentralized end-to-end verifiable voting system meant for real-world elections. It is a "backend" service providing vote storage, cryptographic operations, and an API. It does not provide a user interface - although it is built to make creating a UI that interfaces with it easy.

It uses Shamir Secret Sharing for election decryption keys, blind-signing for voter anonymity, and an optional blockchain backend for distributed transaction storage and verification. It supports all tally methods including write-in candidates.

Goals

  1. Verifiable - the entire voting process should be end-to-end verifiable.
  2. Ergonomic - Easy to use.
  3. Fast - 1,000 votes per second
  4. Scalable - Millions of voters.
  5. Secure - Rock solid security guarantees, byzantine fault tolerance.

Current State

Under active development. Not ready for production use!

Road Map

Status¹ Feature Notes
Migrate from Go to Rust 🦀
Blind-Signing (RSA) Uses RSA-FDH
Blind-Signing (ed25519 / schnorr) Will replace current RSA bling-signing
Shamir Secret Sharing Uses Sharks
Blockchain backend Uses Hyperledger Sawtooth
Support all tally methods Uses Tallystick
REST frontend
Distributed key generation Replace Shamir, uses ElGamal, fully verifiable and distributed
Onion mixnet (likely Sphinx) Strengthened voter anonymity - Depends on REST frontend
Re-encryption mixnet Provides coercion resistance
End-User Device Verification Uses Benaoh Challenge
  1. ✓ means done, ⚠ means in-progress, blank means not started but support is planned.

Components

Core library

  1. Add cryptoballot = "0.3.1" to your rust project's Cargo.toml file.

Command-line tool

  1. Install Rust, ZeroMQ, and Protoc
  2. Run cargo install --path=cryptoballot_cli

Sawtooth Transaction Processor

  1. Install Rust, ZeroMQ, and Protoc
  2. Install Sawtooth
  3. Run cargo install --path=cryptoballot_sawtooth_tp

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 79
Function 47
Class 18
Enum 9
Interface 2

Languages

Rust100%

Modules by API surface

cryptoballot/src/transaction.rs28 symbols
cryptoballot/src/ecies_ed25519.rs21 symbols
cryptoballot_sawtooth_tp/src/handler.rs13 symbols
cryptoballot/src/authn.rs13 symbols
cryptoballot/src/election.rs11 symbols
cryptoballot_cli/src/main.rs9 symbols
cryptoballot/src/vote.rs8 symbols
cryptoballot/src/secret_share.rs8 symbols
cryptoballot/src/decryption.rs8 symbols
cryptoballot_cli/src/transaction.rs7 symbols
cryptoballot/src/store.rs7 symbols
cryptoballot_cli/src/rest.rs5 symbols

For agents

$ claude mcp add cryptoballot \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page