wallet-gen
wallet-gen is an offline tool for generating Monolythium wallets in bulk. It is intended for operators who need to create multiple wallets for distributions, exchange integrations, or testnet genesis preparation.
Use Cases
- Exchange integrations: Generate deposit addresses for users
- Token distributions: Create wallets for airdrops or campaigns
- Testnet genesis prep: Generate genesis accounts for testing
- Development: Create test accounts for automation
Security
Private keys are sensitive. Never share them, commit them to version control, or expose them in logs.
Installation
Download the latest release from github.com/mono-experimental/wallet-gen/releases.
Platform Binaries
| Platform | Binary |
|---|---|
| Windows | walletgen-windows-amd64.exe |
| macOS (Intel) | walletgen-darwin-amd64 |
| macOS (Apple Silicon) | walletgen-darwin-arm64 |
| Linux | walletgen-linux-amd64 |
macOS/Linux Setup
chmod +x walletgen-darwin-arm64
./walletgen-darwin-arm64 --help
Usage Methods
Method 1: Windows Double-Click Wizard
On Windows, double-click walletgen-windows-amd64.exe to launch an interactive wizard:
- Enter the number of wallets to generate
- Choose output format (raw or encrypted)
- If encrypted, enter a password
- Output file is created in the current directory
Method 2: CLI Flags
For scripting and automation:
# Generate 10 wallets with raw private keys
./walletgen --count 10 --output wallets.csv
# Generate 100 wallets with encrypted keystores
./walletgen --count 100 --output wallets.csv --encrypt --password-file password.txt
Method 3: Helper Scripts
For convenience, helper scripts are provided:
| Platform | Script |
|---|---|
| macOS | scripts/wallet-gen.command (double-click) |
| Linux/macOS | scripts/wallet-gen.sh |
CLI Options
| Flag | Description | Default |
|---|---|---|
--count, -n | Number of wallets to generate | 1 |
--output, -o | Output file path | wallets.csv |
--encrypt | Enable keystore V3 encryption | false |
--password-file | Path to file containing password | (none) |
--password | Password for encryption (interactive prompt if not specified) | (none) |
--quiet, -q | Suppress progress output | false |
Output Format
Raw Mode (Default)
CSV format with columns:
bech32,evm,privatekey
mono1abc...,0x123...,<redacted>
mono1def...,0x456...,<redacted>
| Column | Description |
|---|---|
bech32 | Cosmos bech32 address (mono1...) |
evm | EVM hex address (0x...) |
privatekey | Raw hex private key |
Encrypted Mode (--encrypt)
When encryption is enabled:
- Private keys are encrypted using Ethereum Keystore V3 format
- Each wallet's keystore JSON is saved in an
./keystores/directory - The CSV contains only addresses and keystore filenames:
bech32,evm,keystore_file
mono1abc...,0x123...,keystore-0x123....json
Security Recommendations
Raw Private Keys
- Delete the output file after importing keys to your system
- Never store raw keys in plain text long-term
- Use encrypted mode for production workflows
Encrypted Mode
- Use a strong, unique password
- Store the password securely (password manager, HSM, etc.)
- The password file is plaintext and should be deleted after use
General
- Run on an air-gapped machine if possible
- Verify the binary hash before running
- Do not use online generators for production keys
Example Workflows
Exchange Deposit Addresses
# Generate 1000 addresses for user deposits
./walletgen --count 1000 --output deposits.csv --encrypt --password-file secret.txt
# Import keystores to your hot wallet system
# Delete secret.txt after import
Testnet Genesis Accounts
# Generate 10 accounts for genesis
./walletgen --count 10 --output genesis-accounts.csv
# Use bech32 addresses in genesis.json accounts
# Fund with initial balances
Development Test Wallets
# Quick generation for local testing
./walletgen --count 5 --output test-wallets.csv
Verifying Installation
Check the version:
./walletgen --version
Verify addresses are valid:
# Generated addresses should be queryable (once funded)
monod query bank balances mono1abc...
Related
- Wallets - User wallet setup
- Address Formats - Understanding address formats
- Exchange Integration - Exchange setup guide