Skip to main content

Python SDK for Mind Network Randgen Hub FHE voting

Project description

Mind Network Randgen Hub Voter CLI & SDK

A Python-based Command Line Interface (CLI) and Software Development Kit (SDK) for interacting with the Randgen Hub on the Mind Network. This tool facilitates voter registration, reward checking, encryption, and secure anonymous voting using Fully Homomorphic Encryption (FHE).

The hub is live and accessible at Randgen Hub.


Features

  • Voter Registration: Register for voting in the Randgen Hub.
  • Reward Checking: Retrieve rewards linked to your wallet after voting.
  • Anonymous Voting: Cast encrypted votes in a secure and privacy-preserving manner using FHE.
  • Encryption: Encrypt data with the FHE keyset.
  • Vote Submission: Submit encrypted votes to the Randgen Hub.
  • Continuous Voting: Automatically vote in eligible rounds using the vote_nonstop functionality.
  • Python SDK for Integration: Use the SDK to integrate these features into your Python projects.

Installation

Prerequisites

  • Python 3.10+

Steps

  1. Clone the repository:

    git clone https://github.com/mind-network/mind-sdk-randgen-py.git
    
  2. Navigate to the project directory:

    cd mind-sdk-randgen-py
    
  3. Install dependencies:

    pip install -r requirements.txt
    
  4. Copy default configuration and modify as needed:

    cp mind_randgen_sdk/configs/default_config.json mind_randgen_sdk/configs/config.json
    
  5. Run the CLI:

    python cli.py --help
    

CLI Usage

The CLI provides commands to interact with the Randgen Hub. Below is a list of available commands:

register-voter

Registers a voter in the Randgen Hub.

python cli.py register-voter [--hot-wallet-private-key <key>] [--cold-wallet-address <address>]
  • Options:
    • --hot-wallet-private-key (optional): Private key of the hot wallet.
    • --cold-wallet-address (optional): Address of the cold wallet for receiving rewards.

check-voting-reward

Checks voting rewards for a specific wallet.

python cli.py check-voting-reward [--cold-wallet-address <address>]
  • Options:
    • --cold-wallet-address (optional): Address of the cold wallet.

print-fhe-keyset

Displays the Fully Homomorphic Encryption (FHE) keyset.

python cli.py print-fhe-keyset

encrypt

Encrypts a number using FHE.

python cli.py encrypt <number>
  • Arguments:
    • <number>: The number to encrypt.

submit-vote

Submits a vote using an encrypted ciphertext URL.

python cli.py submit-vote <ciphertextUrl> [--hot-wallet-private-key <key>]
  • Arguments:
    • <ciphertextUrl>: URL of the encrypted vote.
    • --hot-wallet-private-key (optional): Private key of the hot wallet.

vote-nonstop

Continuously votes in every eligible round of the Randgen Hub.

python cli.py vote-nonstop [--hot-wallet-private-key <key>]
  • Options:
    • --hot-wallet-private-key (optional): Private key of the hot wallet.

Using as an SDK

You can integrate this project into your Python applications programmatically by importing the RandgenLib class.

Installation

Install the SDK using pip:

pip install mind_randgen_sdk

Available Methods

The following methods are provided by the SDK:

  • register_voter(cold_wallet_address: str): Register a voter in the Randgen Hub.
  • check_cold_wallet_reward(cold_wallet_address: str): Check rewards associated with a cold wallet.
  • fetch_fhe_keyset(): Retrieve the FHE keyset.
  • encrypt(num: int): Encrypt a number using the FHE keyset.
  • submit_vote(cypher_text_url: str): Submit an encrypted vote.
  • vote_continuously(): Continuously vote in all eligible rounds.

Code Example

Below is an example of generating a random number, encrypting it, and submitting a vote:

from mind_randgen_sdk import RandgenLib

# Initialize the library
configs = {
    "hot_wallet_private_key": "your_private_key",
    "other_config_values": "..."
}
lib = RandgenLib(configs=configs)

# Generate a random number
random_number = 42
print(f"Generated random number: {random_number}")

# Encrypt the random number
encrypted_url = lib.encrypt(num=random_number)
print(f"Encrypted URL: {encrypted_url}")

# Submit the vote
result = lib.submit_vote(cypher_text_url=encrypted_url)
print("Vote submission result:", result)

Configuration

The CLI uses a configuration file located at configs/config.json if the file is present. For reference on the required settings, you can check the default configuration file at configs/default_config.json.


License

This project is licensed under the MIT License.


Contact

For questions or support, please contact Mind Network Official Channels.

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

mind_randgen_sdk-0.9.2.tar.gz (787.4 kB view details)

Uploaded Source

Built Distribution

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

mind_randgen_sdk-0.9.2-py3-none-any.whl (800.7 kB view details)

Uploaded Python 3

File details

Details for the file mind_randgen_sdk-0.9.2.tar.gz.

File metadata

  • Download URL: mind_randgen_sdk-0.9.2.tar.gz
  • Upload date:
  • Size: 787.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for mind_randgen_sdk-0.9.2.tar.gz
Algorithm Hash digest
SHA256 5b663313546a89f7d25faaee08b083738add2035713b33f16f9615cca8315d4f
MD5 ddfcbffdf8c3f79034762c2152e99d34
BLAKE2b-256 78f983ed25e3cc9d4c40f3af1fb34f908d48e7a5a7be4bd35e6e4d9815b02550

See more details on using hashes here.

File details

Details for the file mind_randgen_sdk-0.9.2-py3-none-any.whl.

File metadata

File hashes

Hashes for mind_randgen_sdk-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d2ea63d406df1e6165e6aa5048c35cd79f29918e1d400cdee494a45d588db9f3
MD5 1167d4c63d4f7f632d6837188eeb8208
BLAKE2b-256 0976ed863376f8a694a7e962241b400e5d0d1a57c39c46f93890540895f29eee

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