2024-11-28 21:43:16 +01:00

3.9 KiB

Ethereum Vanity Address Generator with CUDA

A high-performance Ethereum vanity address generator that uses CUDA GPU acceleration to quickly generate Ethereum addresses matching a desired prefix pattern. It includes optional balance checking functionality across multiple RPC endpoints and tracks best partial matches.

Features

  • 🚀 CUDA GPU acceleration for fast address generation
  • 🔍 Configurable prefix matching with support for hex characters
  • 💰 Optional balance checking across multiple RPC endpoints
  • Batch processing for efficient balance checks
  • 🔄 Automatic RPC failover and rate limit handling
  • 📊 Real-time status updates and progress tracking
  • 💾 Automatic saving of matches and addresses with balances
  • 🎯 Tracks best partial matches and saves them to JSON
  • 🔐 Secure private key generation using CUDA's RNG

Requirements

  • Python 3.7+
  • CUDA-capable NVIDIA GPU
  • PyCUDA
  • Web3.py
  • Other dependencies listed in requirements.txt

Installation

  1. Clone the repository:

    git clone https://github.com/tcsenpai/eth-vanity-address-generator-cuda.git
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Configure settings in .env file:

    # Enable balance checking (true/false)
    CHECK_BALANCES=true
    
    # RPC URLs for redundancy
    RPC_URLS=[
        "https://eth.llamarpc.com",
        "https://rpc.ankr.com/eth",
        "https://ethereum.publicnode.com",
        "https://1rpc.io/eth"
    ]
    
    # How many addresses to check in each batch
    BALANCE_BATCH_SIZE=100
    
    # Desired address prefix
    PREFIX=dEAD000000000000000042069420694206942069
    
    # Set to true for synchronous balance checking
    SYNC_MODE=false
    
    # CUDA batch size for address generation
    BATCH_SIZE=500
    

Usage

You can run either the pure CUDA version or the version with balance checking:

  1. CUDA-only version:

    ./find_address_fullcuda.sh
    
  2. CUDA with balance checking:

    ./find_address_and_check_balance.sh
    

The script will begin generating addresses and checking balances if enabled. Status updates are printed every 10 seconds (5s for the full cuda version without balance checking) and show:

  • Time elapsed
  • Total attempts
  • Generation speed
  • Prefix check speed
  • Balance check status
  • Best match found so far

When a matching address is found, it will be displayed along with its private key.

Output Files

  • found_addresses.txt: Contains addresses found with balances
  • best_matches.json: Tracks the best partial matches found
  • cuda_matches.json: Records all matches found by the CUDA miner

Configuration

The following settings can be configured in the .env file:

  • CHECK_BALANCES: Enable/disable balance checking (only works with balance checking version)
  • RPC_URLS: List of Ethereum RPC endpoints for redundancy (only works with balance checking version)
  • BALANCE_BATCH_SIZE: Number of addresses to check in each batch (only works with balance checking version)
  • PREFIX: Target address prefix
  • SYNC_MODE: Use synchronous or asynchronous balance checking
  • BATCH_SIZE: CUDA batch size for address generation

Tips

  • Longer prefixes will take exponentially more time to find
  • Consider using shorter prefixes for testing
  • Multiple RPC endpoints provide redundancy and failover
  • The system automatically tracks and saves best partial matches
  • CUDA batch size is optimized for RTX series GPUs
  • Balance checking automatically determines optimal batch sizes for each RPC

Performance

The following metrics are based on a RTX 4060 Mobile GPU (8GB VRAM).

  • The full cuda version without balance checking manages to check about 25,000,000 (25 million) addresses per second.
  • The balance checking version manages to check about 2000 prefixes and 1000 balances per second. Disabling balance checking increases the speed to about 12,000 prefixes per second.