vgen

Crates.iovgen
lib.rsvgen
version0.2.0
created_at2025-12-17 20:06:54.022126+00
updated_at2026-01-04 19:41:47.544559+00
descriptionBitcoin vanity address generator with regex pattern matching and GPU acceleration
homepage
repositoryhttps://github.com/oritwoen/vgen
max_upload_size
id1991066
size573,227
Ori (oritwoen)

documentation

README

vgen

Ask DeepWiki

Bitcoin vanity address generator with regex pattern matching and GPU acceleration.

[!WARNING] This project is experimental. Do not use generated keys for storing real funds without thorough verification. Always prefer hardware wallets or well-established software for production use.

Features

  • Generate Bitcoin addresses matching custom regex patterns
  • Support for multiple address formats:
    • P2PKH (1...)
    • P2WPKH / Bech32 (bc1q...)
    • Ethereum (0x...)
  • GPU acceleration via wgpu (Vulkan/Metal/DX12/OpenGL backends)
  • Parallel CPU scanning with rayon
  • Interactive TUI with real-time statistics
  • Range scanning for Bitcoin Puzzle challenges
  • Data providers for puzzle/bounty integration (boha)
  • JSON and minimal output formats

Installation

From crates.io

cargo install vgen

Arch Linux (AUR)

paru -S vgen

From source

cargo install --path .

Usage

Generate vanity address

# Find address starting with "1Cat"
vgen generate -p "^1Cat"

# Case insensitive matching
vgen generate -p "^1cat" -i

# Bech32 address ending with "dead"
vgen generate -p "dead$" -f p2wpkh

# Ethereum address
vgen generate -p "^0xdead" -f ethereum

# CPU only (GPU is enabled by default)
vgen generate -p "^1Cat" --no-gpu

# Find multiple matches
vgen generate -p "^1Cat" -c 5

Estimate difficulty

vgen estimate -p "^1CatDog"

Scan key range (Bitcoin Puzzles)

# Scan puzzle #66 range
vgen range --puzzle 66 -p "."

# Custom range
vgen range -r "20000000000000000:3FFFFFFFFFFFFFFFF"

Data providers

Use external data sources for pattern generation:

# Vanity with puzzle address prefix (6 characters)
vgen generate -p "boha:b1000:66" -l 6
# → Resolves to pattern: ^13zb1h

# Puzzle solving (exact address match + auto key range)
vgen range -p "boha:b1000:66"
# → Range: 2^65..2^66-1
# → Pattern: ^13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so$

# With prefix matching in range mode
vgen range -p "boha:b1000:66" -l 8

Supported providers:

  • boha:collection:id - boha puzzle library (b1000, gsmg, bitaps, etc.)

Verify private key

# From WIF
vgen verify -k "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ"

# From hex
vgen verify -k "0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d"

# Verify against expected address
vgen verify -k "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ" -a "1GAehh7TsJAHuUAeKZcXf5CnwuGuGgyX2S"

Output formats

# Default text output
vgen generate -p "^1Cat" -o text

# JSON output (pretty-printed)
vgen generate -p "^1Cat" -o json

# JSON Lines (one JSON object per line, for data pipelines)
vgen generate -p "^1Cat" -o jsonl

# CSV (with header, for data catalogs/Iceberg)
vgen generate -p "^1Cat" -o csv

# Minimal (just WIF)
vgen generate -p "^1Cat" -o minimal

# Write to file
vgen generate -p "^1Cat" -o jsonl --file results.jsonl
vgen generate -p "^1Cat" -o csv --file results.csv

TUI

vgen TUI

The interactive TUI is enabled by default in terminal sessions. Disable with --no-tui.

Features:

  • Real-time hashrate display
  • Performance sparkline chart
  • Luck indicator
  • Found matches list

Performance

GPU acceleration is enabled by default and falls back to CPU if no compatible GPU is found.

  • CPU: ~50,000-200,000 keys/sec (depends on CPU)
  • GPU: ~500,000-2,000,000 keys/sec (depends on GPU)

Pattern syntax

Patterns use Rust regex syntax:

Pattern Description
^1Cat Starts with "1Cat"
dead$ Ends with "dead"
^1[Cc]at Starts with "1Cat" or "1cat"
^1.*dead$ Starts with "1", ends with "dead"

Comparison

Project Language GPU Patterns Notes
vgen Rust wgpu (Vulkan/Metal/DX12) regex TUI, range scanning, memory safe
VanitySearch C++ CUDA prefix Fastest (~7 Gkeys/s), NVIDIA only
vanitygen-plusplus C++ OpenCL prefix/regex 100+ cryptocurrencies
btc-vanity Rust - prefix/regex BTC/ETH/SOL, CPU only
nakatoshi Rust - prefix Simple, prefix only
supervanitygen C - prefix ASM optimizations (AVX2/SHA-NI)
vanitygen C - prefix/regex Classic, unmaintained

Why vgen?

  • Cross-platform GPU via wgpu (not locked to NVIDIA CUDA)
  • Memory safe Rust implementation
  • Full regex pattern support
  • Interactive TUI with real-time statistics
  • Bitcoin Puzzle range scanning built-in

Roadmap

  • More cryptocurrencies (Litecoin, Dogecoin, Solana, etc.)
  • GPU performance improvements (CUDA backend, shader optimizations)
  • More data providers (mempool, blockchair, etc.)

Security

Generated private keys are cryptographically secure random numbers. Always verify the generated key produces the expected address before use.

License

MIT

Commit count: 0

cargo fmt