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.
- 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.
- Python 3.10+
-
Clone the repository:
git clone https://github.com/mind-network/mind-sdk-randgen-py.git
-
Navigate to the project directory:
cd mind-sdk-randgen-py
-
Install dependencies:
pip install -r requirements.txt
-
Copy default configuration and modify as needed:
cp mind_randgen_sdk/configs/default_config.json mind_randgen_sdk/configs/config.json
-
Run the CLI:
python cli.py --help
The CLI provides commands to interact with the Randgen Hub. Below is a list of available commands:
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.
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.
Displays the Fully Homomorphic Encryption (FHE) keyset.
python cli.py print-fhe-keyset
Encrypts a number using FHE.
python cli.py encrypt <number>
- Arguments:
<number>
: The number to encrypt.
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.
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.
You can integrate this project into your Python applications programmatically by importing the RandgenLib
class.
Install the SDK using pip
:
pip install mind_randgen_sdk
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.
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)
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
.
This project is licensed under the MIT License.
For questions or support, please contact Mind Network Official Channels.