Skip to content

dextromethorphanum/evm-vanity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸͺ™ EVM Vanity Address Generator

Fast and performant Ethereum vanity address generator written in Go. Generate custom addresses with your desired prefix or suffix using multi-threaded mining with support for pattern matching and wildcards.

Features

✨ High Performance β€” Multi-threaded address mining utilizing all available CPU cores
πŸ” Flexible Patterns β€” Search by prefix or suffix with wildcard support for pattern matching
🎯 EVM Compatible β€” Works with Ethereum and all EVM-compatible blockchain networks
πŸ” EIP-55 Checksum β€” Generates properly checksummed addresses (EIP-55) for maximum security
πŸ“Š Real-time Statistics β€” Displays generation speed and attempt counter
πŸ”‘ Key Verification β€” Verify private keys and derive their corresponding addresses
πŸ“¦ Batch Mode β€” Search for multiple patterns simultaneously with comprehensive reporting
πŸ’Ύ JSON Export β€” Save results to JSON files with security-conscious file permissions
⏱️ Search Timeout β€” Set maximum time limits for each search operation

Installation

Requirements

  • Go 1.19 or higher

Setup

# 1. Clone repository
git clone https://github.com/dextromethorphanum/evm-vanity.git
cd evm-vanity

# 2. Run the script
go run main.go -prefix "d" -benchmark

# 2.1. or build executable
go build -o vanity main.go

# 2.2. and run the executable
./vanity -prefix "dead"

Usage

Basic Examples

# Search for addresses starting with "dead"
./vanity -prefix "dead"

# Search for addresses ending with "cafe"
./vanity -suffix "cafe"

# Use specific number of worker threads
./vanity -prefix "0x123" -workers 8

# Display progress bar during search
./vanity -prefix "d" -benchmark

# Set timeout (30 seconds max search time)
./vanity -prefix "dead" -timeout 30s

# Save result to JSON file
./vanity -prefix "cafe" -output result.json

# Combine multiple options
./vanity -prefix "deadbeef" -workers 16 -timeout 60s -output address.json -benchmark

Pattern Matching with Wildcards

Use special characters to match character classes:

Character Meaning Example
@ Any digit (0-9) de@@ matches de12, de99, etc.
# Any hex letter (a-f) ###cafe matches abccafe, ffecafe, etc.
* Any hex char (0-9, a-f) ****1234 matches any 4 chars + 1234
[hex] Exact character dead matches dead
# Match prefix "de" followed by any 2 digits
./vanity -prefix "de@@"

# Match suffix "cafe" preceded by any 3 letters
./vanity -suffix "###cafe"

# Match any 4 hex chars + "1234"
./vanity -prefix "****1234"

# Match "d" + any letter + "ad"
./vanity -prefix "d#ad"

# Match "dead" exactly
./vanity -prefix "dead"

# Combine exact and wildcards
./vanity -suffix "1@a#b"

Batch Mode (Multiple Patterns)

Search for multiple patterns simultaneously with comprehensive results:

# Search multiple patterns (default type: prefix)
./vanity -patterns "dead,cafe,1337" -output results.json

# Mix prefix and suffix with explicit type prefixes
./vanity -patterns "p:dead,s:cafe,p:###" -output batch.json

# Batch with timeout and progress bar
./vanity -patterns "dead,cafe,beef" -timeout 60s -benchmark -output results.json

# Large batch with workers
./vanity -patterns "a,b,c,d,e,f" -workers 32 -timeout 120s -output batch.json

Type prefixes for batch mode:

  • p:pattern β€” Search for prefix pattern
  • s:pattern β€” Search for suffix pattern
  • pattern β€” Default to prefix (same as p:pattern)

Key Verification

Verify which address corresponds to a private key:

./vanity -verify "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"

# Output:
# Private Key: 0xabcdef1234567890...
# Address:     0x1234567890abcdef...
# Checksum:    0x1234567890AbCdEf...

Command-line Flags

-prefix string
    Pattern to search for at the beginning of address
    Supports wildcards: @ (digit 0-9), # (letter a-f), * (any 0-f)
    Cannot be used together with -suffix or -patterns
    
-suffix string
    Pattern to search for at the end of address
    Supports wildcards: @ (digit 0-9), # (letter a-f), * (any 0-f)
    Cannot be used together with -prefix or -patterns
    
-patterns string
    Multiple patterns separated by comma for batch mode
    Use "p:" prefix for prefix patterns, "s:" for suffix patterns
    Examples: "p:dead,s:cafe,1337" or "dead,cafe,beef"
    Cannot be used together with -prefix or -suffix
    Maximum 10,000 patterns per batch
    
-workers int
    Number of parallel worker threads to use
    Default: number of CPU cores available
    Recommended range: 1-32 depending on CPU
    Higher values = faster search but higher CPU usage
    
-benchmark
    Display progress bar during search operation
    Shows real-time statistics and animation
    
-timeout duration
    Maximum time to search for each pattern
    Format: "60s", "5m", "1h", etc.
    If not set, searches indefinitely until found
    Useful for preventing long-running processes
    
-output string
    Save results to JSON file
    File permissions: 0600 (owner read/write only)
    Contains private keys, handle with care
    Warning displayed when saving
    
-verify string
    Verify address from private key (0x...)
    Derives and displays corresponding address
    Useful for validating previously generated keys
    
-h, -help
    Display help message with all available flags

Supported Networks

All EVM-compatible networks use the same address format. A single private key generates the same address across all EVM chains:

Mainnet Chains:

  • βœ… Ethereum Mainnet
  • βœ… Polygon (MATIC)
  • βœ… Arbitrum One
  • βœ… Optimism
  • βœ… Avalanche C-Chain
  • βœ… Fantom Opera
  • βœ… Binance Smart Chain (BSC)
  • βœ… Gnosis Chain
  • βœ… Aurora (NEAR)
  • βœ… Harmony One
  • βœ… Moonbeam / Moonriver

Testnet Chains:

  • βœ… Ethereum Sepolia
  • βœ… Ethereum Goerli
  • βœ… Ethereum Holesky
  • βœ… Polygon Mumbai
  • βœ… Arbitrum Sepolia
  • βœ… Optimism Sepolia
  • βœ… Avalanche Fuji

Rule: One private key = One address for all EVM networks

Performance Benchmarks

Performance depends on pattern length, complexity, and hardware:

Pattern Characters Estimated Time Difficulty Use Case
d 1 < 1s Trivial Testing
de 2 < 1s Very Easy Testing
dea 3 seconds Easy Realistic
dead 4 minutes Medium Common
deadb 5 minutes Hard Difficult
deadbe 6 minutes Hard Difficult
deadbee 7 hours Hard Difficult

Roadmap

  • Bitcoin address support (P2PKH, Segwit)
  • Solana address support (ed25519)
  • GPU acceleration (CUDA/OpenCL)
  • REST API server
  • Web UI dashboard
  • Database result caching
  • Docker support
  • CI/CD integration
  • Additional security features

Building from Source

Build Steps

# Clone repository
git clone https://github.com/yourusername/eth-vanity-gen.git
cd eth-vanity-gen

# Install dependencies
go mod tidy

# Build for current system
go build -o vanity main.go

# Build for specific OS/architecture
GOOS=linux GOARCH=amd64 go build -o vanity-linux main.go
GOOS=darwin GOARCH=amd64 go build -o vanity-mac main.go
GOOS=windows GOARCH=amd64 go build -o vanity.exe main.go

# Install to $GOPATH/bin
go install

# Run tests
go test -v ./...

# Build with optimizations
go build -ldflags="-s -w" -o vanity main.go

Development

Project Structure

eth-vanity-gen/
β”œβ”€β”€ main.go                  # Main application code
β”œβ”€β”€ go.mod                   # Module definition
β”œβ”€β”€ go.sum                   # Dependency checksums
β”œβ”€β”€ README.md                # This file
β”œβ”€β”€ LICENSE                  # MIT license
β”œβ”€β”€ .gitignore               # Git excludes
└── Makefile                 # Build automation (optional)

License

MIT License β€” see LICENSE file for details

MIT License

Copyright (c) 2024 Ethereum Vanity Address Generator Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

Disclaimer

This tool is provided as-is for educational and personal use only.

Users assume full responsibility for:

  • Secure storage and backup of generated private keys
  • Verification of addresses before use
  • Understanding blockchain transaction risks
  • Compliance with local laws and regulations
  • Keeping private keys confidential

The authors and contributors provide no warranty and are not liable for:

  • Loss of funds due to user error
  • Misuse of generated addresses
  • Security breaches or compromises
  • Any damages arising from use of this software

Use at your own risk. When in doubt, consult with security professionals.

Support & Questions

  • πŸ“– Check the README for detailed documentation
  • πŸ› Report bugs via GitHub Issues
  • πŸ’‘ Request features via GitHub Discussions
  • πŸ“§ For security issues, do not open public issues

Acknowledgments

Built with:

Special thanks to the Ethereum community and Go contributors.

Built with ❀️ using Go.

About

Fast and performant Ethereum vanity address generator written in Go.

Resources

License

Stars

Watchers

Forks

Contributors

Languages