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.
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
- Advanced consensus calculation
Key Features
-
Decentralized & Transparent
- All voting data stored on IPFS
- Complete audit trail of decisions
- No central authority or server
- Cryptographically verifiable results
-
Advanced Voting Mechanisms
- Condorcet-style ranked choice voting
- Multiple ranking strategies (fixed, auto-high, auto-low)
- Support for various answer types (Boolean, String, Integer, Float)
- Weighted voting with contribution calculation
- Custom voting restrictions and rules
- Predefined options for common types
-
Secure & Verifiable
- Bitcoin-style message signing for vote verification
- Immutable voting history
- Cryptographic proof of participation
- Tamper-evident design
- Comprehensive validation checks
-
Flexible Consensus
- Single-winner and ranked consensus types
- Advanced tie-breaking mechanisms
- State management with reset and exclude options
- Dynamic result recalculation
System Architecture
The protocol's architecture is documented through four comprehensive diagrams in the diagrams/ directory:
- Class Diagram (
class_diagram.md): Core components and their relationships - Component Diagram (
component_diagram.md): System-level architecture and interactions - State Diagram (
state_diagram.md): State transitions and validation flows - Voting Sequence (
voting_sequence.md): Detailed voting process flow
How It Works
1. Issue Creation
An issue represents a decision to be made. It can contain:
- Multiple questions with indices
- Answer type constraints (Boolean/String/Integer/Float)
- Participation rules
- Custom validation rules
- Predefined options for common types
issue = HivemindIssue()
issue.name = "Protocol Upgrade"
issue.add_question("Should we implement EIP-1559?")
issue.answer_type = "Boolean" # Will auto-create Yes/No options
2. Option Submission
Options can be predefined or submitted dynamically:
- Automatic options for Boolean types (Yes/No)
- Predefined choices for common scenarios
- Dynamic option submission with validation
- Complex type validation support
- Signature and timestamp verification
# Dynamic option
option = HivemindOption()
option.set_hivemind_issue(issue.cid)
option.set("Custom implementation approach")
# With signature
option.sign(private_key)
3. Opinion Formation
Participants express preferences through three ranking methods:
-
Fixed Ranking
opinion = HivemindOpinion() opinion.ranking.set_fixed([option1.cid, option2.cid]) # Explicit order
-
Auto-High Ranking
opinion.ranking.set_auto_high(preferred_option.cid) # Higher values preferred
-
Auto-Low Ranking
opinion.ranking.set_auto_low(preferred_option.cid) # Lower values preferred
4. State Management
The protocol maintains state through:
- IPFS connectivity management
- Option and opinion tracking
- Comprehensive validation
- Contribution calculation
- Multiple 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)
# State transitions
state.finalize() # Lock the state
state.reset() # Clear opinions
state.exclude() # Exclude options and recalculate
5. Result Calculation
Results are calculated through multiple steps:
- Weight calculation for voters
- Contribution calculation
- Ranking aggregation
- Consensus determination
- Single consensus for clear winners
- Ranked consensus for preference order
- Tie resolution if needed
results = state.calculate_results()
consensus = state.calculate_consensus()
winner = consensus.get_winner()
Examples
Detailed examples can be found in the examples/ directory:
basic_voting.py- Simple voting exampleadvanced_features.py- Advanced protocol featuresprotocol_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
- Python 3.10 or higher
- ipfs-dict-chain >= 1.1.0
- A running IPFS node (see IPFS Installation Guide)
- The IPFS daemon must be running and accessible via the default API endpoint
- Default endpoint: http://127.0.0.1:5001
Advanced Features
Custom Constraints
issue.set_constraints({
'min_value': 0,
'max_value': 100,
'specs': {'type': 'Integer'},
'complex_validation': {'custom_rule': 'value % 2 == 0'} # Even numbers only
})
Voting Restrictions
issue.set_restrictions({
'min_participants': 5,
'allowed_addresses': ['addr1', 'addr2'],
'min_weight': 10,
'min_contribution': 5
})
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
Consensus Configuration
state.set_consensus_config({
'type': 'ranked', # or 'single'
'tie_breaker': 'timestamp', # or 'random'
'min_consensus': 0.66 # 66% agreement required
})
Use Cases
-
Governance Decisions
- Protocol upgrades
- Parameter adjustments
- Resource allocation
-
Community Polling
- Feature prioritization
- Community preferences
- Strategic decisions
-
Multi-stakeholder Decisions
- Investment decisions
- Project prioritization
- Resource allocation
Documentation
Full documentation is available at https://valyriantech.github.io/hivemind-python/
The system architecture is documented through comprehensive diagrams in the diagrams/ directory:
class_diagram.md: Core components and their relationshipscomponent_diagram.md: System-level architecturestate_diagram.md: State transitions and validationvoting_sequence.md: Detailed process flow
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hivemind_python-0.2.1.tar.gz.
File metadata
- Download URL: hivemind_python-0.2.1.tar.gz
- Upload date:
- Size: 48.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9af0ef26f03aa17b46793b3ee10408cb29f96f81284e5e0fc82c35841bf23fd
|
|
| MD5 |
984b0bdb27df54a55e387dc0610a253f
|
|
| BLAKE2b-256 |
6341f66c92d74eae95402a7ee06dc0b60f3ba01d9ee561f235c5cabbe81beaa9
|
File details
Details for the file hivemind_python-0.2.1-py3-none-any.whl.
File metadata
- Download URL: hivemind_python-0.2.1-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fb94e6cfb9d02e58aaa6604ce3e20578deb2e4fe075b14a7abb54dde3a5a1b2
|
|
| MD5 |
0bb40138785efab6b2f4aeaa7a9924e8
|
|
| BLAKE2b-256 |
2cb3f77c0ea309fdd03961e50cb9249734ccc66b08a26809f0f94a11a82af8e0
|