Skip to main content

A Condorcet-style Ranked Choice Voting System that stores all data on IPFS

Project description

Hivemind Protocol

A decentralized decision-making protocol implementing Condorcet-style Ranked Choice Voting with IPFS-based data storage and Bitcoin-signed message verification.

Tests Documentation

What is the Hivemind Protocol?

The Hivemind Protocol is a revolutionary approach to decentralized decision-making that combines:

  • Condorcet-style ranked choice voting
  • Immutable IPFS-based data storage
  • Cryptographic verification using Bitcoin signed messages
  • Flexible voting mechanisms and constraints

Key Features

  1. Decentralized & Transparent

    • All voting data stored on IPFS
    • Complete audit trail of decisions
    • No central authority or server
    • Cryptographically verifiable results
  2. Advanced Voting Mechanisms

    • Condorcet-style ranked choice voting
    • Multiple ranking strategies (fixed, auto-high, auto-low)
    • Support for various answer types (String, Integer, Float)
    • Weighted voting capabilities
    • Custom voting restrictions and rules
  3. Secure & Verifiable

    • Bitcoin-style message signing for vote verification
    • Immutable voting history
    • Cryptographic proof of participation
    • Tamper-evident design

How It Works

1. Issue Creation

An issue represents a decision to be made. It can contain:

  • Multiple questions
  • Answer type constraints (String/Integer/Float)
  • Participation rules
  • Custom validation rules
issue = HivemindIssue()
issue.name = "Protocol Upgrade"
issue.add_question("Should we implement EIP-1559?")
issue.answer_type = "String"

2. Option Submission

Participants can submit options as potential answers:

  • Each option is stored on IPFS
  • Options are validated against issue constraints
  • Options require cryptographic signatures
  • Options can be added dynamically
option = HivemindOption()
option.set_hivemind_issue(issue.cid)
option.set("Yes, implement EIP-1559")

3. Opinion Formation

Participants express preferences through three ranking methods:

  1. Fixed Ranking

    opinion = HivemindOpinion()
    opinion.ranking.set_fixed([option1.cid, option2.cid])  # Explicit order
    
  2. Auto-High Ranking

    opinion.ranking.set_auto_high(preferred_option.cid)  # Higher values preferred
    
  3. Auto-Low Ranking

    opinion.ranking.set_auto_low(preferred_option.cid)  # Lower values preferred
    

4. State Management

The protocol maintains state through:

  • Option tracking
  • Opinion collection
  • Signature verification
  • Result calculation
  • State transitions
state = HivemindState()
state.set_hivemind_issue(issue.cid)
state.add_option(timestamp, option.cid, voter_address, signature)
state.add_opinion(timestamp, opinion.cid, signature, voter_address)

5. Result Calculation

Results are calculated using Condorcet method:

  1. Pairwise comparison of all options
  2. Preference matrix creation
  3. Winner determination
  4. Tie resolution
results = state.calculate_results()
winner = state.consensus()

Examples

Detailed examples can be found in the examples/ directory:

  1. basic_voting.py - Simple voting example
  2. advanced_features.py - Advanced protocol features
  3. protocol_upgrade.py - Governance decision example

Each example is thoroughly documented and can be run independently. See the examples README for more details.

Installation

pip install hivemind-python

Usage

Import the package:

import hivemind  # Note: Import as 'hivemind', not 'hivemind_python'

# Create a new voting issue
issue = hivemind.HivemindIssue("My voting issue")

Requirements

Advanced Features

Custom Constraints

issue.set_constraints({
    'min_value': 0,
    'max_value': 100,
    'specs': {'type': 'Integer'}
})

Voting Restrictions

issue.set_restrictions({
    'min_participants': 5,
    'allowed_addresses': ['addr1', 'addr2'],
    'min_weight': 10
})

Auto-Ranking with Values

option1.set(75)  # Integer value
option2.set(25)  # Integer value
opinion.ranking.set_auto_high(option1.cid)  # Will rank options by proximity to 75

Use Cases

  1. Governance Decisions

    • Protocol upgrades
    • Parameter adjustments
    • Resource allocation
  2. Community Polling

    • Feature prioritization
    • Community preferences
    • Strategic decisions
  3. Multi-stakeholder Decisions

    • Investment decisions
    • Project prioritization
    • Resource allocation

Documentation

Full documentation is available at https://valyriantech.github.io/hivemind-python/

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hivemind_python-0.1.2.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hivemind_python-0.1.2-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file hivemind_python-0.1.2.tar.gz.

File metadata

  • Download URL: hivemind_python-0.1.2.tar.gz
  • Upload date:
  • Size: 26.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.9

File hashes

Hashes for hivemind_python-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d2406df92f566027f873a4c8714af9fe4a181ac27ef094df491aeccc22d225eb
MD5 10c724ee32bd7b0196b9472b549b45c2
BLAKE2b-256 616cef9f9a4685a28303b105eb26079b093c0a7f85789e553b186715d4d0aaf1

See more details on using hashes here.

File details

Details for the file hivemind_python-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for hivemind_python-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c0b1a7a421690bde4b8f9f6c2afbc5464ffbc90f908901635b669bb72e59d3fc
MD5 f586ba6f6810bb7960c42e835aa308bb
BLAKE2b-256 34cd361f3b8dbb22fbc80f5de181d940e347da3e6fb6421ec3261ca4db594ca2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page