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
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 (String, Integer, Float)
- Weighted voting capabilities
- Custom voting restrictions and rules
-
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:
-
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:
- 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:
- Pairwise comparison of all options
- Preference matrix creation
- Winner determination
- Tie resolution
results = state.calculate_results()
winner = state.consensus()
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.0.9
- 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'}
})
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
-
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/
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.1.9.tar.gz.
File metadata
- Download URL: hivemind_python-0.1.9.tar.gz
- Upload date:
- Size: 26.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b50d664cf9a96d54c9a05799512b01d20e8e32fa42f01458d4a1759a6fe58d8
|
|
| MD5 |
680e35ba800a3c8d2fe41439474b4046
|
|
| BLAKE2b-256 |
52bb62c0f55801e91f7630925e5e564e50127dcc36270c4f18dfbf31fb8d85d1
|
File details
Details for the file hivemind_python-0.1.9-py3-none-any.whl.
File metadata
- Download URL: hivemind_python-0.1.9-py3-none-any.whl
- Upload date:
- Size: 19.2 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 |
e98907c9738c8fa8fd3e3a31726644f17c63b982d03454a615afadf4aa5792b7
|
|
| MD5 |
c54a81e9316c111f4239cb9d4dee65bc
|
|
| BLAKE2b-256 |
ba6aa1dc67f0f054ae0598be1a0ef15e86e210a8c07ce1b02fe782936a8607f9
|