High-performance bech32 vanity address generator with GPU acceleration. Generate custom addresses with specific prefixes for any blockchain using bech32 encoding (Bitcoin, Litecoin, POCX, etc).
- 🚀 Multi-platform: CPU, CUDA (NVIDIA), and OpenCL (AMD/Intel/NVIDIA) support
- 🌐 Universal bech32: Works with any bech32 network (bc1, ltc1, pocx1, tpocx1, etc)
- ⚡ High Performance: Up to 12 GKey/s on CUDA, 66 MKey/s on CPU
- 🎯 Wildcard Patterns: Use
*and?for flexible pattern matching (CPU mode only) - 🔐 Complete Output: Generates private key, WIF, and descriptor checksum
- 🎨 Colored Output: Easy-to-read terminal output with syntax highlighting
- 🐳 Docker Ready: Pre-built images with CUDA/OpenCL support
This tool works with any bech32-encoded cryptocurrency. By default, the generator creates addresses for POCX.
Your search pattern matches the characters immediately after the prefix:
- POCX:
pocx1q...(mainnet) ortpocx1q...(testnet) - Bitcoin:
bc1q...(mainnet) ortb1q...(testnet)
Example: If you search for test, you'll find addresses starting with pocx1qtest....
Valid characters: qpzry9x8gf2tvdw0s3jn54khce6mua7l (bech32 charset, lowercase only).
(Characters like 1, b, i, o are not supported!)
| Mode | Speed | Platform |
|---|---|---|
| CUDA | 12.5 GKey/s | NVIDIA RTX 5090 |
| OpenCL | 8.6 GKey/s | NVIDIA RTX 5090 |
| CPU (no wildcards) | 66 MKey/s | Ryzen 7 9800x3d |
| CPU (wildcards) | 65 MKey/s | Ryzen 7 9800x3d |
The easiest way to get started with GPU support:
# Pull the Docker image with CUDA/OpenCL support
docker pull ghcr.io/PoC-Consortium/vanitysearch-pocx:latest
# Run with NVIDIA GPU
docker run --gpus all ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "evlseed" -g -v -m 1
# Run with AMD/Intel GPU (OpenCL)
docker run --device=/dev/dri ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "evlseed" -g --opencl -v -m 1
# CPU mode
docker run ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "ev?seed*" -v -m 1See Docker Usage section below for more details.
- Rust 1.70+ (Install Rust)
- For CUDA: NVIDIA GPU + CUDA Toolkit 11.0+ (Download)
- For OpenCL: OpenCL SDK (comes with GPU drivers)
# Clone the repository
git clone https://github.com/PoC-Consortium/vanitysearch-pocx.git
cd vanitysearch-pocx
# Build with all features (CUDA + OpenCL)
cargo build --release
# CPU-only build
cargo build --release --no-default-features
# CUDA only
cargo build --release --no-default-features --features cuda
# OpenCL only
cargo build --release --no-default-features --features openclThe compiled binary will be at target/release/vanitysearch-pocx (or .exe on Windows).
# CPU mode - find 1 address starting with "pocx1qevlseed"
vanitysearch-pocx "evlseed" -v -m 1
# GPU mode (Fastest) - auto-detects CUDA, falls back to OpenCL
vanitysearch-pocx "evlseed" -g -v -m 1
# With wildcards (CPU only) - find "test" at any position
vanitysearch-pocx "pocx1q*test*" -v -m 1
# Wildcards - any 3 chars then "test"
vanitysearch-pocx "???test*" -v -m 1
# With 60 second timeout, output every found address asap (-v)
vanitysearch-pocx "evlseed" -v -T 60
# Find 5 matches
vanitysearch-pocx "evlseed" -v -m 5vanitysearch-pocx [OPTIONS] <PATTERN>
Arguments:
<PATTERN> Search pattern (e.g., "test", "madf0*", "???abc")
Options:
-g, --gpu Use GPU mode (auto-detects CUDA, falls back to OpenCL)
--opencl Force OpenCL mode
--gpu-id <N> GPU device ID (default: 0)
--gpu-threads <N> Number of GPU threads (default: auto-detect)
--gpu-block-size <N> Threads per block for CUDA (default: 256)
--opencl-platform <N> OpenCL platform index (default: 0)
--opencl-threads <N> OpenCL work items (default: 65536)
-t, --threads <N> CPU thread count (default: auto-detect)
-T, --timeout <SEC> Stop after N seconds
-m, --max-found <N> Stop after finding N matches
-o, --output <FMT> Output format: text, json, csv (default: text)
-f, --output-file <FILE> Write output to file
-q, --quiet Suppress progress output
-v, --verbose Print full details for each match immediately
-h, --help Print help
-V, --version Print version
Default Mode: Shows address when found, full details at the end
vanitysearch-pocx "test" -T 10
# Output during search:
# Found: pocx1qtest...
# Output after search:
# Full details (address, descriptors, private key)Verbose Mode (-v): Shows full details immediately when each match is found
vanitysearch-pocx "test" -v -T 10
# Output when each match is found:
# Address pocx1qev7seeducvqaqwkc8txav6hxl7ga2dxntg5w3c
# Main Descriptor wpkh(KwFK92Lbitdf9GLVLdijEgsTtYVrjfbxpp1QmdMkQzCx4HFyr9Pk)#eafg539f
# Test Descriptor wpkh(cMcJbwLT9xKvJhokj3Xrc1NXWmoGQ7hetr9st3pFv6rxK2HwT6rK)#wpwlyx4e
# Private Key 0x00d310937c09fa6f154ec1e93bdd7d5672be2c16e11277c0e075989b69e75ae0Quiet Mode (-q): Suppresses all progress output, only shows final results
The -g flag automatically detects available GPU backends:
- CUDA is tried first (NVIDIA GPUs)
- OpenCL is used as fallback (AMD/Intel/NVIDIA GPUs)
- Use
--openclto force OpenCL even when CUDA is available
Note: GPU modes do not support wildcard patterns (* or ?). Use CPU mode for wildcards.
Patterns are matched against the address after the HRP and separator:
pocx1qon mainnet → search pattern starts afterpocx1qtpocx1qon testnet → search pattern starts aftertpocx1q
Valid characters: qpzry9x8gf2tvdw0s3jn54khce6mua7l (bech32 charset, lowercase only)
Wildcards (CPU mode only):
*= any number of characters?= exactly one character
Examples:
test→ findspocx1qtest...,tpocx1qtest...test*→ finds addresses starting withpocx1qtest...,tpocx1qtest...???abc→ finds addresses likepocx1qXYZabc...(X, Y, Z = any lowercase chars)
Address pocx1qcudarun4409ey62fydetrpwhg7lk593fhnrwk0
Main Descriptor wpkh(KyTmdk1tQT7G2zy9Ccro1wFsqqyrYsZoWb6ucyADMLGuzQqxZ3EY)#r750rech
Test Descriptor wpkh(cPpm6f1jqWoXCSSQb2fvPFkwU5HGDKfVadFNjPcirSvvF9xqGYF3)#wzxmwkek
Private Key 0x42e8534f1358f839bd0d3587561f2ca7564ad44163e9558e7490b440743c9b88
- Address: The generated vanity address
- Main Descriptor: Mainnet WIF with descriptor checksum
- Test Descriptor: Testnet WIF with descriptor checksum
- Private Key: Raw 256-bit private key in hexadecimal
# Pull the latest image
docker pull ghcr.io/PoC-Consortium/vanitysearch-pocx:latest
# Run with NVIDIA GPU (CUDA)
docker run --gpus all ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "test" -g -v -m 1
# Run with AMD/Intel GPU (OpenCL)
docker run --device=/dev/dri ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "test" -g -v -m 1
# CPU mode
docker run ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "test*" -v -m 1# Install Docker Desktop with WSL2
# Install NVIDIA Container Toolkit
docker run --gpus all ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "evlseed" -g -v -m 1# Install nvidia-container-toolkit
# See: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
docker run --gpus all ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "madf0" -g -v -m 1# AMD GPU access via /dev/dri
docker run --device=/dev/dri --group-add video \
ghcr.io/PoC-Consortium/vanitysearch-pocx:latest "test" -g -v -m 1# Redirect output to host file
docker run --gpus all ghcr.io/PoC-Consortium/vanitysearch-pocx:latest \
"evlseed" -g -T 60 > output.txt# Build multi-arch image with CUDA/OpenCL support
docker build -t vanitysearch-pocx:local .
# Run local build
docker run --gpus all vanitysearch-pocx:local "test" -g -v -m 1CUDA (NVIDIA only):
- ✅ Fastest performance (~12 GKey/s on RTX 5090)
- ✅ Native NVIDIA optimization
- ❌ NVIDIA GPUs only
OpenCL (Cross-platform):
- ✅ Works on AMD, Intel, and NVIDIA GPUs
- ✅ Single codebase for all vendors
⚠️ ~69% of CUDA performance on NVIDIA (due to Fermat inverse overhead)- 🔮 May perform better on native AMD/Intel OpenCL implementations
Wildcards not supported in GPU mode. GPU mode performs exact prefix matching for maximum performance. If you need wildcards, use CPU mode.
Example:
# ✅ GPU mode - exact prefix
vanitysearch-pocx "evlseed" -g -v -m 1
# ❌ GPU mode - wildcards will show warning
vanitysearch-pocx "evl*" -g # Use CPU mode instead
# ✅ CPU mode - wildcards work
vanitysearch-pocx "evl*" -v -m 1# List platforms and devices (shows in startup output)
vanitysearch-pocx "test" --opencl -v -m 1
# Use specific platform and device
vanitysearch-pocx "test" --opencl --opencl-platform 0 --opencl-device 1 -v -m 1Address difficulty grows exponentially with pattern length:
| Pattern Length | Difficulty | Est. Time (12 GKey/s GPU) |
|---|---|---|
| 5 chars | 2^25 (~33M) | < 1 second |
| 7 chars | 2^35 (~34B) | ~3 seconds |
| 9 chars | 2^45 (~35T) | ~50 minutes |
| 11 chars | 2^55 (~36P) | ~40 days |
Note: These are statistical averages. Actual time varies.
- Never share your private key with anyone
- Store keys in a secure password manager or hardware wallet
- Test with small amounts first on testnet
- Back up your keys before sending funds to generated addresses
- Elliptic Curve: secp256k1
- Address Format: Bech32 (witness v0)
- Optimization: Endomorphism for 6 addresses per point evaluation
- GPU Strategy: Batch point multiplication with Montgomery's trick for modular inverse
- Core Crypto: Pure Rust implementation of secp256k1
- Hashing: Hardware-accelerated SHA-256 and RIPEMD-160 (via
sha2/ripemdcrates) - CUDA Kernel: Direct port of VanitySearch's proven GPU algorithm
- OpenCL Kernel: Cross-platform port with Fermat's little theorem for modular inverse
Test performance on your hardware:
# CPU benchmark (30 seconds)
vanitysearch-pocx "cpurun" -T 30
# CUDA benchmark (30 seconds)
vanitysearch-pocx "cudarun" -T 30 -g
# OpenCL benchmark (30 seconds)
vanitysearch-pocx "0pencl3" -T 30 -g --openclError: "CUDA not found"
- Install CUDA Toolkit from NVIDIA
- Set
CUDA_PATHenvironment variable - Rebuild with
--features cuda
Low Performance
- Close other GPU-intensive applications
- Update NVIDIA drivers
- Check GPU utilization with
nvidia-smi
Error: "No OpenCL platforms found"
- Install GPU vendor's OpenCL SDK or drivers
- AMD: Install AMD APP SDK
- Intel: Install Intel OpenCL runtime
- NVIDIA: CUDA toolkit includes OpenCL
Wrong Device Selected
- Use
--opencl-platformand--opencl-deviceto select correct GPU - Check startup output for available devices
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
# Clone repository
git clone https://github.com/PoC-Consortium/vanitysearch-pocx.git
cd vanitysearch-pocx
# Build with all features
cargo build --release
# Run tests
cargo test
# Run with logging
RUST_LOG=debug cargo run --release -- "test" -T 10Releases are automatically built and published when you push a version tag:
# Update version in Cargo.toml
# Commit changes
git commit -am "Bump version to 0.5.1"
# Create and push tag
git tag v0.5.1
git push origin main --tagsThis triggers GitHub Actions to:
- Build binaries for Linux, Windows, and macOS
- Build and push Docker images to GitHub Container Registry
- Create a GitHub release with all artifacts
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
- Original VanitySearch by Jean Luc PONS
- Bitcoin Core for secp256k1 implementation reference
- POC blockchain community
This tool is for generating vanity addresses. Always verify generated addresses and test with small amounts first. The authors are not responsible for any loss of funds due to misuse or bugs.
Star ⭐ this repo if you find it useful!